Author: dashorst
Date: Wed Jun 29 10:23:36 2011
New Revision: 1141037

URL: http://svn.apache.org/viewvc?rev=1141037&view=rev
Log:
There were a couple more issues with the request logger implementation. It used 
getPage() to log the page class and page id: causing page instantiations at 
wrong times. This has been remedied by requiring an extra method to provide the 
page id (if present). The page instantiation caused problems with the 
Swarm/Wasp security framework.

Further more the request logger now logs the requested URL as well.
Issue: WICKET-3832

Added:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLoggerRequestCycleListener.java
   (with props)
Modified:
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageProvider.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageRequestHandler.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/RenderPageRequestHandler.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.java?rev=1141037&r1=1141036&r2=1141037&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.java 
(original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Application.java 
Wed Jun 29 10:23:36 2011
@@ -59,6 +59,7 @@ import org.apache.wicket.pageStore.IData
 import org.apache.wicket.pageStore.IPageStore;
 import org.apache.wicket.protocol.http.IRequestLogger;
 import org.apache.wicket.protocol.http.RequestLogger;
+import org.apache.wicket.protocol.http.RequestLoggerRequestCycleListener;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.protocol.http.WebSession;
 import org.apache.wicket.request.IExceptionMapper;
@@ -704,6 +705,9 @@ public abstract class Application implem
 
                requestCycleProvider = new DefaultRequestCycleProvider();
                exceptionMapperProvider = new DefaultExceptionMapperProvider();
+
+               // add a request cycle listener that logs each request for the 
requestlogger.
+               getRequestCycleListeners().add(new 
RequestLoggerRequestCycleListener());
        }
 
        /**

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java?rev=1141037&r1=1141036&r2=1141037&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
 Wed Jun 29 10:23:36 2011
@@ -1350,11 +1350,25 @@ public class AjaxRequestTarget implement
                return Strings.isEmpty(id) ? null : id;
        }
 
+       /**
+        * @see 
org.apache.wicket.request.handler.IPageRequestHandler#getPageClass()
+        */
        public Class<? extends IRequestablePage> getPageClass()
        {
                return page.getPageClass();
        }
 
