Author: mrdon
Date: Sat Aug  6 12:41:10 2005
New Revision: 230569

URL: http://svn.apache.org/viewcvs?rev=230569&view=rev
Log:
 * Adding webwork integration
 * Updating for new xwork snapshot w/ pojo action support
 * Adding select locale command
 * Started to separate actions that depend on webwork and servlet apis 

Added:
    
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/AbstractSelectLocale.java
    
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/PopulateContextForRequest.java
    struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/servlet/
    
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/servlet/SelectLocale.java
    struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/
    
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/CreateWebWorkActionProxy.java
    
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/InitWebWork.java
    
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/PopulateContextForWebWork.java
Modified:
    struts/sandbox/trunk/ti/project.xml
    
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/ControllerActionInvocation.java
    
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/CreateActionProxy.java
    
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/ProcessActionChain.java
    
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/chain-config-servlet.xml

Modified: struts/sandbox/trunk/ti/project.xml
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/project.xml?rev=230569&r1=230568&r2=230569&view=diff
==============================================================================
--- struts/sandbox/trunk/ti/project.xml (original)
+++ struts/sandbox/trunk/ti/project.xml Sat Aug  6 12:41:10 2005
@@ -181,6 +181,15 @@
         <war.bundle>true</war.bundle>
       </properties>
     </dependency>
+    
+    <dependency>
+      <groupId>opensymphony</groupId>
+      <artifactId>webwork</artifactId>
+      <version>SNAPSHOT</version>
+      <properties>
+        <war.bundle>true</war.bundle>
+      </properties>
+    </dependency>
 
     <dependency>
       <groupId>opensymphony</groupId>

Modified: 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/ControllerActionInvocation.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/ControllerActionInvocation.java?rev=230569&r1=230568&r2=230569&view=diff
==============================================================================
--- 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/ControllerActionInvocation.java
 (original)
+++ 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/ControllerActionInvocation.java
 Sat Aug  6 12:41:10 2005
