You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by va...@apache.org on 2008/08/12 16:30:42 UTC

svn commit: r685166 - in /tuscany/java/sca/modules/contribution-jee: ./ src/main/java/org/apache/tuscany/sca/contribution/jee/ src/test/java/org/apache/tuscany/sca/contribution/jee/

Author: vamsic007
Date: Tue Aug 12 07:30:41 2008
New Revision: 685166

URL: http://svn.apache.org/viewvc?rev=685166&view=rev
Log:
JavaEE application as a component

Added:
    tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessor.java   (with props)
    tuscany/java/sca/modules/contribution-jee/src/test/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessorTestCase.java   (with props)
Modified:
    tuscany/java/sca/modules/contribution-jee/pom.xml
    tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/EJBModuleProcessor.java
    tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/WebModuleProcessor.java

Modified: tuscany/java/sca/modules/contribution-jee/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/contribution-jee/pom.xml?rev=685166&r1=685165&r2=685166&view=diff
==============================================================================
--- tuscany/java/sca/modules/contribution-jee/pom.xml (original)
+++ tuscany/java/sca/modules/contribution-jee/pom.xml Tue Aug 12 07:30:41 2008
@@ -65,6 +65,13 @@
             <version>1.4-SNAPSHOT</version>
             <!--scope>runtime</scope-->
         </dependency>
+        
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-implementation-jee</artifactId>
+            <version>1.4-SNAPSHOT</version>
+        </dependency>
+        
         <dependency>
             <groupId>org.apache.openejb</groupId>
             <artifactId>openejb-core</artifactId>

Modified: tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/EJBModuleProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/EJBModuleProcessor.java?rev=685166&r1=685165&r2=685166&view=diff
==============================================================================
--- tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/EJBModuleProcessor.java (original)
+++ tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/EJBModuleProcessor.java Tue Aug 12 07:30:41 2008
@@ -171,6 +171,7 @@
             for (Service service : componentType.getServices()) {
                 ComponentService componentService = helper.createComponentService();
                 componentService.setService(service);
+                componentService.setInterfaceContract(service.getInterfaceContract());
                 component.getServices().add(componentService);
             }
 
@@ -178,6 +179,7 @@
             for (Reference reference : componentType.getReferences()) {
                 ComponentReference componentReference = helper.createComponentReference();
                 componentReference.setReference(reference);
+                componentReference.setInterfaceContract(reference.getInterfaceContract());
                 component.getReferences().add(componentReference);
             }
 

Added: tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessor.java?rev=685166&view=auto
==============================================================================
--- tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessor.java (added)
+++ tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessor.java Tue Aug 12 07:30:41 2008
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.contribution.jee;
+
+import java.util.Map;
+
+import org.apache.openejb.config.AppModule;
+import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.tuscany.sca.assembly.ComponentType;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.apache.tuscany.sca.contribution.service.ContributionException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class JavaEEApplicationProcessor {
+    private AppModule appModule;
+    private ComponentType componentType;
+    private AssemblyHelper helper;
+
+    public JavaEEApplicationProcessor(AppModule appModule, AssemblyHelper helper) {
+        super();
+        this.appModule = appModule;
+        this.helper = helper;
+    }
+
+    public JavaEEApplicationProcessor(AppModule module) {
+        appModule = module;
+        helper = new AssemblyHelper();
+    }
+
+    public ComponentType getJavaEEAppComponentType() throws ContributionException {
+        if (componentType != null) {
+            return componentType;
+        }
+        componentType = helper.createComponentType();
+        
+        // Process all EJB modules
+        for(EjbModule ejbModule : appModule.getEjbModules()) {
+            EJBModuleProcessor emp = new EJBModuleProcessor(ejbModule, helper);
+            Map<String, ComponentType> ejbComponentTypes = emp.getEjbComponentTypes();
+            for(Map.Entry<String, ComponentType> entry : ejbComponentTypes.entrySet()) {
+                String beanName = entry.getKey();
+                ComponentType ct = entry.getValue();
+                EnterpriseBean bean = ejbModule.getEjbJar().getEnterpriseBeansByEjbName().get(beanName);
+                String mappedName = bean.getMappedName() != null ? bean.getMappedName() : beanName;
+
+                String mappedName2 = mappedName.replace("/", "_");
+                // Add all services from the bean
+                for(Service service : ct.getServices()) {
+                    Service service2 = helper.createComponentService();
+                    String serviceName = mappedName2 + "_"+service.getName();
+                    service2.setName(serviceName);
+                    service2.setInterfaceContract(service.getInterfaceContract());
+                    componentType.getServices().add(service2);
+                }
+                
+                String beanName2 = beanName.replace("/", "_");
+                // Add all references
+                for(Reference reference : ct.getReferences()) {
+                    Reference reference2 = helper.createComponentReference();
+                    String referenceName = beanName2+"_"+reference.getName();
+                    reference2.setName(referenceName);
+                    reference2.setInterfaceContract(reference.getInterfaceContract());
+                    componentType.getReferences().add(reference2);
+                }
+            }
+            emp.getEjbAppComponentType();
+        }
+
+        // Process web modules (?)
+        // FIXME: SCA JEE Spec 1.0 - Sec 7.1.3 says nothing about web modules
+
+        return componentType;
+    }
+}

