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-09 Thread markt
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-10 Thread Konstantin Kolinko
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

2012-11-11 Thread Mark Thomas
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