Author: markt Date: Wed Jan 23 10:57:27 2013 New Revision: 1437337 URL: http://svn.apache.org/viewvc?rev=1437337&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54450 Correctly handle resource injection when part of the servlet properties uses @Resource and the other uses 'injection-target' Includes test case Patch provided by Violeta Georgieva.
Modified: tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java tomcat/trunk/test/org/apache/catalina/startup/TestContextConfig.java tomcat/trunk/test/org/apache/catalina/startup/TesterServletWithAnnotations.java tomcat/trunk/test/webapp-3.0-fragments/WEB-INF/web.xml Modified: tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java?rev=1437337&r1=1437336&r2=1437337&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/DefaultInstanceManager.java Wed Jan 23 10:57:27 2013 @@ -348,9 +348,9 @@ public class DefaultInstanceManager impl annotations.add(new AnnotationCacheEntry( method.getName(), method.getParameterTypes(), - injections.get(method.getName()), + injections.get(fieldName), AnnotationCacheEntryType.SETTER)); - break; + continue; } } if (method.isAnnotationPresent(Resource.class)) { Modified: tomcat/trunk/test/org/apache/catalina/startup/TestContextConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TestContextConfig.java?rev=1437337&r1=1437336&r2=1437337&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/startup/TestContextConfig.java (original) +++ tomcat/trunk/test/org/apache/catalina/startup/TestContextConfig.java Wed Jan 23 10:57:27 2013 @@ -127,7 +127,7 @@ public class TestContextConfig extends T } @Test - public void testBug54448() throws Exception { + public void testBug54448and54450() throws Exception { Tomcat tomcat = getTomcatInstance(); File appDir = new File("test/webapp-3.0-fragments"); @@ -142,7 +142,8 @@ public class TestContextConfig extends T tomcat.start(); - assertPageContains("/test/testServlet", "envEntry: 1"); + assertPageContains("/test/testServlet", + "envEntry1: 1 envEntry2: 2 envEntry3: 33 envEntry4: 4"); } private static class CustomDefaultServletSCI Modified: tomcat/trunk/test/org/apache/catalina/startup/TesterServletWithAnnotations.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TesterServletWithAnnotations.java?rev=1437337&r1=1437336&r2=1437337&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/catalina/startup/TesterServletWithAnnotations.java (original) +++ tomcat/trunk/test/org/apache/catalina/startup/TesterServletWithAnnotations.java Wed Jan 23 10:57:27 2013 @@ -14,6 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.apache.catalina.startup; import java.io.IOException; @@ -29,12 +30,35 @@ public class TesterServletWithAnnotation private static final long serialVersionUID = 1L; @Resource(mappedName = "1") - private int envEntry; + private int envEntry1; + + private int envEntry2; + + private int envEntry3; + + private int envEntry4; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/plain"); - resp.getWriter().print("envEntry: " + envEntry); + resp.getWriter().print("envEntry1: " + envEntry1); + resp.getWriter().print(" envEntry2: " + envEntry2); + resp.getWriter().print(" envEntry3: " + envEntry3); + resp.getWriter().print(" envEntry4: " + envEntry4); + } + + public void setEnvEntry2(int envEntry2) { + this.envEntry2 = envEntry2; + } + + @Resource(mappedName = "3") + public void setEnvEntry3(int envEntry3) { + this.envEntry3 = envEntry3; + } + + @Resource(mappedName = "4") + public void setEnvEntry4(int envEntry4) { + this.envEntry4 = envEntry4; } -} +} \ No newline at end of file Modified: tomcat/trunk/test/webapp-3.0-fragments/WEB-INF/web.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/test/webapp-3.0-fragments/WEB-INF/web.xml?rev=1437337&r1=1437336&r2=1437337&view=diff ============================================================================== --- tomcat/trunk/test/webapp-3.0-fragments/WEB-INF/web.xml (original) +++ tomcat/trunk/test/webapp-3.0-fragments/WEB-INF/web.xml Wed Jan 23 10:57:27 2013 @@ -57,4 +57,23 @@ <lifecycle-callback-class>org.apache.catalina.startup.TesterServletWithLifeCycleMethods</lifecycle-callback-class> <lifecycle-callback-method>preDestroy1</lifecycle-callback-method> </pre-destroy> + + <env-entry> + <env-entry-name>envEntry2</env-entry-name> + <env-entry-type>java.lang.Integer</env-entry-type> + <env-entry-value>2</env-entry-value> + <injection-target> + <injection-target-class>org.apache.catalina.startup.TesterServletWithAnnotations</injection-target-class> + <injection-target-name>envEntry2</injection-target-name> + </injection-target> + </env-entry> + <env-entry> + <env-entry-name>envEntry3</env-entry-name> + <env-entry-type>java.lang.Integer</env-entry-type> + <env-entry-value>33</env-entry-value> + <injection-target> + <injection-target-class>org.apache.catalina.startup.TesterServletWithAnnotations</injection-target-class> + <injection-target-name>envEntry3</injection-target-name> + </injection-target> + </env-entry> </web-app> \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org