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();