package org.jboss.seam.web;
/**
* functions related to the faces servlet mapping and the translation from viewId to URL and back
*/
public class ServletMapping {
String mapping;
public ServletMapping(String mapping) {
this.mapping = mapping;
}
public String mapViewIdToURL(String viewId) {
if (mapping.endsWith("/*")) {
return mapping.substring(0,mapping.length()-2) + viewId;
} else if (mapping.startsWith("*.")){
int pos = viewId.lastIndexOf(".");
if (pos != -1) {
return viewId.substring(0, pos) + mapping.substring(1);
}
}
return null;
}
private String stripExtension(String text) {
int pos = text.lastIndexOf('.');
return (pos == -1) ? null : text.substring(0,pos);
}
// this method should really be one that converts the baseURL to the viewId,
// but we need default faces extension for that
public boolean isMapped(String baseURL, String viewId)
{
if (mapping.startsWith("*.")) {
String baseValue = stripExtension(baseURL);
String viewValue = stripExtension(viewId);
return baseValue!=null && viewValue!=null && baseValue.equals(viewValue);
} else if (mapping.endsWith("/*")) {
String prefix = mapping.substring(0,mapping.length()-2) + viewId;
return baseURL.equals(prefix);
}
return false;
}
}