[jboss-svn-commits] JBL Code SVN: r35903 - labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/adapter/cxf.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Nov 8 07:06:41 EST 2010


Author: kevin.conner at jboss.com
Date: 2010-11-08 07:06:40 -0500 (Mon, 08 Nov 2010)
New Revision: 35903

Modified:
   labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/adapter/cxf/CXFFactory.java
Log:
Add support for jndi as a resource schema: JBESB-3503

Modified: labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/adapter/cxf/CXFFactory.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/adapter/cxf/CXFFactory.java	2010-11-08 11:54:08 UTC (rev 35902)
+++ labs/jbossesb/branches/JBESB_4_9_CP/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/adapter/cxf/CXFFactory.java	2010-11-08 12:06:40 UTC (rev 35903)
@@ -37,6 +37,7 @@
 import org.apache.cxf.Bus;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.endpoint.ServerRegistry;
+import org.apache.cxf.resource.ResourceManager;
 import org.apache.cxf.service.model.EndpointInfo;
 import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.wsdl.WSDLManager;
@@ -89,7 +90,30 @@
                 final String documentBaseURI = definition.getDocumentBaseURI() ;
                 try
                 {
-                    return (documentBaseURI == null ? new URI(ESB_INTERNAL_URI, endpointName, null).toString() : documentBaseURI) ;
+                    final String result ;
+                    if (documentBaseURI == null)
+                    {
+                        result = new URI(ESB_INTERNAL_URI, endpointName, null).toString() ;
+                    }
+                    else if (documentBaseURI.startsWith("jndi"))
+                    {
+                        final URI resourceURI = URI.create(documentBaseURI) ;
+                        final URI endpointURI = URI.create(endpoint.getAddress()) ;
+                        final String resourcePath = resourceURI.getPath() ;
+                        final String endpointPath = endpointURI.getPath() ;
+                        final String urlPattern = endpoint.getURLPattern() ;
+                        final int urlPatternStart = endpointPath.lastIndexOf(urlPattern) ;
+                        final String prefix = (urlPatternStart >= 0 ? endpointPath.substring(0, urlPatternStart) : endpointPath) ;
+                        final int prefixStart = resourcePath.indexOf(prefix) ;
+                        final String fragment = (prefixStart >= 0 ? resourcePath.substring(prefixStart + prefix.length()) : resourcePath) ;
+                        result = new URI(ESB_INTERNAL_URI, endpointName, fragment).toString();
+                    }
+                    else
+                    {
+                        result = documentBaseURI ;
+                    }
+                    
+                    return result ;
                 }
                 catch (final URISyntaxException urise)
                 {
@@ -126,26 +150,36 @@
         try
         {
             initialiseContextClassLoader(endpoint);
-            final Definition definition = getDefinition(endpoint) ;
-            if (definition != null)
+            final String fragment = endpointURI.getFragment() ;
+            if (fragment != null)
             {
                 final Bus bus = BUS_FACTORY.getBus(endpoint) ;
-                
-                final WSDLManager wsdlManager = bus.getExtension(WSDLManager.class) ;
-                final  WSDLWriter wsdlWriter = wsdlManager.getWSDLFactory().newWSDLWriter();
-                definition.setExtensionRegistry(wsdlManager.getExtensionRegistry());
-                final ByteArrayOutputStream baos = new ByteArrayOutputStream() ;
-                try
+                final ResourceManager resourceManager = bus.getExtension(ResourceManager.class) ;
+                return resourceManager.getResourceAsStream(fragment) ;
+            }
+            else
+            {
+                final Definition definition = getDefinition(endpoint) ;
+                if (definition != null)
                 {
-                    wsdlWriter.writeWSDL(definition, baos);
+                    final Bus bus = BUS_FACTORY.getBus(endpoint) ;
+                    
+                    final WSDLManager wsdlManager = bus.getExtension(WSDLManager.class) ;
+                    final  WSDLWriter wsdlWriter = wsdlManager.getWSDLFactory().newWSDLWriter();
+                    definition.setExtensionRegistry(wsdlManager.getExtensionRegistry());
+                    final ByteArrayOutputStream baos = new ByteArrayOutputStream() ;
+                    try
+                    {
+                        wsdlWriter.writeWSDL(definition, baos);
+                    }
+                    catch (final WSDLException wsdle)
+                    {
+                        final IOException ioe = new IOException("Failed to generate WSDL") ;
+                        ioe.initCause(wsdle) ;
+                        throw ioe ;
+                    }
+                    return new ByteArrayInputStream(baos.toByteArray()) ;
                 }
-                catch (final WSDLException wsdle)
-                {
-                    final IOException ioe = new IOException("Failed to generate WSDL") ;
-                    ioe.initCause(wsdle) ;
-                    throw ioe ;
-                }
-                return new ByteArrayInputStream(baos.toByteArray()) ;
             }
             return null ;
         }



More information about the jboss-svn-commits mailing list