@@ -46,12 +46,12 @@
 
     public Method getActionMethod() {
         if (actionMethod == null) {
-            if (getPOJOAction() != null) {
+            if (getAction() != null) {
                 try {
-                    actionMethod = 
proxy.getConfig().getMethod(getPOJOAction().getClass());
+                    actionMethod = 
proxy.getConfig().getMethod(getAction().getClass());
                 } catch (NoSuchMethodException ex) {
                     throw new IllegalStateException("Cannot location method 
'"+proxy.getConfig().getMethodName()
-                        + "' in action '"+getPOJOAction().getClass()+"'");
+                        + "' in action '"+getAction().getClass()+"'");
                 }
             }    
         }    

Added: 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/AbstractSelectLocale.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/AbstractSelectLocale.java?rev=230569&view=auto
==============================================================================
--- 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/AbstractSelectLocale.java
 (added)
+++ 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/AbstractSelectLocale.java
 Sat Aug  6 12:41:10 2005
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2003,2004 The Apache Software Foundation.
+ *
+ * Licensed 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.ti.processor.chain;
+
+
+import java.util.Locale;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.commons.chain.web.WebContext;
+
+import com.opensymphony.xwork.ActionContext;
+
+/**
+ * <p>Select the <code>Locale</code> to be used for this request.</p>
+ *
+ * @version $Rev: 179995 $ $Date: 2005-06-04 07:58:46 -0700 (Sat, 04 Jun 2005) 
$
+ */
+
+public abstract class AbstractSelectLocale implements Command {
+
+    private static final Log log = 
LogFactory.getLog(AbstractSelectLocale.class);
+
+    // ---------------------------------------------------------- Public 
Methods
+
+
+    /**
+     * <p>Select the <code>Locale</code> to be used for this request.</p>
+     *
+     * @param actionCtx The <code>Context</code> for the current request
+     *
+     * @return <code>false</code> so that processing continues
+     */
+    public boolean execute(Context context) throws Exception {
+
+        WebContext ctx = (WebContext)context;
+        
+        // Retrieve and cache appropriate Locale for this request
+        Locale locale = getLocale(ctx);
+        log.debug("set context locale to " + locale);
+
+        ActionContext.getContext().put(ActionContext.LOCALE, locale);
+
+        return (false);
+
+    }
+
+
+    // ------------------------------------------------------- Protected 
Methods
+
+
+    /**
+     * <p>Return the <code>Locale</code> to be used for this request.</p>
+     *
+     * @param context The <code>Context</code> for this request
+     */
+    protected abstract Locale getLocale(WebContext context);
+
+
+}

Modified: 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/CreateActionProxy.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/CreateActionProxy.java?rev=230569&r1=230568&r2=230569&view=diff
==============================================================================
--- 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/CreateActionProxy.java
 (original)
+++ 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/CreateActionProxy.java
 Sat Aug  6 12:41:10 2005
@@ -17,67 +17,43 @@
  */
 package org.apache.ti.processor.chain;
 
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.ti.config.mapper.ActionMapping;
+import org.apache.ti.processor.ProcessorException;
 
-import org.apache.commons.chain.Command;
 import org.apache.commons.chain.Context;
+import org.apache.commons.chain.Command;
 import org.apache.commons.chain.web.WebContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.ti.config.mapper.ActionMapping;
-import org.apache.ti.processor.ProcessorException;
 
 import com.opensymphony.xwork.ActionContext;
 import com.opensymphony.xwork.ActionProxy;
 import com.opensymphony.xwork.ActionProxyFactory;
 import com.opensymphony.xwork.config.ConfigurationException;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
- *  Creates an ActionProxy instance
+ *  Initializes XWork by replacing default factories.
  */
 public class CreateActionProxy implements Command {
 
-    protected static final Log log = 
LogFactory.getLog(CreateActionProxy.class);
+    private static final Log log = LogFactory.getLog(CreateActionProxy.class);
 
-    public boolean execute(Context origctx) {
-        log.debug("Creating action proxy");
+    public boolean execute(Context origctx) throws Exception {
+        WebContext ctx = (WebContext)origctx;
         
-        WebContext ctx = (WebContext) origctx;
-
         ActionMapping mapping = (ActionMapping) ctx.get("actionMapping");
         ActionProxy proxy = getActionProxy(ctx, mapping);
-
         ctx.put("actionProxy", proxy);
+        
         return false;
     }
-
+    
     protected ActionProxy getActionProxy(WebContext ctx, ActionMapping 
mapping) {
 
-        // request map wrapping the http request objects
-        Map requestMap = ctx.getRequestScope();
-
-        // parameters map wrapping the http paraneters.
-        Map params = mapping.getParams();
-        Map requestParams = ctx.getParamValues();
-        if (params != null) {
-            params.putAll(requestParams);
-        } else {
-            params = requestParams;
-        }
-
-        HashMap extraContext = createContextMap(requestMap, params, 
ctx.getSessionScope(), ctx.getApplicationScope(), ctx);
-
-        // If there was a previous value stack, then create a new copy and 
pass it in to be used by the new Action
-        //OgnlValueStack stack = (OgnlValueStack) 
requestMap.get(ServletActionContext.WEBWORK_VALUESTACK_KEY);
-        //if (stack != null) {
-        //    extraContext.put(ActionContext.VALUE_STACK, new 
OgnlValueStack(stack));
-        //}
         try {
             log.debug("Trying to get proxy");
-            ActionProxy proxy = 
ActionProxyFactory.getFactory().createActionProxy(mapping.getNamespace(), 
mapping.getName(), extraContext);
-            
//request.setAttribute(ServletActionContext.WEBWORK_VALUESTACK_KEY, 
proxy.getInvocation().getStack());
+            ActionProxy proxy = 
ActionProxyFactory.getFactory().createActionProxy(mapping.getNamespace(), 
mapping.getName(), ctx);
             return proxy;
         } catch (ConfigurationException e) {
             log.error("Could not find action", e);
@@ -87,39 +63,4 @@
             throw new ProcessorException(e);
         }
     }
-
-    /**
-     * Merges all application and servlet attributes into a single 
<tt>HashMap</tt> to represent the entire
-     * <tt>Action</tt> context.
-     *
-     * @param requestMap     a Map of all request attributes.
-     * @param parameterMap   a Map of all request parameters.
-     * @param sessionMap     a Map of all session attributes.
-     * @param applicationMap a Map of all servlet context attributes.
-     * @return a HashMap representing the <tt>Action</tt> context.
-     */
-    public HashMap createContextMap(Map requestMap,
-                                    Map parameterMap,
-                                    Map sessionMap,
-                                    Map applicationMap,
-                                    WebContext ctx) {
-        HashMap extraContext = new HashMap();
-        extraContext.put(ActionContext.PARAMETERS, new HashMap(parameterMap));
-        extraContext.put(ActionContext.SESSION, sessionMap);
-        extraContext.put(ActionContext.APPLICATION, applicationMap);
-        //extraContext.put(ActionContext.LOCALE, (locale == null) ? 
request.getLocale() : locale);
-
-        extraContext.put("webContext", ctx);
-
-        // helpers to get access to request/session/application scope
-        extraContext.put("request", requestMap);
-        extraContext.put("session", sessionMap);
-        extraContext.put("application", applicationMap);
-        extraContext.put("parameters", parameterMap);
-
-        return extraContext;
-    }
-
-
-
 }

