Author: djencks
Date: Fri Jun 25 00:22:14 2010
New Revision: 957768

URL: http://svn.apache.org/viewvc?rev=957768&view=rev
Log:
fix handler chain matching

Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/HandlerChainInfo.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerChainData.java
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerResolverImpl.java
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/webservices/HandlerResolverImplTest.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/HandlerChainInfo.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/HandlerChainInfo.java?rev=957768&r1=957767&r2=957768&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/HandlerChainInfo.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/HandlerChainInfo.java
 Fri Jun 25 00:22:14 2010
@@ -17,12 +17,13 @@
  */
 package org.apache.openejb.assembler.classic;
 
+import javax.xml.namespace.QName;
 import java.util.ArrayList;
 import java.util.List;
 
 public class HandlerChainInfo extends InfoObject {
-    public String serviceNamePattern;
-    public String portNamePattern;
+    public QName serviceNamePattern;
+    public QName portNamePattern;
     public final List<String> protocolBindings = new ArrayList<String>();
     public final List<HandlerInfo> handlers = new ArrayList<HandlerInfo>();
 }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java?rev=957768&r1=957767&r2=957768&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ConfigurationFactory.java
 Fri Jun 25 00:22:14 2010
@@ -218,8 +218,8 @@ public class ConfigurationFactory implem
 
         for (HandlerChain handlerChain : chains.getHandlerChain()) {
             HandlerChainInfo handlerChainInfo = new HandlerChainInfo();
-            handlerChainInfo.serviceNamePattern = 
handlerChain.getServiceNamePattern().toString();
-            handlerChainInfo.portNamePattern = 
handlerChain.getPortNamePattern().toString();
+            handlerChainInfo.serviceNamePattern = 
handlerChain.getServiceNamePattern();
+            handlerChainInfo.portNamePattern = 
handlerChain.getPortNamePattern();
             
handlerChainInfo.protocolBindings.addAll(handlerChain.getProtocolBindings());
             for (Handler handler : handlerChain.getHandler()) {
                 HandlerInfo handlerInfo = new HandlerInfo();

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerChainData.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerChainData.java?rev=957768&r1=957767&r2=957768&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerChainData.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerChainData.java
 Fri Jun 25 00:22:14 2010
@@ -17,27 +17,28 @@
  */
 package org.apache.openejb.core.webservices;
 
+import javax.xml.namespace.QName;
 import java.util.ArrayList;
 import java.util.List;
 
 public class HandlerChainData {
-    private final String serviceNamePattern;
-    private final String portNamePattern;
+    private final QName serviceNamePattern;
+    private final QName portNamePattern;
     private final List<String> protocolBindings = new ArrayList<String>();
     private final List<HandlerData> handlers = new ArrayList<HandlerData>();
 
-    public HandlerChainData(String serviceNamePattern, String portNamePattern, 
List<String> protocolBindings, List<HandlerData> handlers) {
+    public HandlerChainData(QName serviceNamePattern, QName portNamePattern, 
List<String> protocolBindings, List<HandlerData> handlers) {
         this.serviceNamePattern = serviceNamePattern;
         this.portNamePattern = portNamePattern;
         this.protocolBindings.addAll(protocolBindings);
         this.handlers.addAll(handlers);
     }
 
-    public String getServiceNamePattern() {
+    public QName getServiceNamePattern() {
         return serviceNamePattern;
     }
 
-    public String getPortNamePattern() {
+    public QName getPortNamePattern() {
         return portNamePattern;
     }
 

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerResolverImpl.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerResolverImpl.java?rev=957768&r1=957767&r2=957768&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerResolverImpl.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/HandlerResolverImpl.java
 Fri Jun 25 00:22:14 2010
@@ -93,11 +93,11 @@ public class HandlerResolverImpl impleme
         return handlers;
     }
 
-    private boolean matchServiceName(PortInfo info, String namePattern) {
+    private boolean matchServiceName(PortInfo info, QName namePattern) {
         return match((info == null ? null : info.getServiceName()), 
namePattern);
     }
 
-    private boolean matchPortName(PortInfo info, String namePattern) {
+    private boolean matchPortName(PortInfo info, QName namePattern) {
         return match((info == null ? null : info.getPortName()), namePattern);
     }
 
@@ -127,23 +127,18 @@ public class HandlerResolverImpl impleme
     }
 
     /**
-     * Performs basic localName matching, namespaces are not checked!
+     * Performs basic localName matching
      */
-    private boolean match(QName name, String namePattern) {
+    private boolean match(QName name, QName namePattern) {
         if (name == null) {
-            return (namePattern == null || namePattern.equals("*"));
+            return (namePattern == null || 
namePattern.getLocalPart().equals("*"));
         } else {
             if (namePattern == null) {
                 return true;
+            } else if (namePattern.getNamespaceURI() != null && 
!name.getNamespaceURI().equals(namePattern.getNamespaceURI())) {
+                return false;
             } else {
-                String localNamePattern;
-
-                // get the local name from pattern
-                int pos = namePattern.indexOf(':');
-                localNamePattern = (pos == -1) ? namePattern : namePattern
-                        .substring(pos + 1);
-                localNamePattern = localNamePattern.trim();
-
+                String localNamePattern = namePattern.getLocalPart();
                 if (localNamePattern.equals("*")) {
                     // matches anything
                     return true;

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/webservices/HandlerResolverImplTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/webservices/HandlerResolverImplTest.java?rev=957768&r1=957767&r2=957768&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/webservices/HandlerResolverImplTest.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/webservices/HandlerResolverImplTest.java
 Fri Jun 25 00:22:14 2010
@@ -65,19 +65,19 @@ public class HandlerResolverImplTest ext
         handlers = resolver.getHandlerChain(new TestPortInfo(null, null, 
null));
         assertEquals(0, handlers.size());
 
-        QName serviceName1 = new QName("http://foo";, "Bar");
+        QName serviceName1 = new QName("http://java.sun.com/xml/ns/javaee";, 
"Bar");
         handlers = resolver.getHandlerChain(new TestPortInfo(null, null, 
serviceName1));
         assertEquals(1, handlers.size());
 
-        QName serviceName2 = new QName("http://foo";, "Foo");
+        QName serviceName2 = new QName("http://java.sun.com/xml/ns/javaee";, 
"Foo");
         handlers = resolver.getHandlerChain(new TestPortInfo(null, null, 
serviceName2));
         assertEquals(2, handlers.size());
 
-        QName serviceName3 = new QName("http://foo";, "FooBar");
+        QName serviceName3 = new QName("http://java.sun.com/xml/ns/javaee";, 
"FooBar");
         handlers = resolver.getHandlerChain(new TestPortInfo(null, null, 
serviceName3));
         assertEquals(1, handlers.size());
 
-        QName serviceName4 = new QName("http://foo";, "BarFoo");
+        QName serviceName4 = new QName("http://java.sun.com/xml/ns/javaee";, 
"BarFoo");
         handlers = resolver.getHandlerChain(new TestPortInfo(null, null, 
serviceName4));
         assertEquals(0, handlers.size());
     }
@@ -118,19 +118,19 @@ public class HandlerResolverImplTest ext
         handlers = resolver.getHandlerChain(new TestPortInfo(null, null, 
null));
         assertEquals(0, handlers.size());
 
-        QName portName1 = new QName("http://foo";, "Bar");
+        QName portName1 = new QName("http://java.sun.com/xml/ns/javaee";, 
"Bar");
         handlers = resolver.getHandlerChain(new TestPortInfo(null, portName1, 
null));
         assertEquals(1, handlers.size());
 
-        QName portName2 = new QName("http://foo";, "Foo");
+        QName portName2 = new QName("http://java.sun.com/xml/ns/javaee";, 
"Foo");
         handlers = resolver.getHandlerChain(new TestPortInfo(null, portName2, 
null));
         assertEquals(2, handlers.size());
 
-        QName portName3 = new QName("http://foo";, "FooBar");
+        QName portName3 = new QName("http://java.sun.com/xml/ns/javaee";, 
"FooBar");
         handlers = resolver.getHandlerChain(new TestPortInfo(null, portName3, 
null));
         assertEquals(1, handlers.size());
 
-        QName portName4 = new QName("http://foo";, "BarFoo");
+        QName portName4 = new QName("http://java.sun.com/xml/ns/javaee";, 
"BarFoo");
         handlers = resolver.getHandlerChain(new TestPortInfo(null, portName4, 
null));
         assertEquals(0, handlers.size());
     }
@@ -148,8 +148,8 @@ public class HandlerResolverImplTest ext
         handlers = resolver.getHandlerChain(new TestPortInfo(null, null, 
null));
         assertEquals(0, handlers.size());
 
-        QName serviceName1 = new QName("http:/foo", "Bar");
-        QName portName1 = new QName("http://foo";, "FooBar");
+        QName serviceName1 = new QName("http://java.sun.com/xml/ns/javaee";, 
"Bar");
+        QName portName1 = new QName("http://java.sun.com/xml/ns/javaee";, 
"FooBar");
         String binding1 = "##XML_HTTP";
         handlers = resolver.getHandlerChain(new TestPortInfo(binding1, 
portName1, serviceName1));
         assertEquals(3, handlers.size());
@@ -158,8 +158,8 @@ public class HandlerResolverImplTest ext
         handlers = resolver.getHandlerChain(new TestPortInfo(binding2, 
portName1, serviceName1));
         assertEquals(2, handlers.size());
 
-        QName serviceName2 = new QName("http://foo";, "Baaz");
-        QName portName2 = new QName("http://foo";, "Baaz");
+        QName serviceName2 = new QName("http://java.sun.com/xml/ns/javaee";, 
"Baaz");
+        QName portName2 = new QName("http://java.sun.com/xml/ns/javaee";, 
"Baaz");
         handlers = resolver.getHandlerChain(new TestPortInfo(binding1, 
portName2, serviceName2));
         assertEquals(1, handlers.size());
     }


Reply via email to