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/03/07 01:08:00 UTC

svn commit: r919885 [1/2] - in /openwebbeans/trunk/webbeans-impl: ./ src/main/java/org/apache/webbeans/boot/ src/main/java/org/apache/webbeans/component/javaee/ src/main/java/org/apache/webbeans/config/ src/main/java/org/apache/webbeans/context/ src/ma...

Author: gerdogdu
Date: Sun Mar  7 00:07:58 2010
New Revision: 919885

URL: http://svn.apache.org/viewvc?rev=919885&view=rev
Log:
[OWB-320] Remove Java EE Dependencies from WebBeans Core

Added:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/boot/
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/boot/Bootstrap.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContextsService.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/AbstractLifeCycle.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/plugins/AbstractEnterpriseProviderPlugin.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/plugins/OpenWebBeansJavaEEPlugin.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/plugins/OpenWebBeansWebPlugin.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/scanner/
      - copied from r916352, openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/deployer/
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/scanner/AbstractMetaDataDiscovery.java
      - copied, changed from r919879, openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/deployer/AbstractMetaDataDiscovery.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultContextsService.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultScannerService.java   (with props)
Removed:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/javaee/
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/SessionContextManager.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/DefaultLifecycle.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/EnterpriseTestLifeCycle.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/MockHttpSession.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/MockServletContext.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/MockServletContextEvent.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/servlet/
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/deployer/
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/ee/
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultResourceInjectionService.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultSecurityService.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultTransactionService.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/DefaultValidatorService.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/se/deployer/
    openwebbeans/trunk/webbeans-impl/src/main/resources/log4j.properties
Modified:
    openwebbeans/trunk/webbeans-impl/pom.xml
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ApplicationContext.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ContextFactory.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/RequestContext.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/SessionContext.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/SingletonContext.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecoratorConfig.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/xml/BeanObserverXMLImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/StandaloneLifeCycle.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestLifeCycle.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestMetaDataDiscoveryService.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/logger/WebBeansLogger.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/plugins/PluginLoader.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/spi/ServiceLoader.java
    openwebbeans/trunk/webbeans-impl/src/main/resources/META-INF/openwebbeans/openwebbeans-default.properties
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/AbstractUnitTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/portable/ExtensionTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/promethods/PersonProducerTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/event/broken/BrokenObserverComponent2.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/event/broken/BrokenObserverComponent3.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/event/broken/BrokenObserverComponent4.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/event/broken/BrokenObserverComponent5.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/event/broken/BrokenObserverComponent6.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/containertests/ComponentResolutionByTypeTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/servlet/ITestContext.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/servlet/TestListener.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/config/WebBeansScannerTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorExceptionTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorTest1.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/disposal/DisposalTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/event/EventTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/event/exception/EventExceptionTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/exception/ExceptionComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/exception/ScopeTypeExceptionComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/CurrentInjectedComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/InjectedComponentTestWithMember.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/TypedInjectedComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/UserComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/EJBInterceptComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/webbeans/SecureAndTransactionalInterceptorTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/webbeans/ShoppingCardInterceptorTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/webbeans/WebBeansInterceptComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/portable/events/ExtensionTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/producer/ProducerComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/scopes/ScopeAdapterTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/scopes/SingletonComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/xml/XMLTest.java

Modified: openwebbeans/trunk/webbeans-impl/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/pom.xml?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/pom.xml (original)
+++ openwebbeans/trunk/webbeans-impl/pom.xml Sun Mar  7 00:07:58 2010
@@ -30,15 +30,6 @@
 	<dependencies>
 
 		<dependency>
-			<groupId>log4j</groupId>
-			<artifactId>log4j</artifactId>
-		</dependency>
-		<dependency>
-		    <groupId>org.apache.geronimo.specs</groupId>
-		    <artifactId>geronimo-servlet_2.5_spec</artifactId>
-		    <optional>true</optional>
-		</dependency>
-		<dependency>
 			<groupId>dom4j</groupId>
 			<artifactId>dom4j</artifactId>
 		</dependency>
@@ -56,35 +47,13 @@
 			<artifactId>scannotation</artifactId>
 		</dependency>
 		<dependency>
-		    <groupId>javax.annotation</groupId>
-		    <artifactId>jsr250-api</artifactId>
-		    <optional>true</optional>
-		</dependency>
-		<dependency>
-		    <groupId>org.apache.geronimo.specs</groupId>
-		    <artifactId>geronimo-interceptor_1.1_spec</artifactId>
-		    <optional>true</optional>
-		</dependency>
-		<dependency>
-		    <groupId>org.apache.geronimo.specs</groupId>
-		    <artifactId>geronimo-jta_1.1_spec</artifactId>
-		    <optional>true</optional>
-		</dependency>
-		<dependency>
-		    <groupId>org.apache.geronimo.specs</groupId>
-		    <artifactId>geronimo-jsp_2.1_spec</artifactId>
-		    <optional>true</optional>
-		</dependency>
-		<dependency>
 			<groupId>org.apache.geronimo.specs</groupId>
 			<artifactId>geronimo-jcdi_1.0_spec</artifactId>
 		</dependency>
-
-              <dependency>
+		<dependency>
                       <groupId>org.apache.geronimo.specs</groupId>
                       <artifactId>geronimo-atinject_1.0_spec</artifactId>
               </dependency>
-
 		<dependency>
             	    <groupId>junit</groupId>
 	            <artifactId>junit</artifactId>
@@ -93,14 +62,12 @@
 		<dependency>
 			<groupId>org.apache.openwebbeans</groupId>
 			<artifactId>openwebbeans-spi</artifactId>
+			<version>${project.version}</version>
 		</dependency>
 		<dependency>
 			<groupId>org.apache.geronimo.specs</groupId>
-			<artifactId>geronimo-validation_1.0_spec</artifactId>
-			<scope>provided</scope>
+			<artifactId>geronimo-interceptor_1.1_spec</artifactId>
 		</dependency>