Added: 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/PopulateContextForRequest.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/PopulateContextForRequest.java?rev=230569&view=auto
==============================================================================
--- 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/PopulateContextForRequest.java
 (added)
+++ 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/PopulateContextForRequest.java
 Sat Aug  6 12:41:10 2005
@@ -0,0 +1,108 @@
+/*
+ * $Id: .java 230535 2005-08-06 07:56:40Z mrdon $
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.ti.processor.chain;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.commons.chain.web.WebContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.ti.config.mapper.ActionMapping;
+import org.apache.ti.processor.ProcessorException;
+
+import com.opensymphony.xwork.ActionContext;
+import com.opensymphony.xwork.ActionProxy;
+import com.opensymphony.xwork.ActionProxyFactory;
+import com.opensymphony.xwork.config.ConfigurationException;
+import com.opensymphony.xwork.interceptor.component.ComponentInterceptor;
+import com.opensymphony.xwork.interceptor.component.ComponentManager;
+
+/**
+ *  Creates an ActionProxy instance
+ */
+public class PopulateContextForRequest implements Command {
+
+    protected static final Log log = 
LogFactory.getLog(PopulateContextForRequest.class);
+
+    public boolean execute(Context origctx) {
+        log.debug("Initializing context map");
+        
+        WebContext ctx = (WebContext) origctx;
+
+        ActionMapping mapping = (ActionMapping) ctx.get("actionMapping");
+
+        // request map wrapping the http request objects
+        Map requestMap = ctx.getRequestScope();
+
+        // parameters map wrapping the http paraneters.
+        Map params = mapping.getParams();
+        Map requestParams = ctx.getParamValues();
+        if (params != null) {
+            params.putAll(requestParams);
+        } else {
+            params = requestParams;
+        }
+
+        HashMap extraContext = createContextMap(requestMap, params, 
ctx.getSessionScope(), ctx.getApplicationScope(), ctx);
+
+        ctx.putAll(extraContext);
+        
+        return false;
+    }
+
+    /**
+     * Merges all application and servlet attributes into a single 
<tt>HashMap</tt> to represent the entire
+     * <tt>Action</tt> context.
+     *
+     * @param requestMap     a Map of all request attributes.
+     * @param parameterMap   a Map of all request parameters.
+     * @param sessionMap     a Map of all session attributes.
+     * @param applicationMap a Map of all servlet context attributes.
+     * @return a HashMap representing the <tt>Action</tt> context.
+     */
+    protected HashMap createContextMap(Map requestMap,
+                                    Map parameterMap,
+                                    Map sessionMap,
+                                    Map applicationMap,
+                                    WebContext ctx) {
+        HashMap extraContext = new HashMap();
+        extraContext.put(ActionContext.PARAMETERS, new HashMap(parameterMap));
+        extraContext.put(ActionContext.SESSION, sessionMap);
+        extraContext.put(ActionContext.APPLICATION, applicationMap);
+        //extraContext.put(ActionContext.LOCALE, (locale == null) ? 
request.getLocale() : locale);
+
+        extraContext.put(ComponentInterceptor.COMPONENT_MANAGER, 
requestMap.get(ComponentManager.COMPONENT_MANAGER_KEY));
+        
+        extraContext.put("webContext", ctx);
+
+        // helpers to get access to request/session/application scope
+        extraContext.put("request", requestMap);
+        extraContext.put("session", sessionMap);
+        extraContext.put("application", applicationMap);
+        extraContext.put("parameters", parameterMap);
+
+        return extraContext;
+    }
+
+
+
+}

