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(); }
