You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2009/04/04 09:27:36 UTC

svn commit: r761874 - in /tuscany/branches/sca-java-1.x: modules/binding-ejb-runtime/ modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/ modules/host-openejb/ modules/implementation-ejb/src/main/java/org/apache/tu...

Author: rfeng
Date: Sat Apr  4 07:27:35 2009
New Revision: 761874

URL: http://svn.apache.org/viewvc?rev=761874&view=rev
Log:
Make the openejb version consistent and fix the NPE & UnsupportedModuleType

Modified:
    tuscany/branches/sca-java-1.x/modules/binding-ejb-runtime/pom.xml
    tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/JavaEEIntrospectorImpl.java
    tuscany/branches/sca-java-1.x/modules/host-openejb/pom.xml
    tuscany/branches/sca-java-1.x/modules/implementation-ejb/src/main/java/org/apache/tuscany/sca/implementation/ejb/xml/EJBImplementationProcessor.java
    tuscany/branches/sca-java-1.x/tutorials/store/catalog-ejb/pom.xml
    tuscany/branches/sca-java-1.x/tutorials/store/store-test/pom.xml

Modified: tuscany/branches/sca-java-1.x/modules/binding-ejb-runtime/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/binding-ejb-runtime/pom.xml?rev=761874&r1=761873&r2=761874&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/binding-ejb-runtime/pom.xml (original)
+++ tuscany/branches/sca-java-1.x/modules/binding-ejb-runtime/pom.xml Sat Apr  4 07:27:35 2009
@@ -49,7 +49,7 @@
             <version>2.2</version>
             <scope>compile</scope>
         </dependency>
-        
+
         <dependency>
             <groupId>backport-util-concurrent</groupId>
             <artifactId>backport-util-concurrent</artifactId>
@@ -87,7 +87,7 @@
         <dependency>
             <groupId>org.apache.geronimo.modules</groupId>
             <artifactId>geronimo-openejb</artifactId>
-            <version>2.0.2</version>
+            <version>2.1.4</version>
             <scope>test</scope>
             <exclusions>
                 <exclusion>
@@ -136,7 +136,7 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        
+
         <dependency>
             <groupId>asm</groupId>
             <artifactId>asm-all</artifactId>
@@ -154,7 +154,7 @@
                    <artifactId>geronimo-jms_1.1_spec</artifactId>
                </exclusion>
            </exclusions>
-        </dependency>         
+        </dependency>
 
     </dependencies>
 

Modified: tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/JavaEEIntrospectorImpl.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/JavaEEIntrospectorImpl.java?rev=761874&r1=761873&r2=761874&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/JavaEEIntrospectorImpl.java (original)
+++ tuscany/branches/sca-java-1.x/modules/contribution-jee-impl/src/main/java/org/apache/tuscany/sca/contribution/jee/impl/JavaEEIntrospectorImpl.java Sat Apr  4 07:27:35 2009
@@ -6,15 +6,15 @@
  * 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.    
+ * under the License.
  */
 package org.apache.tuscany.sca.contribution.jee.impl;
 
@@ -29,6 +29,7 @@
 import org.apache.openejb.config.AppModule;
 import org.apache.openejb.config.EjbModule;
 import org.apache.openejb.config.UnknownModuleTypeException;
+import org.apache.openejb.config.UnsupportedModuleTypeException;
 import org.apache.openejb.config.WebModule;
 import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.jee.EjbRef;