Modified: 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/ProcessActionChain.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/ProcessActionChain.java?rev=230569&r1=230568&r2=230569&view=diff
==============================================================================
--- 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/ProcessActionChain.java
 (original)
+++ 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/ProcessActionChain.java
 Sat Aug  6 12:41:10 2005
@@ -18,6 +18,7 @@
 package org.apache.ti.processor.chain;
 
 import org.apache.commons.chain.Context;
+import org.apache.commons.chain.web.WebContext;
 import org.apache.commons.chain.impl.ChainBase;
 
 import com.opensymphony.xwork.ActionContext;
@@ -33,24 +34,26 @@
 
     private static final Log log = LogFactory.getLog(ProcessActionChain.class);
 
-    public boolean execute(Context context) throws Exception {
+    public boolean execute(Context origctx) throws Exception {
+        WebContext ctx = (WebContext)origctx;
+        
         log.debug("Processing action chain");
 
+        ActionProxy proxy = (ActionProxy) ctx.get("actionProxy");
+        
         ActionContext nestedContext = ActionContext.getContext();
-
-        ActionProxy proxy = (ActionProxy) context.get("actionProxy");
         ActionContext.setContext(proxy.getInvocation().getInvocationContext());
 
         boolean retCode = false;
 
         try {
-            retCode = super.execute(context);
+            retCode = super.execute(origctx);
         } finally {
             ActionContext.setContext(nestedContext);
         }
-
+        
         return retCode;
     }
-
+    
 
 }

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=230569&r1=230568&r2=230569&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  6 12:41:10 2005
@@ -38,8 +38,9 @@
 
     <chain     name="start" >
       <command name="createActionMapping"  />
-      <command name="initXWork" />
-      <command name="createActionProxy" 
className="org.apache.ti.processor.chain.CreateActionProxy" />
+      <command name="populateContextForRequest" 
className="org.apache.ti.processor.chain.PopulateContextForRequest"/>
+      <command name="populateContextForWebWork" 
className="org.apache.ti.processor.chain.webwork.PopulateContextForWebWork" />
+      <command name="createWebWorkActionProxy" 
className="org.apache.ti.processor.chain.webwork.CreateWebWorkActionProxy"/>
       <lookup
         catalogName="struts-ti"
                name="process-action"
@@ -49,10 +50,14 @@
     <!-- ========== Initialization chain ========================= -->
 
     <chain     name="init" >
+      <command name="initXWork" />
+      <command name="initWebWork" 
className="org.apache.ti.processor.chain.webwork.InitWebWork"/>
     </chain>
     
     <chain     name="process-action" 
className="org.apache.ti.processor.chain.ProcessActionChain">
+      
       <command name="initControllerContext"  />
+      <command name="selectLocale" 
className="org.apache.ti.processor.chain.servlet.SelectLocale" />
       <command name="executeAction" 
className="org.apache.ti.processor.chain.ExecuteAction" />
     </chain>
     

Added: 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/servlet/SelectLocale.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/servlet/SelectLocale.java?rev=230569&view=auto
==============================================================================
--- 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/servlet/SelectLocale.java
 (added)
