org.frameworkset.web.servlet.mvc.mutiaction.InternalPathMethodNameResolver Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bboss-mvc Show documentation
Show all versions of bboss-mvc Show documentation
bboss is a j2ee framework include aop/ioc,mvc,persistent,taglib,rpc,event ,bean-xml serializable and so on.http://www.bbossgroups.com
The newest version!
package org.frameworkset.web.servlet.mvc.mutiaction;
import java.util.Map;
import org.frameworkset.web.util.WebUtils;
public class InternalPathMethodNameResolver extends AbstractUrlMethodNameResolver {
private String prefix = "";
private String suffix = "";
/** Request URL path String --> method name String */
private Map methodNameCache = new java.util.concurrent.ConcurrentHashMap();
/**
* Specify a common prefix for handler method names.
* Will be prepended to the internal path found in the URL:
* e.g. internal path "baz", prefix "my" -> method name "mybaz".
*/
public void setPrefix(String prefix) {
this.prefix = (prefix != null ? prefix : "");
}
/**
* Return the common prefix for handler method names.
*/
protected String getPrefix() {
return this.prefix;
}
/**
* Specify a common suffix for handler method names.
* Will be appended to the internal path found in the URL:
* e.g. internal path "baz", suffix "Handler" -> method name "bazHandler".
*/
public void setSuffix(String suffix) {
this.suffix = (suffix != null ? suffix : "");
}
/**
* Return the common suffix for handler method names.
*/
protected String getSuffix() {
return this.suffix;
}
/**
* Extracts the method name indicated by the URL path.
* @see #extractHandlerMethodNameFromUrlPath
* @see #postProcessHandlerMethodName
*/
protected String getHandlerMethodNameForUrlPath(String urlPath) {
String methodName = (String) this.methodNameCache.get(urlPath);
if (methodName == null) {
methodName = extractHandlerMethodNameFromUrlPath(urlPath);
methodName = postProcessHandlerMethodName(methodName);
this.methodNameCache.put(urlPath, methodName);
}
return methodName;
}
/**
* Extract the handler method name from the given request URI.
* Delegates to WebUtils.extractViewNameFromUrlPath(String)
.
* @param uri the request URI (e.g. "/index.html")
* @return the extracted URI filename (e.g. "index")
* @see WebUtils#extractFilenameFromUrlPath
*/
protected String extractHandlerMethodNameFromUrlPath(String uri) {
return WebUtils.extractFilenameFromUrlPath(uri);
}
/**
* Build the full handler method name based on the given method name
* as indicated by the URL path.
* The default implementation simply applies prefix and suffix.
* This can be overridden, for example, to manipulate upper case
* / lower case, etc.
* @param methodName the original method name, as indicated by the URL path
* @return the full method name to use
* @see #getPrefix()
* @see #getSuffix()
*/
protected String postProcessHandlerMethodName(String methodName) {
return getPrefix() + methodName + getSuffix();
}
@Override
public void destroy() {
if(methodNameCache != null)
{
methodNameCache.clear();
methodNameCache = null;
}
}
}