@@ -57,7 +58,7 @@
  * @version $Rev$ $Date$
  */
 public class JavaEEIntrospectorImpl implements JavaEEIntrospector {
-    
+
     public WebModuleInfo introspectWebArchive(URL artifactURL) throws ContributionReadException {
         // Create a temporary file since openejb extracts the archive to process
         InputStream inp = null;
@@ -74,7 +75,7 @@
         } catch (IOException e) {
             throw new ContributionReadException(e);
         }
-        
+
         JavaEEModuleHelper jmh = new JavaEEModuleHelper();
         WebModule wm = jmh.getMetadataCompleteModules(tempFile.getAbsolutePath()).getWebModules().get(0);
         if(!tempFile.delete()) {
@@ -85,10 +86,10 @@
 
     private WebModuleInfo createWebModuleInfo(WebModule webModule) {
         WebModuleInfo wmInfo = new WebModuleInfoImpl();
-        
+
         WebApp webApp = webModule.getWebApp();
         ClassLoader classLoader = webModule.getClassLoader();
-        
+
         // Process Remote EJB References
         for (Map.Entry<String, EjbRef> entry : webApp.getEjbRefMap().entrySet()) {
             EjbRef ejbRef = entry.getValue();
@@ -116,12 +117,12 @@
                 e.printStackTrace();
             }
         }
-        
+
         // Process env-entries to compute properties
         for (Map.Entry<String, EnvEntry> entry : webApp.getEnvEntryMap().entrySet()) {
             EnvEntry envEntry = entry.getValue();
             wmInfo.getEnvEntries().put(envEntry.getEnvEntryName(), createEnvEntryInfo(envEntry));
-        }        
+        }
 
         // Process Servlets
         for(Servlet servlet: webApp.getServlet()) {
@@ -152,26 +153,26 @@
                 e.printStackTrace();
             }
         }
-        
+
         // TODO: Process JSF Managed beans
-        
+
         // TODO: Process JSP pages
-        
+
         return wmInfo;
     }
-    
+
     private org.apache.tuscany.sca.contribution.jee.EnvEntryInfo createEnvEntryInfo(EnvEntry envEntry) {
         org.apache.tuscany.sca.contribution.jee.EnvEntryInfo envEntryInfo = new org.apache.tuscany.sca.contribution.jee.EnvEntryInfo();
         envEntryInfo.name = envEntry.getEnvEntryName();
         envEntryInfo.type = envEntry.getEnvEntryType();
         envEntryInfo.value = envEntry.getEnvEntryValue();
-        
+
         return envEntryInfo;
     }
 
     private org.apache.tuscany.sca.contribution.jee.EjbReferenceInfo createEjbReferenceInfo(EjbRef ejbRef, ClassLoader classLoader) throws ClassNotFoundException {
         org.apache.tuscany.sca.contribution.jee.EjbReferenceInfo ejbReferenceInfo = new org.apache.tuscany.sca.contribution.jee.EjbReferenceInfo();
-        
+
         ejbReferenceInfo.referenceName = ejbRef.getEjbRefName();
         ejbReferenceInfo.referenceType = ejbRef.getRefType().compareTo(EjbReference.Type.REMOTE) == 0 ? org.apache.tuscany.sca.contribution.jee.EjbReferenceInfo.RefType.REMOTE : ejbRef.getRefType().compareTo(EjbReference.Type.LOCAL) == 0 ? org.apache.tuscany.sca.contribution.jee.EjbReferenceInfo.RefType.LOCAL : org.apache.tuscany.sca.contribution.jee.EjbReferenceInfo.RefType.UNKNOWN;
         ejbReferenceInfo.businessInterface = classLoader.loadClass(ejbRef.getInterface());
@@ -182,10 +183,10 @@
                 ejbReferenceInfo.ejbType = EjbType.SESSION_UNKNOWN;
             }
         }
-        
+
         ejbReferenceInfo.ejbLink = ejbRef.getEjbLink();
         ejbReferenceInfo.mappedName = ejbRef.getMappedName();
-        
+
         return ejbReferenceInfo;
     }
 
@@ -205,13 +206,14 @@
         } catch (IOException e) {
             throw new ContributionReadException(e);
         }
-        
+
         JavaEEModuleHelper jmh = new JavaEEModuleHelper();
         EjbModule em;
         try {
             em = jmh.getMetadataCompleteModules(tempFile.getAbsolutePath()).getEjbModules().get(0);
         } catch(ContributionReadException e) {
-            if(e.getCause() instanceof UnknownModuleTypeException) {
+            if((e.getCause() instanceof UnknownModuleTypeException) ||
+                (e.getCause() instanceof UnsupportedModuleTypeException)) {
                 // Not an EJB jar
                 return null;
             } else {
@@ -254,7 +256,7 @@
                 ejbModuleInfo.getEjbInfos().put(bean.getEjbName(), ejbInfo);
             }
         }
-        
+
         return ejbModuleInfo;
     }
 
@@ -268,9 +270,9 @@
             // Should not happen
         }
         EjbInfo ejbInfo = new EjbInfo();
-        
+
         ejbInfo.beanName = bean.getEjbName();