+       /**
+        * @see 
org.apache.wicket.request.handler.IPageRequestHandler#getPageId()
+        */
+       public Integer getPageId()
+       {
+               return page.getPageId();
+       }
+
+       /**
+        * @see 
org.apache.wicket.request.handler.IPageRequestHandler#getPageParameters()
+        */
        public PageParameters getPageParameters()
        {
                return page.getPageParameters();

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java?rev=1141037&r1=1141036&r2=1141037&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/IRequestLogger.java
 Wed Jun 29 10:23:36 2011
@@ -23,8 +23,7 @@ import java.util.List;
 import org.apache.wicket.IClusterable;
 import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.session.ISessionStore;
-import org.apache.wicket.util.string.AppendingStringBuffer;
-
+import org.apache.wicket.util.string.Strings;
 
 /**
  * Interface for the request logger and viewer.
@@ -35,24 +34,22 @@ import org.apache.wicket.util.string.App
  */
 public interface IRequestLogger
 {
-
        /**
         * @return The total created sessions counter
         */
-       public abstract int getTotalCreatedSessions();
+       int getTotalCreatedSessions();
 
        /**
         * @return The peak sessions counter
         */
-       public abstract int getPeakSessions();
+       int getPeakSessions();
 
        /**
         * This method returns a List of the current requests that are in mem. 
This is a readonly list.
         * 
         * @return Collection of the current requests
         */
-       public abstract List<RequestData> getRequests();
-
+       List<RequestData> getRequests();
 
        /**
         * @return Collection of live Sessions Data
@@ -76,7 +73,7 @@ public interface IRequestLogger
         * @param id
         *            the session id
         */
-       public abstract void sessionCreated(String id);
+       void sessionCreated(String id);
 
        /**
         * Method used to cleanup a livesession when the session was 
invalidated by the webcontainer
@@ -84,7 +81,7 @@ public interface IRequestLogger
         * @param sessionId
         *            the session id
         */
-       public abstract void sessionDestroyed(String sessionId);
+       void sessionDestroyed(String sessionId);
 
        /**
         * This method is called when the request is over. This will set the 
total time a request takes
@@ -93,7 +90,7 @@ public interface IRequestLogger
         * @param timeTaken
         *            the time taken in milliseconds
         */
-       public abstract void requestTime(long timeTaken);
+       void requestTime(long timeTaken);
 
        /**
         * Called to monitor removals of objects out of the {@link 
ISessionStore}
@@ -101,7 +98,7 @@ public interface IRequestLogger
         * @param value
         *            the object being removed
         */
-       public abstract void objectRemoved(Object value);
+       void objectRemoved(Object value);
 
        /**
         * Called to monitor updates of objects in the {@link ISessionStore}
@@ -109,7 +106,7 @@ public interface IRequestLogger
         * @param value
         *            the object being updated
         */
-       public abstract void objectUpdated(Object value);
+       void objectUpdated(Object value);
 
        /**
         * Called to monitor additions of objects in the {@link ISessionStore}
@@ -117,7 +114,7 @@ public interface IRequestLogger
         * @param value
         *            the object being created/added
         */
-       public abstract void objectCreated(Object value);
+       void objectCreated(Object value);
 
        /**
         * Sets the target that was the response target for the current request
@@ -125,7 +122,7 @@ public interface IRequestLogger
         * @param target
         *            the response target
         */
-       public abstract void logResponseTarget(IRequestHandler target);
+       void logResponseTarget(IRequestHandler target);
 
        /**
         * Sets the target that was the event target for the current request
@@ -133,7 +130,15 @@ public interface IRequestLogger
         * @param target
         *            the event target
         */
-       public abstract void logEventTarget(IRequestHandler target);
+       void logEventTarget(IRequestHandler target);
+
+       /**
+        * Logs the URL that was requested by the browser.
+        * 
+        * @param url
+        *            the requested URL
+        */
+       void logRequestedUrl(String url);
 
        /**
         * This class hold the information one request of a session has.
@@ -242,7 +247,6 @@ public interface IRequestLogger
                {
                        return (int)(sd.lastActive - lastActive);
                }
-
        }
 
 
@@ -258,15 +262,12 @@ public interface IRequestLogger
                private long startDate;
                private long timeTaken;
                private final List<String> entries = new ArrayList<String>(5);
+               private String requestedUrl;
                private String eventTarget;
                private String responseTarget;
-
                private String sessionId;
-
                private long totalSessionSize;
-
                private Object sessionInfo;
-
                private int activeRequest;
 
                /**
@@ -353,6 +354,22 @@ public interface IRequestLogger
                }
 
                /**
+                * @return the requested URL by the browser
+                */
+               public String getRequestedUrl()
+               {
+                       return requestedUrl;
+               }
+
+               /**
+                * @param requestedUrl
+                */
+               public void setRequestedUrl(String requestedUrl)
+               {
+                       this.requestedUrl = requestedUrl;
+               }
+
+               /**
                 * @param target
                 */
                public void addResponseTarget(String target)
@@ -390,17 +407,7 @@ public interface IRequestLogger
                 */
                public String getAlteredObjects()
                {
-                       AppendingStringBuffer sb = new AppendingStringBuffer();
-                       for (int i = 0; i < entries.size(); i++)
-                       {
-                               String element = entries.get(i);
-                               sb.append(element);
-                               if (entries.size() != i + 1)
-                               {
-                                       sb.append("<br/>");
-                               }
-                       }
-                       return sb.toString();
+                       return Strings.join(", ", entries);
                }
 
                /**
@@ -437,7 +444,6 @@ public interface IRequestLogger
         */
        public interface ISessionLogInfo
        {
-
                /**
                 * If you use the request logger log functionality then this 
object should have a nice
                 * String representation. So make sure that the toString() is 
implemented for the returned
@@ -447,6 +453,4 @@ public interface IRequestLogger
                 */
                Object getSessionInfo();
        }
-
-
 }
\ No newline at end of file

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java?rev=1141037&r1=1141036&r2=1141037&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLogger.java
 Wed Jun 29 10:23:36 2011
@@ -32,11 +32,13 @@ import org.apache.wicket.request.IReques
 import org.apache.wicket.request.IRequestHandlerDelegate;
 import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.wicket.request.handler.BookmarkablePageRequestHandler;
+import org.apache.wicket.request.handler.BufferedResponseRequestHandler;
 import org.apache.wicket.request.handler.IPageRequestHandler;
 import org.apache.wicket.request.handler.ListenerInterfaceRequestHandler;
 import 
org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler;
 import org.apache.wicket.util.lang.Classes;
 import org.apache.wicket.util.string.AppendingStringBuffer;
+import org.apache.wicket.util.string.Strings;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -101,7 +103,6 @@ public class RequestLogger implements IR
                        }
                });
                liveSessions = new ConcurrentHashMap<String, SessionData>();
