You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/03/28 13:30:53 UTC
svn commit: r1086193 - in /openejb/trunk/openejb3/container:
openejb-core/src/main/java/org/apache/openejb/config/
openejb-core/src/test/java/org/apache/openejb/cdi/
openejb-core/src/test/java/org/apache/openejb/core/stateless/
openejb-loader/src/main/...
Author: dblevins
Date: Mon Mar 28 11:30:52 2011
New Revision: 1086193
URL: http://svn.apache.org/viewvc?rev=1086193&view=rev
Log:
Switch to interface version of AnnotationFinder
Added:
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/BasicInjectionTest.java (with props)
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessMetaAnnotationTest.java
- copied, changed from r1085868, openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
openejb/trunk/openejb3/container/openejb-loader/src/main/java/org/apache/openejb/loader/JarLocation.java
openejb/trunk/openejb3/container/openejb-osgi-core/src/main/java/org/apache/openejb/osgi/core/BundleFinderFactory.java
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1086193&r1=1086192&r2=1086193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java Mon Mar 28 11:30:52 2011
@@ -182,6 +182,7 @@ import org.apache.openejb.util.LogCatego
import org.apache.openejb.util.Logger;
import org.apache.xbean.finder.AbstractFinder;
import org.apache.xbean.finder.ClassFinder;
+import org.apache.xbean.finder.IAnnotationFinder;
/**
* @version $Rev$ $Date$
@@ -241,7 +242,7 @@ public class AnnotationDeployer implemen
}
// TODO Remove this section. It's called by some code in the assembler.
- // The scanning portion should be completed prior to this point
+ // The scanning portion should be completed prior to this point
public void deploy(CdiBeanInfo beanInfo) throws OpenEJBException{
this.processAnnotatedBeans.deploy(beanInfo);
}
@@ -343,7 +344,7 @@ public class AnnotationDeployer implemen
if (clientModule.getApplicationClient() != null && clientModule.getApplicationClient().isMetadataComplete()) return clientModule;
- AbstractFinder finder = clientModule.getFinder();
+ IAnnotationFinder finder = clientModule.getFinder();
if (finder == null) {
try {
@@ -403,7 +404,7 @@ public class AnnotationDeployer implemen
existingServlets.add(servlet.getServletClass());
}
- AbstractFinder finder = webModule.getFinder();
+ IAnnotationFinder finder = webModule.getFinder();
List<Class> classes = new ArrayList<Class>();
classes.addAll(finder.findAnnotatedClasses(WebService.class));
classes.addAll(finder.findAnnotatedClasses(WebServiceProvider.class));
@@ -448,7 +449,7 @@ public class AnnotationDeployer implemen
return ejbModule;
}
- AbstractFinder finder = ejbModule.getFinder();
+ IAnnotationFinder finder = ejbModule.getFinder();
/* 19.2: ejb-name: Default is the unqualified name of the bean class */
@@ -680,7 +681,7 @@ public class AnnotationDeployer implemen
processWebServiceClientHandlers(beanInfo, beanInfo.getClassLoader());
}
-
+
public AppModule deploy(AppModule appModule) throws OpenEJBException {
for (EjbModule ejbModule : appModule.getEjbModules()) {
setModule(ejbModule);
@@ -997,7 +998,7 @@ public class AnnotationDeployer implemen
}
}
- AbstractFinder finder = webModule.getFinder();
+ IAnnotationFinder finder = webModule.getFinder();
if (finder != null) {
String[] webComponentAnnotations = {
@@ -1062,7 +1063,7 @@ public class AnnotationDeployer implemen
}
fail(ejbName, "xml.noEjbClass", ejbName, join(", ", others));
}
-
+
Class<?> clazz;
try {
clazz = classLoader.loadClass(ejbClassName);
@@ -1345,7 +1346,7 @@ public class AnnotationDeployer implemen
/*
* @Lock
*/
- LockHandler lockHandler = new LockHandler(assemblyDescriptor, sessionBean);
+ LockHandler lockHandler = new LockHandler(assemblyDescriptor, sessionBean);
if (sessionBean.getConcurrencyManagementType() == ConcurrencyManagementType.CONTAINER) {
processAttributes(lockHandler, clazz, inheritedClassFinder);
} else {
@@ -1355,10 +1356,10 @@ public class AnnotationDeployer implemen
/*
* @AccessTimeout
*/
- AccessTimeoutHandler accessTimeoutHandler =
+ AccessTimeoutHandler accessTimeoutHandler =
new AccessTimeoutHandler(assemblyDescriptor, sessionBean, lockHandler.getContainerConcurrency());
processAttributes(accessTimeoutHandler, clazz, inheritedClassFinder);
-
+
/*
* @Startup
*/
@@ -1371,7 +1372,7 @@ public class AnnotationDeployer implemen
/*
* Annotations specific to @Stateful beans
*/
-
+
/*
* @StatefulTimeout
*/
@@ -1384,13 +1385,13 @@ public class AnnotationDeployer implemen
sessionBean.setStatefulTimeout(timeout);
}
}
-
+
/*
* @AccessTimeout
*/
AccessTimeoutHandler accessTimeoutHandler = new AccessTimeoutHandler(assemblyDescriptor, sessionBean);
processAttributes(accessTimeoutHandler, clazz, inheritedClassFinder);
-
+
}
}
}
@@ -1572,12 +1573,12 @@ public class AnnotationDeployer implemen
}
SessionBean sessionBean = (SessionBean) bean;
-
+
List<Method> asyncMethods = classFinder.findAnnotatedMethods(Asynchronous.class);
for (Method method : asyncMethods) {
sessionBean.getAsyncMethod().add(new AsyncMethod(method));
}
-
+
List<Class<?>> clses = classFinder.findAnnotatedClasses(Asynchronous.class);
//Spec 4.5.1 @Asynchronous could be used at the class level of a bean-class ( or superclass ).
@@ -1600,7 +1601,7 @@ public class AnnotationDeployer implemen
}
}
}
-
+
//TODO why is this necessary, we scan for exceptions with this annotation elsewhere.
private void processApplicationExceptions(Class<?> clazz, AssemblyDescriptor assemblyDescriptor) {
/*
@@ -1648,7 +1649,7 @@ public class AnnotationDeployer implemen
if (beanClass.getAnnotation(LocalBean.class) != null) {
sessionBean.setLocalBean(new Empty());
}
-
+
/**
* Anything declared as both <business-local> and <business-remote> is invalid in strict mode
*/
@@ -1941,7 +1942,7 @@ public class AnnotationDeployer implemen
// It goes a little beyond that, but no one has ever complained about having
// more local interfaces.
- // TODO allow to be re-enabled with a flag
+ // TODO allow to be re-enabled with a flag
//for (Class interfce : all.unspecified) sessionBean.addBusinessLocal(interfce);
@@ -2188,7 +2189,7 @@ public class AnnotationDeployer implemen
}
}
}
-
+
private void processCallbacks(Lifecycle bean, ClassFinder classFinder) {
final boolean override = "true".equalsIgnoreCase(getProperty("openejb.callbacks.override", "false"));
@@ -2213,7 +2214,7 @@ public class AnnotationDeployer implemen
if (bean instanceof Invokable) {
Invokable invokable = (Invokable) bean;
-
+
/*
* @AroundInvoke
*/
@@ -2232,7 +2233,7 @@ public class AnnotationDeployer implemen
}
}
}
-
+
/*
* @Timeout
*/
@@ -2628,7 +2629,7 @@ public class AnnotationDeployer implemen
mappedName = null;
}
ejbRef.setMappedName(mappedName);
-
+
// Set lookup name, if any
String lookupName = getLookupName(ejb);
if (lookupName.equals("")) {
@@ -2826,22 +2827,22 @@ public class AnnotationDeployer implemen
reference = resourceEnvRef;
} else if (isKnownEnvironmentEntryType(type)) {
/*
- * @Resource <env-entry>
- *
+ * @Resource <env-entry>
+ *
* Add an env-entry via @Resource if 'lookup' attribute is set.
- */
+ */
String lookupName = getLookupName(resource);
if (!lookupName.equals("")) {
EnvEntry envEntry = new EnvEntry();
envEntry.setName(refName);
consumer.getEnvEntry().add(envEntry);
-
+
envEntry.setLookupName(lookupName);
-
+
reference = envEntry;
} else {
/*
- * Can't add env-entry since @Resource.lookup is not set.
+ * Can't add env-entry since @Resource.lookup is not set.
*/
return;
}
@@ -2912,7 +2913,7 @@ public class AnnotationDeployer implemen
return null;
}
}
-
+
private static String getLookupName(Resource resource) {
String value = "";
Method lookupMethod = getLookupMethod(Resource.class);
@@ -3334,19 +3335,19 @@ public class AnnotationDeployer implemen
}
private static class ConcurrentMethodHandler {
-
+
protected final AssemblyDescriptor assemblyDescriptor;
protected final SessionBean bean;
protected final Map<Object, ContainerConcurrency> methods;
- public ConcurrentMethodHandler(AssemblyDescriptor assemblyDescriptor,
- SessionBean bean,
+ public ConcurrentMethodHandler(AssemblyDescriptor assemblyDescriptor,
+ SessionBean bean,
Map<Object, ContainerConcurrency> methods) {
this.assemblyDescriptor = assemblyDescriptor;
this.bean = bean;
this.methods = methods;
}
-
+
public Map<String, List<MethodAttribute>> getExistingDeclarations() {
Map<String, List<MethodAttribute>> declarations = new HashMap<String, List<MethodAttribute>>();
List<ConcurrentMethod> methods = bean.getConcurrentMethod();
@@ -3360,7 +3361,7 @@ public class AnnotationDeployer implemen
}
return declarations;
}
-
+
public ContainerConcurrency getContainerConcurrency(Method method) {
ContainerConcurrency concurrency = methods.get(method);
if (concurrency == null) {
@@ -3370,35 +3371,35 @@ public class AnnotationDeployer implemen
}
return concurrency;
}
-
+
public ContainerConcurrency getContainerConcurrency(Class clazz) {
ContainerConcurrency concurrency = methods.get(clazz);
if (concurrency == null) {
concurrency = new ContainerConcurrency(null, clazz.getName(), bean.getEjbName(), "*");
methods.put(clazz, concurrency);
- assemblyDescriptor.getContainerConcurrency().add(concurrency);
+ assemblyDescriptor.getContainerConcurrency().add(concurrency);
}
return concurrency;
}
-
+
protected Map<Object, ContainerConcurrency> getContainerConcurrency() {
return methods;
}
}
-
+
public static class LockHandler extends ConcurrentMethodHandler implements AnnotationHandler<Lock> {
- public LockHandler(AssemblyDescriptor assemblyDescriptor,
+ public LockHandler(AssemblyDescriptor assemblyDescriptor,
SessionBean bean) {
this(assemblyDescriptor, bean, new HashMap<Object, ContainerConcurrency>());
}
- public LockHandler(AssemblyDescriptor assemblyDescriptor,
- SessionBean bean,
+ public LockHandler(AssemblyDescriptor assemblyDescriptor,
+ SessionBean bean,
Map<Object, ContainerConcurrency> methods) {
super(assemblyDescriptor, bean, methods);
}
-
+
public void addClassLevelDeclaration(Lock attribute, Class type) {
ContainerConcurrency concurrency = getContainerConcurrency(type);
concurrency.setLock(toLock(attribute));
@@ -3418,22 +3419,22 @@ public class AnnotationDeployer implemen
throw new IllegalArgumentException("Unknown lock annotation: " + annotation.value());
}
}
-
+
public Class<Lock> getAnnotationClass() {
return Lock.class;
}
}
-
+
public static class AccessTimeoutHandler extends ConcurrentMethodHandler implements AnnotationHandler<AccessTimeout> {
- public AccessTimeoutHandler(AssemblyDescriptor assemblyDescriptor,
+ public AccessTimeoutHandler(AssemblyDescriptor assemblyDescriptor,
SessionBean bean) {
this(assemblyDescriptor, bean, new HashMap<Object, ContainerConcurrency>());
}
- public AccessTimeoutHandler(AssemblyDescriptor assemblyDescriptor,
- SessionBean bean,
+ public AccessTimeoutHandler(AssemblyDescriptor assemblyDescriptor,
+ SessionBean bean,
Map<Object, ContainerConcurrency> methods) {
super(assemblyDescriptor, bean, methods);
}
@@ -3454,7 +3455,7 @@ public class AnnotationDeployer implemen
timeout.setUnit(annotation.unit());
return timeout;
}
-
+
public Class<AccessTimeout> getAnnotationClass() {
return AccessTimeout.class;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java?rev=1086193&r1=1086192&r2=1086193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/ClientModule.java Mon Mar 28 11:30:52 2011
@@ -18,7 +18,7 @@ package org.apache.openejb.config;
import org.apache.openejb.jee.ApplicationClient;
import org.apache.openejb.jee.oejb3.OpenejbJar;
-import org.apache.xbean.finder.AbstractFinder;
+import org.apache.xbean.finder.IAnnotationFinder;
import java.net.URI;
import java.util.Map;
@@ -38,7 +38,7 @@ public class ClientModule implements Dep
private ClassLoader classLoader;
private String mainClass;
private boolean ejbModuleGenerated;
- private AtomicReference<AbstractFinder> finder;
+ private AtomicReference<IAnnotationFinder> finder;
private final Set<String> localClients = new HashSet<String>();
private final Set<String> remoteClients = new HashSet<String>();
private final Map<String,Object> altDDs = new HashMap<String,Object>();
@@ -63,15 +63,15 @@ public class ClientModule implements Dep
this.ejbModuleGenerated = ejbModuleGenerated;
}
- public AbstractFinder getFinder() {
+ public IAnnotationFinder getFinder() {
return (finder != null)? finder.get(): null;
}
- public void setFinderReference(AtomicReference<AbstractFinder> finder) {
+ public void setFinderReference(AtomicReference<IAnnotationFinder> finder) {
this.finder = finder;
}
- public AtomicReference<AbstractFinder> getFinderReference() {
+ public AtomicReference<IAnnotationFinder> getFinderReference() {
return this.finder;
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java?rev=1086193&r1=1086192&r2=1086193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java Mon Mar 28 11:30:52 2011
@@ -45,7 +45,7 @@ import org.apache.openejb.util.LogCatego
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.URLs;
import org.apache.openejb.util.UrlCache;
-import org.apache.xbean.finder.AbstractFinder;
+import org.apache.xbean.finder.IAnnotationFinder;
import org.apache.xbean.finder.ResourceFinder;
import org.apache.xbean.finder.UrlSet;
import org.xml.sax.SAXException;
@@ -630,7 +630,7 @@ public class DeploymentLoader implements
try {
// TODO: Put our scanning ehnancements back, here
- AbstractFinder finder = FinderFactory.createFinder(webModule);
+ IAnnotationFinder finder = FinderFactory.createFinder(webModule);
webModule.setFinder(finder);
webEjbModule.setFinder(finder);
} catch (Exception e) {
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java?rev=1086193&r1=1086192&r2=1086193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/EjbModule.java Mon Mar 28 11:30:52 2011
@@ -22,7 +22,7 @@ import org.apache.openejb.jee.EjbJar;
import org.apache.openejb.jee.NamedModule;
import org.apache.openejb.jee.Webservices;
import org.apache.openejb.jee.oejb3.OpenejbJar;
-import org.apache.xbean.finder.AbstractFinder;
+import org.apache.xbean.finder.IAnnotationFinder;
import java.io.File;
import java.net.URI;
@@ -48,7 +48,7 @@ public class EjbModule implements WsModu
private OpenejbJar openejbJar;
private Webservices webservices;
- private final AtomicReference<AbstractFinder> finder = new AtomicReference<AbstractFinder>();
+ private final AtomicReference<IAnnotationFinder> finder = new AtomicReference<IAnnotationFinder>();
private final Map<String, Object> altDDs = new HashMap<String, Object>();
private final Set<String> watchedResources = new TreeSet<String>();
private Beans beans;
@@ -92,11 +92,11 @@ public class EjbModule implements WsModu
this.beans = beans;
}
- public AbstractFinder getFinder() {
+ public IAnnotationFinder getFinder() {
return finder.get();
}
- public void setFinder(AbstractFinder finder) {
+ public void setFinder(IAnnotationFinder finder) {
this.finder.set(finder);
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java?rev=1086193&r1=1086192&r2=1086193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/FinderFactory.java Mon Mar 28 11:30:52 2011
@@ -16,11 +16,14 @@
*/
package org.apache.openejb.config;
-import org.apache.xbean.finder.AbstractFinder;
+import org.apache.xbean.finder.AnnotationFinder;
+import org.apache.xbean.finder.IAnnotationFinder;
import org.apache.xbean.finder.ClassFinder;
import org.apache.openejb.util.Logger;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.xbean.finder.archive.ClassesArchive;
+import org.apache.xbean.finder.archive.ClasspathArchive;
import java.io.File;
import java.net.URL;
@@ -36,11 +39,11 @@ public class FinderFactory {
return (factory != null)? factory: FinderFactory.factory;
}
- public static AbstractFinder createFinder(DeploymentModule module) throws Exception {
+ public static IAnnotationFinder createFinder(DeploymentModule module) throws Exception {
return get().create(module);
}
- public AbstractFinder create(DeploymentModule module) throws Exception {
+ public IAnnotationFinder create(DeploymentModule module) throws Exception {
if (module instanceof WebModule) {
WebModule webModule = (WebModule) module;
final ClassLoader webClassLoader = webModule.getClassLoader();
@@ -62,9 +65,9 @@ public class FinderFactory {
} else {
url = new URL(location);
}
- return new ClassFinder(module.getClassLoader(), url);
+ return new AnnotationFinder(new ClasspathArchive(module.getClassLoader(), url));
} else {
- return new ClassFinder();
+ return new AnnotationFinder(new ClassesArchive());
}
}
}
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java?rev=1086193&r1=1086192&r2=1086193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/WebModule.java Mon Mar 28 11:30:52 2011
@@ -30,7 +30,7 @@ import org.apache.openejb.jee.FacesConfi
import org.apache.openejb.jee.TldTaglib;
import org.apache.openejb.jee.WebApp;
import org.apache.openejb.jee.Webservices;
-import org.apache.xbean.finder.AbstractFinder;
+import org.apache.xbean.finder.IAnnotationFinder;
/**
* @version $Rev$ $Date$
@@ -48,7 +48,7 @@ public class WebModule implements WsModu
private final Set<String> watchedResources = new TreeSet<String>();
// List of all faces configuration files found in this web module
private final List<FacesConfig> facesConfigs = new ArrayList<FacesConfig>();
- private AbstractFinder finder;
+ private IAnnotationFinder finder;
private ID id;
@@ -103,11 +103,11 @@ public class WebModule implements WsModu
this.urls = urls;
}
- public AbstractFinder getFinder() {
+ public IAnnotationFinder getFinder() {
return finder;
}
- public void setFinder(AbstractFinder finder) {
+ public void setFinder(IAnnotationFinder finder) {
this.finder = finder;
}
Added: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/BasicInjectionTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/BasicInjectionTest.java?rev=1086193&view=auto
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/BasicInjectionTest.java (added)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/BasicInjectionTest.java Mon Mar 28 11:30:52 2011
@@ -0,0 +1,109 @@
+/**
+ * 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.cdi;
+
+import junit.framework.TestCase;
+import org.apache.openejb.jee.Empty;
+import org.apache.openejb.jee.StatelessBean;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.junit.Module;
+import org.junit.runner.RunWith;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.inject.Produces;
+import javax.inject.Inject;
+import javax.inject.Qualifier;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.net.URI;
+import java.net.URL;
+
+/**
+ * @version $Rev$ $Date$
+ */
+
+@RunWith(ApplicationComposer.class)
+public class BasicInjectionTest extends TestCase {
+
+ @Module
+ public StatelessBean app() throws Exception {
+
+ final StatelessBean bean = new StatelessBean(WidgetBean.class);
+ bean.setLocalBean(new Empty());
+
+ return bean;
+ }
+
+
+
+ public static class WidgetBean {
+
+ @Inject
+ @Web
+ private URI webLocation;
+
+ @Inject
+ @Jms
+ private URI jmsLocation;
+
+ @PostConstruct
+ private void init() {
+ if (webLocation == null) throw new IllegalStateException("webLocation");
+ if (jmsLocation == null) throw new IllegalStateException("jmsLocation");
+ }
+
+ public URI getWebLocation() {
+ return webLocation;
+ }
+
+ public URI getJmsLocation() {
+ return jmsLocation;
+ }
+ }
+
+ public static class Configuration {
+
+ @Produces
+ @Jms
+ public URI getWebURI() {
+ return URI.create("jms://foo");
+ }
+
+ @Produces
+ @Web
+ public URI getJmsURI() {
+ return URI.create("web://foo");
+ }
+ }
+
+
+ @Qualifier
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target(value = {ElementType.FIELD, ElementType.METHOD})
+ public static @interface Jms {
+
+ }
+ @Qualifier
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target(value = {ElementType.FIELD,ElementType.METHOD})
+ public static @interface Web {
+
+ }
+
+}
Propchange: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/BasicInjectionTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Copied: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessMetaAnnotationTest.java (from r1085868, openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessMetaAnnotationTest.java?p2=openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessMetaAnnotationTest.java&p1=openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java&r1=1085868&r2=1086193&rev=1086193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessContainerTest.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessMetaAnnotationTest.java Mon Mar 28 11:30:52 2011
@@ -26,20 +26,30 @@ import org.apache.openejb.junit.Module;
import org.junit.Test;
import org.junit.runner.RunWith;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.annotation.Resource;
import javax.ejb.EJB;
+import javax.ejb.Local;
+import javax.ejb.LocalBean;
+import javax.ejb.Remote;
import javax.ejb.SessionContext;
-import javax.annotation.Resource;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import java.util.Stack;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
/**
* @version $Revision$ $Date$
*/
-@RunWith(ApplicationComposer.class)
-public class StatelessContainerTest extends TestCase {
+//@RunWith(ApplicationComposer.class)
+public class StatelessMetaAnnotationTest extends TestCase {
@EJB
private WidgetBean localBean;
@@ -51,7 +61,10 @@ public class StatelessContainerTest exte
private RemoteWidget remote;
@Test
- public void testPojoStyleBean() throws Exception {
+ public void testNothing(){}
+
+// @Test
+ public void _testPojoStyleBean() throws Exception {
List expected = Arrays.asList(Lifecycle.values());
{
@@ -105,15 +118,7 @@ public class StatelessContainerTest exte
@Module
public StatelessBean app() throws Exception {
-
- final StatelessBean bean = new StatelessBean(WidgetBean.class);
- bean.addBusinessLocal(Widget.class.getName());
- bean.addBusinessRemote(RemoteWidget.class.getName());
- bean.addPostConstruct("init");
- bean.addPreDestroy("destroy");
- bean.setLocalBean(new Empty());
-
- return bean;
+ return new StatelessBean(WidgetBean.class);
}
private static String join(String delimeter, List items) {
@@ -124,10 +129,12 @@ public class StatelessContainerTest exte
return sb.toString();
}
+ @PassByReference
public static interface Widget {
Stack<Lifecycle> getLifecycle();
}
+ @PassByValue
public static interface RemoteWidget extends Widget {
}
@@ -136,6 +143,7 @@ public class StatelessContainerTest exte
CONSTRUCTOR, INJECTION, POST_CONSTRUCT, BUSINESS_METHOD, PRE_DESTROY
}
+ @NoInterfaceView
public static class WidgetBean implements Widget, RemoteWidget {
private static Stack<Lifecycle> lifecycle = new Stack<Lifecycle>();
@@ -144,8 +152,8 @@ public class StatelessContainerTest exte
lifecycle.push(Lifecycle.CONSTRUCTOR);
}
- @Resource
- public void setSessionContext(SessionContext sessionContext) {
+ @Context
+ public void setSessionContext(Object o) {
lifecycle.push(Lifecycle.INJECTION);
}
@@ -154,12 +162,76 @@ public class StatelessContainerTest exte
return lifecycle;
}
+ @Start
public void init() {
lifecycle.push(Lifecycle.POST_CONSTRUCT);
}
+ @Stop
public void destroy() {
lifecycle.push(Lifecycle.PRE_DESTROY);
}
}
-}
+
+ @Metatype
+ @Retention(RUNTIME)
+ @Target(ElementType.ANNOTATION_TYPE)
+ public static @interface Metatype {
+ }
+
+ @Metatype
+ @Retention(RUNTIME)
+ @Target(ElementType.METHOD)
+ public static @interface Start {
+ public static interface $ {
+
+ @Start
+ @PostConstruct
+ public void method();
+ }
+ }
+
+ @Metatype
+ @Retention(RUNTIME)
+ @Target(ElementType.METHOD)
+ public static @interface Stop {
+ public static interface $ {
+
+ @Stop
+ @PreDestroy
+ public void method();
+ }
+ }
+
+ @Metatype
+ @Resource(type = SessionContext.class, name="context")
+ @Retention(RUNTIME)
+ @Target({ElementType.METHOD, ElementType.TYPE, ElementType.FIELD})
+ public static @interface Context {
+ }
+
+
+ @Metatype
+ @Local
+ @Retention(RUNTIME)
+ @Target({ElementType.TYPE})
+ public static @interface PassByReference {
+ }
+
+
+ @Metatype
+ @Remote
+ @Retention(RUNTIME)
+ @Target({ElementType.TYPE})
+ public static @interface PassByValue {
+ }
+
+ @Metatype
+ @LocalBean
+ @Retention(RUNTIME)
+ @Target({ElementType.TYPE})
+ public static @interface NoInterfaceView {
+ }
+
+
+}
\ No newline at end of file
Modified: openejb/trunk/openejb3/container/openejb-loader/src/main/java/org/apache/openejb/loader/JarLocation.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-loader/src/main/java/org/apache/openejb/loader/JarLocation.java?rev=1086193&r1=1086192&r2=1086193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-loader/src/main/java/org/apache/openejb/loader/JarLocation.java (original)
+++ openejb/trunk/openejb3/container/openejb-loader/src/main/java/org/apache/openejb/loader/JarLocation.java Mon Mar 28 11:30:52 2011
@@ -60,9 +60,7 @@ public class JarLocation {
return new File(decode(url.getFile()));
} else if ("file".equals(url.getProtocol())) {
- String path = url.getFile();
- path = path.substring(0, path.length() - classFileName.length());
- return new File(decode(path));
+ return toFile(classFileName, url);
} else {
throw new IllegalArgumentException("Unsupported URL scheme: " + url.toExternalForm());
}
@@ -73,6 +71,12 @@ public class JarLocation {
}
}
+ private static File toFile(String classFileName, URL url) {
+ String path = url.getFile();
+ path = path.substring(0, path.length() - classFileName.length());
+ return new File(decode(path));
+ }
+
public static String decode(String fileName) {
if (fileName.indexOf('%') == -1) return fileName;
Modified: openejb/trunk/openejb3/container/openejb-osgi-core/src/main/java/org/apache/openejb/osgi/core/BundleFinderFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-osgi-core/src/main/java/org/apache/openejb/osgi/core/BundleFinderFactory.java?rev=1086193&r1=1086192&r2=1086193&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-osgi-core/src/main/java/org/apache/openejb/osgi/core/BundleFinderFactory.java (original)
+++ openejb/trunk/openejb3/container/openejb-osgi-core/src/main/java/org/apache/openejb/osgi/core/BundleFinderFactory.java Mon Mar 28 11:30:52 2011
@@ -18,7 +18,7 @@ package org.apache.openejb.osgi.core;
import org.apache.openejb.config.DeploymentModule;
import org.apache.openejb.config.FinderFactory;
-import org.apache.xbean.finder.AbstractFinder;
+import org.apache.xbean.finder.IAnnotationFinder;
import org.apache.xbean.finder.BundleAnnotationFinder;
import org.apache.xbean.osgi.bundle.util.DiscoveryRange;
import org.apache.xbean.osgi.bundle.util.ResourceDiscoveryFilter;
@@ -34,7 +34,7 @@ import org.osgi.service.packageadmin.Pac
public class BundleFinderFactory extends FinderFactory {
@Override
- public AbstractFinder create(DeploymentModule module) throws Exception {
+ public IAnnotationFinder create(DeploymentModule module) throws Exception {
ClassLoader moduleCL = module.getClassLoader();