Author: mrdon
Date: Sat Aug 13 15:02:55 2005
New Revision: 232535
URL: http://svn.apache.org/viewcvs?rev=232535&view=rev
Log:
* Adding validation context to controller context
* Adding interceptor to handle both form and action validation
* Removing unnecessary form validator interceptor
Added:
struts/sandbox/trunk/ti/src/java/org/apache/ti/interceptor/ControllerValidationInterceptor.java
Removed:
struts/sandbox/trunk/ti/src/java/org/apache/ti/interceptor/FormValidationInterceptor.java
Modified:
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/ControllerContext.java
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/chain-config-servlet.xml
struts/sandbox/trunk/ti/src/java/ti-default.xml
Added:
struts/sandbox/trunk/ti/src/java/org/apache/ti/interceptor/ControllerValidationInterceptor.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/interceptor/ControllerValidationInterceptor.java?rev=232535&view=auto
==============================================================================
---
struts/sandbox/trunk/ti/src/java/org/apache/ti/interceptor/ControllerValidationInterceptor.java
(added)
+++
struts/sandbox/trunk/ti/src/java/org/apache/ti/interceptor/ControllerValidationInterceptor.java
Sat Aug 13 15:02:55 2005
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2002-2003 by OpenSymphony
+ * All rights reserved.
+ */
+package org.apache.ti.interceptor;
+
+import com.opensymphony.xwork.ActionInvocation;
+import com.opensymphony.xwork.interceptor.AroundInterceptor;
+import com.opensymphony.xwork.validator.*;
+import org.apache.ti.processor.ControllerActionInvocation;
+import org.apache.ti.processor.ControllerContext;
+
+
+
+/**
+ * Validates an action form. This interceptor extends the [EMAIL PROTECTED]
AroundInterceptor} and implements only the
+ * [EMAIL PROTECTED]
AroundInterceptor#before(com.opensymphony.xwork.ActionInvocation)} method. This
class
+ * simply calls the [EMAIL PROTECTED]
ActionValidatorManager#validate(java.lang.Object, java.lang.String)} method
+ * with the given Action and its context.
+ *
+ * @author Jason Carreira
+ */
+public class ControllerValidationInterceptor extends AroundInterceptor {
+
+ /**
+ * Does nothing in this implementation.
+ */
+ protected void after(ActionInvocation dispatcher, String result) throws
Exception {
+ }
+
+ /**
+ * Gets the current action form and its context and calls
+ * [EMAIL PROTECTED] ActionValidatorManager#validate(java.lang.Object,
java.lang.String)}.
+ *
+ * @param invocation the execution state of the Action.
+ * @throws Exception if an error occurs validating the action form.
+ */
+ protected void before(ActionInvocation invocation) throws Exception {
+
+ ControllerActionInvocation inv =
(ControllerActionInvocation)invocation;
+ Object form = inv.getForm();
+ Object action = inv.getAction();
+
+ ValidatorContext val =
ControllerContext.getContext().getValidatorContext();
+ String context = invocation.getProxy().getActionName();
+ if (log.isDebugEnabled()) {
+ log.debug("Validating "
+ + invocation.getProxy().getNamespace() + "/" +
invocation.getProxy().getActionName() + ".");
+ }
+
+ if (form != null) {
+ ActionValidatorManager.validate(form, context, val);
+ }
+ if (!val.hasErrors()) {
+ ActionValidatorManager.validate(action, context, val);
+ }
+ }
+}
Modified:
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/ControllerContext.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/ControllerContext.java?rev=232535&r1=232534&r2=232535&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/ControllerContext.java
(original)
+++
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/ControllerContext.java
Sat Aug 13 15:02:55 2005
@@ -21,6 +21,7 @@
import org.apache.ti.config.mapper.ActionMapping;
import com.opensymphony.xwork.ActionContext;
+import com.opensymphony.xwork.validator.ValidatorContext;
/**
* Context that adds Controller methods, using ActionContext for storage.
@@ -44,9 +45,21 @@
public ActionMapping getActionMapping() {
return (ActionMapping) get("actionMapping");
}
+
+ public ValidatorContext getValidatorContext() {
+ return (ValidatorContext) getFromStore("validatorContext");
+ }
+
+ public void setValidatorContext(ValidatorContext ctx) {
+ putInStore("validatorContext", ctx);
+ }
protected Object getFromStore(String key) {
return ActionContext.getContext().get(key);
+ }
+
+ protected void putInStore(String key, Object val) {
+ ActionContext.getContext().put(key, val);
}
protected Object get(String key) {
Modified:
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/chain-config-servlet.xml
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/chain-config-servlet.xml?rev=232535&r1=232534&r2=232535&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/chain-config-servlet.xml
(original)
+++
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/chain-config-servlet.xml
Sat Aug 13 15:02:55 2005
@@ -60,6 +60,7 @@
<command name="initControllerContext" />
<lookup catalogName="struts-ti" name="createForm" optional="true" />
<command name="selectLocale"
className="org.apache.ti.processor.chain.servlet.SelectLocale" />
+ <command name="createValidatorContext"
className="org.apache.ti.processor.chain.CreateValidatorContext" />
<command name="executeActionInvocation"
className="org.apache.ti.processor.chain.ExecuteActionInvocation" />
</chain>
Modified: struts/sandbox/trunk/ti/src/java/ti-default.xml
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/ti-default.xml?rev=232535&r1=232534&r2=232535&view=diff
==============================================================================
--- struts/sandbox/trunk/ti/src/java/ti-default.xml (original)
+++ struts/sandbox/trunk/ti/src/java/ti-default.xml Sat Aug 13 15:02:55 2005
@@ -25,7 +25,8 @@
<interceptor name="component"
class="com.opensymphony.xwork.interceptor.component.ComponentInterceptor"/>
<interceptor name="token"
class="com.opensymphony.webwork.interceptor.TokenInterceptor"/>
<interceptor name="token-session"
class="com.opensymphony.webwork.interceptor.TokenSessionStoreInterceptor"/>
- <interceptor name="validation"
class="com.opensymphony.xwork.validator.ValidationInterceptor"/>
+ <interceptor name="validation"
class="org.apache.ti.interceptor.ControllerValidationInterceptor" />
+ <interceptor name="controllerValidation"
class="com.opensymphony.xwork.validator.ValidationInterceptor"/>
<interceptor name="workflow"
class="com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor"/>
<interceptor name="servlet-config"
class="com.opensymphony.webwork.interceptor.ServletConfigInterceptor"/>
<interceptor name="prepare"
class="com.opensymphony.xwork.interceptor.PrepareInterceptor"/>
@@ -33,8 +34,6 @@
<interceptor name="fileUpload"
class="com.opensymphony.webwork.interceptor.FileUploadInterceptor"/>
<interceptor name="execAndWait"
class="com.opensymphony.webwork.interceptor.ExecuteAndWaitInterceptor"/>
- <intereceptor name="formValidation"
class="org.apache.ti.interceptor.FormValidationInterceptor" />
-
<!-- Basic stack -->
<interceptor-stack name="defaultStack">
<interceptor-ref name="servlet-config"/>
@@ -47,8 +46,7 @@
<!-- Sample validation and workflow stack -->
<interceptor-stack name="validationWorkflowStack">
<interceptor-ref name="defaultStack"/>
- <interceptor-ref name="validation"/>
- <interceptor-ref name="formValidation"/>
+ <interceptor-ref name="controllerValidation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]