-        
+
         try {
             ejbInfo.beanClass = classLoader.loadClass(bean.getEjbClass());
         } catch (ClassNotFoundException e) {
@@ -279,7 +281,7 @@
         }
 
         ejbInfo.ejbType = org.apache.tuscany.sca.contribution.jee.EjbInfo.EjbType.MESSAGE_DRIVEN;
-        
+
         ejbInfo.mappedName = bean.getMappedName();
 
         processReferencesEnvEntries(bean, classLoader, ejbInfo);
@@ -293,9 +295,9 @@
             return null;
         }
         EjbInfo ejbInfo = new EjbInfo();
-        
+
         ejbInfo.beanName = bean.getEjbName();
-        
+
         try {
             ejbInfo.beanClass = classLoader.loadClass(bean.getEjbClass());
         } catch (ClassNotFoundException e) {
@@ -319,7 +321,7 @@
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
-        }        
+        }
 
         // Process Local Business interfaces of the SessionBean
         for (String intfName : bean.getBusinessLocal()) {
@@ -329,10 +331,10 @@
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
-        }        
+        }
 
         processReferencesEnvEntries(bean, classLoader, ejbInfo);
-        
+
         return ejbInfo;
     }
 
@@ -363,12 +365,12 @@
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
-        }    
+        }
 
         // Process env-entries
         for (Map.Entry<String, EnvEntry> entry : bean.getEnvEntryMap().entrySet()) {
             EnvEntry envEntry = entry.getValue();
-            
+
             ejbInfo.envEntries.put(envEntry.getEnvEntryName(), createEnvEntryInfo(envEntry));
         }
     }
@@ -389,7 +391,7 @@
         } catch (IOException e) {
             throw new ContributionReadException(e);
         }
-        
+
         JavaEEModuleHelper jmh = new JavaEEModuleHelper();
         AppModule appModule = jmh.getMetadataCompleteModules(tempFile.getAbsolutePath());
         if(!tempFile.delete()) {
@@ -411,7 +413,7 @@
             webModuleInfo.setModuleName(wm.getModuleId());
             appInfo.getWebModuleInfos().put(wm.getModuleId(), webModuleInfo);
         }
-        
+
         return appInfo;
     }
 }

Modified: tuscany/branches/sca-java-1.x/modules/host-openejb/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/host-openejb/pom.xml?rev=761874&r1=761873&r2=761874&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/host-openejb/pom.xml (original)
+++ tuscany/branches/sca-java-1.x/modules/host-openejb/pom.xml Sat Apr  4 07:27:35 2009
@@ -7,15 +7,15 @@
  * 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.    
+ * under the License.
 -->
 <project>
     <modelVersion>4.0.0</modelVersion>
@@ -34,11 +34,11 @@
             <artifactId>tuscany-host-ejb</artifactId>
             <version>1.5-SNAPSHOT</version>
         </dependency>
-        
+
         <dependency>
             <groupId>org.apache.geronimo.modules</groupId>
             <artifactId>geronimo-openejb</artifactId>
-            <version>2.1.1</version>
+            <version>2.1.4</version>
             <exclusions>
                 <exclusion>
                     <groupId>org.apache.geronimo.modules</groupId>
@@ -66,13 +66,13 @@
                 </exclusion>
             </exclusions>
         </dependency>
-        
+
         <dependency>
             <groupId>backport-util-concurrent</groupId>
             <artifactId>backport-util-concurrent</artifactId>
             <version>3.1</version>
         </dependency>
-        
+
         <dependency>
             <groupId>asm</groupId>
             <artifactId>asm-all</artifactId>

Modified: tuscany/branches/sca-java-1.x/modules/implementation-ejb/src/main/java/org/apache/tuscany/sca/implementation/ejb/xml/EJBImplementationProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/modules/implementation-ejb/src/main/java/org/apache/tuscany/sca/implementation/ejb/xml/EJBImplementationProcessor.java?rev=761874&r1=761873&r2=761874&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/modules/implementation-ejb/src/main/java/org/apache/tuscany/sca/implementation/ejb/xml/EJBImplementationProcessor.java (original)
+++ tuscany/branches/sca-java-1.x/modules/implementation-ejb/src/main/java/org/apache/tuscany/sca/implementation/ejb/xml/EJBImplementationProcessor.java Sat Apr  4 07:27:35 2009
@@ -6,21 +6,22 @@
  * 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.    