-
        }
 
        public int getCurrentActiveRequestCount()
@@ -137,6 +138,11 @@ public class RequestLogger implements IR
                return totalCreatedSessions.get();
        }
 
+       public void logRequestedUrl(String url)
+       {
+               getCurrentRequest().setRequestedUrl(url);
+       }
+
        public void logEventTarget(IRequestHandler requestHandler)
        {
                
getCurrentRequest().addEventTarget(getRequestHandlerString(requestHandler));
@@ -183,9 +189,9 @@ public class RequestLogger implements IR
                {
                        IPageRequestHandler pageRequestHandler = 
(IPageRequestHandler)requestHandler;
                        sb.append("PageRequest[");
-                       
sb.append(pageRequestHandler.getPage().getClass().getName());
+                       sb.append(pageRequestHandler.getPageClass().getName());
                        sb.append("(");
-                       sb.append(pageRequestHandler.getPage().getId());
+                       sb.append(pageRequestHandler.getPageId());
                        sb.append(")]");
                }
                else if (requestHandler instanceof 
ResourceReferenceRequestHandler)
@@ -202,6 +208,11 @@ public class RequestLogger implements IR
                                .append(
                                        
getRequestHandlerString(((IRequestHandlerDelegate)requestHandler).getDelegateHandler()));
                }
+               else if (requestHandler instanceof 
BufferedResponseRequestHandler)
+               {
+                       BufferedResponseRequestHandler bufferedResponseHandler 
= (BufferedResponseRequestHandler)requestHandler;
+                       
sb.append(bufferedResponseHandler.getClass().getSimpleName());
+               }
                else
                {
                        sb.append(requestHandler.toString());
@@ -209,14 +220,14 @@ public class RequestLogger implements IR
                return sb.toString();
        }
 
