Author: peteroyle
Date: 2009-12-01 05:00:30 -0500 (Tue, 01 Dec 2009)
New Revision: 5181
Added:
java-se/trunk/src/main/java/org/jboss/weld/environment/se/WeldContainer.java
Modified:
java-se/trunk/src/main/java/org/jboss/weld/environment/se/StartMain.java
java-se/trunk/src/main/java/org/jboss/weld/environment/se/Weld.java
java-se/trunk/src/main/java/org/jboss/weld/environment/se/beans/InstanceManager.java
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/DecoratorsTest.java
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/InterceptorsTest.java
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/StartMainTest.java
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/WeldMainTest.java
Log:
Separated out initialize() (Weld) from instance() and event() (WeldContainer)
Modified: java-se/trunk/src/main/java/org/jboss/weld/environment/se/StartMain.java
===================================================================
--- java-se/trunk/src/main/java/org/jboss/weld/environment/se/StartMain.java 2009-11-30
20:26:04 UTC (rev 5180)
+++ java-se/trunk/src/main/java/org/jboss/weld/environment/se/StartMain.java 2009-12-01
10:00:30 UTC (rev 5181)
@@ -16,13 +16,12 @@
*/
package org.jboss.weld.environment.se;
-import javax.enterprise.inject.spi.BeanManager;
import org.jboss.weld.environment.se.events.ContainerInitialized;
/**
* This is the main class that should always be called from the command line for
- * a Weld SE app. Something like: <code>
+ * a WeldContainer SE app. Something like: <code>
* java -jar MyApp.jar org.jboss.weld.environment.se.StarMain arguments
* </code>
*
@@ -39,12 +38,11 @@
PARAMETERS = commandLineArgs;
}
- public BeanManager go()
+ public WeldContainer go()
{
- Weld weld = new Weld().initialize();
-
- weld.getBeanManager().fireEvent(new ContainerInitialized());
- return weld.getBeanManager();
+ WeldContainer weld = new Weld().initialize();
+ weld.event().select(ContainerInitialized.class).fire(new
ContainerInitialized());
+ return weld;
}
/**
Modified: java-se/trunk/src/main/java/org/jboss/weld/environment/se/Weld.java
===================================================================
--- java-se/trunk/src/main/java/org/jboss/weld/environment/se/Weld.java 2009-11-30
20:26:04 UTC (rev 5180)
+++ java-se/trunk/src/main/java/org/jboss/weld/environment/se/Weld.java 2009-12-01
10:00:30 UTC (rev 5181)
@@ -16,9 +16,6 @@
*/
package org.jboss.weld.environment.se;
-import javax.enterprise.event.Event;
-import javax.enterprise.inject.Instance;
-import javax.enterprise.inject.spi.BeanManager;
import org.jboss.weld.bootstrap.api.Bootstrap;
import org.jboss.weld.bootstrap.api.Environments;
import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
@@ -31,13 +28,13 @@
import org.jboss.weld.manager.api.WeldManager;
/**
- * An alternative means of booting Weld form an arbitrary main method within an
+ * An alternative means of booting WeldContainer form an arbitrary main method within an
* SE application, <em>without</em> using the built-in ContainerInitialized
event.
- * Typical usage of the API looks like this:
+ * Typical usage of this API looks like this:
* <code>
- * Weld weld = new Weld().initialize();
+ * WeldContainer weld = new Weld().initialize();
* weld.instance().select(Foo.class).get();
- * weld.event().select(Bar.class).fire( new Bar() );
+ * weld.event().select(Bar.class).fire(new Bar());
* weld.shutdown();
* </code>
*
@@ -50,7 +47,6 @@
private final Bootstrap bootstrap;
private final BeanStore applicationBeanStore;
private WeldManager manager;
- private InstanceManager instanceManager;
public Weld()
{
@@ -64,7 +60,11 @@
this.applicationBeanStore = new ConcurrentHashMapBeanStore();
}
- public Weld initialize()
+ /**
+ * Boots Weld and creates and returns a WeldContainer instance, through which
+ * beans and events can be accesed.
+ */
+ public WeldContainer initialize()
{
SEWeldDeployment deployment = new SEWeldDeployment()
@@ -79,30 +79,17 @@
bootstrap.validateBeans();
bootstrap.endInitialization();
- instanceManager = WeldManagerUtils.getInstanceByType(manager,
InstanceManager.class);
+ InstanceManager instanceManager = WeldManagerUtils.getInstanceByType(manager,
InstanceManager.class);
- return this;
- }
+ return new WeldContainer(instanceManager, manager);
- public Instance<Object> instance()
- {
- return instanceManager.getInstances();
}
- public Event<Object> event()
- {
- return instanceManager.getEvents();
- }
-
- public BeanManager getBeanManager()
- {
- return manager;
- }
-
/**
* Convenience method for shutting down the container.
*/
- public void shutdown() {
+ public void shutdown()
+ {
WeldManagerUtils.getInstanceByType(manager, ShutdownManager.class).shutdown();
}
}
Copied: java-se/trunk/src/main/java/org/jboss/weld/environment/se/WeldContainer.java (from
rev 5175, java-se/trunk/src/main/java/org/jboss/weld/environment/se/Weld.java)
===================================================================
--- java-se/trunk/src/main/java/org/jboss/weld/environment/se/WeldContainer.java
(rev 0)
+++
java-se/trunk/src/main/java/org/jboss/weld/environment/se/WeldContainer.java 2009-12-01
10:00:30 UTC (rev 5181)
@@ -0,0 +1,74 @@
+/**
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual
+ * contributors by the @authors tag. See the copyright.txt in the
+ * distribution for a full listing of individual contributors.
+ *
+ * Licensed 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.jboss.weld.environment.se;
+
+import javax.enterprise.event.Event;
+import javax.enterprise.inject.Instance;
+import javax.enterprise.inject.spi.BeanManager;
+import org.jboss.weld.environment.se.beans.InstanceManager;
+
+/**
+ * Provides convenient access to beans and events, particularly helpful when
+ * bootstrapping an application in Java SE.
+ * <p>
+ * An instance of this class can be obtained using the Weld class by calling:
+ * <code>
+ * WeldContainer weld = new Weld().initialize();
+ * </code>
+ * @see Weld
+ *
+ * @author Peter Royle
+ */
+public class WeldContainer
+{
+
+ private final InstanceManager instanceManager;
+ private final BeanManager beanManager;
+
+ protected WeldContainer(InstanceManager instanceManager, BeanManager beanManager)
+ {
+ this.instanceManager = instanceManager;
+ this.beanManager = beanManager;
+ }
+
+ /**
+ * Provides access to all beans within the application. For example:
+ * <code>
+ * Foo foo = weld.instance().select(Foo.class).get();
+ * </code>
+ */
+ public Instance<Object> instance()
+ {
+ return instanceManager.getInstances();
+ }
+
+ /**
+ * Provides access to all events within the application. For example:
+ * <code>
+ * weld.event().select(Bar.class).fire(new Bar());
+ * </code>
+ */
+ public Event<Object> event()
+ {
+ return instanceManager.getEvents();
+ }
+
+ public BeanManager getBeanManager()
+ {
+ return beanManager;
+ }
+}
Modified:
java-se/trunk/src/main/java/org/jboss/weld/environment/se/beans/InstanceManager.java
===================================================================
---
java-se/trunk/src/main/java/org/jboss/weld/environment/se/beans/InstanceManager.java 2009-11-30
20:26:04 UTC (rev 5180)
+++
java-se/trunk/src/main/java/org/jboss/weld/environment/se/beans/InstanceManager.java 2009-12-01
10:00:30 UTC (rev 5181)
@@ -19,14 +19,14 @@
import javax.enterprise.event.Event;
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
-import org.jboss.weld.environment.se.Weld;
+import org.jboss.weld.environment.se.WeldContainer;
/**
* A managed bean which holds all of the injected instances of managed beans and
- * events. It is primarily used as a delegate for the Weld class's instance()
+ * events. It is primarily used as a delegate for the WeldContainer class's
instance()
* and event() methods.
*
- * @see Weld
+ * @see WeldContainer
* @author Peter Royle
*/
public class InstanceManager
Modified:
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/DecoratorsTest.java
===================================================================
---
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/DecoratorsTest.java 2009-11-30
20:26:04 UTC (rev 5180)
+++
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/DecoratorsTest.java 2009-12-01
10:00:30 UTC (rev 5181)
@@ -19,7 +19,8 @@
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.util.AnnotationLiteral;
-import org.jboss.weld.environment.se.StartMain;
+import org.jboss.weld.environment.se.Weld;
+import org.jboss.weld.environment.se.WeldContainer;
import org.jboss.weld.environment.se.events.Shutdown;
import org.jboss.weld.environment.se.test.decorators.CarDoor;
import org.jboss.weld.environment.se.test.decorators.Door;
@@ -36,19 +37,16 @@
public class DecoratorsTest
{
- public static String[] ARGS_EMPTY = new String[]
- {
- };
-
/**
* Test that decorators work as expected in SE.
*/
@Test
public void testDecorators()
{
- String[] args = ARGS_EMPTY;
- BeanManager manager = new StartMain(args).go();
+ WeldContainer weld = new Weld().initialize();
+ BeanManager manager = weld.getBeanManager();
+
CarDoor carDoor = WeldManagerUtils.getInstanceByType(manager, CarDoor.class);
Assert.assertNotNull(carDoor);
Modified:
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/InterceptorsTest.java
===================================================================
---
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/InterceptorsTest.java 2009-11-30
20:26:04 UTC (rev 5180)
+++
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/InterceptorsTest.java 2009-12-01
10:00:30 UTC (rev 5181)
@@ -19,7 +19,8 @@
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.util.AnnotationLiteral;
-import org.jboss.weld.environment.se.StartMain;
+import org.jboss.weld.environment.se.Weld;
+import org.jboss.weld.environment.se.WeldContainer;
import org.jboss.weld.environment.se.events.Shutdown;
import org.jboss.weld.environment.se.test.beans.InterceptorTestBean;
import org.jboss.weld.environment.se.test.interceptors.AggregatingInterceptor;
@@ -35,18 +36,14 @@
public class InterceptorsTest
{
- public static String[] ARGS_EMPTY = new String[]
- {
- };
-
/**
* Test that interceptors work as expected in SE.
*/
@Test
public void testInterceptors()
{
- String[] args = ARGS_EMPTY;
- BeanManager manager = new StartMain(args).go();
+ WeldContainer weld = new Weld().initialize();
+ BeanManager manager = weld.getBeanManager();
InterceptorTestBean intTestBean = WeldManagerUtils.getInstanceByType(manager,
InterceptorTestBean.class);
Assert.assertNotNull(intTestBean);
Modified:
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/StartMainTest.java
===================================================================
---
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/StartMainTest.java 2009-11-30
20:26:04 UTC (rev 5180)
+++
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/StartMainTest.java 2009-12-01
10:00:30 UTC (rev 5181)
@@ -20,6 +20,7 @@
import javax.enterprise.util.AnnotationLiteral;
import org.jboss.weld.environment.se.StartMain;
+import org.jboss.weld.environment.se.WeldContainer;
import org.jboss.weld.environment.se.events.Shutdown;
import org.jboss.weld.environment.se.test.beans.CustomEvent;
import org.jboss.weld.environment.se.test.beans.InitObserverTestBean;
@@ -49,8 +50,10 @@
public void testMain()
{
String[] args = ARGS;
- BeanManager manager = new StartMain(args).go();
+ WeldContainer weld = new StartMain(args).go();
+ BeanManager manager = weld.getBeanManager();
+
MainTestBean mainTestBean = WeldManagerUtils.getInstanceByType(manager,
MainTestBean.class);
Assert.assertNotNull(mainTestBean);
@@ -74,7 +77,8 @@
@Test
public void testMainEmptyArgs()
{
- BeanManager manager = new StartMain(ARGS_EMPTY).go();
+ WeldContainer weld = new StartMain(ARGS_EMPTY).go();
+ BeanManager manager = weld.getBeanManager();
MainTestBean mainTestBean = WeldManagerUtils.getInstanceByType(manager,
MainTestBean.class);
Assert.assertNotNull(mainTestBean);
@@ -92,7 +96,8 @@
InitObserverTestBean.reset();
ObserverTestBean.reset();
- BeanManager manager = new StartMain(ARGS_EMPTY).go();
+ WeldContainer weld = new StartMain(ARGS_EMPTY).go();
+ BeanManager manager = weld.getBeanManager();
manager.fireEvent(new CustomEvent());
Assert.assertTrue(ObserverTestBean.isBuiltInObserved());
Modified:
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/WeldMainTest.java
===================================================================
---
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/WeldMainTest.java 2009-11-30
20:26:04 UTC (rev 5180)
+++
java-se/trunk/src/test/java/org/jboss/weld/environment/se/test/WeldMainTest.java 2009-12-01
10:00:30 UTC (rev 5181)
@@ -20,6 +20,7 @@
import javax.enterprise.util.AnnotationLiteral;
import org.jboss.weld.environment.se.Weld;
+import org.jboss.weld.environment.se.WeldContainer;
import org.jboss.weld.environment.se.events.Shutdown;
import org.jboss.weld.environment.se.test.beans.CustomEvent;
import org.jboss.weld.environment.se.test.beans.InitObserverTestBean;
@@ -37,13 +38,13 @@
{
/**
- * Test the alternate API for boting Weld from an SE app.
+ * Test the alternate API for boting WeldContainer from an SE app.
*/
@Test
public void testInitialize()
{
- Weld weld = new Weld().initialize();
+ WeldContainer weld = new Weld().initialize();
MainTestBean mainTestBean = weld.instance().select(MainTestBean.class).get();
Assert.assertNotNull(mainTestBean);
@@ -56,7 +57,7 @@
}
/**
- * Test the firing of observers using the alternate API for boting Weld from an SE
app.
+ * Test the firing of observers using the alternate API for boting WeldContainer from
an SE app.
*/
@Test
public void testObservers()
@@ -64,7 +65,8 @@
InitObserverTestBean.reset();
ObserverTestBean.reset();
- Weld weld = new Weld().initialize();
+
+ WeldContainer weld = new Weld().initialize();
weld.event().select(CustomEvent.class).fire(new CustomEvent());
Assert.assertTrue(ObserverTestBean.isBuiltInObserved());