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]

Reply via email to