svn commit: r574709 - in /ofbiz/trunk/framework/webapp: dtd/site-conf.xsd src/org/ofbiz/webapp/control/ConfigXMLReader.java src/org/ofbiz/webapp/control/ControlServlet.java src/org/ofbiz/webapp/control/RequestHandler.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r574709 - in /ofbiz/trunk/framework/webapp: dtd/site-conf.xsd src/org/ofbiz/webapp/control/ConfigXMLReader.java src/org/ofbiz/webapp/control/ControlServlet.java src/org/ofbiz/webapp/control/RequestHandler.java

jaz-3
Author: jaz
Date: Tue Sep 11 15:09:40 2007
New Revision: 574709

URL: http://svn.apache.org/viewvc?rev=574709&view=rev
Log:
added code to disable ServiceHit and Visit tracking for defined requests (use new track-stats and track-visit attributes on the request URI); also supports disabling tracking per webapp (use init param track-stats and track-visit)

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/ControlServlet.java
    ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java

Modified: ofbiz/trunk/framework/webapp/dtd/site-conf.xsd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/dtd/site-conf.xsd?rev=574709&r1=574708&r2=574709&view=diff
==============================================================================
--- ofbiz/trunk/framework/webapp/dtd/site-conf.xsd (original)
+++ ofbiz/trunk/framework/webapp/dtd/site-conf.xsd Tue Sep 11 15:09:40 2007
@@ -138,6 +138,22 @@
                 </xs:restriction>
             </xs:simpleType>
         </xs:attribute>
+        <xs:attribute name="track-visit" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="track-stats" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="security">
         <xs:complexType>

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?rev=574709&r1=574708&r2=574709&view=diff
==============================================================================
--- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java (original)
+++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java Tue Sep 11 15:09:40 2007
@@ -99,6 +99,8 @@
     public static final String REQUEST_MAPPING = "request-map";
     public static final String REQUEST_URI = "uri";
     public static final String REQUEST_EDIT = "edit";
+    public static final String REQUEST_TRACK_STATS = "track-stats";
+    public static final String REQUEST_TRACK_VISIT = "track-visit";
 
     public static final String REQUEST_DESCRIPTION = "description";
     public static final String ERROR_PAGE = "error";
@@ -195,12 +197,16 @@
             // Get the URI info.
             String uri = requestMapElement.getAttribute(REQUEST_URI);
             String edit = requestMapElement.getAttribute(REQUEST_EDIT);
+            String stats = requestMapElement.getAttribute(REQUEST_TRACK_STATS);
+            String visit = requestMapElement.getAttribute(REQUEST_TRACK_VISIT);
 
             if (edit == null || edit.equals(""))
                 edit = "true";
             if (uri != null) {
                 uriMap.put(REQUEST_URI, uri);
                 uriMap.put(REQUEST_EDIT, edit);
+                uriMap.put(REQUEST_TRACK_STATS, stats);
+                uriMap.put(REQUEST_TRACK_VISIT, visit);
             }
 
             // Check for security.

Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java?rev=574709&r1=574708&r2=574709&view=diff
==============================================================================
--- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java (original)
+++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java Tue Sep 11 15:09:40 2007
@@ -281,7 +281,11 @@
             try {
                 UtilHttp.setInitialRequestInfo(request);
                 VisitHandler.getVisitor(request, response);
-                ServerHitBin.countRequest(webappName + "." + rname, request, requestStartTime, System.currentTimeMillis() - requestStartTime, userLogin, delegator);
+                if (requestHandler.trackStats(request)) {
+                    ServerHitBin.countRequest(webappName + "." + rname, request, requestStartTime, System.currentTimeMillis() - requestStartTime, userLogin, delegator);
+                } else {
+                    Debug.log("Track status is disabled for this request");
+                }
             } catch (Throwable t) {
                 Debug.logError(t, "Error in ControlServlet saving ServerHit/Bin information; the output was successful, but can't save this tracking information. The error was: " + t.toString(), module);
             }

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?rev=574709&r1=574708&r2=574709&view=diff
==============================================================================
--- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java (original)
+++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java Tue Sep 11 15:09:40 2007
@@ -176,13 +176,13 @@
             }
 
             // If its the first visit run the first visit events.