+++ 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/servlet/SelectLocale.java
 Sat Aug  6 12:41:10 2005
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2003,2004 The Apache Software Foundation.
+ *
+ * Licensed 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.ti.processor.chain.servlet;
+
+
+import java.util.Locale;
+
+import org.apache.ti.processor.chain.AbstractSelectLocale;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.commons.chain.web.WebContext;
+import org.apache.commons.chain.web.servlet.ServletWebContext;
+
+import com.opensymphony.xwork.ActionContext;
+
+import javax.servlet.http.HttpSession;
+
+
+/**
+ * <p>Select the <code>Locale</code> to be used for this request.</p>
+ *
+ * @version $Rev: 169091 $ $Date: 2005-05-07 09:11:38 -0700 (Sat, 07 May 2005) 
$
+ */
+
+public class SelectLocale extends AbstractSelectLocale {
+
+
+    private static final Log log = LogFactory.getLog(SelectLocale.class);
+
+    // ------------------------------------------------------- Protected 
Methods
+
+
+    /**
+     * <p>Return the <code>Locale</code> to be used for this request.</p>
+     *
+     * @param context The <code>Context</code> for this request
+     */
+    protected Locale getLocale(WebContext context) {
+
+        ServletWebContext saContext = (ServletWebContext) context;
+
+        // Has a Locale already been selected?
+        HttpSession session = saContext.getRequest().getSession();
+        Locale locale = (Locale) session.getAttribute(ActionContext.LOCALE);
+        if (locale != null) {
+            return (locale);
+        }
+
+        // Select and cache the Locale to be used
+        locale = saContext.getRequest().getLocale();
+        if (locale == null) {
+            locale = Locale.getDefault();
+        }
+        session.setAttribute(ActionContext.LOCALE, locale);
+        return (locale);
+
+    }
+}
+

Added: 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/CreateWebWorkActionProxy.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/CreateWebWorkActionProxy.java?rev=230569&view=auto
==============================================================================
--- 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/CreateWebWorkActionProxy.java
 (added)
+++ 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/CreateWebWorkActionProxy.java
 Sat Aug  6 12:41:10 2005
@@ -0,0 +1,73 @@
+/*
+ * $Id: InjectWebWorkValueStack.java 230535 2005-08-06 07:56:40Z mrdon $
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.ti.processor.chain.webwork;
+
+import org.apache.commons.chain.Context;
+import org.apache.commons.chain.Filter;
+import org.apache.commons.chain.web.WebContext;
+import org.apache.commons.chain.impl.ChainBase;
+import org.apache.ti.processor.chain.CreateActionProxy;
+import org.apache.ti.config.mapper.ActionMapping;
+
+import com.opensymphony.xwork.ActionContext;
+import com.opensymphony.xwork.ActionProxy;
+import com.opensymphony.webwork.ServletActionContext;
+import com.opensymphony.xwork.util.OgnlValueStack;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *  Initializes XWork by replacing default factories.
+ */
+public class CreateWebWorkActionProxy extends CreateActionProxy implements 
Filter {
+
+    private static final Log log = 
LogFactory.getLog(CreateWebWorkActionProxy.class);
+
+    public boolean execute(Context origctx) throws Exception {
+        WebContext ctx = (WebContext)origctx;
+        log.debug("Injecting webwork value stack");
+
+        // If there was a previous value stack, then create a new copy and 
pass it in to be used by the new Action
+        OgnlValueStack stack = (OgnlValueStack) 
ctx.getRequestScope().get(ServletActionContext.WEBWORK_VALUESTACK_KEY);
+        if (stack != null) {
+            ctx.put(ActionContext.VALUE_STACK, new OgnlValueStack(stack));
+        }
+        ctx.put("origStack", stack);
+        
+        ActionMapping mapping = (ActionMapping) ctx.get("actionMapping");
+        ActionProxy proxy = getActionProxy(ctx, mapping);
+        ctx.getRequestScope().put(ServletActionContext.WEBWORK_VALUESTACK_KEY, 
proxy.getInvocation().getStack());
+        ctx.put("actionProxy", proxy);
+        
+        return false;
+    }
+    
+    public boolean postprocess(Context context, Exception exception) {
+        OgnlValueStack stack = (OgnlValueStack)context.get("origStack");
+
+        WebContext ctx = (WebContext)context;
+        // If there was a previous value stack then set it back onto the 
request
+        if (stack != null) {
+            
ctx.getRequestScope().put(ServletActionContext.WEBWORK_VALUESTACK_KEY, stack);
+        }
+        context.remove("origStack");
+
+        return false;
+    }
+}

