You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by eg...@apache.org on 2007/05/10 17:47:11 UTC

svn commit: r536891 - in /incubator/cxf/trunk: api/src/main/java/org/apache/cxf/endpoint/ api/src/main/java/org/apache/cxf/wsdl/ rt/core/src/main/java/org/apache/cxf/endpoint/ rt/core/src/main/java/org/apache/cxf/transport/ rt/core/src/test/java/org/ap...

Author: eglynn
Date: Thu May 10 08:47:09 2007
New Revision: 536891

URL: http://svn.apache.org/viewvc?view=rev&rev=536891
Log:
Adding minting logic to endpoint resolver.


Modified:
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/EndpointResolver.java
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistry.java
    incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistryImpl.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractDestination.java
    incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractMultiplexDestination.java
    incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/EndpointResolverRegistryImplTest.java
    incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
    incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/EndpointResolver.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/EndpointResolver.java?view=diff&rev=536891&r1=536890&r2=536891
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/EndpointResolver.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/EndpointResolver.java Thu May 10 08:47:09 2007
@@ -19,6 +19,8 @@
 
 package org.apache.cxf.endpoint;
 
+import javax.xml.namespace.QName;
+
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
 
 
@@ -52,4 +54,20 @@
      */
     EndpointReferenceType renew(EndpointReferenceType logical,
                                 EndpointReferenceType physical);
+    
+    /**
+     * Mint a new abstract EPR for a given service name.
+     * 
+     * @param serviceName
+     * @return the newly minted EPR if appropriate, null otherwise
+     */
+    EndpointReferenceType mint(QName serviceName);
+    
+    /**
+     * Mint a new abstract EPR for a given concrete EPR
+     * 
+     * @param serviceName
+     * @return the newly minted EPR if appropriate, null otherwise
+     */
+    EndpointReferenceType mint(EndpointReferenceType physical);
 }

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistry.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistry.java?view=diff&rev=536891&r1=536890&r2=536891
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistry.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistry.java Thu May 10 08:47:09 2007
@@ -19,6 +19,8 @@
 
 package org.apache.cxf.endpoint;
 
+import javax.xml.namespace.QName;
+
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
 
 /**
@@ -77,4 +79,23 @@
      */
     EndpointReferenceType renew(EndpointReferenceType logical,
                                 EndpointReferenceType physical);
+    
+    /**
+     * Walk the list of registered EndpointResolvers, so as to mint a new 
+     * abstract EPR for a given service name.
+     * 
+     * @param serviceName
+     * @return the newly minted EPR if appropriate, null otherwise
+     */
+    EndpointReferenceType mint(QName serviceName);
+    
+    /**
+     * Walk the list of registered EndpointResolvers, so as to mint a new 
+     * abstract EPR for a gievn physical EPR.
+     * 
+     * @param serviceName
+     * @return the newly minted EPR if appropriate, null otherwise
+     */
+    EndpointReferenceType mint(EndpointReferenceType physical);
+
 }

Modified: incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java?view=diff&rev=536891&r1=536890&r2=536891
==============================================================================
--- incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java (original)
+++ incubator/cxf/trunk/api/src/main/java/org/apache/cxf/wsdl/EndpointReferenceUtils.java Thu May 10 08:47:09 2007
@@ -621,6 +621,42 @@
         }
         return physical != null ? physical : logical;
     }
+    
+    /**
+     * Mint logical endpoint reference via the Bus EndpointResolverRegistry.
+     * 
+     * @param serviceName the given serviceName
+     * @return the newly minted EPR if appropriate, null otherwise
+     */
+    public static EndpointReferenceType mint(QName serviceName, Bus bus) {
+        EndpointReferenceType logical = null;
+        if (bus != null) {
+            EndpointResolverRegistry registry =
+                bus.getExtension(EndpointResolverRegistry.class);
+            if (registry != null) {
+                logical = registry.mint(serviceName);
+            }
+        }
+        return logical;
+    }
+    
+    /**
+     * Mint logical endpoint reference via the Bus EndpointResolverRegistry.
+     * 
+     * @param physical the concrete template EPR 
+     * @return the newly minted EPR if appropriate, null otherwise
+     */
+    public static EndpointReferenceType mint(EndpointReferenceType physical, Bus bus) {
+        EndpointReferenceType logical = null;
+        if (bus != null) {
+            EndpointResolverRegistry registry =
+                bus.getExtension(EndpointResolverRegistry.class);
+            if (registry != null) {
+                logical = registry.mint(physical);
+            }
+        }
+        return logical != null ? logical : physical;
+    }
                                              
     private static String getNameSpaceUri(Node node, String content, String namespaceURI) {
         if (namespaceURI == null) {

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistryImpl.java?view=diff&rev=536891&r1=536890&r2=536891
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistryImpl.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/EndpointResolverRegistryImpl.java Thu May 10 08:47:09 2007
@@ -23,6 +23,7 @@
 import java.util.List;
 
 import javax.annotation.PostConstruct;
+import javax.xml.namespace.QName;
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
@@ -120,6 +121,42 @@
             }
         }
         return fresh;