+ * under the License.
  */
 package org.apache.tuscany.sca.implementation.ejb.xml;
 
 import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
 
 import java.net.URI;
+import java.util.logging.Logger;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
@@ -32,6 +33,7 @@
 import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl;
 import org.apache.tuscany.sca.assembly.xml.Constants;
 import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint;
+import org.apache.tuscany.sca.contribution.jee.EjbInfo;
 import org.apache.tuscany.sca.contribution.jee.EjbModuleInfo;
 import org.apache.tuscany.sca.contribution.jee.JavaEEExtension;
 import org.apache.tuscany.sca.contribution.jee.JavaEEOptionalExtension;
@@ -64,7 +66,8 @@
  */
 public class EJBImplementationProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor<EJBImplementation> {
     private static final QName IMPLEMENTATION_EJB = new QName(Constants.SCA10_NS, "implementation.ejb");
-    
+    private static final Logger logger = Logger.getLogger(EJBImplementationProcessor.class.getName());
+
     private AssemblyFactory assemblyFactory;
     private EJBImplementationFactory implementationFactory;
     private Monitor monitor;
@@ -72,7 +75,7 @@
     private JavaEEOptionalExtension jeeOptionalExtension;
     private JavaImplementationFactory javaImplementationFactory;
     private JavaInterfaceFactory javaInterfaceFactory;
-    
+
     public EJBImplementationProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) {
         this.assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
         this.implementationFactory = modelFactories.getFactory(EJBImplementationFactory.class);
@@ -86,7 +89,7 @@
         javaImplementationFactory.addClassVisitor(new PropertyProcessor(assemblyFactory));
         javaImplementationFactory.addClassVisitor(new ServiceProcessor(assemblyFactory, javaInterfaceFactory));
     }
