You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by sl...@apache.org on 2010/08/12 11:29:26 UTC

svn commit: r984702 - in /tuscany/sca-java-2.x/trunk: itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/ modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ modul...

Author: slaws
Date: Thu Aug 12 09:29:25 2010
New Revision: 984702

URL: http://svn.apache.org/viewvc?rev=984702&view=rev
Log:
TUSCANY-3641 - When a JAXWS binding is encountered make sure that the associated SCA service has a WS binding. 

Modified:
    tuscany/sca-java-2.x/trunk/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java
    tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Service.java
    tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java
    tuscany/sca-java-2.x/trunk/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestRuntimeComponentService.java
    tuscany/sca-java-2.x/trunk/modules/implementation-java/META-INF/MANIFEST.MF
    tuscany/sca-java-2.x/trunk/modules/implementation-java/pom.xml
    tuscany/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JAXWSProcessor.java
    tuscany/sca-java-2.x/trunk/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
    tuscany/sca-java-2.x/trunk/modules/interface-java/META-INF/MANIFEST.MF

Modified: tuscany/sca-java-2.x/trunk/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java?rev=984702&r1=984701&r2=984702&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/itest/scdl/src/test/java/org/apache/tuscany/sca/itest/scdl/ValidateDependenciesTestCase.java Thu Aug 12 09:29:25 2010
@@ -44,6 +44,7 @@ import org.junit.Test;
  * tuscany-binding-jms-2.0-SNAPSHOT.jar
  * tuscany-binding-jsonp-2.0-SNAPSHOT.jar
  * tuscany-binding-rmi-2.0-SNAPSHOT.jar
+ * tuscany-binding-ws-2.0-SNAPSHOT.jar
  * tuscany-builder-2.0-SNAPSHOT.jar
  * tuscany-common-java-2.0-SNAPSHOT.jar
  * tuscany-common-xml-2.0-SNAPSHOT.jar
@@ -74,6 +75,6 @@ public class ValidateDependenciesTestCas
         Assert.assertTrue(dependenciesDir.exists());
         
         File[] dependencyFiles = dependenciesDir.listFiles();
-        Assert.assertEquals(30, dependencyFiles.length);
+        Assert.assertEquals(31, dependencyFiles.length);
     }
 }

Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Service.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Service.java?rev=984702&r1=984701&r2=984702&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Service.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Service.java Thu Aug 12 09:29:25 2010
@@ -39,4 +39,21 @@ public interface Service extends Abstrac
      * @return the endpoints implied by this service
      */
     List<Endpoint> getEndpoints();
+    
+    
+    /**
+     * Returns true if this service was defined based on JAXWS annotations 
+     * in a Java implementation
+     * 
+     * @return
+     */
+    boolean isJAXWSService();
+    
+    /**
+     * Allows the JAXWSService flag to be set. It should be set true if the service
+     * configuration has been affected by JAXWS annotations. 
+     * 
+     * @param isJAXWSService
+     */
+    void setJAXWSService(boolean isJAXWSService);
 }

Modified: tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java?rev=984702&r1=984701&r2=984702&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ServiceImpl.java Thu Aug 12 09:29:25 2010
@@ -38,6 +38,7 @@ public class ServiceImpl extends Abstrac
     private boolean overridingBindings;
     private Callback callback;
     private List<Endpoint> endpoints = new ArrayList<Endpoint>();