+    }
+    
+    /**
+     * Walk the list of registered EndpointResolvers, so as to mint a new 
+     * abstract EPR for a given service name.
+     * 
+     * @param serviceName
+     * @return the newly minted EPR if appropriate, null otherwise
+     */
+    public EndpointReferenceType mint(QName serviceName) {
+        EndpointReferenceType logical = null;
+        for (EndpointResolver resolver : resolvers) {
+            logical = resolver.mint(serviceName);
+            if (logical != null) {
+                break;
+            }
+        }
+        return logical;
+    }
+    
+    /**
+     * Walk the list of registered EndpointResolvers, so as to mint a new 
+     * abstract EPR for a gievn physical EPR.
+     * 
+     * @param serviceName
+     * @return the newly minted EPR if appropriate, null otherwise
+     */
+    public EndpointReferenceType mint(EndpointReferenceType physical) {
+        EndpointReferenceType logical = null;
+        for (EndpointResolver resolver : resolvers) {
+            logical = resolver.mint(physical);
+            if (logical != null) {
+                break;
+            }
+        }
+        return logical;        
     }
     
     /**

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractDestination.java?view=diff&rev=536891&r1=536890&r2=536891
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractDestination.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractDestination.java Thu May 10 08:47:09 2007
@@ -23,6 +23,7 @@
 import java.io.InputStream;
 import java.util.logging.Logger;
 
+import org.apache.cxf.Bus;
 import org.apache.cxf.message.Exchange;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.service.model.EndpointInfo;
@@ -39,11 +40,19 @@
 
     protected final EndpointReferenceType reference;
     protected final EndpointInfo endpointInfo;
+    protected final Bus bus;
     
     public AbstractDestination(EndpointReferenceType ref,
                                EndpointInfo ei) {
+        this(null, ref, ei);
+    }
+    
+    public AbstractDestination(Bus b,
+                               EndpointReferenceType ref,
+                               EndpointInfo ei) {
         reference = ref;
         endpointInfo = ei;
+        bus = b;
     }
     
     /**

Modified: incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractMultiplexDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractMultiplexDestination.java?view=diff&rev=536891&r1=536890&r2=536891
==============================================================================
--- incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractMultiplexDestination.java (original)
+++ incubator/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/AbstractMultiplexDestination.java Thu May 10 08:47:09 2007
@@ -23,6 +23,7 @@
 import javax.xml.bind.JAXBElement;
 import javax.xml.namespace.QName;
 
+import org.apache.cxf.Bus;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.ws.addressing.AddressingProperties;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
@@ -36,8 +37,8 @@
     private static final QName MULTIPLEX_ID_QNAME = new QName("http://multiplex.transport.cxf.apache.org",
                                                               "id");
 
-    public AbstractMultiplexDestination(EndpointReferenceType ref, EndpointInfo ei) {
-        super(ref, ei);
+    public AbstractMultiplexDestination(Bus b, EndpointReferenceType ref, EndpointInfo ei) {
+        super(b, ref, ei);
     }
 
     /**
@@ -51,7 +52,8 @@
       
      */
     public EndpointReferenceType getAddressWithId(String id) {
-        EndpointReferenceType epr = EndpointReferenceUtils.duplicate(reference);
+        EndpointReferenceType epr = EndpointReferenceUtils.duplicate(
+            EndpointReferenceUtils.mint(reference, bus));
         ReferenceParametersType newParams = new org.apache.cxf.ws.addressing.ObjectFactory()
             .createReferenceParametersType();
         

Modified: incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/EndpointResolverRegistryImplTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/EndpointResolverRegistryImplTest.java?view=diff&rev=536891&r1=536890&r2=536891
==============================================================================
--- incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/EndpointResolverRegistryImplTest.java (original)
+++ incubator/cxf/trunk/rt/core/src/test/java/org/apache/cxf/endpoint/EndpointResolverRegistryImplTest.java Thu May 10 08:47:09 2007
@@ -19,6 +19,8 @@
 
 package org.apache.cxf.endpoint;
 
+import javax.xml.namespace.QName;
+
 import org.apache.cxf.Bus;
 import org.apache.cxf.ws.addressing.EndpointReferenceType;
 import org.easymock.classextension.EasyMock;
@@ -38,6 +40,7 @@
     private EndpointReferenceType physical;
     private EndpointReferenceType fresh;
     private IMocksControl control;
+    private QName serviceName;
 
     @Before
     public void setUp() {
@@ -48,14 +51,16 @@
         logical = control.createMock(EndpointReferenceType.class);
         physical = control.createMock(EndpointReferenceType.class);
         fresh = control.createMock(EndpointReferenceType.class);
+        serviceName = new QName("namespace", "local");
     }
-    
+
     @After
     public void tearDown() {
         resolver1 = null;
         resolver2 = null;
         logical = null;
         physical = null;
+        serviceName = null;
     }
 
     @Test
@@ -193,5 +198,83 @@
 
         control.verify();
         assertNull("unexpected physical EPR", renewed);
+    }
+    
+    @Test
+    public void testMintFromServiceName() {
+        registry.init();
+        registry.register(resolver1);
+        registry.register(resolver2);
+        resolver1.mint(serviceName);
+        EasyMock.expectLastCall().andReturn(logical);
+        control.replay();
+     
+        EndpointReferenceType minted = registry.mint(serviceName);
+        
+        control.verify();
+        assertSame("unexpected minted EPR", logical, minted);
+        
+        control.reset();
+        resolver1.mint(serviceName);
+        EasyMock.expectLastCall().andReturn(null);
+        resolver2.mint(serviceName);
+        EasyMock.expectLastCall().andReturn(logical);
+        control.replay();
+        
+        minted = registry.mint(serviceName);
+        
+        control.verify();
+        assertSame("unexpected minted EPR", logical, minted);
+
+        control.reset();
+        resolver1.mint(serviceName);
+        EasyMock.expectLastCall().andReturn(null);
+        resolver2.mint(serviceName);
+        EasyMock.expectLastCall().andReturn(null);
+        control.replay();
+
+        minted = registry.mint(serviceName);
+
+        control.verify();
+        assertNull("unexpected minted EPR", minted);
+    }
+    
+    @Test
+    public void testMintFromPhysical() {
+        registry.init();
+        registry.register(resolver1);
+        registry.register(resolver2);
+        resolver1.mint(physical);
+        EasyMock.expectLastCall().andReturn(logical);
+        control.replay();
+     
+        EndpointReferenceType minted = registry.mint(physical);
+        
+        control.verify();
+        assertSame("unexpected minted EPR", logical, minted);
+        
+        control.reset();
+        resolver1.mint(physical);
+        EasyMock.expectLastCall().andReturn(null);
+        resolver2.mint(physical);
+        EasyMock.expectLastCall().andReturn(logical);
+        control.replay();
+        
+        minted = registry.mint(physical);
+        
+        control.verify();
+        assertSame("unexpected minted EPR", logical, minted);
+
+        control.reset();
+        resolver1.mint(physical);
+        EasyMock.expectLastCall().andReturn(null);
+        resolver2.mint(physical);
+        EasyMock.expectLastCall().andReturn(null);
+        control.replay();
+
+        minted = registry.mint(physical);
+
+        control.verify();
+        assertNull("unexpected minted EPR", minted);
     }
 }

Modified: incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java?view=diff&rev=536891&r1=536890&r2=536891
==============================================================================
--- incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java (original)
+++ incubator/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPDestination.java Thu May 10 08:47:09 2007
@@ -99,7 +99,7 @@
                                    EndpointInfo ei,
                                    boolean dp)
         throws IOException {
-        super(getTargetReference(getAddressValue(ei, dp), b), ei);  
+        super(b, getTargetReference(getAddressValue(ei, dp), b), ei);  
         bus = b;
         conduitInitiator = ci;
         

Modified: incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java?view=diff&rev=536891&r1=536890&r2=536891
==============================================================================
--- incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java (original)
+++ incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java Thu May 10 08:47:09 2007
@@ -79,7 +79,7 @@
     public JMSDestination(Bus b,
                           ConduitInitiator ci,
                           EndpointInfo info) throws IOException {
-        super(getTargetReference(info, b), info);    
+        super(b, getTargetReference(info, b), info);    
         
         base = new JMSTransportBase(b, endpointInfo, true, BASE_BEAN_NAME_SUFFIX, this);