You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/10/08 11:30:37 UTC

svn commit: r1630043 - in /tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing: ApplicationComposers.java JaxrsProviders.java

Author: rmannibucau
Date: Wed Oct  8 09:30:37 2014
New Revision: 1630043

URL: http://svn.apache.org/r1630043
Log:
TOMEE-1388 @JaxrsProviders

Added:
    tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/JaxrsProviders.java
Modified:
    tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java

Modified: tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java?rev=1630043&r1=1630042&r2=1630043&view=diff
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java (original)
+++ tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/ApplicationComposers.java Wed Oct  8 09:30:37 2014
@@ -61,6 +61,7 @@ import org.apache.openejb.jee.jpa.unit.P
 import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
 import org.apache.openejb.jee.oejb3.EjbDeployment;
 import org.apache.openejb.jee.oejb3.OpenejbJar;
+import org.apache.openejb.jee.oejb3.PojoDeployment;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.ContainerSystem;
@@ -496,9 +497,33 @@ public final class ApplicationComposers 
                         ejbModule.setBeans(beans(new Beans(), cdiDecorators, cdiInterceptors, cdiAlternatives));
                     }
 
+                    final JaxrsProviders providers = method.getAnnotation(JaxrsProviders.class);
+                    final Class<?>[] providersClasses = providers == null ? null : providers.value();
+                    if (providers != null) {
+                        if (classes == null) {
+                            classes = providersClasses;
+                        } else {
+                            final Collection<Class<?>> newClasses = new ArrayList<Class<?>>(asList(classes));
+                            newClasses.addAll(asList(providersClasses));
+                            classes = newClasses.toArray(new Class<?>[newClasses.size()]);
+                        }
+                    }
+
                     final IAnnotationFinder finder = finderFromClasses(webModule, classes, findFiles(jarsAnnotation));
                     webModule.setFinder(finder);
                     ejbModule.setFinder(webModule.getFinder());
+
+                    if (providersClasses != null) {
+                        OpenejbJar openejbJar = ejbModule.getOpenejbJar();
+                        if (openejbJar == null) {
+                            openejbJar = new OpenejbJar();
+                            ejbModule.setOpenejbJar(openejbJar);
+                        }
+                        final PojoDeployment pojoDeployment = new PojoDeployment();
+                        pojoDeployment.setClassName(providers.applicationName());
+                        pojoDeployment.getProperties().setProperty("cxf.jaxrs.providers", Join.join(",", providersClasses).replace("class ", ""));
+                        openejbJar.getPojoDeployment().add(pojoDeployment);
+                    }
                 } else if (obj instanceof WebModule) { // will add the ejbmodule too
                     webModulesNb++;
 

Added: tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/JaxrsProviders.java
URL: http://svn.apache.org/viewvc/tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/JaxrsProviders.java?rev=1630043&view=auto
==============================================================================
--- tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/JaxrsProviders.java (added)
+++ tomee/tomee/branches/tomee-1.7.x/container/openejb-core/src/main/java/org/apache/openejb/testing/JaxrsProviders.java Wed Oct  8 09:30:37 2014
@@ -0,0 +1,30 @@
+/*
+ * 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.testing;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.METHOD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface JaxrsProviders {
+    Class<?>[] value() default {};
+    String applicationName() default "jaxrs-application";
+}