Author: markt
Date: Tue Jun 26 22:04:17 2012
New Revision: 1354258

URL: http://svn.apache.org/viewvc?rev=1354258&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=53465
Populate mapped-name property for resources defined in web.xml
Based on a patch by Violeta Georgieva

Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java
    tomcat/tc7.0.x/trunk/test/org/apache/naming/resources/TestNamingContext.java
    tomcat/tc7.0.x/trunk/test/webapp-3.0/WEB-INF/web.xml
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
  Merged /tomcat/trunk:r1354255

Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java?rev=1354258&r1=1354257&r2=1354258&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/startup/WebRuleSet.java Tue 
Jun 26 22:04:17 2012
@@ -24,6 +24,7 @@ import java.util.ArrayList;
 
 import org.apache.catalina.deploy.ContextHandler;
 import org.apache.catalina.deploy.ContextService;
+import org.apache.catalina.deploy.ResourceBase;
 import org.apache.catalina.deploy.SecurityConstraint;
 import org.apache.catalina.deploy.ServletDef;
 import org.apache.catalina.deploy.WebXml;
@@ -493,6 +494,8 @@ public class WebRuleSet extends RuleSetB
                                "setLocal", 0);
         digester.addCallMethod(fullPrefix + "/ejb-local-ref/local-home",
                                "setHome", 0);
+        digester.addRule(fullPrefix + "/ejb-local-ref/mapped-name",
+                         new MappedNameRule());
         configureInjectionRules(digester, "web-app/ejb-local-ref/");
 
         //ejb-ref
@@ -513,6 +516,8 @@ public class WebRuleSet extends RuleSetB
                                "setHome", 0);
         digester.addCallMethod(fullPrefix + "/ejb-ref/remote",
                                "setRemote", 0);
+        digester.addRule(fullPrefix + "/ejb-ref/mapped-name",
+                         new MappedNameRule());
         configureInjectionRules(digester, "web-app/ejb-ref/");
 
         //env-entry
@@ -529,6 +534,8 @@ public class WebRuleSet extends RuleSetB
                                "setType", 0);
         digester.addCallMethod(fullPrefix + "/env-entry/env-entry-value",
                                "setValue", 0);
+        digester.addRule(fullPrefix + "/env-entry/mapped-name",
+                         new MappedNameRule());
         configureInjectionRules(digester, "web-app/env-entry/");
 
         //resource-env-ref
@@ -541,6 +548,8 @@ public class WebRuleSet extends RuleSetB
                 "setName", 0);
         digester.addCallMethod(fullPrefix + 
"/resource-env-ref/resource-env-ref-type",
                 "setType", 0);
+        digester.addRule(fullPrefix + "/resource-env-ref/mapped-name",
+                         new MappedNameRule());
         configureInjectionRules(digester, "web-app/resource-env-ref/");
 
         //message-destination
@@ -559,6 +568,8 @@ public class WebRuleSet extends RuleSetB
                                "setSmallIcon", 0);
         digester.addCallMethod(fullPrefix + 
"/message-destination/message-destination-name",
                                "setName", 0);
+        digester.addRule(fullPrefix + "/message-destination/mapped-name",
+                         new MappedNameRule());
 
         //message-destination-ref
         digester.addObjectCreate(fullPrefix + "/message-destination-ref",
@@ -576,7 +587,8 @@ public class WebRuleSet extends RuleSetB
                                "setType", 0);
         digester.addCallMethod(fullPrefix + 
"/message-destination-ref/message-destination-usage",
                                "setUsage", 0);
-
+        digester.addRule(fullPrefix + "/message-destination-ref/mapped-name",
+                         new MappedNameRule());
         configureInjectionRules(digester, "web-app/message-destination-ref/");
 
         //resource-ref
@@ -595,6 +607,8 @@ public class WebRuleSet extends RuleSetB
                                "setScope", 0);
         digester.addCallMethod(fullPrefix + "/resource-ref/res-type",
                                "setType", 0);
+        digester.addRule(fullPrefix + "/resource-ref/mapped-name",
+                         new MappedNameRule());
         configureInjectionRules(digester, "web-app/resource-ref/");
 
         //service-ref