-
        public void objectCreated(Object value)
        {
                RequestData rd = getCurrentRequest();
 
                if (value instanceof Session)
                {
-                       rd.addEntry("Session created");
+                       Session session = (Session)value;
+                       rd.addEntry("Session created, id: " + session.getId());
                }
                else if (value instanceof Page)
                {
@@ -227,7 +238,6 @@ public class RequestLogger implements IR
                {
                        rd.addEntry("Custom object created: " + value);
                }
-
        }
 
        public void objectRemoved(Object value)
@@ -268,19 +278,19 @@ public class RequestLogger implements IR
 
        public void requestTime(long timeTaken)
        {
-               RequestData rd = RequestCycle.get().getMetaData(REQUEST_DATA);
-               if (rd != null)
+               RequestData requestdata = 
RequestCycle.get().getMetaData(REQUEST_DATA);
+               if (requestdata != null)
                {
                        if (activeRequests.get() > 0)
                        {
-                               
rd.setActiveRequest(activeRequests.decrementAndGet());
+                               
requestdata.setActiveRequest(activeRequests.decrementAndGet());
                        }
                        Session session = Session.get();
                        String sessionId = session.getId();
-                       rd.setSessionId(sessionId);
+                       requestdata.setSessionId(sessionId);
 
                        Object sessionInfo = getSessionInfo(session);
-                       rd.setSessionInfo(sessionInfo);
+                       requestdata.setSessionInfo(sessionInfo);
 
                        long sizeInBytes = -1;
                        if 
(Application.get().getRequestLoggerSettings().getRecordSessionSize())
@@ -292,42 +302,37 @@ public class RequestLogger implements IR
                                catch (Exception e)
                                {
                                        // log the error and let the request 
logging continue (this is what happens in
-                                       // the
-                                       // detach phase of the request cycle 
anyway. This provides better diagnostics).
+                                       // the detach phase of the request 
cycle anyway. This provides better
+                                       // diagnostics).
                                        log.error(
                                                "Exception while determining 
the size of the session in the request logger: " +
                                                        e.getMessage(), e);
                                }
                        }
-                       rd.setSessionSize(sizeInBytes);
-                       rd.setTimeTaken(timeTaken);
+                       requestdata.setSessionSize(sizeInBytes);
+                       requestdata.setTimeTaken(timeTaken);
+
+                       requests.add(0, requestdata);
 
-                       requests.add(0, rd);
+                       SessionData sessiondata = null;
                        if (sessionId != null)
                        {
-                               SessionData sd = liveSessions.get(sessionId);
-                               if (sd == null)
+                               sessiondata = liveSessions.get(sessionId);
+                               if (sessiondata == null)
                                {
                                        // passivated session or logger only 
started after it.
                                        sessionCreated(sessionId);
-                                       sd = liveSessions.get(sessionId);
-                               }
-                               if (sd != null)
-                               {
-                                       sd.setSessionInfo(sessionInfo);
-                                       sd.setSessionSize(sizeInBytes);
-                                       sd.addTimeTaken(timeTaken);
-                                       log(rd, sd);
+                                       sessiondata = 
liveSessions.get(sessionId);
                                }
-                               else
+                               if (sessiondata != null)
                                {
-                                       log(rd, null);
+                                       sessiondata.setSessionInfo(sessionInfo);
+                                       sessiondata.setSessionSize(sizeInBytes);
+                                       sessiondata.addTimeTaken(timeTaken);
                                }
                        }
-                       else
-                       {
-                               log(rd, null);
-                       }
+                       // log the request- and sessiondata (the latter can be 
null)
+                       log(requestdata, sessiondata);
                }
        }
 
@@ -379,51 +384,56 @@ public class RequestLogger implements IR
        protected final AppendingStringBuffer createLogString(RequestData rd, 
SessionData sd,
                boolean includeRuntimeInfo)
        {
-               AppendingStringBuffer asb = new AppendingStringBuffer(150);
-               asb.append("time=");
-               asb.append(rd.getTimeTaken());
-               asb.append(",event=");
-               asb.append(rd.getEventTarget());
-               asb.append(",response=");
-               asb.append(rd.getResponseTarget());
-               if (rd.getSessionInfo() != null && 
!rd.getSessionInfo().equals(""))
+               AppendingStringBuffer sb = new AppendingStringBuffer(150);
+               sb.append("time=");
+               sb.append(rd.getTimeTaken());
+               if (!Strings.isEmpty(rd.getRequestedUrl()))
+               {
+                       sb.append(",url=");
+                       sb.append(rd.getRequestedUrl());
+               }
+               sb.append(",event=");
+               sb.append(rd.getEventTarget());
+               sb.append(",response=");
+               sb.append(rd.getResponseTarget());
+               if (rd.getSessionInfo() != null && 
!Strings.isEmpty(rd.getSessionInfo().toString()))
                {
-                       asb.append(",sessioninfo=");
-                       asb.append(rd.getSessionInfo());
+                       sb.append(",sessioninfo=");
+                       sb.append(rd.getSessionInfo());
                }
                else
                {
-                       asb.append(",sessionid=");
-                       asb.append(rd.getSessionId());
+                       sb.append(",sessionid=");
+                       sb.append(rd.getSessionId());
                }
-               asb.append(",sessionsize=");
-               asb.append(rd.getSessionSize());
+               sb.append(",sessionsize=");
+               sb.append(rd.getSessionSize());
                if (sd != null)
                {
-                       asb.append(",sessionstart=");
-                       asb.append(sd.getStartDate());
-                       asb.append(",requests=");
-                       asb.append(sd.getNumberOfRequests());
-                       asb.append(",totaltime=");
-                       asb.append(sd.getTotalTimeTaken());
+                       sb.append(",sessionstart=");
+                       sb.append(sd.getStartDate());
+                       sb.append(",requests=");
+                       sb.append(sd.getNumberOfRequests());
+                       sb.append(",totaltime=");
+                       sb.append(sd.getTotalTimeTaken());
                }
-               asb.append(",activerequests=");
-               asb.append(rd.getActiveRequest());
+               sb.append(",activerequests=");
+               sb.append(rd.getActiveRequest());
                if (includeRuntimeInfo)
                {
                        Runtime runtime = Runtime.getRuntime();
                        long max = runtime.maxMemory() / 1000000;
                        long total = runtime.totalMemory() / 1000000;
                        long used = total - runtime.freeMemory() / 1000000;
-                       asb.append(",maxmem=");
-                       asb.append(max);
-                       asb.append("M,total=");
-                       asb.append(total);
-                       asb.append("M,used=");
-                       asb.append(used);
-                       asb.append("M");
+                       sb.append(",maxmem=");
+                       sb.append(max);
+                       sb.append("M,total=");
+                       sb.append(total);
+                       sb.append("M,used=");
+                       sb.append(used);
+                       sb.append("M");
                }
-               return asb;
+               return sb;
        }
 
        private Object getSessionInfo(Session session)