+    private boolean isJAXWSService = false;
 
     /**
      * Constructs a new service.
@@ -103,4 +104,12 @@ public class ServiceImpl extends Abstrac
     public void setOverridingBindings(boolean overridingBindings) {
         this.overridingBindings = overridingBindings;
     }
+    
+    public boolean isJAXWSService() {
+        return isJAXWSService;
+    }
+    
+    public void setJAXWSService(boolean isJAXWSService) {
+        this.isJAXWSService = isJAXWSService;
+    }
 }

Modified: tuscany/sca-java-2.x/trunk/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestRuntimeComponentService.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestRuntimeComponentService.java?rev=984702&r1=984701&r2=984702&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestRuntimeComponentService.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/binding-corba-runtime/src/test/java/org/apache/tuscany/sca/binding/corba/testing/service/mocks/TestRuntimeComponentService.java Thu Aug 12 09:29:25 2010
@@ -216,5 +216,11 @@ public class TestRuntimeComponentService
         // TODO Auto-generated method stub
         
     }
-
+    
+    public boolean isJAXWSService() {
+        return false;
+    }
+    
+    public void setJAXWSService(boolean isJAXWSService) {
+    }    
 }

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-java/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-java/META-INF/MANIFEST.MF?rev=984702&r1=984701&r2=984702&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-java/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-java/META-INF/MANIFEST.MF Thu Aug 12 09:29:25 2010
@@ -24,6 +24,7 @@ Import-Package: javax.jws,
  org.apache.tuscany.sca.assembly.builder;version="2.0.0";resolution:=optional,
  org.apache.tuscany.sca.assembly.impl;version="2.0.0",
  org.apache.tuscany.sca.assembly.xml;version="2.0.0",
+ org.apache.tuscany.sca.binding.ws;version="2.0.0",
  org.apache.tuscany.sca.contribution.processor;version="2.0.0",
  org.apache.tuscany.sca.contribution.resolver;version="2.0.0",
  org.apache.tuscany.sca.core;version="2.0.0",

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-java/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-java/pom.xml?rev=984702&r1=984701&r2=984702&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-java/pom.xml (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-java/pom.xml Thu Aug 12 09:29:25 2010
@@ -76,9 +76,15 @@
             <artifactId>tuscany-contribution</artifactId>
             <version>2.0-SNAPSHOT</version>
         </dependency>
-
+        
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-binding-ws</artifactId>
+            <version>2.0-SNAPSHOT</version>
+        </dependency>         
+
+        <!--dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-builder</artifactId>
             <version>2.0-SNAPSHOT</version>
             <scope>test</scope>
@@ -96,7 +102,7 @@
             <artifactId>tuscany-binding-ws</artifactId>
             <version>2.0-SNAPSHOT</version>
             <scope>test</scope>
-        </dependency>             
+        </dependency-->             
 
     </dependencies>
 

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JAXWSProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JAXWSProcessor.java?rev=984702&r1=984701&r2=984702&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JAXWSProcessor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-java/src/main/java/org/apache/tuscany/sca/implementation/java/introspect/impl/JAXWSProcessor.java Thu Aug 12 09:29:25 2010
@@ -32,6 +32,9 @@ import javax.xml.ws.WebServiceProvider;
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.assembly.xml.Constants;
+import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
+import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
+import org.apache.tuscany.sca.binding.ws.xml.WebServiceConstants;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.FactoryExtensionPoint;
 import org.apache.tuscany.sca.implementation.java.IntrospectionException;
@@ -47,6 +50,7 @@ import org.apache.tuscany.sca.interfaced
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLFactory;
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
 import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract;
+import org.apache.tuscany.sca.policy.ExtensionType;
 import org.apache.tuscany.sca.policy.Intent;
 import org.apache.tuscany.sca.policy.PolicyFactory;
 import org.apache.tuscany.sca.policy.PolicySubject;
@@ -59,6 +63,7 @@ public class JAXWSProcessor extends Base
     
     private PolicyFactory policyFactory;
     private WSDLFactory wsdlFactory;
+    private WebServiceBindingFactory wsBindingFactory;
     
     public JAXWSProcessor(ExtensionPointRegistry registry) {
         super(registry);
@@ -67,14 +72,18 @@ public class JAXWSProcessor extends Base
         this.assemblyFactory = factories.getFactory(AssemblyFactory.class);
         this.policyFactory = factories.getFactory(PolicyFactory.class);
         this.javaInterfaceFactory = factories.getFactory(JavaInterfaceFactory.class);
+        this.wsBindingFactory = factories.getFactory(WebServiceBindingFactory.class);
     }
 
     @Override
     public <T> void visitClass(Class<T> clazz, JavaImplementation type) throws IntrospectionException {
         
+        boolean hasJaxwsAnnotation = false;
+        
         // Process @ServiceMode annotation - JCA 11013
     	if ( clazz.getAnnotation(ServiceMode.class) != null ) {
     		addSOAPIntent(type);
+    		hasJaxwsAnnotation = true;
     	}
     	
         // Process @WebService annotation - POJO_8029, POJO_8030
@@ -95,6 +104,7 @@ public class JAXWSProcessor extends Base
             } catch (InvalidInterfaceException e) {
                 throw new IntrospectionException(e);
             }
+            hasJaxwsAnnotation = true;
         }
         
         // Process @WebServiceProvider annotation - JCA_11015, POJO_8034
@@ -127,6 +137,8 @@ public class JAXWSProcessor extends Base
             for ( Service service : type.getServices() ) {
                 service.getInterfaceContract().getInterface().setRemotable(true);
             }
+            
+            hasJaxwsAnnotation = true;
         }         
         
         // Process @WebParam and @WebResult annotations - POJO_8031, POJO_8032
@@ -170,6 +182,7 @@ public class JAXWSProcessor extends Base
             if (hasHeaderParam){                   
                 // Add a SOAP intent to the service
                 addSOAPIntent(service);
+                hasJaxwsAnnotation = true;
             }
         }
         
@@ -180,7 +193,18 @@ public class JAXWSProcessor extends Base
             for ( Service service : type.getServices() ) {
                 addSOAPIntent(service);
             }
+            hasJaxwsAnnotation = true;
         }               
+        
+        if (hasJaxwsAnnotation == true){
+            // Note that services are based on JAXWS annotations so 
+            // that during the build process a binding.ws can be added
+            // if required
+            for ( Service service : type.getServices() ) {
+                service.setJAXWSService(true);
+                createWSBinding(type, service);
+            }
+        }
     }
     
     /**
@@ -191,7 +215,7 @@ public class JAXWSProcessor extends Base
         return "".equals(value) ? defaultValue : value;
     }
     
-    public Service createService(JavaImplementation type, Class<?> clazz, String serviceName, String javaInterfaceName, String wsdlFileName, boolean replace)  throws InvalidInterfaceException, IntrospectionException {
+    private Service createService(JavaImplementation type, Class<?> clazz, String serviceName, String javaInterfaceName, String wsdlFileName, boolean replace)  throws InvalidInterfaceException, IntrospectionException {
         Service service = assemblyFactory.createService();
 
         if (serviceName != null) {
@@ -269,5 +293,16 @@ public class JAXWSProcessor extends Base
         soapIntent.setName(Constants.SOAP_INTENT);         
         policySubject.getRequiredIntents().add(soapIntent);
     }
+    
+    private void createWSBinding(JavaImplementation javaImplementation, Service service){
+        if(service.getBindings().size() == 0){
+            WebServiceBinding wsBinding = wsBindingFactory.createWebServiceBinding();
+            ExtensionType bindingType = policyFactory.createBindingType();
+            bindingType.setType(WebServiceConstants.BINDING_WS_QNAME);
+            bindingType.setUnresolved(true);
+            ((PolicySubject)wsBinding).setExtensionType(bindingType);
+            service.getBindings().add(wsBinding);
+        }
+    }
 
 }

Modified: tuscany/sca-java-2.x/trunk/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java?rev=984702&r1=984701&r2=984702&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/implementation-java/src/test/java/org/apache/tuscany/sca/implementation/java/xml/ReadTestCase.java Thu Aug 12 09:29:25 2010
@@ -95,7 +95,8 @@ public class ReadTestCase {
         Composite composite = (Composite)staxProcessor.read(reader, context);
         assertNotNull(composite);
 
-        compositeBuilder.build(composite, builderContext);
+        // remove dependency on builder
+        //compositeBuilder.build(composite, builderContext);
 
     }
 

Modified: tuscany/sca-java-2.x/trunk/modules/interface-java/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/interface-java/META-INF/MANIFEST.MF?rev=984702&r1=984701&r2=984702&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/interface-java/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/interface-java/META-INF/MANIFEST.MF Thu Aug 12 09:29:25 2010
@@ -21,7 +21,6 @@ Bundle-License: http://www.apache.org/li
 Bundle-Description: Apache Tuscany SCA Java Interface Model
 Import-Package: javax.xml.namespace,
  javax.xml.stream,
- org.oasisopen.sca;version="2.0.0",
  org.apache.tuscany.sca.assembly;version="2.0.0",
  org.apache.tuscany.sca.assembly.xml;version="2.0.0",
  org.apache.tuscany.sca.contribution.processor;version="2.0.0",
@@ -37,6 +36,7 @@ Import-Package: javax.xml.namespace,
  org.apache.tuscany.sca.interfacedef.util;version="2.0.0",
  org.apache.tuscany.sca.monitor;version="2.0.0",
  org.apache.tuscany.sca.policy;version="2.0.0",
+ org.oasisopen.sca;version="2.0.0",
  org.oasisopen.sca.annotation;version="2.0.0"
 Bundle-SymbolicName: org.apache.tuscany.sca.interface.java
 Bundle-DocURL: http://www.apache.org/