tomee-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rmannibu...@apache.org
Subject svn commit: r1405783 - in /openejb/trunk/openejb: container/openejb-core/src/main/java/org/apache/openejb/junit/ container/openejb-core/src/test/java/org/apache/openejb/junit/ container/openejb-core/src/test/resources/ server/openejb-cxf-rs/src/test/ja...
Date Mon, 05 Nov 2012 13:12:28 GMT
Author: rmannibucau
Date: Mon Nov  5 13:12:28 2012
New Revision: 1405783

URL: http://svn.apache.org/viewvc?rev=1405783&view=rev
Log:
adding @Descriptors annotation to ease altDD creation

Added:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Descriptor.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Descriptors.java
  (contents, props changed)
      - copied, changed from r1405723, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/AppResource.java
    openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/junit/
    openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/junit/DescriptorTest.java
    openejb/trunk/openejb/container/openejb-core/src/test/resources/descriptor-resources.xml
Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
    openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SimpleApplicationTest.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java?rev=1405783&r1=1405782&r2=1405783&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
(original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
Mon Nov  5 13:12:28 2012
@@ -73,8 +73,12 @@ import org.junit.runners.model.TestClass
 
 import javax.naming.Context;
 import java.lang.reflect.Field;
+import java.net.URL;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 
 import static org.apache.openejb.config.DeploymentsResolver.DEPLOYMENTS_CLASSPATH_PROPERTY;
@@ -143,6 +147,15 @@ public class ApplicationComposer extends
             }
         }
 
+        for (FrameworkMethod method : testClass.getAnnotatedMethods(Descriptors.class)) {
+            final Class<?> returnType = method.getMethod().getReturnType();
+            if (!returnType.equals(WebModule.class) && !returnType.equals(EjbModule.class)
+                    && !returnType.equals(WebApp.class) && !returnType.equals(EjbJar.class)
+                    && !returnType.equals(AppModule.class)) {
+                errors.add(new Exception("@Descriptors can't be used on " + returnType.getName()));
+            }
+        }
+
         for (FrameworkMethod method : testClass.getAnnotatedMethods(Classes.class)) {
             final Class<?> returnType = method.getMethod().getReturnType();
             if (!returnType.equals(WebModule.class) && !returnType.equals(EjbModule.class)
@@ -290,6 +303,8 @@ public class ApplicationComposer extends
                 SystemInstance.get().setComponent((Class<Object>) key, value);
             }
 
+            final Map<String, URL> additionalDescriptors = descriptorsToMap(testClass.getJavaClass().getAnnotation(Descriptors.class));
+
             Application application = null;
 
             int webModulesNb = 0;
@@ -310,6 +325,10 @@ public class ApplicationComposer extends
                     }
 
                     final WebModule webModule = new WebModule(webapp, root, Thread.currentThread().getContextClassLoader(),
"", root);
+
+                    webModule.getAltDDs().putAll(additionalDescriptors);
+                    webModule.getAltDDs().putAll(descriptorsToMap(method.getAnnotation(Descriptors.class)));
+
                     if (classesAnnotation != null) {
                         webModule.setFinder(finderFromClasses(classesAnnotation.value()));
                     }
@@ -318,12 +337,20 @@ public class ApplicationComposer extends
                     webModulesNb++;
 
                     final WebModule webModule = (WebModule) obj;
+
+                    webModule.getAltDDs().putAll(additionalDescriptors);
+                    webModule.getAltDDs().putAll(descriptorsToMap(method.getAnnotation(Descriptors.class)));
+
                     if (classesAnnotation != null) {
                         webModule.setFinder(finderFromClasses(classesAnnotation.value()));
                     }
                     DeploymentLoader.addWebModule(webModule, appModule);
                 } else if (obj instanceof EjbModule) {
                     final EjbModule ejbModule = (EjbModule) obj;
+
+                    ejbModule.getAltDDs().putAll(additionalDescriptors);
+                    ejbModule.getAltDDs().putAll(descriptorsToMap(method.getAnnotation(Descriptors.class)));
+
                     if (classesAnnotation != null) {
                         ejbModule.setFinder(finderFromClasses(classesAnnotation.value()));
                     }
@@ -335,6 +362,10 @@ public class ApplicationComposer extends
                     setId(ejbJar, method);
 
                     final EjbModule ejbModule = new EjbModule(ejbJar);
+
+                    ejbModule.getAltDDs().putAll(additionalDescriptors);
+                    ejbModule.getAltDDs().putAll(descriptorsToMap(method.getAnnotation(Descriptors.class)));
+
                     appModule.getEjbModules().add(ejbModule);
                     if (classesAnnotation != null) {
                         ejbModule.setFinder(finderFromClasses(classesAnnotation.value()));
@@ -410,6 +441,9 @@ public class ApplicationComposer extends
                     // we can probably go further here
                     final AppModule module = (AppModule) obj;
 
+                    module.getAltDDs().putAll(additionalDescriptors);
+                    module.getAltDDs().putAll(descriptorsToMap(method.getAnnotation(Descriptors.class)));
+
                     if (module.getWebModules().size() > 0) {
                         webModulesNb++;
                     }
@@ -563,6 +597,18 @@ public class ApplicationComposer extends
         }
     }
 