@@ -434,5 +444,4 @@ public class RequestLogger implements IR
                }
                return "";
        }
-
 }

Added: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLoggerRequestCycleListener.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLoggerRequestCycleListener.java?rev=1141037&view=auto
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLoggerRequestCycleListener.java
 (added)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLoggerRequestCycleListener.java
 Wed Jun 29 10:23:36 2011
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.protocol.http;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.cycle.AbstractRequestCycleListener;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.settings.IRequestLoggerSettings;
+import org.apache.wicket.util.string.AppendingStringBuffer;
+
+/**
+ * Listener that logs request details in the {@link 
Application#getRequestLogger()} request logger.
+ */
+public class RequestLoggerRequestCycleListener extends 
AbstractRequestCycleListener
+{
+       /**
+        * Listeners are not thread safe. In order to keep track if a handler 
was the first in the
+        * request cycle, register a {@code ThreadLocal} that gets cleared out 
at the
+        * {@link #onEndRequest(RequestCycle) end of the request}
+        */
+       private static final ThreadLocal<IRequestHandler> first = new 
ThreadLocal<IRequestHandler>();
+
+       @Override
+       public void onBeginRequest(RequestCycle cycle)
+       {
+               if (!isRequestLoggingEnabled())
+                       return;
+
+               registerRequestedUrl(cycle);
+       }
+
+       @Override
+       public void onRequestHandlerScheduled(RequestCycle cycle, 
IRequestHandler handler)
+       {
+               if (!isRequestLoggingEnabled())
+                       return;
+
+               registerHandler(handler);
+       }
+
+       @Override
+       public void onRequestHandlerResolved(RequestCycle cycle, 
IRequestHandler handler)
+       {
+               if (!isRequestLoggingEnabled())
+                       return;
+
+               registerHandler(handler);
+       }
+
+       @Override
+       public void onEndRequest(RequestCycle cycle)
+       {
+               first.remove();
+       }
+
+       /**
+        * Determine whether a IRequestLogger is provided, and whether request 
logging has been enabled.
+        * 
+        * @return true when request logging is enabled.
+        */
+       private boolean isRequestLoggingEnabled()
+       {
+               IRequestLogger requestLogger = 
Application.get().getRequestLogger();
+               IRequestLoggerSettings settings = 
Application.get().getRequestLoggerSettings();
+               return requestLogger != null && 
settings.isRequestLoggerEnabled();
+       }
+
+       /**
+        * Registers the requested URL with the request logger, if one can be 
determined.
+        * 
+        * @param cycle
+        */
+       private void registerRequestedUrl(RequestCycle cycle)
+       {
+               IRequestLogger requestLogger = 
Application.get().getRequestLogger();
+               if (cycle.getRequest().getContainerRequest() instanceof 
HttpServletRequest)
+               {
+                       HttpServletRequest containerRequest = 
(HttpServletRequest)cycle.getRequest()
+                               .getContainerRequest();
+
+                       AppendingStringBuffer url = new 
AppendingStringBuffer(containerRequest.getRequestURL());
+                       if (containerRequest.getQueryString() != null)
+                               
url.append("?").append(containerRequest.getQueryString());
+
+                       requestLogger.logRequestedUrl(url.toString());
+               }
+       }
+
+       /**
+        * Registers the handler with the request logger. The first handler is 
used as the incoming
+        * request handler, and the last registered handler as the outgoing 
response handler.
+        * 
+        * @param handler
+        */
+       private void registerHandler(IRequestHandler handler)
+       {
+               IRequestLogger requestLogger = 
Application.get().getRequestLogger();
+
+               if (first.get() == null)
+               {
+                       first.set(handler);
+                       requestLogger.logEventTarget(handler);
+               }
+               requestLogger.logResponseTarget(handler);
+       }
+}

