Author: jaz
Date: Sun Feb 18 18:52:31 2007
New Revision: 509068
URL: http://svn.apache.org/viewvc?view=rev&rev=509068
Log:
implemented default request for web applications; setting a default-request
will forward all requests which do not have a valid mapping to this specific
request. Here you can process additional information, forward to a landing
page, etc
Modified:
ofbiz/trunk/framework/webapp/dtd/site-conf.xsd
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestManager.java
Modified: ofbiz/trunk/framework/webapp/dtd/site-conf.xsd
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/dtd/site-conf.xsd?view=diff&rev=509068&r1=509067&r2=509068
==============================================================================
--- ofbiz/trunk/framework/webapp/dtd/site-conf.xsd (original)
+++ ofbiz/trunk/framework/webapp/dtd/site-conf.xsd Sun Feb 18 18:52:31 2007
@@ -31,6 +31,7 @@
<xs:element minOccurs="0" ref="postprocessor"/>
<xs:element minOccurs="0" ref="after-login"/>
<xs:element minOccurs="0" ref="before-logout"/>
+ <xs:element minOccurs="0" maxOccurs="1" ref="default-request"/>
<xs:element minOccurs="0" maxOccurs="unbounded"
ref="request-map"/>
<xs:element minOccurs="0" maxOccurs="unbounded"
ref="view-map"/>
</xs:sequence>
@@ -108,6 +109,14 @@
</xs:sequence>
</xs:complexType>
</xs:element>
+ <xs:element name="default-request">
+ <xs:complexType>
+ <xs:attributeGroup ref="attlist.default-request"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:attributeGroup name="attlist.default-request">
+ <xs:attribute type="xs:string" name="request-uri" use="required"/>
+ </xs:attributeGroup>
<xs:element name="request-map">
<xs:complexType>
<xs:sequence>
Modified:
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java?view=diff&rev=509068&r1=509067&r2=509068
==============================================================================
---
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java
(original)
+++
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java
Sun Feb 18 18:52:31 2007
@@ -67,6 +67,7 @@
public Map handlerMap = FastMap.newInstance();
public Map requestMap = FastMap.newInstance();
public Map viewMap = FastMap.newInstance();
+ public String defaultRequest = null;
public ControllerConfig(URL url) {
this.url = url;
@@ -77,6 +78,7 @@
this.handlerMap = loadHandlerMap(rootElement, url);
this.requestMap = loadRequestMap(rootElement, url);
this.viewMap = loadViewMap(rootElement, url);
+ this.defaultRequest = loadDefaultRequest(rootElement, url);
}
}
}
@@ -136,7 +138,7 @@
/** Loads the XML file and returns the root element */
public static Element loadDocument(URL location) {
- Document document = null;
+ Document document;
try {
document = UtilXml.readXmlDocument(location, true);
Element rootElement = document.getDocumentElement();
@@ -250,15 +252,14 @@
/* Debugging */
if (Debug.verboseOn()) {
Debug.logVerbose("-------- Request Mappings --------", module);
- FastMap debugMap = map;
- Set debugSet = debugMap.keySet();
+ //FastMap debugMap = map;
+ Set debugSet = map.keySet();
Iterator i = debugSet.iterator();
while (i.hasNext()) {
Object o = i.next();
String request = (String) o;
- FastMap thisURI = (FastMap) debugMap.get(o);
-
+ Map thisURI = (Map) map.get(o);
StringBuffer verboseMessageBuffer = new StringBuffer();
@@ -268,7 +269,7 @@
String name = (String) lo;
String value = (String) thisURI.get(lo);
- verboseMessageBuffer.append("[" + name + "=>" + value +
"]");
+
verboseMessageBuffer.append("[").append(name).append("=>").append(value).append("]");
}
Debug.logVerbose(request + " :: " +
verboseMessageBuffer.toString(), module);
}
@@ -345,14 +346,14 @@
/* Debugging */
if (Debug.verboseOn()) {
Debug.logVerbose("-------- View Mappings --------", module);
- FastMap debugMap = map;
- Set debugSet = debugMap.keySet();
+ //FastMap debugMap = map;
+ Set debugSet = map.keySet();
Iterator i = debugSet.iterator();
while (i.hasNext()) {
Object o = i.next();
String request = (String) o;
- FastMap thisURI = (FastMap) debugMap.get(o);
+ Map thisURI = (Map) map.get(o);
StringBuffer verboseMessageBuffer = new StringBuffer();
@@ -362,7 +363,7 @@
String name = (String) lo;
String value = (String) thisURI.get(lo);
- verboseMessageBuffer.append("[" + name + "=>" + value +
"]");
+
verboseMessageBuffer.append("[").append(name).append("=>").append(value).append("]");
}
Debug.logVerbose(request + " :: " +
verboseMessageBuffer.toString(), module);
}
@@ -546,6 +547,27 @@
double totalSeconds = (System.currentTimeMillis() - startTime)/1000.0;
if (Debug.infoOn()) Debug.logInfo("ConfigMap Created: (" + map.size()
+ ") records in " + totalSeconds + "s", module);
return map;
+ }
+
+ /** Gets the default-request from the configuration */
+ public static String getDefaultRequest(URL xml) {
+ ControllerConfig controllerConfig = getControllerConfig(xml);
+ return controllerConfig != null ? controllerConfig.defaultRequest :
null;
+ }
+
+ public static String loadDefaultRequest(Element root, URL xml) {
+ if (root == null) {
+ root = loadDocument(xml);
+ }
+ if (root == null) {
+ return null;
+ }
+
+ Element e = UtilXml.firstChildElement(root, "default-request");
+ if (e != null) {
+ return e.getAttribute("request-uri");
+ }
+ return null;
}
/** Gets a FastMap of handler mappings. */
Modified:
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java?view=diff&rev=509068&r1=509067&r2=509068
==============================================================================
---
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java
(original)
+++
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java
Sun Feb 18 18:52:31 2007
@@ -85,11 +85,11 @@
}
public void doRequest(HttpServletRequest request, HttpServletResponse
response, String chain,
- GenericValue userLogin, GenericDelegator delegator)
throws RequestHandlerException {
+ GenericValue userLogin, GenericDelegator delegator) throws
RequestHandlerException {
- String eventType = null;
- String eventPath = null;
- String eventMethod = null;
+ String eventType;
+ String eventPath;
+ String eventMethod;
// workaraound if we are in the root webapp
String cname = UtilHttp.getApplicationName(request);
@@ -116,8 +116,13 @@
if (Debug.infoOn()) Debug.logInfo("[RequestHandler]: Chain in
place: requestUri=" + requestUri + " nextView=" + nextView + " sessionId=" +
UtilHttp.getSessionId(request), module);
} else {
// Check to make sure we are allowed to access this request
directly. (Also checks if this request is defined.)
+ // If the request cannot be called, or is not defined, check and
see if there is a default-request we an process
if (!requestManager.allowDirectRequest(requestUri)) {
- throw new RequestHandlerException("Unknown request [" +
requestUri + "]; this request does not exist or cannot be called directly.");
+ if
(!requestManager.allowDirectRequest(requestManager.getDefaultRequest())) {
+ throw new RequestHandlerException("Unknown request [" +
requestUri + "]; this request does not exist or cannot be called directly.");
+ } else {
+ requestUri = requestManager.getDefaultRequest();
+ }
}
// Check if we SHOULD be secure and are not. If we are posting let
it pass to not lose data. (too late now anyway)
@@ -209,7 +214,7 @@
String checkLoginType = requestManager.getEventType("checkLogin");
String checkLoginPath = requestManager.getEventPath("checkLogin");
String checkLoginMethod =
requestManager.getEventMethod("checkLogin");
- String checkLoginReturnString = null;
+ String checkLoginReturnString;
try {
checkLoginReturnString = this.runEvent(request, response,
checkLoginType,
@@ -220,10 +225,7 @@
if (!"success".equalsIgnoreCase(checkLoginReturnString)) {
// previous URL already saved by event, so just do as the
return says...
eventReturnString = checkLoginReturnString;
- eventType = checkLoginType;
- eventPath = checkLoginPath;
- eventMethod = checkLoginMethod;
- requestUri = "checkLogin";
+ requestUri = "checkLogin";
}
}
@@ -290,7 +292,7 @@
// restore previous redirected request's attribute, so redirected page
can display previous request's error msg etc.
String preReqAttStr = (String)
request.getSession().getAttribute("_REQ_ATTR_MAP_");
- Map preRequestMap = null;
+ Map preRequestMap;
if(preReqAttStr!=null){
request.getSession().removeAttribute("_REQ_ATTR_MAP_");
byte [] reqAttrMapBytes = StringUtil.fromHexString(preReqAttStr);
@@ -338,8 +340,6 @@
Debug.logInfo("[RequestHandler.doRequest]: Response is a chained
request." + " sessionId=" + UtilHttp.getSessionId(request), module);
nextView = nextView.substring(8);
doRequest(request, response, nextView, userLogin, delegator);
- return; // this just to be safe; not really needed
-
} else { // handle views
// first invoke the post-processor events.
Collection postProcEvents = requestManager.getPostProcessor();
@@ -404,7 +404,7 @@
/** Find the event handler and invoke an event. */
public String runEvent(HttpServletRequest request, HttpServletResponse
response, String type,
- String path, String method) throws
EventHandlerException {
+ String path, String method) throws EventHandlerException {
EventHandler eventHandler = eventFactory.getEventHandler(type);
return eventHandler.invoke(path, method, request, response);
}
@@ -550,7 +550,7 @@
String viewType = requestManager.getViewType(view);
String tempView = requestManager.getViewPage(view);
- String nextPage = null;
+ String nextPage;
if (tempView == null) {
if (!allowExtView) {
@@ -682,7 +682,7 @@
Boolean enableHttps = null;
// load the properties from the website entity
- GenericValue webSite = null;
+ GenericValue webSite;
if (webSiteId != null) {
try {
webSite = delegator.findByPrimaryKeyCache("WebSite",
UtilMisc.toMap("webSiteId", webSiteId));
@@ -712,7 +712,7 @@
httpServer = UtilProperties.getPropertyValue("url.properties",
"force.http.host");
}
if (enableHttps == null) {
- enableHttps = new
Boolean(UtilProperties.propertyValueEqualsIgnoreCase("url.properties",
"port.https.enabled", "Y"));
+ enableHttps =
Boolean.valueOf(UtilProperties.propertyValueEqualsIgnoreCase("url.properties",
"port.https.enabled", "Y"));
}
// create the path the the control servlet
@@ -747,7 +747,7 @@
newURL.append("http://");
newURL.append(server);
if (!httpPort.equals("80")) {
- newURL.append(":" + httpPort);
+ newURL.append(":").append(httpPort);
}
didFullStandard = true;
@@ -762,7 +762,7 @@
}
newURL.append(url);
- String encodedUrl = null;
+ String encodedUrl;
if (encode) {
boolean forceManualJsessionid = false;
Modified:
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestManager.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestManager.java?view=diff&rev=509068&r1=509067&r2=509068
==============================================================================
---
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestManager.java
(original)
+++
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestManager.java
Sun Feb 18 18:52:31 2007
@@ -64,7 +64,7 @@
/** Gets the class name of the named handler */
public String getHandlerClass(String name, int type) {
Map map = getHandlerMap();
- Map hMap = null;
+ Map hMap;
if (type == 1) {
hMap = (Map) map.get("view");
@@ -81,7 +81,7 @@
public List getHandlerKeys(int type) {
Map map = getHandlerMap();
- Map hMap = null;
+ Map hMap;
if (type == 1) {
hMap = (Map) map.get("view");
@@ -160,8 +160,7 @@
Map uri = getRequestMapMap(uriStr);
if (uri != null) {
- String EVENT_GLOBAL_TRANSACTION = "global-transaction";
- return new Boolean((String)
uri.get(ConfigXMLReader.EVENT_GLOBAL_TRANSACTION)).booleanValue();
+ return Boolean.valueOf((String)
uri.get(ConfigXMLReader.EVENT_GLOBAL_TRANSACTION)).booleanValue();
} else {
if (Debug.verboseOn()) {
Debug.logWarning("[RequestManager.getEventGlobalTransaction]
Global-transaction of event for request \"" +
@@ -268,7 +267,7 @@
/** Gets the default error page from the configMap or static site default
*/
public String getDefaultErrorPage() {
- String errorPage = null;
+ String errorPage;
errorPage = (String)
ConfigXMLReader.getConfigMap(configFileUrl).get(ConfigXMLReader.DEFAULT_ERROR_PAGE);
//Debug.logInfo("For DefaultErrorPage got errorPage: " + errorPage,
module);
if (errorPage != null) return errorPage;
@@ -282,10 +281,7 @@
String value = (String) uri.get(ConfigXMLReader.SECURITY_AUTH);
//if (Debug.verboseOn()) Debug.logVerbose("Require Auth: " +
value, module);
- if ("true".equalsIgnoreCase(value))
- return true;
- else
- return false;
+ return "true".equalsIgnoreCase(value);
} else
return false;
}
@@ -297,10 +293,7 @@
String value = (String) uri.get(ConfigXMLReader.SECURITY_HTTPS);
//if (Debug.verboseOn()) Debug.logVerbose("Requires HTTPS: " +
value, module);
- if ("true".equalsIgnoreCase(value))
- return true;
- else
- return false;
+ return "true".equalsIgnoreCase(value);
} else
return false;
}
@@ -312,10 +305,7 @@
String value = (String) uri.get(ConfigXMLReader.SECURITY_EXTVIEW);
//if (Debug.verboseOn()) Debug.logVerbose("Allow External View: "
+ value, module);
- if ("false".equalsIgnoreCase(value))
- return false;
- else
- return true;
+ return !"false".equalsIgnoreCase(value);
} else
return true;
}
@@ -327,36 +317,32 @@
String value = (String) uri.get(ConfigXMLReader.SECURITY_DIRECT);
//if (Debug.verboseOn()) Debug.logVerbose("Allow Direct Request: "
+ value, module);
- if ("false".equalsIgnoreCase(value))
- return false;
- else
- return true;
+ return !"false".equalsIgnoreCase(value);
} else
return false;
}
+ public String getDefaultRequest() {
+ return ConfigXMLReader.getDefaultRequest(configFileUrl);
+ }
+
public Collection getFirstVisitEvents() {
- Collection c = (Collection)
ConfigXMLReader.getConfigMap(configFileUrl).get(ConfigXMLReader.FIRSTVISIT);
- return c;
+ return (Collection)
ConfigXMLReader.getConfigMap(configFileUrl).get(ConfigXMLReader.FIRSTVISIT);
}
public Collection getPreProcessor() {
- Collection c = (Collection)
ConfigXMLReader.getConfigMap(configFileUrl).get(ConfigXMLReader.PREPROCESSOR);
- return c;
+ return (Collection)
ConfigXMLReader.getConfigMap(configFileUrl).get(ConfigXMLReader.PREPROCESSOR);
}
public Collection getPostProcessor() {
- Collection c = (Collection)
ConfigXMLReader.getConfigMap(configFileUrl).get(ConfigXMLReader.POSTPROCESSOR);
- return c;
+ return (Collection)
ConfigXMLReader.getConfigMap(configFileUrl).get(ConfigXMLReader.POSTPROCESSOR);
}
public List getAfterLoginEventList() {
- List lst = (List)
ConfigXMLReader.getConfigMap(configFileUrl).get("after-login");
- return lst;
+ return (List)
ConfigXMLReader.getConfigMap(configFileUrl).get("after-login");
}
public List getBeforeLogoutEventList() {
- List lst = (List)
ConfigXMLReader.getConfigMap(configFileUrl).get("before-logout");
- return lst;
+ return (List)
ConfigXMLReader.getConfigMap(configFileUrl).get("before-logout");
}
}