-            if (session.getAttribute("visit") == null) {
+            if (this.trackVisit(request) && session.getAttribute("visit") == null) {
                 Debug.logInfo("This is the first request in this visit." + " sessionId=" + UtilHttp.getSessionId(request), module);
                 // This isn't an event because it is required to run. We do not want to make it optional.
-                VisitHandler.getVisit(session);
+                GenericValue visit = VisitHandler.getVisit(session);
                 Collection events = requestManager.getFirstVisitEvents();
 
-                if (events != null) {
+                if (visit != null && events != null) {
                     Iterator i = events.iterator();
 
                     while (i.hasNext()) {
@@ -203,6 +203,8 @@
                         }
                     }
                 }
+            } else {
+                Debug.log("Track visit is disabled for this request");
             }
 
             // Invoke the pre-processor (but NOT in a chain)
@@ -277,8 +279,9 @@
                     eventReturnString = this.runEvent(request, response, eventType, eventPath, eventMethod);
 
                     // save the server hit
-                    ServerHitBin.countEvent(cname + "." + eventMethod, request, eventStartTime,
-                            System.currentTimeMillis() - eventStartTime, userLogin, delegator);
+                    if (this.trackStats(request))
+                        ServerHitBin.countEvent(cname + "." + eventMethod, request, eventStartTime,
+                                System.currentTimeMillis() - eventStartTime, userLogin, delegator);
 
                     // set the default event return
                     if (eventReturnString == null) {
@@ -352,7 +355,6 @@
             // special case to avoid login/logout looping: if request was "logout" before the login, change to null for default success view; do the same for "login" to avoid going back to the same page
             if ("logout".equals(previousRequest) || "/logout".equals(previousRequest) || "login".equals(previousRequest) || "/login".equals(previousRequest) || "checkLogin".equals(previousRequest) || "/checkLogin".equals(previousRequest)) {
                 Debug.logWarning("Found special _PREVIOUS_REQUEST_ of [" + previousRequest + "], setting to null to avoid problems, not running request again", module);
-                previousRequest = null;
             } else {
                 if (Debug.infoOn()) Debug.logInfo("[Doing Previous Request]: " + previousRequest + " sessionId=" + UtilHttp.getSessionId(request), module);
                 doRequest(request, response, previousRequest, userLogin, delegator);
@@ -654,7 +656,7 @@
 
         String vname = (String) req.getAttribute("_CURRENT_VIEW_");
 
-        if (vname != null) {
+        if (this.trackStats(req) && vname != null) {
             ServerHitBin.countView(cname + "." + vname, req, viewStartTime,
                 System.currentTimeMillis() - viewStartTime, userLogin, delegator);
         }
@@ -748,7 +750,7 @@
             httpServer = UtilProperties.getPropertyValue("url.properties", "force.http.host");
         }
         if (enableHttps == null) {
-            enableHttps = Boolean.valueOf(UtilProperties.propertyValueEqualsIgnoreCase("url.properties", "port.https.enabled", "Y"));
+            enableHttps = UtilProperties.propertyValueEqualsIgnoreCase("url.properties", "port.https.enabled", "Y");
         }
 
         // create the path the the control servlet
@@ -757,11 +759,10 @@
         String requestUri = RequestHandler.getRequestUri(url);
         StringBuffer newURL = new StringBuffer();
 
-        boolean useHttps = enableHttps.booleanValue();
         boolean didFullSecure = false;
         boolean didFullStandard = false;
-        if (useHttps || fullPath || secure) {
-            if (secure || (useHttps && requestManager.requiresHttps(requestUri) && !request.isSecure())) {
+        if (enableHttps || fullPath || secure) {
+            if (secure || (enableHttps && requestManager.requiresHttps(requestUri) && !request.isSecure())) {
                 String server = httpsServer;
                 if (server == null || server.length() == 0) {
                     server = request.getServerName();
@@ -774,7 +775,7 @@
                 }
 
                 didFullSecure = true;
-            } else if (fullPath || (useHttps && !requestManager.requiresHttps(requestUri) && request.isSecure())) {
+            } else if (fullPath || (enableHttps && !requestManager.requiresHttps(requestUri) && request.isSecure())) {
                 String server = httpServer;
                 if (server == null || server.length() == 0) {
                     server = request.getServerName();
@@ -895,6 +896,26 @@
                     Debug.logError(e, module);
                 }
             }
+        }
+    }
+
+    public boolean trackStats(HttpServletRequest request) {
+        String appStats = context.getInitParameter("track-stats");
+        if (appStats != null && !"false".equalsIgnoreCase(appStats)) {
+            String uriString =  RequestHandler.getRequestUri(request.getPathInfo());
+            return !"false".equalsIgnoreCase(requestManager.getRequestAttribute(uriString, ConfigXMLReader.REQUEST_TRACK_STATS));
+        } else {
+            return false;
+        }
+    }
+
+    public boolean trackVisit(HttpServletRequest request) {
+        String appVisit = context.getInitParameter("track-visit");
+        if (appVisit != null && !"false".equalsIgnoreCase(appVisit)) {
+            String uriString =  RequestHandler.getRequestUri(request.getPathInfo());
+            return !"false".equalsIgnoreCase(requestManager.getRequestAttribute(uriString, ConfigXMLReader.REQUEST_TRACK_VISIT));
+        } else {
+            return false;
         }
     }
 }