Propchange: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/protocol/http/RequestLoggerRequestCycleListener.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java?rev=1141037&r1=1141036&r2=1141037&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/BookmarkableListenerInterfaceRequestHandler.java
 Wed Jun 29 10:23:36 2011
@@ -97,6 +97,14 @@ public class BookmarkableListenerInterfa
        }
 
        /**
+        * @see 
org.apache.wicket.request.handler.IPageRequestHandler#getPageId()
+        */
+       public Integer getPageId()
+       {
+               return pageComponentProvider.getPageId();
+       }
+
+       /**
         * @see 
org.apache.wicket.request.handler.IPageClassRequestHandler#getPageParameters()
         */
        public PageParameters getPageParameters()

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageProvider.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageProvider.java?rev=1141037&r1=1141036&r2=1141037&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageProvider.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageProvider.java
 Wed Jun 29 10:23:36 2011
@@ -68,6 +68,13 @@ public interface IPageProvider
        Class<? extends IRequestablePage> getPageClass();
 
        /**
+        * Returns the page id.
+        * 
+        * @return page id
+        */
+       Integer getPageId();
+
+       /**
         * Detaches the page if it has been loaded.
         */
        void detach();

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageRequestHandler.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageRequestHandler.java?rev=1141037&r1=1141036&r2=1141037&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageRequestHandler.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/IPageRequestHandler.java
 Wed Jun 29 10:23:36 2011
@@ -26,9 +26,16 @@ import org.apache.wicket.request.compone
 public interface IPageRequestHandler extends IPageClassRequestHandler
 {
        /**
-        * Returns the page
+        * Returns the page. Be aware that the page can be instantiated if this 
wasn't the case already.
         * 
         * @return page instance
         */
        IRequestablePage getPage();
+
+       /**
+        * Returns the page id.
+        * 
+        * @return page id
+        */
+       Integer getPageId();
 }

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java?rev=1141037&r1=1141036&r2=1141037&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/ListenerInterfaceRequestHandler.java
 Wed Jun 29 10:23:36 2011
@@ -98,6 +98,14 @@ public class ListenerInterfaceRequestHan
        }
 
        /**
+        * @see 
org.apache.wicket.request.handler.IPageRequestHandler#getPageId()
+        */
+       public Integer getPageId()
+       {
+               return pageComponentProvider.getPageId();
+       }
+
+       /**
         * @see 
org.apache.wicket.request.handler.IPageClassRequestHandler#getPageParameters()
         */
        public PageParameters getPageParameters()

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/RenderPageRequestHandler.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/RenderPageRequestHandler.java?rev=1141037&r1=1141036&r2=1141037&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/RenderPageRequestHandler.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/RenderPageRequestHandler.java
 Wed Jun 29 10:23:36 2011
@@ -114,6 +114,14 @@ public class RenderPageRequestHandler im
                return pageProvider.getPageClass();
        }
 
+       /**
+        * @see 
org.apache.wicket.request.handler.IPageRequestHandler#getPageId()
+        */
+       public Integer getPageId()
+       {
+               return pageProvider.getPageId();
+       }
+
        /** {@inheritDoc} */
        public PageParameters getPageParameters()
        {


Reply via email to