Author: mrdon
Date: Tue Dec 13 11:45:48 2005
New Revision: 356591
URL: http://svn.apache.org/viewcvs?rev=356591&view=rev
Log:
Adding new interceptors to call reset() and validate() on the ActionForm,
adding a new
StrutsFactory to provide conversion functions between Struts Action 1.x and Ti,
added
class-level Javadocs, added rife as build dependency (temporary until XWork
fixed)
Added:
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ActionFormResetInterceptor.java
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ActionFormValidationInterceptor.java
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/StrutsFactory.java
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestStrutsFactory.java
Modified:
struts/sandbox/trunk/ti/phase1/jars/legacy/project.properties
struts/sandbox/trunk/ti/phase1/jars/legacy/project.xml
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/DynaBeanPropertyAccessor.java
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
Modified: struts/sandbox/trunk/ti/phase1/jars/legacy/project.properties
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/project.properties?rev=356591&r1=356590&r2=356591&view=diff
==============================================================================
--- struts/sandbox/trunk/ti/phase1/jars/legacy/project.properties (original)
+++ struts/sandbox/trunk/ti/phase1/jars/legacy/project.properties Tue Dec 13
11:45:48 2005
@@ -1,2 +1,5 @@
maven.compile.source=1.4
maven.compile.target=1.4
+
+
+maven.repo.remote=http://www.ibiblio.org/maven/,http://cvs.apache.org/repository/,http://www.twdata.org/repository/
Modified: struts/sandbox/trunk/ti/phase1/jars/legacy/project.xml
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/project.xml?rev=356591&r1=356590&r2=356591&view=diff
==============================================================================
--- struts/sandbox/trunk/ti/phase1/jars/legacy/project.xml (original)
+++ struts/sandbox/trunk/ti/phase1/jars/legacy/project.xml Tue Dec 13 11:45:48
2005
@@ -25,4 +25,22 @@
<artifactId>struts-ti-core</artifactId>
<name>Struts Ti Core</name>
+ <dependencies>
+
+ <!-- Standard dependencies -->
+ <dependency>
+ <groupId>struts</groupId>
+ <artifactId>struts</artifactId>
+ <version>1.2.8</version>
+ <url>http://struts.apache.org/</url>
+ </dependency>
+
+ <dependency>
+ <groupId>rife</groupId>
+ <artifactId>rife-continuations</artifactId>
+ <version>1.2</version>
+ <url>http://rifers.org/</url>
+ </dependency>
+ </dependencies>
+
</project>
Added:
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ActionFormResetInterceptor.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ActionFormResetInterceptor.java?rev=356591&view=auto
==============================================================================
---
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ActionFormResetInterceptor.java
(added)
+++
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ActionFormResetInterceptor.java
Tue Dec 13 11:45:48 2005
@@ -0,0 +1,51 @@
+/*
+ * $Id: Action.java 240373 2005-08-27 01:58:39Z jmitchell $
+ *
+ * Copyright 2000-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.legacy;
+
+import com.opensymphony.xwork.interceptor.ModelDrivenInterceptor;
+import com.opensymphony.xwork.ActionInvocation;
+import com.opensymphony.xwork.interceptor.AroundInterceptor;
+import com.opensymphony.xwork.ObjectFactory;
+import com.opensymphony.webwork.ServletActionContext;
+import javax.servlet.http.HttpServletRequest;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionMapping;
+
+/**
+ * Calls the reset() method on the ActionForm, if it exists.
+ */
+public class ActionFormResetInterceptor extends AroundInterceptor {
+
+ 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;
+ Object model = modelDriven.getModel();
+ if (model != null) {
+ ActionMapping mapping =
StrutsFactory.getStrutsFactory().createActionMapping(invocation.getProxy().getConfig());
+ HttpServletRequest req = ServletActionContext.getRequest();
+ ((ActionForm)model).reset(mapping, req);
+ }
+ }
+ }
+}
Added:
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ActionFormValidationInterceptor.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ActionFormValidationInterceptor.java?rev=356591&view=auto
==============================================================================
---
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ActionFormValidationInterceptor.java
(added)
+++
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ActionFormValidationInterceptor.java
Tue Dec 13 11:45:48 2005
@@ -0,0 +1,55 @@
+/*
+ * $Id: Action.java 240373 2005-08-27 01:58:39Z jmitchell $
+ *
+ * Copyright 2000-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.legacy;
+
+import com.opensymphony.xwork.interceptor.ModelDrivenInterceptor;
+import com.opensymphony.xwork.ActionInvocation;
+import com.opensymphony.xwork.interceptor.AroundInterceptor;
+import com.opensymphony.xwork.ObjectFactory;
+import com.opensymphony.webwork.ServletActionContext;
+import javax.servlet.http.HttpServletRequest;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.ActionErrors;
+import org.apache.struts.action.ActionError;
+
+/**
+ * Calls the validate() method on the ActionForm, if it exists. The errors
are handled
+ * like regular XWork validation errors.
+ */
+public class ActionFormValidationInterceptor extends AroundInterceptor {
+
+ 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;
+ Object model = modelDriven.getModel();
+ if (model != null) {
+ ActionMapping mapping =
StrutsFactory.getStrutsFactory().createActionMapping(invocation.getProxy().getConfig());
+ HttpServletRequest req = ServletActionContext.getRequest();
+ ActionErrors errors = ((ActionForm)model).validate(mapping,
req);
+ StrutsFactory.getStrutsFactory().convertErrors(errors,
action);
+ }
+ }
+ }
+}
Modified:
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/DynaBeanPropertyAccessor.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/DynaBeanPropertyAccessor.java?rev=356591&r1=356590&r2=356591&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/DynaBeanPropertyAccessor.java
(original)
+++
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/DynaBeanPropertyAccessor.java
Tue Dec 13 11:45:48 2005
@@ -15,6 +15,7 @@
* limitations under the License.
*
*/
+
package org.apache.ti.legacy;
import java.io.Serializable;
@@ -25,8 +26,7 @@
import java.util.Map;
/**
- *
- * @todo Finish documenting me!
+ * Provides access to DynaBean properties in OGNL
*/
public class DynaBeanPropertyAccessor implements PropertyAccessor {
Modified:
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=356591&r1=356590&r2=356591&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDriven.java
(original)
+++
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDriven.java
Tue Dec 13 11:45:48 2005
@@ -1,22 +1,32 @@
/*
- * Copyright (c) 2002-2003 by OpenSymphony
- * All rights reserved.
+ * $Id$
+ * Copyright 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.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
+ * Adds the ability to set a model, probably retrieved from a given state.
*/
public interface ScopedModelDriven extends ModelDriven {
/**
- * @return the model to be pushed onto the ValueStack instead of the
Action itself
+ * Sets the model
*/
void setModel(Object model);
}
Modified:
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=356591&r1=356590&r2=356591&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDrivenInterceptor.java
(original)
+++
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/ScopedModelDrivenInterceptor.java
Tue Dec 13 11:45:48 2005
@@ -1,7 +1,21 @@
/*
- * Copyright (c) 2002-2003 by OpenSymphony
- * All rights reserved.
+ * $Id$
+ * Copyright 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.legacy;
import com.opensymphony.xwork.interceptor.ModelDrivenInterceptor;
@@ -13,6 +27,10 @@
import java.util.Map;
+/**
+ * Retrieves the model class from the configured scope, then provides it
+ * to the Action.
+ */
public class ScopedModelDrivenInterceptor extends ModelDrivenInterceptor {
protected void after(ActionInvocation dispatcher, String result) throws
Exception {
Added:
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/StrutsFactory.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/StrutsFactory.java?rev=356591&view=auto
==============================================================================
---
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/StrutsFactory.java
(added)
+++
struts/sandbox/trunk/ti/phase1/jars/legacy/src/java/org/apache/ti/legacy/StrutsFactory.java
Tue Dec 13 11:45:48 2005
@@ -0,0 +1,94 @@
+/*
+ * $Id$
+ * Copyright 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.legacy;
+
+import com.opensymphony.xwork.*;
+import com.opensymphony.xwork.config.entities.ActionConfig;
+import org.apache.struts.action.*;
+import org.apache.struts.config.*;
+import java.util.*;
+
+
+/**
+ * Provides conversion methods between the Struts Action 1.x and XWork
+ * classes.
+ */
+public class StrutsFactory {
+ private static StrutsFactory FACTORY = new StrutsFactory();
+
+ protected StrutsFactory() {
+ }
+
+ public static void setStrutsFactory(StrutsFactory factory) {
+ FACTORY = factory;
+ }
+
+ public static StrutsFactory getStrutsFactory() {
+ return FACTORY;
+ }
+
+ public ModuleConfig createModuleConfig() {
+ return null;
+ }
+
+ public ActionMapping createActionMapping(ActionConfig cfg) {
+ return null;
+ }
+
+ public void convertErrors(ActionErrors errors, Object action) {
+ ValidationAware vaction = null;
+ TextProvider text = null;
+
+ if (action instanceof ValidationAware) {
+ vaction = (ValidationAware)action;
+ }
+ if (action instanceof TextProvider) {
+ text = (TextProvider)action;
+ }
+
+ ActionMessage error = null;
+ String field = null;
+ String msg = null;
+ Object[] values = null;
+ for (Iterator i = errors.properties(); i.hasNext(); ) {
+ field = (String) i.next();
+ for (Iterator it = errors.get(field); it.hasNext(); ) {
+ error = (ActionMessage) it.next();
+ msg = error.getKey();
+ if (error.isResource() && text != null) {
+ values = error.getValues();
+ if (values != null) {
+ msg = text.getText(error.getKey(),
Arrays.asList(values));
+ } else {
+ msg = text.getText(error.getKey());
+ }
+ }
+ if (vaction != null) {
+ if (field == errors.GLOBAL_MESSAGE) {
+ vaction.addActionError(msg);
+ } else {
+ vaction.addFieldError(field, msg);
+ }
+ } else {
+ // should do something here
+ }
+ }
+ }
+ }
+}
Modified:
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=356591&r1=356590&r2=356591&view=diff
==============================================================================
---
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestScopedModelDrivenInterceptor.java
(original)
+++
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestScopedModelDrivenInterceptor.java
Tue Dec 13 11:45:48 2005
@@ -39,12 +39,12 @@
assertTrue(obj instanceof String);
HashMap session = new HashMap();
- obj = inter.resolveModel(factory, session, "java.lang.String",
"request", "foo");
+ obj = inter.resolveModel(factory, session, "java.lang.String",
"session", "foo");
assertNotNull(obj);
assertTrue(obj instanceof String);
assertTrue(obj == session.get("foo"));
- obj = inter.resolveModel(factory, session, "java.lang.String",
"request", "foo");
+ obj = inter.resolveModel(factory, session, "java.lang.String",
"session", "foo");
assertNotNull(obj);
assertTrue(obj instanceof String);
assertTrue(obj == session.get("foo"));
Added:
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestStrutsFactory.java
URL:
http://svn.apache.org/viewcvs/struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestStrutsFactory.java?rev=356591&view=auto
==============================================================================
---
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestStrutsFactory.java
(added)
+++
struts/sandbox/trunk/ti/phase1/jars/legacy/src/test/org/apache/ti/legacy/TestStrutsFactory.java
Tue Dec 13 11:45:48 2005
@@ -0,0 +1,52 @@
+package org.apache.ti.legacy;
+
+import junit.framework.*;
+import java.io.*;
+import java.util.*;
+import org.apache.commons.beanutils.*;
+import com.opensymphony.xwork.ActionSupport;
+import ognl.*;
+import org.apache.struts.action.*;
+import org.apache.struts.config.*;
+
+/** Description of the Class */
+public class TestStrutsFactory extends TestCase {
+
+ protected StrutsFactory factory = null;
+
+ public TestStrutsFactory(String name) throws Exception {
+ super(name);
+ }
+
+
+ public static void main(String args[]) {
+ junit.textui.TestRunner.run(TestStrutsFactory.class);
+ }
+
+ /**
+ * Set up instance variables required by this test case.
+ */
+ public void setUp() throws Exception {
+
+ factory = new StrutsFactory();
+ }
+
+
+
+
+ public void testConvertErrors() throws Exception {
+
+ ActionMessage err1 = new ActionMessage("error1");
+ ActionMessage err2 = new ActionMessage("error2", new Integer(1));
+ ActionErrors errors = new ActionErrors();
+ errors.add(errors.GLOBAL_MESSAGE, err1);
+ errors.add("foo", err2);
+
+ ActionSupport action = new ActionSupport();
+ factory.convertErrors(errors, action);
+
+ assertTrue(1 == action.getActionErrors().size());
+ assertTrue(1 == action.getFieldErrors().size());
+ }
+}
+
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]