You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2010/02/15 20:54:41 UTC

svn commit: r910321 - /openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/StandaloneContainersImpl.java

Author: gerdogdu
Date: Mon Feb 15 19:54:41 2010
New Revision: 910321

URL: http://svn.apache.org/viewvc?rev=910321&view=rev
Log:
[OWB-282] Update for SPI

Modified:
    openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/StandaloneContainersImpl.java

Modified: openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/StandaloneContainersImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/StandaloneContainersImpl.java?rev=910321&r1=910320&r2=910321&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/StandaloneContainersImpl.java (original)
+++ openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/StandaloneContainersImpl.java Mon Feb 15 19:54:41 2010
@@ -16,17 +16,33 @@
 import java.net.URL;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.Properties;
 
+import javax.ejb.Singleton;
+import javax.ejb.Stateful;
+import javax.ejb.Stateless;
 import javax.enterprise.inject.spi.BeanManager;
+import javax.naming.Context;
+import javax.naming.InitialContext;
 
-import org.apache.openejb.OpenEJB;
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.spi.ContainerSystem;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.EjbJarInfo;
+import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
+import org.apache.openejb.assembler.classic.SecurityServiceInfo;
+import org.apache.openejb.assembler.classic.SingletonSessionContainerInfo;
+import org.apache.openejb.assembler.classic.StatefulSessionContainerInfo;
+import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
+import org.apache.openejb.assembler.classic.TransactionServiceInfo;
+import org.apache.openejb.config.ConfigurationFactory;
+import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.core.ivm.naming.InitContextFactory;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.SingletonBean;
+import org.apache.openejb.jee.StatefulBean;
+import org.apache.openejb.jee.StatelessBean;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.context.ContextFactory;
-import org.apache.webbeans.exception.WebBeansConfigurationException;
-import org.apache.webbeans.lifecycle.WebApplicationLifeCycle;
+import org.apache.webbeans.lifecycle.DefaultLifecycle;
 import org.apache.webbeans.lifecycle.test.MockHttpSession;
 import org.apache.webbeans.lifecycle.test.MockServletContextEvent;
 import org.apache.webbeans.spi.ScannerService;
@@ -37,7 +53,7 @@
 
 public class StandaloneContainersImpl implements StandaloneContainers
 {
-    private WebApplicationLifeCycle lifeCycle = null;
+    private DefaultLifecycle lifeCycle = null;
     
     private MockServletContextEvent servletContextEvent;
     
@@ -51,7 +67,7 @@
         
         TCKMetaDataDiscoveryImpl discovery = (TCKMetaDataDiscoveryImpl)ServiceLoader.getService(ScannerService.class);
         
-        this.lifeCycle = new WebApplicationLifeCycle();
+        this.lifeCycle = new DefaultLifecycle();
         
         try
         {
@@ -80,7 +96,7 @@
             
             TCKMetaDataDiscoveryImpl discovery = (TCKMetaDataDiscoveryImpl)ServiceLoader.getService(ScannerService.class);
             
-            this.lifeCycle = new WebApplicationLifeCycle();
+            this.lifeCycle = new DefaultLifecycle();
             
             Iterator<Class<?>> it = classes.iterator();
             while(it.hasNext())
@@ -120,26 +136,12 @@
     
     public void setup()
     {
-//    	if ( SystemInstance.get().getComponent(ContainerSystem.class) == null )
-//    	{
-//    		// which means OpenEJB is not yet started!
-//    		// this happens if you start the TCK in 'standalone mode'
-//    		// which means we have to bootstrap OpenEJB now:
-//	        try 
-//	        {
-//	            OpenEJB.init(System.getProperties());
-//	        } 
-//	        catch( OpenEJBException e ) 
-//	        {
-//	            throw new RuntimeException("failure in OpenWebBeans ejb-plugin while starting OpenEJB!", e);
-//	        }
-//    	}
         
     }
     
     public void cleanup()
     {
-     //   OpenEJB.destroy();
+
     }
     
 
@@ -150,7 +152,7 @@
         ContextFactory.destroyRequestContext(null);
         ContextFactory.destroySessionContext(this.mockHttpSession);
         ContextFactory.destroyConversationContext();
-    }
+     }
 
     public DeploymentException getDeploymentException()
     {
@@ -165,7 +167,8 @@
 
     @Override
     public void deploy(Collection<Class<?>> classes) throws DeploymentException
-    {        
+    {                
+        setUp(classes);
         deployInternal(classes);
     }
 
@@ -173,6 +176,78 @@
     @Override
     public boolean deploy(Collection<Class<?>> classes, Collection<URL> xmls)
     {
+        setUp(classes);
         return deployInternal(classes, xmls);
     }
+    
+    private void setUp(Collection<Class<?>> classes){
+        
+        try
+        {
+            ConfigurationFactory config = new ConfigurationFactory();
+            Assembler assembler = new Assembler();
+
+            assembler.createProxyFactory(config.configureService(ProxyFactoryInfo.class));
+            assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
+            assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
+
+            assembler.createContainer(config.configureService(StatelessSessionContainerInfo.class));
+            assembler.createContainer(config.configureService(StatefulSessionContainerInfo.class));
+            assembler.createContainer(config.configureService(SingletonSessionContainerInfo.class));
+
+            EjbJarInfo ejbJar = config.configureApplication(buildTestApp(classes));
+
+            assembler.createApplication(ejbJar);
+
+            System.setProperty("openejb.validation.output.level", "VERBOSE");
+            Properties properties = new Properties(System.getProperties());
+            properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, InitContextFactory.class.getName());
+            new InitialContext(properties);            
+        }catch(Exception e)
+        {
+            e.printStackTrace();
+        }
+    }
+
+    private EjbModule buildTestApp(Collection<Class<?>> classes)
+    {
+        EjbJar ejbJar = new EjbJar();
+        ejbJar.setId(this.getClass().getName());
+        
+        for(Class<?> clazz : classes)
+        {
+            if(isSingleton(clazz))
+            {
+                ejbJar.addEnterpriseBean(new SingletonBean(clazz));
+            }
+            if(isStateless(clazz))
+            {
+                ejbJar.addEnterpriseBean(new StatelessBean(clazz));
+            }
+            
+            if(isStatefull(clazz))
+            {
+                ejbJar.addEnterpriseBean(new StatefulBean(clazz));
+            }
+        }
+        
+        
+        return new EjbModule(ejbJar);
+        
+    }
+
+    private boolean isSingleton(Class<?> clazz)
+    {
+        return clazz.isAnnotationPresent(Singleton.class) ? true : false;
+    }
+    
+    private boolean isStateless(Class<?> clazz)
+    {
+        return clazz.isAnnotationPresent(Stateless.class) ? true : false;
+    }
+    
+    private boolean isStatefull(Class<?> clazz)
+    {
+        return clazz.isAnnotationPresent(Stateful.class) ? true : false;
+    }    
 }