You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/01/23 11:57:27 UTC

svn commit: r1437337 - in /tomcat/trunk: java/org/apache/catalina/core/ test/org/apache/catalina/startup/ test/webapp-3.0-fragments/WEB-INF/

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org