Files
alfresco-community-repo/source/java/org/alfresco/opencmis/AbstractBaseUrlGenerator.java
Raluca Munteanu 9a889c69ea Merged 5.1.N (5.1.2) to 5.2.N (5.2.1)
125603 rmunteanu: Merged 5.1.1 (5.1.1) to 5.1.N (5.1.2)
      125484 slanglois: MNT-16155 Update source headers - remove old Copyrights from Java and JSP dource files


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@125781 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2016-04-26 12:48:49 +00:00

172 lines
3.8 KiB
Java

package org.alfresco.opencmis;
import javax.servlet.http.HttpServletRequest;
import org.alfresco.opencmis.CMISDispatcherRegistry.Binding;
import org.alfresco.repo.tenant.TenantUtil;
/**
* Generates an OpenCMIS base url based on the request, repository id and binding.
*
* @author steveglover
*
*/
public abstract class AbstractBaseUrlGenerator implements BaseUrlGenerator
{
private boolean overrideContext;
private String contextOverride;
private boolean overrideServletPath;
private String servletPathOverride;
private PathGenerator pathGenerator;
public void setPathGenerator(PathGenerator pathGenerator)
{
this.pathGenerator = pathGenerator;
}
public void setOverrideContext(boolean overrideContext)
{
this.overrideContext = overrideContext;
}
private String fixup(String urlSegment)
{
StringBuilder sb = new StringBuilder();
int beginIndex = 0;
int endIndex = urlSegment.length();
if(urlSegment != null)
{
if(!urlSegment.equals("") && !urlSegment.startsWith("/"))
{
sb.append("/");
}
if(urlSegment.endsWith("/"))
{
endIndex -= 1;
}
}
sb.append(urlSegment.substring(beginIndex, endIndex));
return sb.toString();
}
public void setContextOverride(String contextOverride)
{
this.contextOverride = fixup(contextOverride);
}
public void setOverrideServletPath(boolean overrideServletPath)
{
this.overrideServletPath = overrideServletPath;
}
public void setServletPathOverride(String servletPathOverride)
{
this.servletPathOverride = fixup(servletPathOverride);
}
protected abstract String getServerPath(HttpServletRequest request);
public String getContextPath(HttpServletRequest httpReq)
{
if(overrideContext)
{
return contextOverride;
}
else
{
return httpReq.getContextPath();
}
}
public String getServletPath(HttpServletRequest req)
{
if(overrideServletPath)
{
return servletPathOverride;
}
else
{
return req.getServletPath();
}
}
@Override
public String getRequestURI(HttpServletRequest req, String repositoryId, String operation, String id)
{
StringBuilder url = new StringBuilder();
String contextPath = getContextPath(req);
if(contextPath != null && !contextPath.equals(""))
{
url.append(contextPath);
}
String servletPath = getServletPath(req);
if(servletPath != null && !servletPath.equals(""))
{
url.append(servletPath);
url.append("/");
}
if(url.length() == 0 || url.charAt(0) != '/')
{
url.append("/");
}
if(repositoryId != null)
{
url.append(repositoryId == null ? TenantUtil.DEFAULT_TENANT : repositoryId);
url.append("/");
}
if(operation != null)
{
url.append(operation);
url.append("/");
}
if(id != null)
{
url.append(id);
}
int length = url.length();
if(length > 0 && url.charAt(length - 1) == '/')
{
url.deleteCharAt(length - 1);
}
return url.toString();
}
@Override
public String getBaseUrl(HttpServletRequest req, String repositoryId, Binding binding)
{
StringBuilder url = new StringBuilder();
String serverPath = getServerPath(req);
url.append(serverPath);
String contextPath = getContextPath(req);
if(contextPath != null && !contextPath.equals(""))
{
url.append(contextPath);
}
String servletPath = getServletPath(req);
if(servletPath != null && !servletPath.equals(""))
{
url.append(servletPath);
url.append("/");
}
if(url.length() > 0 && url.charAt(url.length() - 1) != '/')
{
url.append("/");
}
pathGenerator.generatePath(req, url, repositoryId, binding);
return url.toString();
}
}