Added: 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/InitWebWork.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/InitWebWork.java?rev=230569&view=auto
==============================================================================
--- 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/InitWebWork.java
 (added)
+++ 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/InitWebWork.java
 Sat Aug  6 12:41:10 2005
@@ -0,0 +1,55 @@
+/*
+ * $Id: Init.java 230535 2005-08-06 07:56:40Z mrdon $
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.ti.processor.chain.webwork;
+
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.commons.chain.web.WebContext;
+
+import com.opensymphony.xwork.ActionProxyFactory;
+import com.opensymphony.xwork.ObjectFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import com.opensymphony.util.FileManager;
+import com.opensymphony.xwork.util.LocalizedTextUtil;
+import com.opensymphony.webwork.config.Configuration;
+
+/**
+ *  Initializes  by replacing default factories
+ */
+public class InitWebWork implements Command {
+
+    private static final Log log = LogFactory.getLog(InitWebWork.class);
+
+    public boolean execute(Context origctx) {
+        log.debug("Initializing webwork");
+        
+        
LocalizedTextUtil.addDefaultResourceBundle("com/opensymphony/webwork/webwork-messages");
+
+        //check for configuration reloading
+        if 
("true".equalsIgnoreCase(Configuration.getString("webwork.configuration.xml.reload")))
 {
+            FileManager.setReloadingConfigs(true);
+        }
+
+        return false;
+    }
+
+
+}

Added: 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/PopulateContextForWebWork.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/PopulateContextForWebWork.java?rev=230569&view=auto
==============================================================================
--- 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/PopulateContextForWebWork.java
 (added)
+++ 
struts/sandbox/trunk/ti/src/java/org/apache/ti/processor/chain/webwork/PopulateContextForWebWork.java
 Sat Aug  6 12:41:10 2005
@@ -0,0 +1,65 @@
+/*
+ * $Id: CreateActionProxy.java 230535 2005-08-06 07:56:40Z mrdon $
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed 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.ti.processor.chain.webwork;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.chain.Command;
+import org.apache.commons.chain.Context;
+import org.apache.commons.chain.web.WebContext;
+import org.apache.commons.chain.web.servlet.ServletWebContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.ti.config.mapper.ActionMapping;
+import org.apache.ti.processor.ProcessorException;
+
+import com.opensymphony.xwork.ActionContext;
+import com.opensymphony.xwork.ActionProxy;
+import com.opensymphony.xwork.ActionProxyFactory;
+import com.opensymphony.xwork.config.ConfigurationException;
+
+import com.opensymphony.webwork.ServletActionContext;
+import com.opensymphony.webwork.WebWorkStatics;
+import com.opensymphony.webwork.util.AttributeMap;
+
+
+/**
+ *  Creates an ActionProxy instance
+ */
+public class PopulateContextForWebWork implements Command {
+
+    protected static final Log log = 
LogFactory.getLog(PopulateContextForWebWork.class);
+
+    public boolean execute(Context ctx) {
+        log.debug("Initializing context map adding webwork values");
+    
+        ServletWebContext servletCtx = (ServletWebContext) ctx;
+        ctx.put(WebWorkStatics.HTTP_REQUEST, servletCtx.getRequest());
+        ctx.put(WebWorkStatics.HTTP_RESPONSE, servletCtx.getResponse());
+        ctx.put(WebWorkStatics.SERVLET_CONTEXT, servletCtx.getContext());
+        
+        AttributeMap attrMap = new AttributeMap(ctx);
+        ctx.put("attr", attrMap);
+        
+        return false;
+    }
+
+
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to