+    private static Map<String, URL> descriptorsToMap(final Descriptors descriptors)
{
+        if (descriptors != null) {
+            final Map<String, URL> dds = new HashMap<String, URL>();
+            final ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            for (Descriptor descriptor : descriptors.value()) {
+                dds.put(descriptor.name(), loader.getResource(descriptor.path()));
+            }
+            return dds;
+        }
+        return Collections.emptyMap();
+    }
+
     private static IAnnotationFinder finderFromClasses(final Class<?>[] value) {
         return new AnnotationFinder(new ClassesArchive(value)).link();
     }

Added: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Descriptor.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Descriptor.java?rev=1405783&view=auto
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Descriptor.java
(added)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Descriptor.java
Mon Nov  5 13:12:28 2012
@@ -0,0 +1,29 @@
+/*
+ * 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.openejb.junit;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target({ ElementType.METHOD, ElementType.TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Descriptor {
+    String name();
+    String path();
+}

Copied: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Descriptors.java
(from r1405723, openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/AppResource.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Descriptors.java?p2=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Descriptors.java&p1=openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/AppResource.java&r1=1405723&r2=1405783&rev=1405783&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/AppResource.java
(original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Descriptors.java
Mon Nov  5 13:12:28 2012
@@ -21,7 +21,8 @@ import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
-@Target(ElementType.FIELD)
+@Target({ ElementType.METHOD, ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
-public @interface AppResource {
+public @interface Descriptors {
+    Descriptor[] value() default {};
 }

Propchange: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/junit/Descriptors.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/junit/DescriptorTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/junit/DescriptorTest.java?rev=1405783&view=auto
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/junit/DescriptorTest.java
(added)
+++ openejb/trunk/openejb/container/openejb-core/src/test/java/org/apache/openejb/junit/DescriptorTest.java
Mon Nov  5 13:12:28 2012
@@ -0,0 +1,38 @@
+package org.apache.openejb.junit;
+
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.loader.SystemInstance;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+@RunWith(ApplicationComposer.class)
+public class DescriptorTest {
+    @Module
+    @Descriptors(@Descriptor(name = "resources.xml", path = "descriptor-resources.xml"))
+    public EjbJar classes() {
+        return new EjbJar();
+    }
+
+    @Resource
+    private DataSource ds;
+
+    @Test
+    public void checkDDWasHere() throws SQLException {
+        assertNotNull(ds);
+        final Connection connection = ds.getConnection();
+        final String url = connection.getMetaData().getURL();
+        assertEquals("jdbc:hsqldb:mem:descriptors", url);
+        connection.close();
+    }
+}

Added: openejb/trunk/openejb/container/openejb-core/src/test/resources/descriptor-resources.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/test/resources/descriptor-resources.xml?rev=1405783&view=auto
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/test/resources/descriptor-resources.xml
(added)
+++ openejb/trunk/openejb/container/openejb-core/src/test/resources/descriptor-resources.xml
Mon Nov  5 13:12:28 2012
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<resources>
+  <Resource type="DataSource" id="jdbc/descriptors">
+    JdbcUrl = jdbc:hsqldb:mem:descriptors
+    JtaManaged = false
+  </Resource>
+</resources>
\ No newline at end of file

Modified: openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SimpleApplicationTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SimpleApplicationTest.java?rev=1405783&r1=1405782&r2=1405783&view=diff
==============================================================================
--- openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SimpleApplicationTest.java
(original)
+++ openejb/trunk/openejb/server/openejb-cxf-rs/src/test/java/org/apache/openejb/server/cxf/rs/SimpleApplicationTest.java
Mon Nov  5 13:12:28 2012
@@ -17,18 +17,14 @@
 package org.apache.openejb.server.cxf.rs;
 
 import org.apache.cxf.jaxrs.client.WebClient;
-import org.apache.openejb.OpenEjbContainer;
-import org.apache.openejb.assembler.classic.WebAppBuilder;
 import org.apache.openejb.jee.WebApp;
 import org.apache.openejb.junit.ApplicationComposer;
 import org.apache.openejb.junit.Classes;
-import org.apache.openejb.junit.Component;
-import org.apache.openejb.junit.Configuration;
+import org.apache.openejb.junit.EnableServices;
 import org.apache.openejb.junit.Module;
 import org.apache.openejb.server.cxf.rs.beans.MyRESTApplication;
 import org.apache.openejb.server.cxf.rs.beans.RestWithInjections;
 import org.apache.openejb.server.cxf.rs.beans.SimpleEJB;
-import org.apache.openejb.web.LightweightWebAppBuilder;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -37,26 +33,14 @@ import javax.ws.rs.core.Application;
 import javax.ws.rs.core.Response;
 import java.io.InputStream;
 import java.io.StringWriter;
-import java.util.Properties;
 
 import static org.junit.Assert.assertEquals;
 
+@EnableServices
 @RunWith(ApplicationComposer.class)
 public class SimpleApplicationTest {
     public static final String BASE_URL = "http://localhost:4204/foo/my-app";
 
-    @Component
-    public WebAppBuilder webAppBuilder() {
-        return new LightweightWebAppBuilder();
-    }
-
-    @Configuration
-    public Properties configuration() {
-        final Properties properties = new Properties();
-        properties.setProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE, "true");
-        return properties;
-    }
-
     @Module
     @Classes({ RestWithInjections.class, SimpleEJB.class })
     public WebApp war() {



Mime
View raw message