/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.rest;
import org.geoserver.ows.URLMangler.URLType;
import org.geoserver.ows.util.ResponseUtils;
/**
* An object which contains information about the "page" or "resource" being accessed
* in a restlet request.
* <p>
* An instance of this class can be referenced by any restlet via:
* <pre>
* (PageDetails) request.getAttributes().get( PageDetails.KEY );
* </pre>
* </p>
* @author Justin Deoliveira, OpenGEO
*
*/
public class PageInfo {
/**
* key to reference this object by
*/
public static final String KEY = "org.geoserver.pageDetails";
String baseURL;
String rootPath;
String basePath;
String pagePath;
/**
* The extension of the page.
*/
String extension;
public PageInfo() {
}
public String getBaseURL() {
return baseURL;
}
public void setBaseURL(String baseURL) {
this.baseURL = baseURL;
}
public String getRootPath() {
return rootPath;
}
public void setRootPath(String rootPath) {
this.rootPath = rootPath;
}
public String getBasePath() {
return basePath;
}
public void setBasePath(String basePath) {
this.basePath = basePath;
}
public String getPagePath() {
return pagePath;
}
public void setPagePath(String pagePath) {
this.pagePath = pagePath;
}
public String getExtension() {
return extension;
}
void setExtension(String extension) {
this.extension = extension;
}
public String pageURI(String path) {
return buildURI(pagePath, path);
}
public String rootURI(String path) {
return buildURI(rootPath, path);
}
public String baseURI(String path) {
return buildURI(basePath, path);
}
String buildURI(String base, String path) {
if(path != null) {
if(path.startsWith(".")) {
if(base.endsWith("/"))
base = base.substring(1);
path = base + path;
} else {
path = ResponseUtils.appendPath(base, path);
}
}
return ResponseUtils.buildURL(baseURL, path, null, URLType.SERVICE);
}
}