Author: markt
Date: Mon Jan  2 20:42:11 2012
New Revision: 1226546

URL: http://svn.apache.org/viewvc?rev=1226546&view=rev
Log:
https://issues.apache.org/bugzilla/show_bug.cgi?id=52405
Servlet 3.0 Rev A updates
Item 13 of 20
Injection targets are now always merged

Modified:
    tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java

Modified: tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java?rev=1226546&r1=1226545&r2=1226546&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java (original)
+++ tomcat/trunk/java/org/apache/catalina/deploy/WebXml.java Mon Jan  2 
20:42:11 2012
@@ -1378,8 +1378,6 @@ public class WebXml {
         // Merge rules vary from element to element. See SRV.8.2.3
 
         WebXml temp = new WebXml();
-        Map<String,Boolean> mergeInjectionFlags =
-            new HashMap<String, Boolean>();
 
         for (WebXml fragment : fragments) {
             if (!mergeMap(fragment.getContextParams(), contextParams,
@@ -1418,30 +1416,27 @@ public class WebXml {
 
         for (WebXml fragment : fragments) {
             if (!mergeResourceMap(fragment.getEjbLocalRefs(), ejbLocalRefs,
-                    temp.getEjbLocalRefs(), mergeInjectionFlags, fragment)) {
+                    temp.getEjbLocalRefs(), fragment)) {
                 return false;
             }
         }
         ejbLocalRefs.putAll(temp.getEjbLocalRefs());
-        mergeInjectionFlags.clear();
 
         for (WebXml fragment : fragments) {
             if (!mergeResourceMap(fragment.getEjbRefs(), ejbRefs,
-                    temp.getEjbRefs(), mergeInjectionFlags, fragment)) {
+                    temp.getEjbRefs(), fragment)) {
                 return false;
             }
         }
         ejbRefs.putAll(temp.getEjbRefs());
-        mergeInjectionFlags.clear();
 
         for (WebXml fragment : fragments) {
             if (!mergeResourceMap(fragment.getEnvEntries(), envEntries,
-                    temp.getEnvEntries(), mergeInjectionFlags, fragment)) {
+                    temp.getEnvEntries(), fragment)) {
                 return false;
             }
         }
         envEntries.putAll(temp.getEnvEntries());
-        mergeInjectionFlags.clear();
 
         for (WebXml fragment : fragments) {
             if (!mergeMap(fragment.getErrorPages(), errorPages,
@@ -1538,21 +1533,19 @@ public class WebXml {
 
         for (WebXml fragment : fragments) {
             if (!mergeResourceMap(fragment.getMessageDestinationRefs(), 
messageDestinationRefs,
-                    temp.getMessageDestinationRefs(), mergeInjectionFlags, 
fragment)) {
+                    temp.getMessageDestinationRefs(), fragment)) {
                 return false;
             }
         }
         messageDestinationRefs.putAll(temp.getMessageDestinationRefs());
-        mergeInjectionFlags.clear();
 
         for (WebXml fragment : fragments) {
             if (!mergeResourceMap(fragment.getMessageDestinations(), 
messageDestinations,
-                    temp.getMessageDestinations(), mergeInjectionFlags, 
fragment)) {
+                    temp.getMessageDestinations(), fragment)) {
                 return false;
             }
         }
         messageDestinations.putAll(temp.getMessageDestinations());
-        mergeInjectionFlags.clear();
 
         for (WebXml fragment : fragments) {
             if (!mergeMap(fragment.getMimeMappings(), mimeMappings,
@@ -1564,21 +1557,19 @@ public class WebXml {
 
         for (WebXml fragment : fragments) {
             if (!mergeResourceMap(fragment.getResourceEnvRefs(), 
resourceEnvRefs,
-                    temp.getResourceEnvRefs(), mergeInjectionFlags, fragment)) 
{
+                    temp.getResourceEnvRefs(), fragment)) {
                 return false;
             }
         }
         resourceEnvRefs.putAll(temp.getResourceEnvRefs());
-        mergeInjectionFlags.clear();
 
         for (WebXml fragment : fragments) {
             if (!mergeResourceMap(fragment.getResourceRefs(), resourceRefs,
-                    temp.getResourceRefs(), mergeInjectionFlags, fragment)) {
+                    temp.getResourceRefs(), fragment)) {
                 return false;
             }
         }
         resourceRefs.putAll(temp.getResourceRefs());
-        mergeInjectionFlags.clear();
 
         for (WebXml fragment : fragments) {
             for (SecurityConstraint constraint : 
fragment.getSecurityConstraints()) {
@@ -1596,12 +1587,11 @@ public class WebXml {
 
         for (WebXml fragment : fragments) {
             if (!mergeResourceMap(fragment.getServiceRefs(), serviceRefs,
-                    temp.getServiceRefs(), mergeInjectionFlags, fragment)) {
+                    temp.getServiceRefs(), fragment)) {
                 return false;
             }
         }
         serviceRefs.putAll(temp.getServiceRefs());
-        mergeInjectionFlags.clear();
 
         // As per 'clarification' from the Servlet EG, servlet definitions and
         // mappings in the main web.xml override those in fragments and those 
in
@@ -1873,27 +1863,12 @@ public class WebXml {
 
     private static <T extends ResourceBase> boolean mergeResourceMap(
             Map<String, T> fragmentResources, Map<String, T> mainResources,
-            Map<String, T> tempResources,
-            Map<String,Boolean> mergeInjectionFlags, WebXml fragment) {
+            Map<String, T> tempResources, WebXml fragment) {
         for (T resource : fragmentResources.values()) {
             String resourceName = resource.getName();
-            boolean mergeInjectionFlag = false;
             if (mainResources.containsKey(resourceName)) {
-                if (mergeInjectionFlags.containsKey(resourceName)) {
-                    mergeInjectionFlag =
-                        mergeInjectionFlags.get(resourceName).booleanValue();
-                } else {
-                    if (mainResources.get(
-                            resourceName).getInjectionTargets().size() == 0) {
-                        mergeInjectionFlag = true;
-                    }
-                    mergeInjectionFlags.put(resourceName,
-                            Boolean.valueOf(mergeInjectionFlag));
-                }
-                if (mergeInjectionFlag) {
-                    
mainResources.get(resourceName).getInjectionTargets().addAll(
-                            resource.getInjectionTargets());
-                }
+                mainResources.get(resourceName).getInjectionTargets().addAll(
+                        resource.getInjectionTargets());
             } else {
                 // Not defined in main web.xml
                 T existingResource = tempResources.get(resourceName);



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to