-    
+
     /**
      * Report a error.
      *
@@ -112,7 +115,7 @@
     }
 
     public EJBImplementation read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
-        
+
         // Read an <implementation.ejb> element
         EJBImplementation implementation = implementationFactory.createEJBImplementation();
         implementation.setUnresolved(true);
@@ -121,8 +124,8 @@
         String ejbLink = getString(reader, "ejb-link");
         if (ejbLink != null) {
             implementation.setEJBLink(ejbLink);
-            
-            // Set the URI of the component type 
+
+            // Set the URI of the component type
             //implementation.setURI(ejbLink.replace('#', '/'));
             int hashPosition = ejbLink.indexOf('#');
             if (hashPosition >= 0) {
@@ -140,12 +143,12 @@
                 break;
             }
         }
-        
+
         return implementation;
     }
 
     public void resolve(EJBImplementation implementation, ModelResolver resolver) throws ContributionResolveException {
-        
+
         // Resolve the component type
         String uri = implementation.getURI();
         String ejbLink = implementation.getEJBLink();
@@ -155,11 +158,11 @@
             EjbModuleInfo ejbModuleInfo = new EjbModuleInfoImpl();
             ejbModuleInfo.setUri(URI.create(module));
             ejbModuleInfo = resolver.resolveModel(EjbModuleInfo.class, ejbModuleInfo);
-            
+
             if(jeeExtension != null) {
                 ComponentType ct = jeeExtension.createImplementationEjbComponentType(ejbModuleInfo, beanName);
                 // TODO - SL - TUSCANY-2944 - these new JEE processors are causing problems with existing contributions
-                //        ct is null if there is no EJBInfo 
+                //        ct is null if there is no EJBInfo
                 if (ct != null){
                     implementation.getServices().addAll(ct.getServices());
                 }
@@ -168,46 +171,54 @@
             if(jeeOptionalExtension != null) {
                 ComponentType ct = jeeOptionalExtension.createImplementationEjbComponentType(ejbModuleInfo, beanName);
                 // TODO - SL - TUSCANY-2944 - these new JEE processors are causing problems with existing contributions
-                //              ct is null if there is no EJBInfo  
+                //              ct is null if there is no EJBInfo
                 if (ct != null){
                     implementation.getReferences().addAll(ct.getReferences());
                     implementation.getProperties().addAll(ct.getProperties());
                 }
             }
 
-            // Introspection of bean class
-            Class<?> beanClass = ejbModuleInfo.getEjbInfo(uri).beanClass;
-            try {
-                JavaImplementation ji = javaImplementationFactory.createJavaImplementation(beanClass);
-                implementation.getReferences().addAll(ji.getReferences());
-                implementation.getProperties().addAll(ji.getProperties());
-                implementation.getServices().addAll(ji.getServices());
-            } catch (IntrospectionException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
+            EjbInfo ejbInfo = ejbModuleInfo.getEjbInfo(uri);
+            if (ejbInfo == null) {
+                // FIXME:
+                logger.severe("EJB " + uri + " is not found in the module");
+                // throw new ContributionResolveException("EJB " + uri + " is not found in the module");
+            } else {
+                // Introspection of bean class
+                Class<?> beanClass = ejbInfo.beanClass;
+                try {
+                    JavaImplementation ji = javaImplementationFactory.createJavaImplementation(beanClass);
+                    implementation.getReferences().addAll(ji.getReferences());
+                    implementation.getProperties().addAll(ji.getProperties());
+                    implementation.getServices().addAll(ji.getServices());
+                } catch (IntrospectionException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
             }
-            
+
             // Process componentType side file
             ComponentType componentType = assemblyFactory.createComponentType();
             componentType.setURI(uri + ".componentType");
             componentType = resolver.resolveModel(ComponentType.class, componentType);
             if (!componentType.isUnresolved()) {
-                
+
                 // Initialize the implementation's services, references and properties
                 implementation.getServices().addAll(componentType.getServices());
                 implementation.getReferences().addAll(componentType.getReferences());
                 implementation.getProperties().addAll(componentType.getProperties());
             }
         }
+
         implementation.setUnresolved(false);
     }
 
     public void write(EJBImplementation implementation, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException {
-        
+
         // Write <implementation.ejb>
         writeStart(writer, IMPLEMENTATION_EJB.getNamespaceURI(), IMPLEMENTATION_EJB.getLocalPart(),
                                  new XAttr("ejb-link", implementation.getEJBLink()));
-        
+
         writeEnd(writer);
     }
 }

Modified: tuscany/branches/sca-java-1.x/tutorials/store/catalog-ejb/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/tutorials/store/catalog-ejb/pom.xml?rev=761874&r1=761873&r2=761874&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/tutorials/store/catalog-ejb/pom.xml (original)
+++ tuscany/branches/sca-java-1.x/tutorials/store/catalog-ejb/pom.xml Sat Apr  4 07:27:35 2009
@@ -7,9 +7,9 @@
     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
@@ -38,7 +38,7 @@
             <version>1.0</version>
             <scope>provided</scope>
         </dependency>
-        
+
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
@@ -49,7 +49,7 @@
         <dependency>
             <groupId>org.apache.geronimo.modules</groupId>
             <artifactId>geronimo-openejb</artifactId>
-            <version>2.1.1</version>
+            <version>2.1.4</version>
             <scope>test</scope>
             <exclusions>
                 <exclusion>
@@ -87,7 +87,7 @@
                 <exclusion>
                     <groupId>com.sun.xml.bind</groupId>
                     <artifactId>jaxb-impl</artifactId>
-                </exclusion>                
+                </exclusion>
             </exclusions>
         </dependency>
 

Modified: tuscany/branches/sca-java-1.x/tutorials/store/store-test/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/tutorials/store/store-test/pom.xml?rev=761874&r1=761873&r2=761874&view=diff
==============================================================================
--- tuscany/branches/sca-java-1.x/tutorials/store/store-test/pom.xml (original)
+++ tuscany/branches/sca-java-1.x/tutorials/store/store-test/pom.xml Sat Apr  4 07:27:35 2009
@@ -7,15 +7,15 @@
     * 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.    
+    * under the License.
 -->
 <project>
     <modelVersion>4.0.0</modelVersion>
@@ -139,6 +139,13 @@
 
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-contribution-jee-impl</artifactId>
+            <version>1.5-SNAPSHOT</version>
+            <scope>runtime</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-implementation-ejb</artifactId>
             <version>1.5-SNAPSHOT</version>
             <scope>runtime</scope>
@@ -166,7 +173,7 @@
         </dependency>
 
     </dependencies>
-    
+
     <build>
        <finalName>${artifactId}</finalName>
        <testSourceDirectory>${basedir}</testSourceDirectory>