Propchange: tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessor.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessor.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/WebModuleProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/WebModuleProcessor.java?rev=685166&r1=685165&r2=685166&view=diff
==============================================================================
--- tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/WebModuleProcessor.java (original)
+++ tuscany/java/sca/modules/contribution-jee/src/main/java/org/apache/tuscany/sca/contribution/jee/WebModuleProcessor.java Tue Aug 12 07:30:41 2008
@@ -130,6 +130,7 @@
         for (Reference reference : componentType.getReferences()) {
             ComponentReference componentReference = helper.createComponentReference();
             componentReference.setReference(reference);
+            componentReference.setInterfaceContract(reference.getInterfaceContract());
             component.getReferences().add(componentReference);
         }
 

Added: tuscany/java/sca/modules/contribution-jee/src/test/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessorTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/contribution-jee/src/test/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessorTestCase.java?rev=685166&view=auto
==============================================================================
--- tuscany/java/sca/modules/contribution-jee/src/test/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessorTestCase.java (added)
+++ tuscany/java/sca/modules/contribution-jee/src/test/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessorTestCase.java Tue Aug 12 07:30:41 2008
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.contribution.jee;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.openejb.config.AppModule;
+import org.apache.tuscany.sca.assembly.ComponentType;
+import org.apache.tuscany.sca.assembly.Reference;
+import org.apache.tuscany.sca.assembly.Service;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class JavaEEApplicationProcessorTestCase {
+
+    AppModule appModule;
+
+    @Before
+    public void setUp() throws Exception {
+        String jarFilePath = "target/test-classes/ejb-injection-sample.ear";
+        JavaEEModuleHelper jmh = new JavaEEModuleHelper();
+        appModule = jmh.getMetadataCompleteModules(jarFilePath);
+    }
+
+    @Test
+    public void testJavaEEAppContribution() throws Exception {
+        JavaEEApplicationProcessor jap = new JavaEEApplicationProcessor(appModule);
+
+        ComponentType ct = jap.getJavaEEAppComponentType();
+        
+        // Check the services
+        Assert.assertEquals(6, ct.getServices().size());
+
+        Set<String> expectedServiceNames = new HashSet<String>();
+        expectedServiceNames.add("BankBean_Bank");
+        expectedServiceNames.add("ConverterBean_Converter");
+        expectedServiceNames.add("ConverterBean_ConverterLocal");
+        expectedServiceNames.add("Converter2Bean_ConverterLocal");
+        expectedServiceNames.add("InvoiceBean_Invoice");
+        expectedServiceNames.add("PurchaseOrderBean_PurchaseOrder");
+
+        Set<String> serviceNames = new HashSet<String>();
+        for(Service service : ct.getServices()) {
+            serviceNames.add(service.getName());
+        }
+        
+        Assert.assertEquals(expectedServiceNames, serviceNames);
+
+        // Check the references
+        Assert.assertEquals(1, ct.getReferences().size());
+        
+        Set<String> expectedReferenceNames = new HashSet<String>();
+        expectedReferenceNames.add("BankBean_simple.BankBean_converter");
+        
+        Set<String> referenceNames = new HashSet<String>();
+        for (Reference r : ct.getReferences()) {
+            referenceNames.add(r.getName());
+        }
+
+        Assert.assertEquals(expectedReferenceNames, referenceNames);
+    }
+}

Propchange: tuscany/java/sca/modules/contribution-jee/src/test/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessorTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/java/sca/modules/contribution-jee/src/test/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessorTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tuscany/java/sca/modules/contribution-jee/src/test/java/org/apache/tuscany/sca/contribution/jee/JavaEEApplicationProcessorTestCase.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain