--- /dev/null
+package org.wamblee.cdi;
+
+import javax.enterprise.inject.spi.BeanManager;
+
+import org.jboss.weld.environment.se.Weld;
+import org.jboss.weld.environment.se.WeldContainer;
+
+public class BeanManagerSetup {
+
+ private Weld weld;
+ private WeldContainer container;
+ private BeanManager beanManager;
+
+ public BeanManagerSetup() {
+ // Empty
+ }
+
+ public void initialize() {
+ weld = new Weld();
+ container = weld.initialize();
+ beanManager = container.getBeanManager();
+ }
+
+ public BeanManager getBeanManager() {
+ return beanManager;
+ }
+
+ public void shutdown() {
+ weld.shutdown();
+ weld = null;
+ container = null;
+ beanManager = null;
+ }
+}
+/*
+ * Copyright 2005-2010 the original author or authors.
+ *
+ * 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.wamblee.cdi;
import javax.inject.Inject;
public MySingleton getSingleton() {
return singleton;
}
+
+ public void setSingleton(MySingleton aSingleton) {
+ singleton = aSingleton;
+ }
}
+/*
+ * Copyright 2005-2010 the original author or authors.
+ *
+ * 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.wamblee.cdi;
import javax.enterprise.context.ApplicationScoped;
--- /dev/null
+/*
+ * Copyright 2005-2010 the original author or authors.
+ *
+ * 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.wamblee.cdi;
+
+import static junit.framework.Assert.*;
+import static org.mockito.Mockito.*;
+
+import javax.naming.InitialContext;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.wamblee.support.jndi.StubInitialContextFactory;
+
+public class SimpleInjectorTest {
+
+ private BeanManagerSetup setup;
+
+ @Before
+ public void setUp() throws Exception {
+ setup = new BeanManagerSetup();
+ setup.initialize();
+ StubInitialContextFactory.register();
+ InitialContext ctx = new InitialContext();
+ ctx.bind(BeanManagerLookup.BEAN_MANAGER_JNDI, setup.getBeanManager());
+ }
+
+ @After
+ public void tearDown() {
+ StubInitialContextFactory.unregister();
+ setup.shutdown();
+ }
+
+ @Test
+ public void testGetSingleton() {
+ MyPojo pojo = new MyPojo();
+ SimpleInjector injector = new SimpleInjector();
+ injector.inject(pojo);
+
+ MySingleton obj = pojo.getSingleton();
+ assertNotNull(obj);
+
+ MyPojo pojo2 = new MyPojo();
+ injector.inject(pojo2);
+
+ // Objects will not be the same as they are contextual references to the
+ // same object.
+ // assertSame(pojo2, pojo);
+
+ assertEquals(1, MySingleton.getInstances());
+ }
+
+ @Test
+ public void testGetSingletonCustomInjector() {
+ MyPojo pojo = new MyPojo();
+ InjectorFactory factory = mock(InjectorFactory.class);
+ SimpleInjector injector = new SimpleInjector(factory);
+ final MySingleton singleton = new MySingleton();
+ when(factory.create(MyPojo.class)).thenReturn(new Injector() {
+ @Override
+ public void inject(Object aComponent) {
+ MyPojo pojo2 = (MyPojo) aComponent;
+ pojo2.setSingleton(singleton);
+ }
+ });
+
+ injector.inject(pojo);
+ // verify the custom injector was called.
+ assertSame(singleton, pojo.getSingleton());
+ }
+}
package org.wamblee.cdi;
+import static junit.framework.Assert.*;
+
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.InjectionTarget;
-import org.jboss.weld.environment.se.Weld;
-import org.jboss.weld.environment.se.WeldContainer;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import static junit.framework.TestCase.*;
public class WeldTest {
- private Weld weld;
- private WeldContainer container;
- private BeanManager beanManager;
-
+ private BeanManagerSetup setup;
+
@Before
public void setUp() {
- weld = new Weld();
- container = weld.initialize();
- beanManager = container.getBeanManager();
+ setup = new BeanManagerSetup();
+ setup.initialize();
}
@After
public void tearDown() {
- weld.shutdown();
+ setup.shutdown();
}
@Test
public void testGetSingleton() {
- AnnotatedType<MyPojo> type = beanManager.createAnnotatedType(MyPojo.class);
- InjectionTarget<MyPojo> target = beanManager.createInjectionTarget(type);
- CreationalContext<MyPojo> ctx = beanManager.createCreationalContext(null);
+ AnnotatedType<MyPojo> type = setup.getBeanManager().createAnnotatedType(MyPojo.class);
+ InjectionTarget<MyPojo> target = setup.getBeanManager().createInjectionTarget(type);
+ CreationalContext<MyPojo> ctx = setup.getBeanManager().createCreationalContext(null);
MyPojo pojo = new MyPojo();