@@ -652,9 +666,9 @@ public class WebRuleSet extends RuleSetB
                                "addSoapRole", 0);
         digester.addCallMethod(fullPrefix + "/service-ref/handler/port-name",
                                "addPortName", 0);
+        digester.addRule(fullPrefix + "/service-ref/mapped-name",
+                         new MappedNameRule());
         configureInjectionRules(digester, "web-app/service-ref/");
-
-
     }
 
     protected void configureInjectionRules(Digester digester, String base) {
@@ -1246,6 +1260,31 @@ final class TaglibLocationRule extends R
                     "taglib definition not consistent with specification 
version");
         }
     }
+}
 
-    
+/**
+ * A Rule that sets mapped name on the ResourceBase.
+ */
+final class MappedNameRule extends Rule {
+
+    public MappedNameRule() {
+        // NO-OP
+    }
+
+    /**
+     * Process the body text of this element.
+     *
+     * @param namespace the namespace URI of the matching element, or an
+     *   empty string if the parser is not namespace aware or the element has
+     *   no namespace
+     * @param name the local name if the parser is namespace aware, or just
+     *   the element name otherwise
+     * @param text The body text of this element
+     */
+    @Override
+    public void body(String namespace, String name, String text)
+            throws Exception {
+        ResourceBase resourceBase = (ResourceBase) digester.peek();
+        resourceBase.setProperty("mappedName", text.trim());
+    }
 }
\ No newline at end of file

Modified: 
tomcat/tc7.0.x/trunk/test/org/apache/naming/resources/TestNamingContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/naming/resources/TestNamingContext.java?rev=1354258&r1=1354257&r2=1354258&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/test/org/apache/naming/resources/TestNamingContext.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/test/org/apache/naming/resources/TestNamingContext.java 
Tue Jun 26 22:04:17 2012
@@ -480,4 +480,29 @@ public class TestNamingContext extends T
             }
         }
     }
+
+    @Test
+    public void testBug53465() throws Exception {
+        Tomcat tomcat = getTomcatInstance();
+        tomcat.enableNaming();
+
+        File appDir =
+            new File("test/webapp-3.0");
+        // app dir is relative to server home
+        org.apache.catalina.Context ctxt =
+                tomcat.addWebapp(null, "/test", appDir.getAbsolutePath());
+
+        tomcat.start();
+
+        ByteChunk bc = new ByteChunk();
+        int rc = getUrl("http://localhost:"; + getPort() +
+                "/test/bug53465.jsp", bc, null);
+
+        Assert.assertEquals(HttpServletResponse.SC_OK, rc);
+        Assert.assertTrue(bc.toString().contains("<p>10</p>"));
+
+        ContextEnvironment ce =
+                ctxt.getNamingResources().findEnvironment("bug53465");
+        Assert.assertEquals("Bug53465MappedName", 
ce.getProperty("mappedName"));
+    }
 }

Modified: tomcat/tc7.0.x/trunk/test/webapp-3.0/WEB-INF/web.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/webapp-3.0/WEB-INF/web.xml?rev=1354258&r1=1354257&r2=1354258&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/webapp-3.0/WEB-INF/web.xml (original)
+++ tomcat/tc7.0.x/trunk/test/webapp-3.0/WEB-INF/web.xml Tue Jun 26 22:04:17 
2012
@@ -116,4 +116,13 @@
   <login-config>
     <auth-method>BASIC</auth-method>
   </login-config>
+
+  <env-entry>
+    <description>Resource for testing bug 53465</description>
+    <env-entry-name>bug53465</env-entry-name>
+    <env-entry-value>10</env-entry-value>
+    <env-entry-type>java.lang.Integer</env-entry-type>
+    <mapped-name>Bug53465MappedName</mapped-name>
+  </env-entry>
+
 </web-app>
\ No newline at end of file

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1354258&r1=1354257&r2=1354258&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Tue Jun 26 22:04:17 2012
@@ -82,6 +82,10 @@
         checked for ServletContainerInitializers regardless of the setting of
         metadata complete. (markt) 
       </fix>
+      <add>
+        <bug>53465</bug>: Populate mapped-name property for resources defined 
in
+        web.xml. Based on a patch by Violeta Georgieva. (markt) 
+      </add>
     </changelog>
   </subsection>
   <subsection name="Coyote">



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

Reply via email to