Updated Branches:
  refs/heads/master b2b4c7b5f -> dda0c067f

WICKET-2745: add information about the submitting component to the request logs


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/dda0c067
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/dda0c067
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/dda0c067

Branch: refs/heads/master
Commit: dda0c067f491363d6e60c12ad8383ad50d064ede
Parents: b2b4c7b
Author: Emond Papegaaij <[email protected]>
Authored: Fri Mar 2 13:43:20 2012 +0100
Committer: Emond Papegaaij <[email protected]>
Committed: Fri Mar 2 13:46:27 2012 +0100

----------------------------------------------------------------------
 .../handler/logger/ListenerInterfaceLogData.java   |   61 +++++++++++++++
 1 files changed, 61 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/dda0c067/wicket-core/src/main/java/org/apache/wicket/request/handler/logger/ListenerInterfaceLogData.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/request/handler/logger/ListenerInterfaceLogData.java
 
b/wicket-core/src/main/java/org/apache/wicket/request/handler/logger/ListenerInterfaceLogData.java
index da10472..4431aca 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/request/handler/logger/ListenerInterfaceLogData.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/request/handler/logger/ListenerInterfaceLogData.java
@@ -16,8 +16,12 @@
  */
 package org.apache.wicket.request.handler.logger;
 
+import org.apache.wicket.Component;
 import org.apache.wicket.RequestListenerInterface;
 import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IFormSubmitListener;
+import org.apache.wicket.markup.html.form.IFormSubmitter;
 import org.apache.wicket.request.component.IRequestableComponent;
 import org.apache.wicket.request.handler.IPageAndComponentProvider;
 
@@ -36,6 +40,8 @@ public class ListenerInterfaceLogData extends PageLogData
        private Class<? extends Behavior> behaviorClass;
        private final String interfaceName;
        private final String interfaceMethod;
+       private Class<? extends IRequestableComponent> submittingComponentClass;
+       private String submittingComponentPath;
 
        /**
         * Construct.
@@ -70,6 +76,15 @@ public class ListenerInterfaceLogData extends PageLogData
                }
                interfaceName = listenerInterface.getName();
                interfaceMethod = listenerInterface.getMethod().getName();
+               if 
(listenerInterface.getListenerInterfaceClass().equals(IFormSubmitListener.class))
+               {
+                       final Component formSubmitter = 
tryToGetFormSubmittingComponent(pageAndComponentProvider);
+                       if (formSubmitter != null)
+                       {
+                               submittingComponentClass = 
formSubmitter.getClass();
+                               submittingComponentPath = 
formSubmitter.getPageRelativePath();
+                       }
+               }
        }
 
        private static Class<? extends IRequestableComponent> 
tryToGetComponentClass(
@@ -100,6 +115,26 @@ public class ListenerInterfaceLogData extends PageLogData
                }
        }
 
+       private static Component tryToGetFormSubmittingComponent(
+               IPageAndComponentProvider pageAndComponentProvider)
+       {
+               try
+               {
+                       final IRequestableComponent component = 
pageAndComponentProvider.getComponent();
+                       if (component instanceof Form)
+                       {
+                               final IFormSubmitter submitter = 
((Form<?>)component).findSubmittingButton();
+                               return submitter instanceof Component ? 
(Component)submitter : null;
+                       }
+                       return null;
+               }
+               catch (Exception e)
+               {
+                       // getComponent might fail if the page does not exist 
(ie session timeout)
+                       return null;
+               }
+       }
+
        /**
         * @return componentClass
         */
@@ -148,6 +183,22 @@ public class ListenerInterfaceLogData extends PageLogData
                return interfaceMethod;
        }
 
+       /**
+        * @return submittingComponentClass
+        */
+       public Class<? extends IRequestableComponent> 
getSubmittingComponentClass()
+       {
+               return submittingComponentClass;
+       }
+
+       /**
+        * @return submittingComponentPath
+        */
+       public String getSubmittingComponentPath()
+       {
+               return submittingComponentPath;
+       }
+
        @Override
        public String toString()
        {
@@ -176,6 +227,16 @@ public class ListenerInterfaceLogData extends PageLogData
                sb.append(getInterfaceName());
                sb.append(",interfaceMethod=");
                sb.append(getInterfaceMethod());
+               if (getSubmittingComponentClass() != null)
+               {
+                       sb.append(",submittingComponentClass=");
+                       sb.append(getSubmittingComponentClass().getName());
+               }
+               if (getSubmittingComponentPath() != null)
+               {
+                       sb.append(",submittingComponentPath=");
+                       sb.append(getSubmittingComponentPath());
+               }
                sb.append("}");
                return sb.toString();
        }

Reply via email to