-
-        <!-- the following dependencies are needed for tests only -->      
 	</dependencies>
 
     <build>

Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/boot/Bootstrap.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/boot/Bootstrap.java?rev=919885&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/boot/Bootstrap.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/boot/Bootstrap.java Sun Mar  7 00:07:58 2010
@@ -0,0 +1,75 @@
+/*
+ * 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.webbeans.boot;
+
+import java.util.Properties;
+import java.util.concurrent.CountDownLatch;
+
+import org.apache.webbeans.lifecycle.LifecycleFactory;
+import org.apache.webbeans.logger.WebBeansLogger;
+import org.apache.webbeans.spi.ContainerLifecycle;
+
+public class Bootstrap
+{
+    private static final WebBeansLogger logger = WebBeansLogger.getLogger(Bootstrap.class);
+    
+    private CountDownLatch latch = new CountDownLatch(1);
+    
+    private ContainerLifecycle containerLifecycle = null;
+    
+    private Properties properties = null;
+    
+    public void init(Properties properties)
+    {
+        logger.info("Initializing OpenWebBeans Container");
+        this.containerLifecycle = LifecycleFactory.getInstance().getLifecycle();
+    }
+    
+    public void start() throws Exception
+    {
+        logger.info("Starting OpenWebBeans Container...");
+        long begin = System.currentTimeMillis();
+        
+        containerLifecycle.startApplication(this.properties);
+        Runtime.getRuntime().addShutdownHook(new Thread(){
+           
+            public void run()
+            {
+                Bootstrap.this.latch.countDown();
+            }
+            
+        });
+        
+        logger.info("OpenWebBeans Container has started within " + Long.toString(System.currentTimeMillis() - begin) + " mseconds.");
+        this.latch.await();
+        
+        logger.info("Stopping OpenWebBeans Container...");
+        
+        containerLifecycle.stopApplication(this.properties);
+        
+        logger.info("OpenWebBeans Container has stopped.");
+    }
+    
+    public static void main(String []args) throws Exception
+    {
+        Bootstrap boot = new Bootstrap();
+        boot.init(System.getProperties());
+    }
+
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/boot/Bootstrap.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java Sun Mar  7 00:07:58 2010
@@ -41,9 +41,6 @@
 import org.apache.webbeans.component.WebBeansType;
 import org.apache.webbeans.component.creation.ManagedBeanCreatorImpl;
 import org.apache.webbeans.component.creation.BeanCreator.MetaDataProvider;
-import org.apache.webbeans.component.javaee.PrinicipalBean;
-import org.apache.webbeans.component.javaee.ValidatorBean;
-import org.apache.webbeans.component.javaee.ValidatorFactoryBean;
 import org.apache.webbeans.config.OWBLogConst;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.decorator.WebBeansDecorator;
@@ -54,6 +51,9 @@
 import org.apache.webbeans.exception.inject.InconsistentSpecializationException;
 import org.apache.webbeans.intercept.webbeans.WebBeansInterceptor;
 import org.apache.webbeans.logger.WebBeansLogger;
+import org.apache.webbeans.plugins.OpenWebBeansJavaEEPlugin;
+import org.apache.webbeans.plugins.OpenWebBeansWebPlugin;
+import org.apache.webbeans.plugins.PluginLoader;
 import org.apache.webbeans.portable.AnnotatedElementFactory;
 import org.apache.webbeans.portable.events.ExtensionLoader;
 import org.apache.webbeans.portable.events.ProcessAnnotatedTypeImpl;
@@ -194,14 +194,46 @@
         //Register Event Bean
         beanManager.addBean(WebBeansUtil.getEventBean());
         
-        //Register Validator Bean
-        beanManager.addBean(new ValidatorBean());
+        //REgister Provider Beans
+        OpenWebBeansJavaEEPlugin beanEeProvider = PluginLoader.getInstance().getJavaEEPlugin();
+        OpenWebBeansWebPlugin beanWebProvider = PluginLoader.getInstance().getWebPlugin();
         
-        //Register ValidatorFactory Bean
-        beanManager.addBean(new ValidatorFactoryBean());
-        
-        //Register Principal Bean
-        beanManager.addBean(new PrinicipalBean());
+        if(beanEeProvider != null)
+        {
+            if(beanEeProvider.getValidatorBean() != null)
+            {
+                //Register Validator Bean
+                beanManager.addBean(beanEeProvider.getValidatorBean());                
+            }
+            
+            if(beanEeProvider.getValidatorFactoryBean() != null)
+            {
+                //Register ValidatorFactory Bean
+                beanManager.addBean(beanEeProvider.getValidatorFactoryBean());                
+            }
+            
+            if(beanEeProvider.getPrincipalBean() != null)
+            {
+                //Register Principal Bean
+                beanManager.addBean(beanEeProvider.getPrincipalBean());                
+            }
+            
+            if(beanEeProvider.getUserTransactionBean() != null)
+            {
+                //User Transaction Bean
+                beanManager.addBean(beanEeProvider.getUserTransactionBean());                
+            }
+        }       
+        else if(beanWebProvider != null)
+        {
+            if(beanWebProvider.getPrincipalBean() != null)
+            {
+                //Register Principal Bean
+                beanManager.addBean(beanWebProvider.getPrincipalBean());                
+            }
+            
+        }
+            
     }
     
     /**

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java Sun Mar  7 00:07:58 2010
@@ -37,37 +37,140 @@
  */
 public class OpenWebBeansConfiguration
 {
+    /**Logger instance*/
+    private static final WebBeansLogger logger = WebBeansLogger.getLogger(OpenWebBeansConfiguration.class);
+
+    /**Default configuration file*/
     private final static String DEFALULT_CONFIG_PROPERTIES_NAME = "META-INF/openwebbeans/openwebbeans-default.properties";
+    
+    /**Application specified file*/
     private final static String CONFIG_PROPERTIES_NAME = "META-INF/openwebbeans/openwebbeans.properties";
-
-    private Properties configProperties = new Properties();
-    private WebBeansLogger logger = WebBeansLogger.getLogger(OpenWebBeansConfiguration.class);
     
+    /**Property of application*/
+    private Properties configProperties = new Properties();
+        
     /**Conversation periodic delay in ms.*/
     public static final String CONVERSATION_PERIODIC_DELAY = "org.apache.webbeans.conversation.Conversation.periodicDelay";
     
     /**Use OWB Specific XML Configuration or Strict Spec XML*/
+    @Deprecated //Not use any more 
     public static final String USE_OWB_SPECIFIC_XML_CONFIGURATION = "org.apache.webbeans.useOwbSpecificXmlConfig";
     
     /**Use OWB Specific Field Injection*/
+    @Deprecated //Not use anymore
     public static final String USE_OWB_SPECIFIC_FIELD_INJECTION = "org.apache.webbeans.fieldInjection.useOwbSpecificInjection";    
     
     /**Use EJB Discovery or not*/
-    public static final String USE_EJB_DISCOVERY = "org.apache.webbeans.spi.deployer.UseEjbMetaDataDiscoveryService";
+    public static final String USE_EJB_DISCOVERY = "org.apache.webbeans.spi.deployer.useEjbMetaDataDiscoveryService";
+    
+    /**Container lifecycle*/
+    public static final String CONTAINER_LIFECYCLE = "org.apache.webbeans.spi.ContainerLifecycle";
+    
+    /**JNDI Service SPI*/
+    public static final String JNDI_SERVICE = "org.apache.webbeans.spi.JNDIService";    
+    
+    /**Scanner Service*/
+    public static final String SCANNER_SERVICE = "org.apache.webbeans.spi.ScannerService";
+
+    /**Contexts Service*/
+    public static final String CONTEXTS_SERVICE = "org.apache.webbeans.spi.ContextsService";
+    
+    /**Conversation Service*/
+    public static final String CONVERSATION_SERVICE = "org.apache.webbeans.spi.ConversationService";
+    
+    /**Resource Injection Service*/
+    public static final String RESOURCE_INJECTION_SERVICE = "org.apache.webbeans.spi.ResourceInjectionService";
+    
+    /**Security Service*/
+    public static final String SECURITY_SERVICE = "org.apache.webbeans.spi.SecurityService";
+    
+    /**Validator Service*/
+    public static final String VALIDATOR_SERVICE = "org.apache.webbeans.spi.ValidatorService";
     
-    public static final String CONTAINER_LIFECYCLE = "org.apache.webbeans.spi.lifecycle";
+    /**Transaction Service*/
+    public static final String TRANSACTION_SERVICE = "org.apache.webbeans.spi.TransactionService";
     
-    public static final String APPLICATION_IS_JSP = "org.apache.webbeans.application.jspf";
+    /**Application is core JSP*/
+    public static final String APPLICATION_IS_JSP = "org.apache.webbeans.application.jsp";
     
+    /**Use of JSF2 extnesions*/
     public static final String USE_JSF2_EXTENSIONS = "org.apache.webbeans.application.useJSF2Extensions";
     
-    public static OpenWebBeansConfiguration getInstance() {
+    /**
+     * Gets singleton instance.
+     * @return singleton instance
+     */
+    public static OpenWebBeansConfiguration getInstance() 
+    {
         return (OpenWebBeansConfiguration) WebBeansFinder.getSingletonInstance(OpenWebBeansConfiguration.class.getName());
     }
     
+    /**
+     * Parse configuration.
+     */
     public OpenWebBeansConfiguration()
     {
         parseConfiguration();
+        
+        logger.debug("Overriden properties from System prpoerties");
+        
+        //Look for System properties
+        loadFromSystemProperties();        
+    }
+    
+    /**
+     * Load from system properties
+     */
+    private void loadFromSystemProperties()
+    {
+        Properties properties = System.getProperties();
+        
+        String value = properties.getProperty(CONVERSATION_PERIODIC_DELAY);
+        setPropertyFromSystemProperty(CONVERSATION_PERIODIC_DELAY, value);        
+        
+        value = properties.getProperty(USE_EJB_DISCOVERY);
+        setPropertyFromSystemProperty(USE_EJB_DISCOVERY, value);
+        
+        value = properties.getProperty(CONTAINER_LIFECYCLE);
+        setPropertyFromSystemProperty(CONTAINER_LIFECYCLE, value);
+
+        value = properties.getProperty(USE_JSF2_EXTENSIONS);
+        setPropertyFromSystemProperty(USE_JSF2_EXTENSIONS, value);
+
+        value = properties.getProperty(APPLICATION_IS_JSP);
+        setPropertyFromSystemProperty(APPLICATION_IS_JSP, value);
+
+        value = properties.getProperty(TRANSACTION_SERVICE);
+        setPropertyFromSystemProperty(TRANSACTION_SERVICE, value);
+
+        value = properties.getProperty(VALIDATOR_SERVICE);
+        setPropertyFromSystemProperty(VALIDATOR_SERVICE, value);
+
+        value = properties.getProperty(SECURITY_SERVICE);
+        setPropertyFromSystemProperty(SECURITY_SERVICE, value);
+
+        value = properties.getProperty(RESOURCE_INJECTION_SERVICE);
+        setPropertyFromSystemProperty(RESOURCE_INJECTION_SERVICE, value);
+
+        value = properties.getProperty(CONVERSATION_SERVICE);
+        setPropertyFromSystemProperty(CONVERSATION_SERVICE, value);
+
+        value = properties.getProperty(CONTEXTS_SERVICE);
+        setPropertyFromSystemProperty(CONTEXTS_SERVICE, value);
+
+        value = properties.getProperty(SCANNER_SERVICE);
+        setPropertyFromSystemProperty(SCANNER_SERVICE, value);
+
+        value = properties.getProperty(JNDI_SERVICE);
+        setPropertyFromSystemProperty(JNDI_SERVICE, value);
+    }
+     
+    private void setPropertyFromSystemProperty(String key, String value)
+    {
+        if(value != null)
+        {
+            setProperty(key, value);
+        }
     }
     
     /**
@@ -120,6 +223,7 @@
     }
     
     /**
+     * Gets property.
      * @param key
      * @return String with the property value or <code>null</code>
      */
@@ -129,6 +233,7 @@
     }
     
     /**
+     * Gets property value.
      * @param key
      * @param defaultValue
      * @return String with the property value or <code>null</code>
@@ -138,11 +243,22 @@
         return configProperties.getProperty(key, defaultValue);
     }
     
-    public void setProperty(String key, Object value)
+    
+    /**
+     * Sets given property.
+     * @param key property name
+     * @param value property value
+     */
+    public synchronized void setProperty(String key, Object value)
     {
         configProperties.put(key, value);
     }
     
+    /**
+     * Returns true if owb specific injection
+     * false otherwise.
+     * @return true if owb specific injection
+     */
     public boolean isOwbSpecificFieldInjection()
     {
         String value = getProperty(USE_OWB_SPECIFIC_FIELD_INJECTION);
@@ -150,6 +266,10 @@
         return Boolean.valueOf(value);
     }
     
+    /**
+     * Return true if use JSF2.
+     * @return true if use JSF2
+     */
     public boolean isUseJSF2Extensions()
     {
         String value = getProperty(USE_JSF2_EXTENSIONS);
@@ -158,11 +278,15 @@
         
     }
     
+    /**
+     * Gets jsp property.
+     * @return true if jsp
+     */
     public boolean isJspApplication()
     {
         String value = getProperty(APPLICATION_IS_JSP);
         
         return Boolean.valueOf(value);
     }
-        
+    
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansFinder.java Sun Mar  7 00:07:58 2010
@@ -17,7 +17,6 @@
 import java.util.Map;
 
 import org.apache.webbeans.container.BeanManagerImpl;
-import org.apache.webbeans.context.SessionContextManager;
 import org.apache.webbeans.context.creational.CreationalContextFactory;
 import org.apache.webbeans.conversation.ConversationManager;
 import org.apache.webbeans.decorator.DecoratorsManager;
@@ -48,7 +47,7 @@
 
     public static final String SINGLETON_CREATIONAL_CONTEXT_FACTORY = CreationalContextFactory.class.getName();
     
-    public static final String SINGLETON_SESSION_CONTEXT_MANAGER = SessionContextManager.class.getName();
+    public static final String SINGLETON_SESSION_CONTEXT_MANAGER = "org.apache.webbeans.web.context.SessionContextManager";
     
     public static final String SINGLETON_WEBBEANS_NAMESPACE_CONTAINER = WebBeansNameSpaceContainer.class.getName();
 

Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContextsService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContextsService.java?rev=919885&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContextsService.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContextsService.java Sun Mar  7 00:07:58 2010
@@ -0,0 +1,68 @@
+/*
+ * 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.webbeans.context;
+
+import java.lang.annotation.Annotation;
+
+import javax.enterprise.context.ContextException;
+import javax.enterprise.context.spi.Context;
+
+import org.apache.webbeans.spi.ContextsService;
+
+public abstract class AbstractContextsService implements ContextsService
+{
+
+    @Override
+    public void destroy(Object destroyObject)
+    {
+        //Default no-op
+    }
+
+    @Override
+    public void endContext(Class<? extends Annotation> scopeType, Object endParameters)
+    {
+        //Default no-op
+    }
+
+    @Override
+    public Context getCurrentContext(Class<? extends Annotation> scopeType)
+    {
+        
+        return null;
+    }
+
+    @Override
+    public void init(Object initializeObject)
+    {
+        //Default no-op        
+    }
+
+    @Override
+    public void startContext(Class<? extends Annotation> scopeType, Object startParameter) throws ContextException
+    {
+        //Default no-op        
+    }
+
+    @Override
+    public boolean supportsContext(Class<? extends Annotation> scopeType)
+    {        
+        return false;
+    }
+
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContextsService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ApplicationContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ApplicationContext.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ApplicationContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ApplicationContext.java Sun Mar  7 00:07:58 2010
@@ -25,7 +25,7 @@
  */
 public class ApplicationContext extends AbstractContext
 {
-    protected ApplicationContext()
+    public ApplicationContext()
     {
         super(ContextTypes.APPLICATION);
     }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ContextFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ContextFactory.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ContextFactory.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/ContextFactory.java Sun Mar  7 00:07:58 2010
@@ -14,102 +14,46 @@
 package org.apache.webbeans.context;
 
 import java.lang.annotation.Annotation;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 
 import javax.enterprise.context.*;
 import javax.enterprise.context.spi.Context;
 import javax.inject.Singleton;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletRequestEvent;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
 
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.context.type.ContextTypes;
-import org.apache.webbeans.conversation.ConversationManager;
+import org.apache.webbeans.logger.WebBeansLogger;
+import org.apache.webbeans.spi.ContextsService;
+import org.apache.webbeans.spi.ServiceLoader;
 
 /**
- * Gets current {@link WebBeansContext} instances on the current thread context.
- * 
- * @see WebBeansContext
- * @see AbstractContext
+ * JSR-299 based standard context
+ * related operations.
  */
 public final class ContextFactory
 {
-    private static ThreadLocal<RequestContext> requestContext = null;
-
-    private static ThreadLocal<SessionContext> sessionContext = null;
-
-    private static ThreadLocal<ApplicationContext> applicationContext = null;
-
-    private static ThreadLocal<ConversationContext> conversationContext = null;
+    /**Logger instance*/
+    private static final WebBeansLogger logger = WebBeansLogger.getLogger(ContextFactory.class);
     
-    private static ThreadLocal<SingletonContext> singletonContext = null;
-
-    private static ThreadLocal<DependentContext> dependentContext = null;
-
-    private static Map<ServletContext, ApplicationContext> currentApplicationContexts = new ConcurrentHashMap<ServletContext, ApplicationContext>();
+    /**Underlying context service*/
+    private static ContextsService contextService = ServiceLoader.getService(ContextsService.class);
     
-    private static Map<ServletContext, SingletonContext> currentSingletonContexts = new ConcurrentHashMap<ServletContext, SingletonContext>();
-
-    private static SessionContextManager sessionCtxManager = SessionContextManager.getInstance();
-
-    private static ConversationManager conversationManager = ConversationManager.getInstance();
-
-    static
-    {
-        requestContext = new ThreadLocal<RequestContext>();
-        sessionContext = new ThreadLocal<SessionContext>();
-        applicationContext = new ThreadLocal<ApplicationContext>();
-        conversationContext = new ThreadLocal<ConversationContext>();
-        dependentContext = new ThreadLocal<DependentContext>();
-        singletonContext = new ThreadLocal<SingletonContext>();
-    }
-
+    /**
+     * Not-instantiate
+     */
     private ContextFactory()
     {
         throw new UnsupportedOperationException();
     }
     
-    public static void initializeThreadLocals()
+    public static void initRequestContext(Object request)
     {
-        requestContext.remove();
-        sessionContext.remove();
-        applicationContext.remove();
-        conversationContext.remove();
-        dependentContext.remove();
-        singletonContext.remove();
-    }
-
-    /**
-     * Initialize requext context with the given request object.
-     * 
-     * @param event http servlet request event
-     */
-    public static void initRequestContext(ServletRequestEvent event)
-    {
-        RequestContext rq = new RequestContext();
-        rq.setActive(true);
-
-        requestContext.set(rq);// set thread local
-        if(event != null)
+        try
         {
-            HttpServletRequest request = (HttpServletRequest) event.getServletRequest();
-            
-            if (request != null)
-            {
-                //Re-initialize thread local for session
-                HttpSession session = request.getSession(false);
-                
-                if(session != null)
-                {
-                    initSessionContext(session);    
-                }
-                            
-                initApplicationContext(event.getServletContext());                
-                initSingletonContext(event.getServletContext());
-            }            
+            contextService.startContext(RequestScoped.class, request);
+        }
+        catch (Exception e)
+        {
+            logger.error(e);
         }
     }
 
@@ -119,74 +63,30 @@
         {
             return new CustomPassivatingContextImpl(context);
         }
+        
         return new CustomContextImpl(context);
     }
     
-    /**
-     * Destroys the request context and all of its components.
-     * 
-     * @param request http servlet request object
-     */
-    public static void destroyRequestContext(HttpServletRequest request)
+    public static void destroyRequestContext(Object request)
     {
-        if (requestContext != null)
-        {
-            RequestContext context = getRequestContext();
-
-            if (context != null)
-            {
-                context.destroy();
-            }
-
-            requestContext.remove();
-            
-        }
+        contextService.endContext(RequestScoped.class, request);
     }
 
-    /**
-     * Creates the session context at the session start.
-     * 
-     * @param session http session object
-     */
-    public static void initSessionContext(HttpSession session)
+    public static void initSessionContext(Object session)
     {
-        String sessionId = session.getId();
-        SessionContext currentSessionContext = sessionCtxManager.getSessionContextWithSessionId(sessionId);
-
-        if (currentSessionContext == null)
+        try
         {
-            currentSessionContext = new SessionContext();
-            sessionCtxManager.addNewSessionContext(sessionId, currentSessionContext);
+            contextService.startContext(SessionScoped.class, session);
         }
-
-        currentSessionContext.setActive(true);
-
-        sessionContext.set(currentSessionContext);
-    }
-
-    /**
-     * Destroys the session context and all of its components at the end of the
-     * session.
-     * 
-     * @param session http session object
-     */
-    public static void destroySessionContext(HttpSession session)
-    {
-        if (sessionContext != null)
+        catch (Exception e)
         {
-            SessionContext context = getSessionContext();
-
-            if (context != null)
-            {
-                context.destroy();
-            }
-
-            sessionContext.remove();
-
+            logger.error(e);
         }
+    }
 
-        sessionCtxManager.destroySessionContextWithSessionId(session.getId());
-
+    public static void destroySessionContext(Object session)
+    {
+        contextService.endContext(SessionScoped.class, session);
     }
 
     /**
@@ -194,27 +94,15 @@
      * 
      * @param servletContext servlet context object
      */
-    public static void initApplicationContext(ServletContext servletContext)
+    public static void initApplicationContext(Object servletContext)
     {
-        
-        if(servletContext != null && currentApplicationContexts.containsKey(servletContext))
+        try
         {
-            applicationContext.set(currentApplicationContexts.get(servletContext));
+            contextService.startContext(ApplicationScoped.class, servletContext);
         }
-        
-        else
+        catch (Exception e)
         {
-            ApplicationContext currentApplicationContext = new ApplicationContext();         
-            currentApplicationContext.setActive(true);
-            
-            if(servletContext != null)
-            {
-                currentApplicationContexts.put(servletContext, currentApplicationContext);
-                
-            }
-            
-            applicationContext.set(currentApplicationContext);
-   
+            logger.error(e);
         }
     }
 
@@ -224,112 +112,43 @@
      * 
      * @param servletContext servlet context object
      */
-    public static void destroyApplicationContext(ServletContext servletContext)
+    public static void destroyApplicationContext(Object servletContext)
     {
-        if (applicationContext != null)
-        {
-            ApplicationContext context = getApplicationContext();
-
-            if (context != null)
-            {
-                context.destroy();
-            }
-
-            applicationContext.remove();
-
-        }
-        
-        if(servletContext != null)
-        {
-            currentApplicationContexts.remove(servletContext);   
-        }
-        
-        sessionCtxManager.destroyAllSessions();
-        conversationManager.destroyAllConversations();
+        contextService.endContext(ApplicationScoped.class, servletContext);
     }
     
-    public static void initSingletonContext(ServletContext servletContext)
+    public static void initSingletonContext(Object servletContext)
     {
-        if(servletContext != null && currentSingletonContexts.containsKey(servletContext))
+        try
         {
-            singletonContext.set(currentSingletonContexts.get(servletContext));
+            contextService.startContext(Singleton.class, servletContext);
         }
-        
-        else
+        catch (Exception e)
         {
-            SingletonContext context = new SingletonContext();
-            context.setActive(true);
-            
-            if(servletContext != null)
-            {
-                currentSingletonContexts.put(servletContext, context);
-                
-            }
-            
-            singletonContext.set(context);
-   
+            logger.error(e);            
         }
-                        
     }
     
-    public static void destroySingletonContext(ServletContext servletContext)
+    public static void destroySingletonContext(Object servletContext)
     {
-        if (singletonContext != null)
-        {
-            SingletonContext context = getSingletonContext();
-
-            if (context != null)
-            {
-                context.destroy();
-            }
-            
-            singletonContext.remove();            
-
-        }
-        
-        if(servletContext != null)
-        {
-            currentSingletonContexts.remove(servletContext);   
-        }                
+        contextService.endContext(Singleton.class, servletContext);
     }
 
-    public static void initConversationContext(ConversationContext context)
+    public static void initConversationContext(Object context)
     {
-        if (context == null)
+        try
         {
-            if(conversationContext.get() == null)
-            {
-                ConversationContext newContext = new ConversationContext();
-                newContext.setActive(true);
-                
-                conversationContext.set(newContext);                
-            }
-            else
-            {
-                conversationContext.get().setActive(true);
-            }
-            
+            contextService.startContext(ConversationScoped.class, context);
         }
-        else
+        catch (Exception e)
         {
-            context.setActive(true);
-            conversationContext.set(context);
+            logger.error(e);            
         }
     }
 
     public static void destroyConversationContext()
     {
-        if (conversationContext != null)
-        {
-            ConversationContext context = getConversationContext();
-
-            if (context != null)
-            {
-                context.destroy();
-            }
-
-            conversationContext.remove();
-        }
+        contextService.endContext(ConversationScoped.class, null);
     }
 
     /**
@@ -339,32 +158,36 @@
      * @throws ContextNotActiveException if context is not active
      * @throws IllegalArgumentException if the type is not a standard context
      */
-    public static WebBeansContext getStandartContext(ContextTypes type) throws ContextNotActiveException
+    public static Context getStandartContext(ContextTypes type) throws ContextNotActiveException
     {
-        WebBeansContext context = null;
+        Context context = null;
 
         switch (type.getCardinal())
         {
             case 0:
-                context = getRequestContext();
+                context = (Context)contextService.getCurrentContext(RequestScoped.class);
                 break;
     
             case 1:
-                context = getSessionContext();
+                context = (Context)contextService.getCurrentContext(SessionScoped.class);
                 break;
     
             case 2:
-                context = getApplicationContext();
+                context = (Context)contextService.getCurrentContext(ApplicationScoped.class);
                 break;
     
             case 3:
-                context = getConversationContext();
+                context = (Context)contextService.getCurrentContext(ConversationScoped.class);
                 break;
                 
             case 4:
-                context = getDependentContext();
+                context = (Context)contextService.getCurrentContext(Dependent.class);
+                break;
+
+            case 5:
+                context = (Context)contextService.getCurrentContext(Singleton.class);
                 break;
-            
+                
             default:
                 throw new IllegalArgumentException("There is no such a standard context with context id=" + type.getCardinal());
         }
@@ -377,83 +200,36 @@
      * 
      * @return the current context, or <code>null</code> if no standard context exists for the given scopeType
      */
-    public static WebBeansContext getStandardContext(Class<? extends Annotation> scopeType)
+    public static Context getStandardContext(Class<? extends Annotation> scopeType)
     {
-        WebBeansContext context = null;
+        Context context = null;
 
         if (scopeType.equals(RequestScoped.class))
         {
-            context = getRequestContext();
+            context = getStandartContext(ContextTypes.REQUEST);
         }
         else if (scopeType.equals(SessionScoped.class))
         {
-            context = getSessionContext();
+            context = getStandartContext(ContextTypes.SESSION);
         }
         else if (scopeType.equals(ApplicationScoped.class))
         {
-            context = getApplicationContext();
+            context = getStandartContext(ContextTypes.APPLICATION);
         }
         else if (scopeType.equals(ConversationScoped.class))
         {
-            context = getConversationContext();
+            context = getStandartContext(ContextTypes.CONVERSATION);
 
         }
         else if (scopeType.equals(Dependent.class))
         {
-            context = getDependentContext();
+            context = getStandartContext(ContextTypes.DEPENDENT);
         }
         else if (scopeType.equals(Singleton.class))
         {
-            context = getSingletonContext();
+            context = getStandartContext(ContextTypes.SINGLETON);
         }
         
         return context;
     }
-
-    /*
-     * Get current request ctx.
-     */
-    private static RequestContext getRequestContext()
-    {
-        return requestContext.get();
-    }
-
-    /*
-     * Get current session ctx.
-     */
-    private static SessionContext getSessionContext()
-    {
-        return sessionContext.get();
-    }
-
-    private static ApplicationContext getApplicationContext()
-    {
-        return applicationContext.get();
-    }
-
-    private static SingletonContext getSingletonContext()
-    {
-        return singletonContext.get();
-    }
-
-    /*
-     * Get current conversation ctx.
-     */
-    private static ConversationContext getConversationContext()
-    {
-        return conversationContext.get();
-    }
-
-    public static DependentContext getDependentContext()
-    {
-        DependentContext dependentCtx = dependentContext.get();
-
-        if (dependentCtx == null)
-        {
-            dependentCtx = new DependentContext();
-            dependentContext.set(dependentCtx);
-        }
-
-        return dependentCtx;
-    }     
 }
\ No newline at end of file

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/RequestContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/RequestContext.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/RequestContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/RequestContext.java Sun Mar  7 00:07:58 2010
@@ -30,7 +30,7 @@
     /*
      * Constructor
      */
-    protected RequestContext()
+    public RequestContext()
     {
         super(ContextTypes.REQUEST);
     }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/SessionContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/SessionContext.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/SessionContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/SessionContext.java Sun Mar  7 00:07:58 2010
@@ -24,7 +24,7 @@
  */
 public class SessionContext extends AbstractContext
 {
-    protected SessionContext()
+    public SessionContext()
     {
         super(ContextTypes.SESSION);
     }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/SingletonContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/SingletonContext.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/SingletonContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/SingletonContext.java Sun Mar  7 00:07:58 2010
@@ -25,7 +25,7 @@
  */
 public class SingletonContext extends AbstractContext
 {
-    protected SingletonContext()
+    public SingletonContext()
     {
         super(ContextTypes.SINGLETON);
     }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecoratorConfig.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecoratorConfig.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecoratorConfig.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecoratorConfig.java Sun Mar  7 00:07:58 2010
@@ -88,6 +88,7 @@
         BeanManager manager = BeanManagerImpl.getManager();
         while (itList.hasNext())
         {
+            @SuppressWarnings("unchecked")
             WebBeansDecorator<Object> decorator = (WebBeansDecorator<Object>) itList.next();
             CreationalContext<Object> creationalContext = manager.createCreationalContext(decorator);
             Object decoratorInstance = manager.getReference(decorator, decorator.getBeanClass(), creationalContext);

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java Sun Mar  7 00:07:58 2010
@@ -25,7 +25,6 @@
 import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.Bean;
-import javax.servlet.jsp.JspApplicationContext;
 
 import org.apache.webbeans.container.BeanManagerImpl;
 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java Sun Mar  7 00:07:58 2010
@@ -38,9 +38,6 @@
 import javax.enterprise.inject.spi.ObserverMethod;
 import javax.enterprise.inject.spi.ProcessObserverMethod;
 import javax.enterprise.util.TypeLiteral;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.Transaction;
 
 import org.apache.webbeans.annotation.AnyLiteral;
 import org.apache.webbeans.component.InjectionTargetBean;
@@ -65,8 +62,6 @@
 
     private final Map<Type, Set<ObserverMethod<?>>> observers = new ConcurrentHashMap<Type, Set<ObserverMethod<?>>>();
 
-    private final TransactionService transactionService = ServiceLoader.getService(TransactionService.class);
-
     public NotificationManager()
     {
 
@@ -406,8 +401,6 @@
 
     public void fireEvent(Object event, Annotation... qualifiers)
     {
-        Transaction transaction = transactionService.getTransaction();
-
         Set<ObserverMethod<? super Object>> observers = resolveObservers(event, qualifiers);
 
         for (ObserverMethod<? super Object> observer : observers)
@@ -415,28 +408,10 @@
             try
             {
                 TransactionPhase phase = observer.getTransactionPhase();
-                if (transaction != null && phase != null)
+                TransactionService transactionService = ServiceLoader.getService(TransactionService.class);
+                if(transactionService != null)
                 {
-                    if (phase.equals(TransactionPhase.AFTER_COMPLETION))
-                    {
-                        transaction.registerSynchronization(new AfterCompletion(observer, event));
-                    }
-                    else if (phase.equals(TransactionPhase.AFTER_SUCCESS))
-                    {
-                        transaction.registerSynchronization(new AfterCompletionSuccess(observer, event));
-                    }
-                    else if (phase.equals(TransactionPhase.AFTER_FAILURE))
-                    {
-                        transaction.registerSynchronization(new AfterCompletionFailure(observer, event));
-                    }
-                    else if (phase.equals(TransactionPhase.BEFORE_COMPLETION))
-                    {
-                        transaction.registerSynchronization(new BeforeCompletion(observer, event));
-                    }
-                    else
-                    {
-                        throw new IllegalStateException(logger.getTokenString(OWBLogConst.EXCEPT_0007) + phase);
-                    }
+                    transactionService.registerTransactionSynchronization(phase, observer, event);
                 }
                 else
                 {
@@ -502,102 +477,4 @@
 
         return observerMethods;
     }
-
-
-    private static class AbstractSynchronization<T> implements Synchronization
-    {
-
-        private final ObserverMethod<T> observer;
-        private final T event;
-
-        public AbstractSynchronization(ObserverMethod<T> observer, T event)
-        {
-            this.observer = observer;
-            this.event = event;
-        }
-
-        public void beforeCompletion()
-        {
-            // Do nothing
-        }
-
-        public void afterCompletion(int i)
-        {
-            //Do nothing
-        }
-
-        public void notifyObserver()
-        {
-            try
-            {
-                observer.notify(event);
-            }
-            catch (Exception e)
-            {
-                logger.error(OWBLogConst.ERROR_0003, e);
-            }
-        }
-    }
-
-    private static class BeforeCompletion extends AbstractSynchronization
-    {
-        private BeforeCompletion(ObserverMethod observer, Object event)
-        {
-            super(observer, event);
-        }
-
-        @Override
-        public void beforeCompletion()
-        {
-            notifyObserver();
-        }
-    }
-
-    private static class AfterCompletion extends AbstractSynchronization
-    {
-        private AfterCompletion(ObserverMethod observer, Object event)
-        {
-            super(observer, event);
-        }
-
-        @Override
-        public void afterCompletion(int i)
-        {
-            notifyObserver();
-        }
-    }
-
-    private static class AfterCompletionSuccess extends AbstractSynchronization
-    {
-        private AfterCompletionSuccess(ObserverMethod observer, Object event)
-        {
-            super(observer, event);
-        }
-
-        @Override
-        public void afterCompletion(int i)
-        {
-            if (i == Status.STATUS_COMMITTED)
-            {
-                notifyObserver();
-            }
-        }
-    }
-
-    private static class AfterCompletionFailure extends AbstractSynchronization
-    {
-        private AfterCompletionFailure(ObserverMethod observer, Object event)
-        {
-            super(observer, event);
-        }
-
-        @Override
-        public void afterCompletion(int i)
-        {
-            if (i != Status.STATUS_COMMITTED)
-            {
-                notifyObserver();
-            }
-        }
-    }
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/xml/BeanObserverXMLImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/xml/BeanObserverXMLImpl.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/xml/BeanObserverXMLImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/xml/BeanObserverXMLImpl.java Sun Mar  7 00:07:58 2010
@@ -48,6 +48,7 @@
      * .Object)
      */
     @Override
+    @SuppressWarnings("unchecked")
     protected List getMethodArguments(Object event)
     {
         List<Object> params = new ArrayList<Object>();

Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java?rev=919885&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java Sun Mar  7 00:07:58 2010
@@ -0,0 +1,81 @@
+/*
+ * 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.webbeans.inject;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.Set;
+
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
+
+import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.util.ClassUtil;
+
+/**
+ * Injects dependencies of the given Java EE component
+ * instance.
+ * 
+ * @version $Rev$ $Date$
+ *
+ */
+public final class OWBInjector
+{
+    private OWBInjector()
+    {
+        
+    }
+    
+    @SuppressWarnings("unchecked")
+    public static void inject(Object javaEeComponentInstance) throws Exception
+    {
+        BeanManager beanManager = BeanManagerImpl.getManager();
+        try
+        {
+            Class<?> injectableComponentClass = javaEeComponentInstance.getClass();
+            AnnotatedType<Object> annotated = (AnnotatedType<Object>) beanManager.createAnnotatedType(injectableComponentClass);
+            InjectionTarget<Object> injectionTarget = beanManager.createInjectionTarget(annotated);
+            Set<InjectionPoint> injectionPoints = injectionTarget.getInjectionPoints();
+            if(injectionPoints != null && injectionPoints.size() > 0)
+            {
+                for(InjectionPoint injectionPoint : injectionPoints)
+                {
+                    Object object = beanManager.getInjectableReference(injectionPoint, beanManager.createCreationalContext(injectionPoint.getBean()));
+                    if(injectionPoint.getMember() instanceof Method)
+                    {
+                        Method method = (Method)injectionPoint.getMember();
+                        ClassUtil.callInstanceMethod(method, javaEeComponentInstance, new Object[]{object});                        
+                    }
+                    else if(injectionPoint.getMember() instanceof Field)
+                    {
+                        Field field = (Field)injectionPoint.getMember();
+                        ClassUtil.setField(javaEeComponentInstance, field, object);
+                    }
+                }
+            }
+            
+            
+        }catch(Exception e)
+        {
+            throw e;
+        }
+    }
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java Sun Mar  7 00:07:58 2010
@@ -15,7 +15,6 @@
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java Sun Mar  7 00:07:58 2010
@@ -29,6 +29,7 @@
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.context.creational.CreationalContextImpl;
 
+@SuppressWarnings("unchecked")
 public class NormalScopedBeanInterceptorHandler extends InterceptorHandler 
 {
     private static final long serialVersionUID = -7169354477951284657L;
@@ -45,11 +46,10 @@
     @Override
     public Object invoke(Object instance, Method method, Method proceed, Object[] arguments) throws Exception
     {
-        @SuppressWarnings("unchecked")
         Object webbeansInstance = getContextualInstance((OwbBean<Object>) bean, (CreationalContext<Object>) creationalContext);
         return super.invoke(webbeansInstance, method, proceed, arguments, (CreationalContextImpl<?>) creationalContext);
     }
-    
+        
     protected <T> Object callAroundInvokes(Method proceed, Object[] arguments, List<InterceptorData> stack) throws Exception
     {
         InvocationContextImpl impl = new InvocationContextImpl(bean, 
@@ -81,8 +81,8 @@
         Context webbeansContext = getBeanManager().getContext(bean.getScope());
 
         //Get bean instance from context
-        @SuppressWarnings("unchecked")
         Object webbeansInstance = webbeansContext.get((Contextual<Object>)this.bean, (CreationalContext<Object>) creationalContext);
+        
         return webbeansInstance;
     }
 }

Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/AbstractLifeCycle.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/AbstractLifeCycle.java?rev=919885&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/AbstractLifeCycle.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/AbstractLifeCycle.java Sun Mar  7 00:07:58 2010
@@ -0,0 +1,249 @@
+/*
+ * 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.webbeans.lifecycle;
+
+import java.lang.annotation.Annotation;
+import java.util.Properties;
+
+import javax.enterprise.inject.spi.BeanManager;
+
+import org.apache.webbeans.WebBeansConstants;
+import org.apache.webbeans.config.BeansDeployer;
+import org.apache.webbeans.config.OWBLogConst;
+import org.apache.webbeans.config.WebBeansFinder;
+import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.logger.WebBeansLogger;
+import org.apache.webbeans.plugins.PluginLoader;
+import org.apache.webbeans.portable.events.ExtensionLoader;
+import org.apache.webbeans.portable.events.discovery.BeforeShutdownImpl;
+import org.apache.webbeans.spi.ContainerLifecycle;
+import org.apache.webbeans.spi.ContextsService;
+import org.apache.webbeans.spi.JNDIService;
+import org.apache.webbeans.spi.ScannerService;
+import org.apache.webbeans.spi.ServiceLoader;
+import org.apache.webbeans.xml.WebBeansXMLConfigurator;
+
+public abstract class AbstractLifeCycle implements ContainerLifecycle
+{
+    //Logger instance
+    private final WebBeansLogger logger;
+    
+    /**Discover bean classes*/
+    protected ScannerService scannerService;
+    
+    protected final ContextsService contextsService;
+
+    /**Deploy discovered beans*/
+    private final BeansDeployer deployer;
+
+    /**XML discovery. */
+    //XML discovery is removed from the specification. It is here for next revisions of spec.
+    private final WebBeansXMLConfigurator xmlDeployer;
+    
+    /**Using for lookup operations*/
+    private final JNDIService jndiService;
+    
+    /**Root container.*/
+    private final BeanManagerImpl beanManager;
+    
+    protected AbstractLifeCycle()
+    {
+        this(null, WebBeansLogger.getLogger(AbstractLifeCycle.class));
+    }
+    
+    protected AbstractLifeCycle(Properties properties, WebBeansLogger logger)
+    {
+        beforeInitApplication(properties);
+        
+        this.beanManager = (BeanManagerImpl) WebBeansFinder.getSingletonInstance(WebBeansFinder.SINGLETON_MANAGER);
+        this.xmlDeployer = new WebBeansXMLConfigurator();
+        this.deployer = new BeansDeployer(xmlDeployer);
+        this.jndiService = ServiceLoader.getService(JNDIService.class);    
+        this.beanManager.setXMLConfigurator(this.xmlDeployer);
+        this.scannerService = ServiceLoader.getService(ScannerService.class);
+        this.contextsService = ServiceLoader.getService(ContextsService.class);
+        this.logger = logger;
+        
+        initApplication(properties);                
+    }
+
+    @Override
+    public BeanManager getBeanManager()
+    {        
+        return this.beanManager;
+    }
+    
+    @Override
+    public void startApplication(Object startupObject) throws Exception
+    {
+        // Initalize Application Context
+        logger.info("OpenWebBeans Container is starting...");
+        
+        long begin = System.currentTimeMillis();
+        
+        //Before Start
+        beforeStartApplication(startupObject);
+        
+        //Load all plugins
+        PluginLoader.getInstance().startUp();
+        
+        //Initialize contexts
+        this.contextsService.init(startupObject);
+        
+        //Scanning process
+        logger.debug("Scanning classpaths for beans artifacts.");
+
+        //Scan
+        this.scannerService.scan();
+        
+        //Deploy beans
+        logger.debug("Deploying scanned beans.");
+
+        //Deploy
+        deployer.deploy(this.scannerService);
+
+        //Start actual starting on sub-classes
+        afterStartApplication(startupObject);
+        
+        logger.info(OWBLogConst.INFO_0002, new Object[]{Long.toString(System.currentTimeMillis() - begin)});        
+    }
+
+    @Override
+    public void stopApplication(Object endObject)
+    {
+        logger.debug("OpenWebBeans Container is stopping.");
+
+        try
+        {
+            //Sub-classes operations            
+            beforeStopApplication(endObject);
+            
+            //Fire shut down
+            this.beanManager.fireEvent(new BeforeShutdownImpl(), new Annotation[0]);
+            
+            //Destroys context
+            this.contextsService.destroy(endObject);
+            
+            //Unbind BeanManager
+            jndiService.unbind(WebBeansConstants.WEB_BEANS_MANAGER_JNDI_NAME);
+
+            //Free all plugin resources
+            PluginLoader.getInstance().shutDown();
+            
+            //Clear extensions
+            ExtensionLoader.getInstance().clear();
+            
+            //Clear singleton list
+            WebBeansFinder.clearInstances();
+            
+            //After Stop
+            afterStopApplication(endObject);
+            
+        }
+        catch (Exception e)
+        {
+            logger.error("Error is occured while stopping the container",e);
+        }
+        
+    }
+
+    /**
+     * @return the logger
+     */
+    protected WebBeansLogger getLogger()
+    {
+        return logger;
+    }
+
+    /**
+     * @return the scannerService
+     */
+    protected ScannerService getScannerService()
+    {
+        return scannerService;
+    }
+
+    /**
+     * @return the contextsService
+     */
+    public ContextsService getContextService()
+    {
+        return contextsService;
+    }
+
+    /**
+     * @return the deployer
+     */
+    protected BeansDeployer getDeployer()
+    {
+        return deployer;
+    }
+
+    /**
+     * @return the xmlDeployer
+     */
+    protected WebBeansXMLConfigurator getXmlDeployer()
+    {
+        return xmlDeployer;
+    }
+
+    /**
+     * @return the jndiService
+     */
+    protected JNDIService getJndiService()
+    {
+        return jndiService;
+    }
+
+    @Override
+    public void initApplication(Properties properties)
+    {
+        afterInitApplication(properties);
+    }    
+    
+    protected void beforeInitApplication(Properties properties)
+    {
+        //Do nothing as default
+    }
+    
+    protected void afterInitApplication(Properties properties)
+    {
+        //Do nothing as default
+    }
+        
+    protected void afterStartApplication(Object startupObject) throws Exception
+    {
+        //Do nothing as default
+    }
+
+    protected void afterStopApplication(Object stopObject) throws Exception
+    {
+        //Do nothing as default
+    }
+    
+    protected void beforeStartApplication(Object startupObject) throws Exception
+    {
+        //Do nothing as default
+    }
+
+    protected void beforeStopApplication(Object stopObject) throws Exception
+    {
+        //Do nothing as default
+    }    
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/AbstractLifeCycle.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/StandaloneLifeCycle.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/StandaloneLifeCycle.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/StandaloneLifeCycle.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/StandaloneLifeCycle.java Sun Mar  7 00:07:58 2010
@@ -13,177 +13,46 @@
  */
 package org.apache.webbeans.lifecycle;
 
-import java.lang.annotation.Annotation;
 import java.util.Properties;
-import java.util.concurrent.atomic.AtomicBoolean;
 
-import javax.enterprise.inject.spi.BeanManager;
-
-import org.apache.webbeans.WebBeansConstants;
-import org.apache.webbeans.config.BeansDeployer;
-import org.apache.webbeans.config.OWBLogConst;
 import org.apache.webbeans.config.WebBeansFinder;
-import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.context.ContextFactory;
-import org.apache.webbeans.exception.WebBeansException;
 import org.apache.webbeans.logger.WebBeansLogger;
-import org.apache.webbeans.plugins.PluginLoader;
-import org.apache.webbeans.portable.events.ExtensionLoader;
-import org.apache.webbeans.portable.events.discovery.BeforeShutdownImpl;
-import org.apache.webbeans.spi.ContainerLifecycle;
-import org.apache.webbeans.spi.JNDIService;
-import org.apache.webbeans.spi.ScannerService;
-import org.apache.webbeans.spi.ServiceLoader;
-import org.apache.webbeans.spi.se.deployer.MetaDataDiscoveryStandard;
-import org.apache.webbeans.xml.WebBeansXMLConfigurator;
 
-public class StandaloneLifeCycle implements ContainerLifecycle
+public class StandaloneLifeCycle extends AbstractLifeCycle
 {
     private static final WebBeansLogger logger = WebBeansLogger.getLogger(StandaloneLifeCycle.class);
-    
-    /**Deploy discovered beans*/
-    private final BeansDeployer beansDeployer;
         
-    /**Root container.*/
-    protected final BeanManagerImpl beanManager;
-    
-    private AtomicBoolean inited = new AtomicBoolean(false);
-    
-    private AtomicBoolean started = new AtomicBoolean(false);
-    
-    private AtomicBoolean stopped = new AtomicBoolean(false);
-    
-    protected ScannerService discoveryService = null;
-    
-    protected final WebBeansXMLConfigurator xmlConfig;
-    
     public StandaloneLifeCycle()
     {
-        //Clear singletons
-        WebBeansFinder.clearInstances();
-
-        this.beanManager = BeanManagerImpl.getManager();
-        this.xmlConfig = new WebBeansXMLConfigurator();
-        this.beansDeployer = new BeansDeployer(this.xmlConfig);        
-
-        init();
+        super(null, logger);        
     }
     
-    public void init()
-    {
-        if(inited.compareAndSet(false, true))
-        {
-            discoveryService = ServiceLoader.getService(ScannerService.class);
-            
-            if(discoveryService == null)
-            {
-                logger.warn(OWBLogConst.WARN_0003);
-                
-                this.discoveryService = new MetaDataDiscoveryStandard();
-            }
-            else
-            {
-                logger.info(OWBLogConst.INFO_0001, new Object[]{discoveryService.getClass().toString()});
-            }
-            
-            beanManager.setXMLConfigurator(this.xmlConfig);        
-        }
-    }
-
-    public void applicationStarted(Object startupObject) throws WebBeansException
+    @Override
+    public void beforeInitApplication(Properties properties)
     {
-        if(this.started.compareAndSet(false, true))
-        {            
-            logger.debug("OpenWebBeans Container is starting.");
-            long begin = System.currentTimeMillis();
-            
-            //Singleton context
-            ContextFactory.initSingletonContext(null);
-
-            // load all optional plugins
-            PluginLoader.getInstance().startUp();
-
-            logger.debug("Scanning classpaths for beans artifacts.");
-
-            this.discoveryService.scan();
-
-            logger.debug("Deploying scanned beans.");
-
-            this.beansDeployer.deploy(this.discoveryService);
-                        
-            long end = System.currentTimeMillis();
-            
-            logger.info(OWBLogConst.INFO_0002, new Object[]{Long.toString(end - begin)});            
-            
-        }
-        else
-        {
-            logger.warn(OWBLogConst.WARN_0004);
-        }
-        
+        WebBeansFinder.clearInstances();
     }
     
-    public void applicationEnded(Object endObject)
-    {
-        if(this.stopped.compareAndSet(false, true))
-        {
-            logger.debug("OpenWebBeans Container is stopping.");
-            
-
-            //Fire shut down
-            this.beanManager.fireEvent(new BeforeShutdownImpl(), new Annotation[0]);
-            
-            JNDIService jndiService = ServiceLoader.getService(JNDIService.class);
-            
-            jndiService.unbind(WebBeansConstants.WEB_BEANS_MANAGER_JNDI_NAME);
-                    
-            ContextFactory.destroySingletonContext(null);
-
-            // finally free all plugin resources
-            PluginLoader.getInstance().shutDown();
-            
-            //Clear extensions
-            ExtensionLoader.getInstance().clear();
-
-            //Clear singleton list
-            WebBeansFinder.clearInstances();
-                    
-            logger.debug("OpenWebBeans Container has stopped.");        
-            
-        }
-        else
-        {
-            logger.warn(OWBLogConst.WARN_0005);
-        }        
-        
-    }
-
     @Override
-    public BeanManager getBeanManager()
+    public void beforeStartApplication(Object object)
     {
-        return this.beanManager;
+        ContextFactory.initRequestContext(null);
+        ContextFactory.initSessionContext(null);
+        ContextFactory.initConversationContext(null);
+        ContextFactory.initApplicationContext(null);       
+        ContextFactory.initSingletonContext(null);
     }
-
-    public ScannerService getDiscoveryService()
-    {
-        return this.discoveryService;
-    }
-
-    @Override
-    public void init(Properties properties)
-    {
         
-    }
-
-    @Override
-    public void start(Object startupObject) throws Exception
-    {
-        applicationStarted(startupObject);
-    }
-
+    
     @Override
-    public void stop(Object endObject)
+    public void beforeStopApplication(Object endObject)
     {
-      applicationEnded(endObject);        
+        ContextFactory.destroyRequestContext(null);
+        ContextFactory.destroySessionContext(null);
+        ContextFactory.destroyConversationContext();        
+        ContextFactory.destroyApplicationContext(null);   
+        ContextFactory.destroySingletonContext(null);
     }
-}
+    
+}
\ No newline at end of file

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestLifeCycle.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestLifeCycle.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestLifeCycle.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestLifeCycle.java Sun Mar  7 00:07:58 2010
@@ -13,9 +13,10 @@
  */
 package org.apache.webbeans.lifecycle.test;
 
-import org.apache.webbeans.context.ContextFactory;
-import org.apache.webbeans.exception.WebBeansException;
+import java.util.Properties;
+
 import org.apache.webbeans.lifecycle.StandaloneLifeCycle;
+import org.apache.webbeans.spi.ScannerService;
 
 /**
  * Ease the writing of the tests. Simulates container
@@ -27,47 +28,19 @@
  */
 public class OpenWebBeansTestLifeCycle extends StandaloneLifeCycle
 {
-    private MockServletContextEvent servletContextEvent;
-    
-    private MockHttpSession mockHttpSession;
-
     public OpenWebBeansTestLifeCycle()
     {
         super();
     }
     
     @Override
-    public void init()
+    public void initApplication(Properties properties)
     {
-        this.mockHttpSession = new MockHttpSession();
-        this.servletContextEvent = new MockServletContextEvent();
-        
-        ContextFactory.initRequestContext(null);
-        ContextFactory.initSessionContext(mockHttpSession);
-        ContextFactory.initConversationContext(null);
-        ContextFactory.initApplicationContext(this.servletContextEvent.getServletContext());        
-        
-        this.discoveryService = new OpenWebBeansTestMetaDataDiscoveryService();
-        
-        this.beanManager.setXMLConfigurator(this.xmlConfig);        
-    }
-
-    @Override
-    public void applicationEnded(Object endObject)
+        this.scannerService = new OpenWebBeansTestMetaDataDiscoveryService();        
+    }    
+    
+    public ScannerService getScannerService()
     {
-        ContextFactory.destroyRequestContext(null);
-        ContextFactory.destroySessionContext(this.mockHttpSession);
-        ContextFactory.destroyConversationContext();
-        
-        super.applicationEnded(this.servletContextEvent);
-        
-        ContextFactory.destroyApplicationContext(this.servletContextEvent.getServletContext());        
-    }
-
-    @Override
-    public void applicationStarted(Object startupObject) throws WebBeansException
-    {                
-        super.applicationStarted(this.servletContextEvent);
+        return this.scannerService;
     }
-        
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestMetaDataDiscoveryService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestMetaDataDiscoveryService.java?rev=919885&r1=919884&r2=919885&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestMetaDataDiscoveryService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/lifecycle/test/OpenWebBeansTestMetaDataDiscoveryService.java Sun Mar  7 00:07:58 2010
@@ -19,7 +19,7 @@
 
 import javassist.ClassPool;
 
-import org.apache.webbeans.spi.deployer.AbstractMetaDataDiscovery;
+import org.apache.webbeans.spi.scanner.AbstractMetaDataDiscovery;
 import org.apache.webbeans.util.Asserts;
 
 /**