svn commit: r1407596 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/catalina/core/NamingContextListener.java test/org/apache/catalina/core/TestNamingContextListener.java webapps/docs/changelog.xml
Author: markt Date: Fri Nov 9 19:33:44 2012 New Revision: 1407596 URL: http://svn.apache.org/viewvc?rev=1407596&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54096 env-entry can use any type that has a String or char constructor Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/NamingContextListener.java tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestNamingContextListener.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc7.0.x/trunk/ -- Merged /tomcat/trunk:r1407595 Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/NamingContextListener.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/NamingContextListener.java?rev=1407596&r1=1407595&r2=1407596&view=diff == --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/NamingContextListener.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/NamingContextListener.java Fri Nov 9 19:33:44 2012 @@ -21,6 +21,7 @@ package org.apache.catalina.core; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.lang.reflect.Constructor; import java.net.MalformedURLException; import java.net.URL; import java.util.Collection; @@ -863,7 +864,11 @@ public class NamingContextListener } } } else { -logger.error(sm.getString("naming.invalidEnvEntryType", env.getName())); +value = constructEnvEntry(env.getType(), env.getValue()); +if (value == null) { +logger.error(sm.getString( +"naming.invalidEnvEntryType", env.getName())); +} } } catch (NumberFormatException e) { logger.error(sm.getString("naming.invalidEnvEntryValue", env.getName())); @@ -886,6 +891,33 @@ public class NamingContextListener } +private Object constructEnvEntry(String type, String value) { +try { +Class clazz = Class.forName(type); +Constructor c = null; +try { + c = clazz.getConstructor(String.class); + return c.newInstance(value); +} catch (NoSuchMethodException e) { +// Ignore +} + +if (value.length() != 1) { +return null; +} + +try { +c = clazz.getConstructor(char.class); +return c.newInstance(Character.valueOf(value.charAt(0))); +} catch (NoSuchMethodException e) { +// Ignore +} +} catch (Exception e) { +// Ignore +} +return null; +} + /** * Set the specified local EJBs in the naming context. */ Modified: tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestNamingContextListener.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestNamingContextListener.java?rev=1407596&r1=1407595&r2=1407596&view=diff == --- tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestNamingContextListener.java (original) +++ tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestNamingContextListener.java Fri Nov 9 19:33:44 2012 @@ -33,8 +33,13 @@ import org.apache.catalina.startup.Tomca public class TestNamingContextListener extends TomcatBaseTest { -private static final String JNDI_NAME = "TestName"; -private static final String JNDI_VALUE= "Test Value"; +private static final String BUG49132_NAME = "TestName"; +private static final String BUG49132_VALUE = "Test Value"; + +private static final String BUG54096_NameA = "envA"; +private static final String BUG54096_ValueA = "valueA"; +private static final String BUG54096_NameB = "envB"; +private static final String BUG54096_ValueB = "B"; /** * Test JNDI is available to ServletContextListeners. @@ -51,9 +56,9 @@ public class TestNamingContextListener e tomcat.enableNaming(); ContextEnvironment environment = new ContextEnvironment(); -environment.setType(JNDI_VALUE.getClass().getName()); -environment.setName(JNDI_NAME); -environment.setValue(JNDI_VALUE); +environment.setType(BUG49132_VALUE.getClass().getName()); +environment.setName(BUG49132_NAME); +environment.setValue(BUG49132_VALUE); ctx.getNamingResources().addEnvironment(environment); ctx.addApplicationListener(Bug49132Listener.class.getName()); @@ -77,8 +82,8 @@ public class TestNamingContextListener e initCtx = new InitialContext(); javax.na
Re: svn commit: r1407596 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/catalina/core/NamingContextListener.java test/org/apache/catalina/core/TestNamingContextListener.java webapps/docs/changelog.xml
2012/11/9 : > Author: markt > Date: Fri Nov 9 19:33:44 2012 > New Revision: 1407596 > > URL: http://svn.apache.org/viewvc?rev=1407596&view=rev > Log: > Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54096 > env-entry can use any type that has a String or char constructor > Does it change what types are allowed for the element in Context or in GlobalResources? I mean the following documentation: http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Environment_Entries http://tomcat.apache.org/tomcat-7.0-doc/config/globalresources.html#Environment_Entries Best regards, Konstantin Kolinko > Modified: > tomcat/tc7.0.x/trunk/ (props changed) > > tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/NamingContextListener.java > > tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestNamingContextListener.java > tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml > > Propchange: tomcat/tc7.0.x/trunk/ > -- > Merged /tomcat/trunk:r1407595 > > Modified: > tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/NamingContextListener.java > URL: > http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/NamingContextListener.java?rev=1407596&r1=1407595&r2=1407596&view=diff > == > --- > tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/NamingContextListener.java > (original) > +++ > tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/NamingContextListener.java > Fri Nov 9 19:33:44 2012 > @@ -21,6 +21,7 @@ package org.apache.catalina.core; > > import java.beans.PropertyChangeEvent; > import java.beans.PropertyChangeListener; > +import java.lang.reflect.Constructor; > import java.net.MalformedURLException; > import java.net.URL; > import java.util.Collection; > @@ -863,7 +864,11 @@ public class NamingContextListener > } > } > } else { > -logger.error(sm.getString("naming.invalidEnvEntryType", > env.getName())); > +value = constructEnvEntry(env.getType(), env.getValue()); > +if (value == null) { > +logger.error(sm.getString( > +"naming.invalidEnvEntryType", env.getName())); > +} > } > } catch (NumberFormatException e) { > logger.error(sm.getString("naming.invalidEnvEntryValue", > env.getName())); > @@ -886,6 +891,33 @@ public class NamingContextListener > } > > > +private Object constructEnvEntry(String type, String value) { > +try { > +Class clazz = Class.forName(type); > +Constructor c = null; > +try { > + c = clazz.getConstructor(String.class); > + return c.newInstance(value); > +} catch (NoSuchMethodException e) { > +// Ignore > +} > + > +if (value.length() != 1) { > +return null; > +} > + > +try { > +c = clazz.getConstructor(char.class); > +return c.newInstance(Character.valueOf(value.charAt(0))); > +} catch (NoSuchMethodException e) { > +// Ignore > +} > +} catch (Exception e) { > +// Ignore > +} > +return null; > +} > + > /** > * Set the specified local EJBs in the naming context. > */ > > Modified: > tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestNamingContextListener.java > (...) - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1407596 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/catalina/core/NamingContextListener.java test/org/apache/catalina/core/TestNamingContextListener.java webapps/docs/changelog.xml
On 10/11/2012 09:31, Konstantin Kolinko wrote: > 2012/11/9 : >> Author: markt >> Date: Fri Nov 9 19:33:44 2012 >> New Revision: 1407596 >> >> URL: http://svn.apache.org/viewvc?rev=1407596&view=rev >> Log: >> Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54096 >> env-entry can use any type that has a String or char constructor >> > > Does it change what types are allowed for the element in > Context or in GlobalResources? > > I mean the following documentation: > http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Environment_Entries > http://tomcat.apache.org/tomcat-7.0-doc/config/globalresources.html#Environment_Entries It does. Those limitations were removed in Servlet 2.4 (Tomcat 5.x). I'll update the docs. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org