You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by jb...@apache.org on 2009/08/04 17:11:47 UTC
svn commit: r800839 - in
/servicemix/components/bindings/servicemix-rmi/trunk: pom.xml
src/main/java/org/apache/servicemix/rmi/RmiConsumerEndpoint.java
src/test/java/org/apache/servicemix/rmi/RmiXBeanTest.java
Author: jbonofre
Date: Tue Aug 4 15:11:46 2009
New Revision: 800839
URL: http://svn.apache.org/viewvc?rev=800839&view=rev
Log:
Add WSDL generation based on the provided remote interface.
Modified:
servicemix/components/bindings/servicemix-rmi/trunk/pom.xml
servicemix/components/bindings/servicemix-rmi/trunk/src/main/java/org/apache/servicemix/rmi/RmiConsumerEndpoint.java
servicemix/components/bindings/servicemix-rmi/trunk/src/test/java/org/apache/servicemix/rmi/RmiXBeanTest.java
Modified: servicemix/components/bindings/servicemix-rmi/trunk/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-rmi/trunk/pom.xml?rev=800839&r1=800838&r2=800839&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-rmi/trunk/pom.xml (original)
+++ servicemix/components/bindings/servicemix-rmi/trunk/pom.xml Tue Aug 4 15:11:46 2009
@@ -41,6 +41,7 @@
<properties>
<servicemix-version>3.3.1-SNAPSHOT</servicemix-version>
<servicemix-shared-version>2009.01</servicemix-shared-version>
+ <cxf-version>2.2.3-SNAPSHOT</cxf-version>
<servicemix.osgi.import>
org.apache.servicemix;resolution:=optional,
@@ -80,6 +81,21 @@
<version>${servicemix-shared-version}</version>
</dependency>
<dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-frontend-simple</artifactId>
+ <version>${cxf-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-core</artifactId>
+ <version>${cxf-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-databinding-aegis</artifactId>
+ <version>${cxf-version}</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.servicemix.specs</groupId>
<artifactId>org.apache.servicemix.specs.jbi-api-1.0</artifactId>
<scope>provided</scope>
Modified: servicemix/components/bindings/servicemix-rmi/trunk/src/main/java/org/apache/servicemix/rmi/RmiConsumerEndpoint.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-rmi/trunk/src/main/java/org/apache/servicemix/rmi/RmiConsumerEndpoint.java?rev=800839&r1=800838&r2=800839&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-rmi/trunk/src/main/java/org/apache/servicemix/rmi/RmiConsumerEndpoint.java (original)
+++ servicemix/components/bindings/servicemix-rmi/trunk/src/main/java/org/apache/servicemix/rmi/RmiConsumerEndpoint.java Tue Aug 4 15:11:46 2009
@@ -30,7 +30,14 @@
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.MessagingException;
import javax.jbi.messaging.NormalizedMessage;
+import javax.wsdl.factory.WSDLFactory;
+import javax.wsdl.xml.WSDLWriter;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.aegis.databinding.AegisDatabinding;
+import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.simple.SimpleServiceBuilder;
+import org.apache.cxf.wsdl11.ServiceWSDLBuilder;
import org.apache.servicemix.common.endpoints.ConsumerEndpoint;
import org.apache.servicemix.rmi.marshaler.DefaultRmiMarshaler;
import org.apache.servicemix.rmi.marshaler.RmiCall;
@@ -147,7 +154,23 @@
logger.debug("The user hasn't define the registry name, use the endpoint one.");
name = this.getEndpoint();
}
-
+
+ // use CXF to generate the WSDL definition
+ SimpleServiceBuilder serviceBuilder = new SimpleServiceBuilder();
+ serviceBuilder.setServiceClass(remoteInterface);
+ serviceBuilder.setDataBinding(new AegisDatabinding());
+ ServiceInfo serviceInfo = serviceBuilder.createService();
+ ServiceWSDLBuilder wsdlBuilder = new ServiceWSDLBuilder(BusFactory.getDefaultBus(), serviceInfo);
+ try {
+ definition = wsdlBuilder.build();
+ // TODO cleanup the definition (add correct name/target namespace) and make cleanup (binding) to make an abstract WSDL
+ // use wsdl4j to create the WSDL description
+ WSDLWriter writer = WSDLFactory.newInstance().newWSDLWriter();
+ description = writer.getDocument(definition);
+ } catch (Exception e) {
+ logger.error("Can't generate the endpoint WSDL.", e);
+ throw new DeploymentException("Can't generate the endpoint WSDL.", e);
+ }
}
/*
@@ -163,7 +186,7 @@
// create the dynamic proxy
Class[] interfaceArray = new Class[]{ remoteInterface };
- proxy = (Remote) Proxy.newProxyInstance(this.getClass().getClassLoader(), interfaceArray, this);
+ proxy = (Remote) Proxy.newProxyInstance(remoteInterface.getClassLoader(), interfaceArray, this);
// create the remote stub
stub = UnicastRemoteObject.exportObject(proxy, 0);
try {
Modified: servicemix/components/bindings/servicemix-rmi/trunk/src/test/java/org/apache/servicemix/rmi/RmiXBeanTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-rmi/trunk/src/test/java/org/apache/servicemix/rmi/RmiXBeanTest.java?rev=800839&r1=800838&r2=800839&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-rmi/trunk/src/test/java/org/apache/servicemix/rmi/RmiXBeanTest.java (original)
+++ servicemix/components/bindings/servicemix-rmi/trunk/src/test/java/org/apache/servicemix/rmi/RmiXBeanTest.java Tue Aug 4 15:11:46 2009
@@ -19,16 +19,11 @@
import java.io.File;
import java.rmi.registry.LocateRegistry;
-import javax.jbi.servicedesc.ServiceEndpoint;
-import javax.management.ObjectName;
-import javax.xml.namespace.QName;
-
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.servicemix.jbi.container.JBIContainer;
-import org.apache.servicemix.jbi.framework.Registry;
import org.springframework.core.io.ClassPathResource;
/**