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 2006/01/05 22:42:36 UTC
svn commit: r366304 - in /tomcat/container/tc5.5.x:
catalina/src/share/org/apache/naming/
catalina/src/share/org/apache/naming/resources/ webapps/docs/
Author: markt
Date: Thu Jan 5 13:42:29 2006
New Revision: 366304
URL: http://svn.apache.org/viewcvs?rev=366304&view=rev
Log:
Fix for bug 23950. Context.listBindings() should return Objects not References.
Ported from TC4.
Modified:
tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/NamingContext.java
tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/NamingContextBindingsEnumeration.java
tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/resources/FileDirContext.java
tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/resources/WARDirContext.java
tomcat/container/tc5.5.x/webapps/docs/changelog.xml
Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/NamingContext.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/NamingContext.java?rev=366304&r1=366303&r2=366304&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/NamingContext.java (original)
+++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/NamingContext.java Thu Jan 5 13:42:29 2006
@@ -387,7 +387,7 @@
while ((!name.isEmpty()) && (name.get(0).length() == 0))
name = name.getSuffix(1);
if (name.isEmpty()) {
- return new NamingContextBindingsEnumeration(bindings.values().iterator());
+ return new NamingContextBindingsEnumeration(bindings.values().iterator(), this);
}
NamingEntry entry = (NamingEntry) bindings.get(name.get(0));
Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/NamingContextBindingsEnumeration.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/NamingContextBindingsEnumeration.java?rev=366304&r1=366303&r2=366304&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/NamingContextBindingsEnumeration.java (original)
+++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/NamingContextBindingsEnumeration.java Thu Jan 5 13:42:29 2006
@@ -20,6 +20,8 @@
import java.util.Iterator;
import javax.naming.Binding;
+import javax.naming.CompositeName;
+import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
@@ -37,11 +39,11 @@
// ----------------------------------------------------------- Constructors
- public NamingContextBindingsEnumeration(Iterator entries) {
+ public NamingContextBindingsEnumeration(Iterator entries, Context ctx) {
iterator = entries;
+ this.ctx = ctx;
}
-
// -------------------------------------------------------------- Variables
@@ -50,6 +52,12 @@
*/
protected Iterator iterator;
+
+ /**
+ * The context for which this enumeration is being generated.
+ */
+ private Context ctx;
+
// --------------------------------------------------------- Public Methods
@@ -59,7 +67,7 @@
*/
public Object next()
throws NamingException {
- return nextElement();
+ return nextElementInternal();
}
@@ -86,7 +94,31 @@
public Object nextElement() {
+ try {
+ return nextElementInternal();
+ } catch (NamingException e) {
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ }
+
+ private Object nextElementInternal() throws NamingException {
NamingEntry entry = (NamingEntry) iterator.next();
+
+ // If the entry is a reference, resolve it
+ if (entry.type == NamingEntry.REFERENCE
+ || entry.type == NamingEntry.LINK_REF) {
+ try {
+ // A lookup will resolve the entry
+ ctx.lookup(new CompositeName(entry.name));
+ } catch (NamingException e) {
+ throw e;
+ } catch (Exception e) {
+ NamingException ne = new NamingException(e.getMessage());
+ ne.initCause(e);
+ throw ne;
+ }
+ }
+
return new Binding(entry.name, entry.value.getClass().getName(),
entry.value, true);
}
Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/resources/FileDirContext.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/resources/FileDirContext.java?rev=366304&r1=366303&r2=366304&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/resources/FileDirContext.java (original)
+++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/resources/FileDirContext.java Thu Jan 5 13:42:29 2006
@@ -334,7 +334,8 @@
throw new NamingException
(sm.getString("resources.notFound", name));
- return new NamingContextBindingsEnumeration(list(file).iterator());
+ return new NamingContextBindingsEnumeration(list(file).iterator(),
+ this);
}
Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/resources/WARDirContext.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/resources/WARDirContext.java?rev=366304&r1=366303&r2=366304&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/resources/WARDirContext.java (original)
+++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/naming/resources/WARDirContext.java Thu Jan 5 13:42:29 2006
@@ -322,12 +322,14 @@
public NamingEnumeration listBindings(Name name)
throws NamingException {
if (name.isEmpty())
- return new NamingContextBindingsEnumeration(list(entries).iterator());
+ return new NamingContextBindingsEnumeration(list(entries).iterator(),
+ this);
Entry entry = treeLookup(name);
if (entry == null)
throw new NamingException
(sm.getString("resources.notFound", name));
- return new NamingContextBindingsEnumeration(list(entry).iterator());
+ return new NamingContextBindingsEnumeration(list(entry).iterator(),
+ this);
}
Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?rev=366304&r1=366303&r2=366304&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Thu Jan 5 13:42:29 2006
@@ -15,6 +15,13 @@
<body>
<section name="Tomcat 5.5.16">
+ <subsection name="Catalina">
+ <changelog>
+ <fix>
+ <bug>23950</bug>: Context.listBindings() should return objects not references. (markt)
+ </fix>
+ </changelog>
+ </subsection>
<subsection name="Cluster">
<changelog>
<add>
@@ -26,7 +33,7 @@
</update>
<update>
DataSender close connection and throw exception also even if waitForAck is false. (pero)
- </upodate>
+ </update>
<fix>
Active cluster junit test again. (pero)
</fix>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org