Author: tv
Date: Wed Nov 14 21:18:20 2012
New Revision: 1409409
URL: http://svn.apache.org/viewvc?rev=1409409&view=rev
Log:
Add Annotation @InjectService to inject Turbine service instance into assemblers
such as screens, actions, navigations etc.
See VelocityActionWithServiceInjection for an example.
Added:
turbine/core/trunk/src/java/org/apache/turbine/annotation/
turbine/core/trunk/src/java/org/apache/turbine/annotation/InjectService.java
(with props)
turbine/core/trunk/src/test/org/apache/turbine/modules/actions/VelocityActionWithServiceInjection.java
(with props)
Modified:
turbine/core/trunk/src/changes/changes.xml
turbine/core/trunk/src/java/org/apache/turbine/services/assemblerbroker/TurbineAssemblerBrokerService.java
turbine/core/trunk/src/test/org/apache/turbine/modules/ActionLoaderTest.java
Modified: turbine/core/trunk/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/changes/changes.xml?rev=1409409&r1=1409408&r2=1409409&view=diff
==============================================================================
--- turbine/core/trunk/src/changes/changes.xml (original)
+++ turbine/core/trunk/src/changes/changes.xml Wed Nov 14 21:18:20 2012
@@ -26,6 +26,11 @@
<body>
<release version="4.0-M2" date="in Subversion">
<action type="add" dev="tv">
+ Add Annotation @InjectService to inject Turbine service instance into
assemblers
+ such as screens, actions, navigations etc.
+ See VelocityActionWithServiceInjection for an example.
+ </action>
+ <action type="add" dev="tv">
Add class cache for TurbineRunDataService
</action>
<action type="update" dev="tv">
Added:
turbine/core/trunk/src/java/org/apache/turbine/annotation/InjectService.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/annotation/InjectService.java?rev=1409409&view=auto
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/annotation/InjectService.java
(added)
+++
turbine/core/trunk/src/java/org/apache/turbine/annotation/InjectService.java
Wed Nov 14 21:18:20 2012
@@ -0,0 +1,40 @@
+package org.apache.turbine.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+/**
+ * Annotation to mark fields in modules that require a service to be injected
+ */
+@Retention( RetentionPolicy.RUNTIME )
+@Target( ElementType.FIELD )
+public @interface InjectService
+{
+ /**
+ * Get the name of the service to inject
+ *
+ * @return the service name or role
+ */
+ String value();
+}
Propchange:
turbine/core/trunk/src/java/org/apache/turbine/annotation/InjectService.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
turbine/core/trunk/src/java/org/apache/turbine/services/assemblerbroker/TurbineAssemblerBrokerService.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/services/assemblerbroker/TurbineAssemblerBrokerService.java?rev=1409409&r1=1409408&r2=1409409&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/services/assemblerbroker/TurbineAssemblerBrokerService.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/services/assemblerbroker/TurbineAssemblerBrokerService.java
Wed Nov 14 21:18:20 2012
@@ -21,6 +21,7 @@ package org.apache.turbine.services.asse
*/
+import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -33,10 +34,13 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.turbine.Turbine;
import org.apache.turbine.TurbineConstants;
+import org.apache.turbine.annotation.InjectService;
import org.apache.turbine.modules.Assembler;
import org.apache.turbine.modules.Loader;
import org.apache.turbine.services.InitializationException;
+import org.apache.turbine.services.ServiceManager;
import org.apache.turbine.services.TurbineBaseService;
+import org.apache.turbine.services.TurbineServices;
import org.apache.turbine.services.assemblerbroker.util.AssemblerFactory;
import org.apache.turbine.util.TurbineException;
@@ -232,9 +236,42 @@ public class TurbineAssemblerBrokerServi
+ fac.getClass().getName(), e);
}
- if (isCaching && assembler != null)
+ if (assembler != null)
{
- assemblerCache.put(key, assembler);
+ // Search for annotated fields and provide them with the
appropriate
+ // TurbineService
+ ServiceManager manager = TurbineServices.getInstance();
+ Field[] fields = assembler.getClass().getDeclaredFields();
+
+ for (Field field : fields)
+ {
+ if (field.isAnnotationPresent(InjectService.class))
+ {
+ InjectService sa =
field.getAnnotation(InjectService.class);
+ Object service = manager.getService(sa.value());
// throws Exception on unknown service
+ field.setAccessible(true);
+
+ try
+ {
+ field.set(assembler, service);
+ }
+ catch (IllegalArgumentException e)
+ {
+ throw new TurbineException("Could not inject
service "
+ + sa.value() + " into assembler " +
assembler, e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new TurbineException("Could not inject
service "
+ + sa.value() + " into assembler " +
assembler, e);
+ }
+ }
+ }
+
+ if (isCaching)
+ {
+ assemblerCache.put(key, assembler);
+ }
}
}
}
Modified:
turbine/core/trunk/src/test/org/apache/turbine/modules/ActionLoaderTest.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/test/org/apache/turbine/modules/ActionLoaderTest.java?rev=1409409&r1=1409408&r2=1409409&view=diff
==============================================================================
---
turbine/core/trunk/src/test/org/apache/turbine/modules/ActionLoaderTest.java
(original)
+++
turbine/core/trunk/src/test/org/apache/turbine/modules/ActionLoaderTest.java
Wed Nov 14 21:18:20 2012
@@ -19,7 +19,6 @@ package org.apache.turbine.modules;
* under the License.
*/
-
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
@@ -41,239 +40,308 @@ import org.apache.turbine.util.TurbineCo
import com.mockobjects.servlet.MockHttpServletResponse;
import com.mockobjects.servlet.MockServletConfig;
+
/**
* This test case is to verify whether exceptions in Velocity actions are
- * properly bubbled up when action.event.bubbleexception=true. Or, if
- * action.event.bubbleexception=false, then the exceptions should be
- * logged and sunk.
+ * properly bubbled up when action.event.bubbleexception=true. Or, if
+ * action.event.bubbleexception=false, then the exceptions should be logged and
+ * sunk.
*
- * @author <a href="mailto:[email protected]">Eric Pugh</a>
+ * @author <a href="mailto:[email protected]">Eric Pugh</a>
* @author <a href="mailto:[email protected]">Peter Courcoux</a>
*/
-public class ActionLoaderTest extends BaseTestCase {
- private static TurbineConfig tc = null;
- private MockServletConfig config = null;
- private EnhancedMockHttpServletRequest request = null;
- private EnhancedMockHttpSession session = null;
- private HttpServletResponse response = null;
+public class ActionLoaderTest extends BaseTestCase
+{
+ private static TurbineConfig tc = null;
+ private MockServletConfig config = null;
+ private EnhancedMockHttpServletRequest request = null;
+ private EnhancedMockHttpSession session = null;
+ private HttpServletResponse response = null;
+
+ /*
+ * @see TestCase#setUp()
+ */
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ config = new MockServletConfig();
+ config.setupNoParameters();
+ request = new EnhancedMockHttpServletRequest();
+ request.setupServerName("bob");
+ request.setupGetProtocol("http");
+ request.setupScheme("scheme");
+ request.setupPathInfo("damn");
+ request.setupGetServletPath("damn2");
+ request.setupGetContextPath("wow");
+ request.setupGetContentType("html/text");
+ request.setupAddHeader("Content-type", "html/text");
+ request.setupAddHeader("Accept-Language", "en-US");
+ Vector v = new Vector();
+ request.setupGetParameterNames(v.elements());
+ session = new EnhancedMockHttpSession();
+ response = new MockHttpServletResponse();
+ session.setupGetAttribute(User.SESSION_KEY, null);
+ request.setSession(session);
+ tc = new TurbineConfig(".",
"/conf/test/CompleteTurbineResources.properties");
+ tc.initialize();
+ }
/*
- * @see TestCase#setUp()
- */
- protected void setUp() throws Exception {
- super.setUp();
- config = new MockServletConfig();
- config.setupNoParameters();
- request = new EnhancedMockHttpServletRequest();
- request.setupServerName("bob");
- request.setupGetProtocol("http");
- request.setupScheme("scheme");
- request.setupPathInfo("damn");
- request.setupGetServletPath("damn2");
- request.setupGetContextPath("wow");
- request.setupGetContentType("html/text");
- request.setupAddHeader("Content-type", "html/text");
- request.setupAddHeader("Accept-Language", "en-US");
- Vector v = new Vector();
- request.setupGetParameterNames(v.elements());
- session = new EnhancedMockHttpSession();
- response = new MockHttpServletResponse();
- session.setupGetAttribute(User.SESSION_KEY, null);
- request.setSession(session);
- tc =
- new TurbineConfig(
- ".",
-
"/conf/test/CompleteTurbineResources.properties");
- tc.initialize();
- }
- /*
- * @see TestCase#tearDown()
- */
- protected void tearDown() throws Exception {
- super.tearDown();
- if (tc != null) {
- tc.dispose();
- }
- }
- /**
- * Constructor for VelocityErrorScreenTest.
- * @param arg0
- */
- public ActionLoaderTest(String arg0) throws Exception {
- super(arg0);
- }
- /**
- * This unit test verifies that if your standard doPerform is called,
- * and it throws an Exception, the exception is bubbled up out of the
ActionLoader...
- *
- * @throws Exception If something goes wrong with the unit test
- */
- public void testDoPerformBubblesException() throws Exception {
- RunData data = getRunData(request,response,config);
- PipelineData pipelineData = new DefaultPipelineData();
- Map runDataMap = new HashMap();
- runDataMap.put(RunData.class, data);
- pipelineData.put(RunData.class, runDataMap);
- data.setAction("VelocityActionThrowsException");
- try {
- ActionLoader.getInstance().exec(data, data.getAction());
- fail("Should have thrown an exception");
- } catch (Exception e) {
- //good
- }
-
- try {
- ActionLoader.getInstance().exec(pipelineData,
data.getAction());
- fail("Should have thrown an exception");
- } catch (Exception e) {
- //good
- }
- }
- /**
- * This unit test verifies that if an Action Event doEventSubmit_ is
called, and it throws an Exception, the
- * exception is bubbled up out of the ActionLoader...
- *
- * @throws Exception If something goes wrong with the unit test
- */
- public void testActionEventBubblesException() throws Exception {
- // can't seem to figure out how to setup the Mock Request with
the right parameters...
- request.setupAddParameter("eventSubmit_doCauseexception",
"foo");
- RunData data = getRunData(request,response,config);
- PipelineData pipelineData = new DefaultPipelineData();
- Map runDataMap = new HashMap();
- runDataMap.put(RunData.class, data);
- pipelineData.put(RunData.class, runDataMap);
- data.setAction("VelocityActionThrowsException");
- data.getParameters().add("eventSubmit_doCauseexception", "foo");
- assertTrue(
-
data.getParameters().containsKey("eventSubmit_doCauseexception"));
- try {
- ActionLoader.getInstance().exec(data, data.getAction());
- fail("Should have bubbled out an exception thrown by
the action.");
- } catch (Exception e) {
- //good
- }
- try {
- ActionLoader.getInstance().exec(pipelineData,
data.getAction());
- fail("Should have bubbled out an exception thrown by
the action.");
- } catch (Exception e) {
- //good
- }
- }
-
- /**
- * This unit test verifies that if your standard doPerform is called,
- * and it throws an Exception, if the action.event.bubbleexception
- * property is set to false then the exception is NOT bubbled up
- *
- * @throws Exception If something goes wrong with the unit test
- */
- public void testDoPerformDoesntBubbleException() throws Exception {
-
Turbine.getConfiguration().setProperty("action.event.bubbleexception",Boolean.FALSE);
-
assertFalse(Turbine.getConfiguration().getBoolean("action.event.bubbleexception"));
- RunData data = getRunData(request,response,config);
- PipelineData pipelineData = new DefaultPipelineData();
- Map runDataMap = new HashMap();
- runDataMap.put(RunData.class, data);
- pipelineData.put(RunData.class, runDataMap);
- data.setAction("VelocityActionThrowsException");
- try {
- ActionLoader.getInstance().exec(data, data.getAction());
-
- } catch (Exception e) {
- fail("Should NOT have thrown an exception:" +
e.getMessage());
- }
- try {
- ActionLoader.getInstance().exec(pipelineData,
data.getAction());
-
- } catch (Exception e) {
- fail("Should NOT have thrown an exception:" +
e.getMessage());
- }
- }
- /**
+ * @see TestCase#tearDown()
+ */
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+ if (tc != null)
+ {
+ tc.dispose();
+ }
+ }
+
+ /**
+ * Constructor for VelocityErrorScreenTest.
+ *
+ * @param arg0
+ */
+ public ActionLoaderTest(String arg0) throws Exception
+ {
+ super(arg0);
+ }
+
+ /**
+ * This unit test verifies that if your standard doPerform is called, and
it
+ * throws an Exception, the exception is bubbled up out of the
+ * ActionLoader...
+ *
+ * @throws Exception
+ * If something goes wrong with the unit test
+ */
+ public void testDoPerformBubblesException() throws Exception
+ {
+ RunData data = getRunData(request, response, config);
+ PipelineData pipelineData = new DefaultPipelineData();
+ Map<Class<?>, Object> runDataMap = new HashMap<Class<?>, Object>();
+ runDataMap.put(RunData.class, data);
+ pipelineData.put(RunData.class, runDataMap);
+ data.setAction("VelocityActionThrowsException");
+ try
+ {
+ ActionLoader.getInstance().exec(data, data.getAction());
+ fail("Should have thrown an exception");
+ }
+ catch (Exception e)
+ {
+ // good
+ }
+
+ try
+ {
+ ActionLoader.getInstance().exec(pipelineData, data.getAction());
+ fail("Should have thrown an exception");
+ }
+ catch (Exception e)
+ {
+ // good
+ }
+ }
+
+ /**
* This unit test verifies that if an Action Event doEventSubmit_ is
called,
- * and it throws an Exception, if the action.event.bubbleexception
- * property is set to false then the exception is NOT bubbled up
+ * and it throws an Exception, the exception is bubbled up out of the
+ * ActionLoader...
*
- * @throws Exception If something goes wrong with the unit test
+ * @throws Exception
+ * If something goes wrong with the unit test
*/
- public void testActionEventDoesntBubbleException() throws Exception {
- // can't seem to figure out how to setup the Mock Request with
the right parameters...
-
Turbine.getConfiguration().setProperty("action.event.bubbleexception",Boolean.FALSE);
- request.setupAddParameter("eventSubmit_doCauseexception",
"foo");
- RunData data = getRunData(request,response,config);
- PipelineData pipelineData = new DefaultPipelineData();
- Map runDataMap = new HashMap();
- runDataMap.put(RunData.class, data);
- pipelineData.put(RunData.class, runDataMap);
- data.setAction("VelocityActionThrowsException");
- data.getParameters().add("eventSubmit_doCauseexception", "foo");
- assertTrue(
-
data.getParameters().containsKey("eventSubmit_doCauseexception"));
-
- try {
- ActionLoader.getInstance().exec(data, data.getAction());
- } catch (Exception e) {
- fail("Should NOT have thrown an exception:" +
e.getMessage());
- }
- try {
- ActionLoader.getInstance().exec(pipelineData,
data.getAction());
- } catch (Exception e) {
- fail("Should NOT have thrown an exception:" +
e.getMessage());
- }
- }
- public void testNonexistentActionCausesError() throws Exception {
- RunData data = getRunData(request,response,config);
- PipelineData pipelineData = new DefaultPipelineData();
- Map runDataMap = new HashMap();
- runDataMap.put(RunData.class, data);
- pipelineData.put(RunData.class, runDataMap);
- data.setAction("ImaginaryAction");
- try {
- ActionLoader.getInstance().exec(data, "boo");
- fail("Should have thrown an exception");
- } catch (Exception e) {
- //good
- }
- try {
- ActionLoader.getInstance().exec(pipelineData, "boo");
- fail("Should have thrown an exception");
- } catch (Exception e) {
- //good
- }
- }
-
- public void testDoPerformWithRunData() throws Exception
- {
- RunData data = getRunData(request,response,config);
- data.setAction("VelocityActionDoesNothing");
- try {
- ActionLoader.getInstance().exec(data, data.getAction());
- } catch (Exception e) {
- e.printStackTrace();
- Assert.fail("Should not have thrown an exception.");
- }
-
- }
-
- public void testDoPerformWithPipelineData() throws Exception
- {
- RunData data = getRunData(request,response,config);
- PipelineData pipelineData = data;
- data.setAction("VelocityActionDoesNothing");
- int numberOfCalls = VelocityActionDoesNothing.numberOfCalls;
- int pipelineDataCalls =
VelocityActionDoesNothing.pipelineDataCalls;
- int runDataCalls = VelocityActionDoesNothing.runDataCalls;
- try {
- ActionLoader.getInstance().exec(pipelineData,
data.getAction());
- } catch (Exception e) {
- e.printStackTrace();
- Assert.fail("Should not have thrown an exception.");
- }
-
assertEquals(numberOfCalls+1,VelocityActionDoesNothing.numberOfCalls);
-
assertEquals(runDataCalls,VelocityActionDoesNothing.runDataCalls);
-
assertEquals(pipelineDataCalls+1,VelocityActionDoesNothing.pipelineDataCalls);
+ public void testActionEventBubblesException() throws Exception
+ {
+ // can't seem to figure out how to setup the Mock Request with the
right
+ // parameters...
+ request.setupAddParameter("eventSubmit_doCauseexception", "foo");
+ RunData data = getRunData(request, response, config);
+ PipelineData pipelineData = new DefaultPipelineData();
+ Map<Class<?>, Object> runDataMap = new HashMap<Class<?>, Object>();
+ runDataMap.put(RunData.class, data);
+ pipelineData.put(RunData.class, runDataMap);
+ data.setAction("VelocityActionThrowsException");
+ data.getParameters().add("eventSubmit_doCauseexception", "foo");
+
assertTrue(data.getParameters().containsKey("eventSubmit_doCauseexception"));
+ try
+ {
+ ActionLoader.getInstance().exec(data, data.getAction());
+ fail("Should have bubbled out an exception thrown by the action.");
+ }
+ catch (Exception e)
+ {
+ // good
+ }
+ try
+ {
+ ActionLoader.getInstance().exec(pipelineData, data.getAction());
+ fail("Should have bubbled out an exception thrown by the action.");
+ }
+ catch (Exception e)
+ {
+ // good
+ }
+ }
+
+ /**
+ * This unit test verifies that if your standard doPerform is called, and
it
+ * throws an Exception, if the action.event.bubbleexception property is set
+ * to false then the exception is NOT bubbled up
+ *
+ * @throws Exception
+ * If something goes wrong with the unit test
+ */
+ public void testDoPerformDoesntBubbleException() throws Exception
+ {
+ Turbine.getConfiguration().setProperty("action.event.bubbleexception",
Boolean.FALSE);
+
assertFalse(Turbine.getConfiguration().getBoolean("action.event.bubbleexception"));
+ RunData data = getRunData(request, response, config);
+ PipelineData pipelineData = new DefaultPipelineData();
+ Map<Class<?>, Object> runDataMap = new HashMap<Class<?>, Object>();
+ runDataMap.put(RunData.class, data);
+ pipelineData.put(RunData.class, runDataMap);
+ data.setAction("VelocityActionThrowsException");
+ try
+ {
+ ActionLoader.getInstance().exec(data, data.getAction());
+ }
+ catch (Exception e)
+ {
+ fail("Should NOT have thrown an exception:" + e.getMessage());
+ }
+ try
+ {
+ ActionLoader.getInstance().exec(pipelineData, data.getAction());
+ }
+ catch (Exception e)
+ {
+ fail("Should NOT have thrown an exception:" + e.getMessage());
+ }
+ }
- }
+ /**
+ * This unit test verifies that if an Action Event doEventSubmit_ is
called,
+ * and it throws an Exception, if the action.event.bubbleexception property
+ * is set to false then the exception is NOT bubbled up
+ *
+ * @throws Exception
+ * If something goes wrong with the unit test
+ */
+ public void testActionEventDoesntBubbleException() throws Exception
+ {
+ // can't seem to figure out how to setup the Mock Request with the
right
+ // parameters...
+ Turbine.getConfiguration().setProperty("action.event.bubbleexception",
Boolean.FALSE);
+ request.setupAddParameter("eventSubmit_doCauseexception", "foo");
+ RunData data = getRunData(request, response, config);
+ PipelineData pipelineData = new DefaultPipelineData();
+ Map<Class<?>, Object> runDataMap = new HashMap<Class<?>, Object>();
+ runDataMap.put(RunData.class, data);
+ pipelineData.put(RunData.class, runDataMap);
+ data.setAction("VelocityActionThrowsException");
+ data.getParameters().add("eventSubmit_doCauseexception", "foo");
+
assertTrue(data.getParameters().containsKey("eventSubmit_doCauseexception"));
+
+ try
+ {
+ ActionLoader.getInstance().exec(data, data.getAction());
+ }
+ catch (Exception e)
+ {
+ fail("Should NOT have thrown an exception:" + e.getMessage());
+ }
+ try
+ {
+ ActionLoader.getInstance().exec(pipelineData, data.getAction());
+ }
+ catch (Exception e)
+ {
+ fail("Should NOT have thrown an exception:" + e.getMessage());
+ }
+ }
+
+ public void testNonexistentActionCausesError() throws Exception
+ {
+ RunData data = getRunData(request, response, config);
+ PipelineData pipelineData = new DefaultPipelineData();
+ Map<Class<?>, Object> runDataMap = new HashMap<Class<?>, Object>();
+ runDataMap.put(RunData.class, data);
+ pipelineData.put(RunData.class, runDataMap);
+ data.setAction("ImaginaryAction");
+ try
+ {
+ ActionLoader.getInstance().exec(data, "boo");
+ fail("Should have thrown an exception");
+ }
+ catch (Exception e)
+ {
+ // good
+ }
+ try
+ {
+ ActionLoader.getInstance().exec(pipelineData, "boo");
+ fail("Should have thrown an exception");
+ }
+ catch (Exception e)
+ {
+ // good
+ }
+ }
+
+ public void testDoPerformWithRunData() throws Exception
+ {
+ RunData data = getRunData(request, response, config);
+ data.setAction("VelocityActionDoesNothing");
+ try
+ {
+ ActionLoader.getInstance().exec(data, data.getAction());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ Assert.fail("Should not have thrown an exception.");
+ }
+ }
+
+ public void testDoPerformWithPipelineData() throws Exception
+ {
+ RunData data = getRunData(request, response, config);
+ PipelineData pipelineData = data;
+ data.setAction("VelocityActionDoesNothing");
+ int numberOfCalls = VelocityActionDoesNothing.numberOfCalls;
+ int pipelineDataCalls = VelocityActionDoesNothing.pipelineDataCalls;
+ int runDataCalls = VelocityActionDoesNothing.runDataCalls;
+ try
+ {
+ ActionLoader.getInstance().exec(pipelineData, data.getAction());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ Assert.fail("Should not have thrown an exception.");
+ }
+ assertEquals(numberOfCalls + 1,
VelocityActionDoesNothing.numberOfCalls);
+ assertEquals(runDataCalls, VelocityActionDoesNothing.runDataCalls);
+ assertEquals(pipelineDataCalls + 1,
VelocityActionDoesNothing.pipelineDataCalls);
+ }
+
+ public void testDoPerformWithServiceInjection() throws Exception
+ {
+ RunData data = getRunData(request, response, config);
+ PipelineData pipelineData = data;
+ data.setAction("VelocityActionWithServiceInjection");
+ try
+ {
+ ActionLoader.getInstance().exec(pipelineData, data.getAction());
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ Assert.fail("Should not have thrown an exception.");
+ }
+ }
}
Added:
turbine/core/trunk/src/test/org/apache/turbine/modules/actions/VelocityActionWithServiceInjection.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/test/org/apache/turbine/modules/actions/VelocityActionWithServiceInjection.java?rev=1409409&view=auto
==============================================================================
---
turbine/core/trunk/src/test/org/apache/turbine/modules/actions/VelocityActionWithServiceInjection.java
(added)
+++
turbine/core/trunk/src/test/org/apache/turbine/modules/actions/VelocityActionWithServiceInjection.java
Wed Nov 14 21:18:20 2012
@@ -0,0 +1,65 @@
+package org.apache.turbine.modules.actions;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.
+ */
+
+
+import junit.framework.Assert;
+
+import org.apache.turbine.annotation.InjectService;
+import org.apache.turbine.pipeline.PipelineData;
+import org.apache.turbine.services.rundata.RunDataService;
+import org.apache.turbine.util.RunData;
+import org.apache.velocity.context.Context;
+/**
+ * This action is used in testing the injection of services.
+ *
+ * @author <a href="mailto:[email protected]">Thomas Vandahl</a>
+ */
+public class VelocityActionWithServiceInjection extends VelocityAction
+{
+ @InjectService( RunDataService.SERVICE_NAME )
+ private RunDataService runDataService;
+
+ /**
+ * Default action is nothing.
+ *
+ * @param data Current RunData information
+ * @param context Context to populate
+ * @exception Exception Thrown on error
+ */
+ public void doPerform(RunData data, Context context) throws Exception
+ {
+ log.debug("Calling doPerform");
+ }
+
+ /**
+ * Default action is nothing.
+ *
+ * @param data Current RunData information
+ * @param context Context to populate
+ * @exception Exception Thrown on error
+ */
+ public void doPerform(PipelineData pipelineData, Context context) throws
Exception
+ {
+ log.debug("Calling doPerform(PipelineData)");
+ Assert.assertNotNull("runDataService object was Null.",
runDataService);
+ log.debug("Injected service is " + runDataService.getName());
+ }
+}
Propchange:
turbine/core/trunk/src/test/org/apache/turbine/modules/actions/VelocityActionWithServiceInjection.java
------------------------------------------------------------------------------
svn:mime-type = text/plain