[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