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]