You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2026/06/01 14:57:18 UTC
(tomcat) branch 9.0.x updated: Minor naming fixes from code review
This is an automated email from the ASF dual-hosted git repository.
rmaucher pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push:
new b9d3f2ea70 Minor naming fixes from code review
b9d3f2ea70 is described below
commit b9d3f2ea70da12f8d1209d211668c7eef42c7cf1
Author: remm <re...@apache.org>
AuthorDate: Mon Jun 1 16:51:14 2026 +0200
Minor naming fixes from code review
---
java/org/apache/naming/NamingContext.java | 16 ++++++++++------
.../apache/naming/NamingContextBindingsEnumeration.java | 2 +-
java/org/apache/naming/NamingContextEnumeration.java | 2 +-
java/org/apache/naming/ServiceRef.java | 16 +++++++++-------
java/org/apache/naming/factory/ResourceLinkFactory.java | 6 ++++--
5 files changed, 25 insertions(+), 17 deletions(-)
diff --git a/java/org/apache/naming/NamingContext.java b/java/org/apache/naming/NamingContext.java
index ee943ef8d3..7f680a43d3 100644
--- a/java/org/apache/naming/NamingContext.java
+++ b/java/org/apache/naming/NamingContext.java
@@ -384,13 +384,17 @@ public class NamingContext implements Context {
return nameParser;
}
+ NamingEntry entry = bindings.get(name.get(0));
+ if (entry == null) {
+ throw new NameNotFoundException(sm.getString("namingContext.nameNotBound", name, name.get(0)));
+ }
+
+ if (entry.type != NamingEntry.CONTEXT) {
+ throw new NotContextException(sm.getString("namingContext.contextExpected", name.get(0)));
+ }
+
if (name.size() > 1) {
- Object obj = bindings.get(name.get(0));
- if (obj instanceof Context) {
- return ((Context) obj).getNameParser(name.getSuffix(1));
- } else {
- throw new NotContextException(sm.getString("namingContext.contextExpected", name.get(0)));
- }
+ return ((Context) entry.value).getNameParser(name.getSuffix(1));
}
return nameParser;
diff --git a/java/org/apache/naming/NamingContextBindingsEnumeration.java b/java/org/apache/naming/NamingContextBindingsEnumeration.java
index e462f5249a..0c505b7926 100644
--- a/java/org/apache/naming/NamingContextBindingsEnumeration.java
+++ b/java/org/apache/naming/NamingContextBindingsEnumeration.java
@@ -113,7 +113,7 @@ public class NamingContextBindingsEnumeration implements NamingEnumeration<Bindi
value = entry.value;
}
- return new Binding(entry.name, value.getClass().getName(), value, true);
+ return new Binding(entry.name, value == null ? null : value.getClass().getName(), value, true);
}
}
diff --git a/java/org/apache/naming/NamingContextEnumeration.java b/java/org/apache/naming/NamingContextEnumeration.java
index 16cc66231d..fa81277ebc 100644
--- a/java/org/apache/naming/NamingContextEnumeration.java
+++ b/java/org/apache/naming/NamingContextEnumeration.java
@@ -79,7 +79,7 @@ public class NamingContextEnumeration implements NamingEnumeration<NameClassPair
@Override
public NameClassPair nextElement() {
NamingEntry entry = iterator.next();
- return new NameClassPair(entry.name, entry.value.getClass().getName());
+ return new NameClassPair(entry.name, entry.value == null ? null : entry.value.getClass().getName());
}
diff --git a/java/org/apache/naming/ServiceRef.java b/java/org/apache/naming/ServiceRef.java
index 090cea4db9..87175fa2c1 100644
--- a/java/org/apache/naming/ServiceRef.java
+++ b/java/org/apache/naming/ServiceRef.java
@@ -116,13 +116,15 @@ public class ServiceRef extends AbstractRef {
refAddr = new StringRefAddr(SERVICE_INTERFACE, serviceInterface);
add(refAddr);
}
- if (serviceQname[0] != null) {
- refAddr = new StringRefAddr(SERVICE_NAMESPACE, serviceQname[0]);
- add(refAddr);
- }
- if (serviceQname[1] != null) {
- refAddr = new StringRefAddr(SERVICE_LOCAL_PART, serviceQname[1]);
- add(refAddr);
+ if (serviceQname != null) {
+ if (serviceQname.length > 0 && serviceQname[0] != null) {
+ refAddr = new StringRefAddr(SERVICE_NAMESPACE, serviceQname[0]);
+ add(refAddr);
+ }
+ if (serviceQname.length > 1 && serviceQname[1] != null) {
+ refAddr = new StringRefAddr(SERVICE_LOCAL_PART, serviceQname[1]);
+ add(refAddr);
+ }
}
if (wsdl != null) {
refAddr = new StringRefAddr(WSDL, wsdl);
diff --git a/java/org/apache/naming/factory/ResourceLinkFactory.java b/java/org/apache/naming/factory/ResourceLinkFactory.java
index 057edb899e..85c6a49daa 100644
--- a/java/org/apache/naming/factory/ResourceLinkFactory.java
+++ b/java/org/apache/naming/factory/ResourceLinkFactory.java
@@ -16,7 +16,6 @@
*/
package org.apache.naming.factory;
-import java.util.HashMap;
import java.util.Hashtable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -84,7 +83,7 @@ public class ResourceLinkFactory implements ObjectFactory {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
// Web application initialization is single threaded so this is
// safe.
- globalResourceRegistrations.computeIfAbsent(cl, k -> new HashMap<>()).put(localName, globalName);
+ globalResourceRegistrations.computeIfAbsent(cl, k -> new ConcurrentHashMap<>()).put(localName, globalName);
}
@@ -171,6 +170,9 @@ public class ResourceLinkFactory implements ObjectFactory {
return null;
}
Object result = globalContext.lookup(globalName);
+ if (result == null) {
+ return null;
+ }
// Check the expected type
String expectedClassName = ref.getClassName();
if (expectedClassName == null) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org