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"; +}