Author: mrdon
Date: Mon Dec 12 18:44:08 2005
New Revision: 356454

URL: http://svn.apache.org/viewcvs?rev=356454&view=rev
Log:
Adding scoped model interceptor

Added:
    
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDriven.java
    
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDrivenInterceptor.java
    
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestScopedModelDrivenInterceptor.java

Added: 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDriven.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDriven.java?rev=356454&view=auto
==============================================================================
--- 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDriven.java
 (added)
+++ 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDriven.java
 Mon Dec 12 18:44:08 2005
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2002-2003 by OpenSymphony
+ * All rights reserved.
+ */
+package org.apache.ti.legacy;
+
+import com.opensymphony.xwork.ModelDriven;
+
+/**
+ * ModelDriven Actions provide a model object to be pushed onto the ValueStack
+ * in addition to the Action itself, allowing a FormBean type approach like 
Struts.
+ *
+ * @author Jason Carreira
+ *         Created Apr 8, 2003 6:22:42 PM
+ */
+public interface ScopedModelDriven extends ModelDriven {
+
+    /**
+     * @return the model to be pushed onto the ValueStack instead of the 
Action itself
+     */
+    void setModel(Object model);
+}

Added: 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDrivenInterceptor.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDrivenInterceptor.java?rev=356454&view=auto
==============================================================================
--- 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDrivenInterceptor.java
 (added)
+++ 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDrivenInterceptor.java
 Mon Dec 12 18:44:08 2005
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2002-2003 by OpenSymphony
+ * All rights reserved.
+ */
+package org.apache.ti.legacy;
+
+import com.opensymphony.xwork.interceptor.ModelDrivenInterceptor;
+import com.opensymphony.xwork.ActionInvocation;
+import com.opensymphony.xwork.ActionContext;
+import com.opensymphony.xwork.ActionProxy;
+import com.opensymphony.xwork.config.entities.ActionConfig;
+import com.opensymphony.xwork.ObjectFactory;
+
+import java.util.Map;
+
+public class ScopedModelDrivenInterceptor extends ModelDrivenInterceptor {
+
+    protected void after(ActionInvocation dispatcher, String result) throws 
Exception {
+    }
+
+    protected void before(ActionInvocation invocation) throws Exception {
+        Object action = invocation.getAction();
+
+        if (action instanceof ScopedModelDriven) {
+            ScopedModelDriven modelDriven = (ScopedModelDriven) action;
+            ActionContext ctx = ActionContext.getContext();
+            ActionConfig config = invocation.getProxy().getConfig();
+            String scope = (String)config.getParams().get("modelScope");
+            String attr = (String)config.getParams().get("modelName");
+            String clsName = (String)config.getParams().get("modelClass");
+           
+            Object model = resolveModel(ObjectFactory.getObjectFactory(), 
ctx.getSession(), clsName, scope, attr);
+            modelDriven.setModel(model);
+        }
+        super.before(invocation);
+    }
+
+    protected Object resolveModel(ObjectFactory factory, Map session, String 
className, String scope, String name) throws Exception {
+        Object model = null;
+        if ("session".equals(scope)) {
+            model = session.get(name);
+            if (model == null) {
+                model = factory.buildBean(className, null);
+                session.put(name, model);
+            }
+        } else {
+            model = factory.buildBean(className, null);
+        }
+        return model;
+    }    
+                    
+}

Added: 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestScopedModelDrivenInterceptor.java
URL: 
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestScopedModelDrivenInterceptor.java?rev=356454&view=auto
==============================================================================
--- 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestScopedModelDrivenInterceptor.java
 (added)
+++ 
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestScopedModelDrivenInterceptor.java
 Mon Dec 12 18:44:08 2005
@@ -0,0 +1,53 @@
+package org.apache.ti.legacy;
+
+import junit.framework.*;
+import java.io.*;
+import java.util.*;
+import org.apache.commons.beanutils.*;
+import com.opensymphony.xwork.ObjectFactory;
+import ognl.*;
+
+/**  Description of the Class */
+public class TestScopedModelDrivenInterceptor extends TestCase {
+
+    protected ScopedModelDrivenInterceptor inter = null;
+    
+    public TestScopedModelDrivenInterceptor(String name) throws Exception {
+        super(name);
+    }
+
+
+    public static void main(String args[]) {
+        junit.textui.TestRunner.run(TestScopedModelDrivenInterceptor.class);
+    }
+
+    /**
+     * Set up instance variables required by this test case.
+     */
+    public void setUp() throws Exception {
+    
+        inter = new ScopedModelDrivenInterceptor();
+    }
+
+
+
+
+    public void testResolveModel() throws Exception {
+        ObjectFactory factory = ObjectFactory.getObjectFactory();
+        Object obj = inter.resolveModel(factory, null, "java.lang.String", 
"request", null);
+        assertNotNull(obj);
+        assertTrue(obj instanceof String);
+
+        HashMap session = new HashMap();
+        obj = inter.resolveModel(factory, session, "java.lang.String", 
"request", "foo");
+        assertNotNull(obj);
+        assertTrue(obj instanceof String);
+        assertTrue(obj == session.get("foo"));
+
+        obj = inter.resolveModel(factory, session, "java.lang.String", 
"request", "foo");
+        assertNotNull(obj);
+        assertTrue(obj instanceof String);
+        assertTrue(obj == session.get("foo"));
+    }
+}
+



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

Reply via email to