This is an automated email from the ASF dual-hosted git repository.

rmaucher pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/10.1.x by this push:
     new a1ed6298ce Minor naming fixes from code review
a1ed6298ce is described below

commit a1ed6298ce5ce265cafed35f008215003ee6a53c
Author: remm <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to