use of org.jboss.weld.serialization.BeanIdentifierIndex in project core by weld.
the class BeanIdentifierIndexTest method testGetIndex.
@Test
public void testGetIndex() {
BeanIdentifierIndex index = new BeanIdentifierIndex();
index.build(Collections.<Bean<?>>emptySet());
try {
index.getIndex(null);
} catch (IllegalArgumentException e) {
// Expected
}
assertNull(index.getIndex(new StringBeanIdentifier("foo")));
}
use of org.jboss.weld.serialization.BeanIdentifierIndex in project core by weld.
the class BeanIdentifierIndexTest method testGetDebugInfo.
@Test
public void testGetDebugInfo() {
BeanIdentifierIndex index = new BeanIdentifierIndex();
Set<Bean<?>> beans = new HashSet<Bean<?>>();
for (int i = 0; i < 3; i++) {
beans.add(DummyBean.of(i + ".foo"));
}
index.build(beans);
assertEquals("BeanIdentifierIndex [hash=-1733773048, indexed=3] \n 0: 0.foo\n 1: 1.foo\n 2: 2.foo\n", index.getDebugInfo());
}
use of org.jboss.weld.serialization.BeanIdentifierIndex in project core by weld.
the class WeldStartup method createContexts.
protected Collection<ContextHolder<? extends Context>> createContexts(ServiceRegistry services) {
List<ContextHolder<? extends Context>> contexts = new ArrayList<ContextHolder<? extends Context>>();
BeanIdentifierIndex beanIdentifierIndex = services.get(BeanIdentifierIndex.class);
/*
* Register a full set of bound and unbound contexts. Although we may not use all of
* these (e.g. if we are running in a servlet environment) they may be
* useful for an application.
*/
Set<Annotation> boundQualifires = ImmutableSet.<Annotation>builder().addAll(Bindings.DEFAULT_QUALIFIERS).add(BoundLiteral.INSTANCE).build();
Set<Annotation> unboundQualifiers = ImmutableSet.<Annotation>builder().addAll(Bindings.DEFAULT_QUALIFIERS).add(UnboundLiteral.INSTANCE).build();
contexts.add(new ContextHolder<ApplicationContext>(new ApplicationContextImpl(contextId), ApplicationContext.class, unboundQualifiers));
contexts.add(new ContextHolder<SingletonContext>(new SingletonContextImpl(contextId), SingletonContext.class, unboundQualifiers));
contexts.add(new ContextHolder<BoundSessionContext>(new BoundSessionContextImpl(contextId, beanIdentifierIndex), BoundSessionContext.class, boundQualifires));
contexts.add(new ContextHolder<BoundConversationContext>(new BoundConversationContextImpl(contextId, services), BoundConversationContext.class, boundQualifires));
contexts.add(new ContextHolder<BoundRequestContext>(new BoundRequestContextImpl(contextId), BoundRequestContext.class, boundQualifires));
contexts.add(new ContextHolder<RequestContext>(new RequestContextImpl(contextId), RequestContext.class, unboundQualifiers));
contexts.add(new ContextHolder<DependentContext>(new DependentContextImpl(services.get(ContextualStore.class)), DependentContext.class, unboundQualifiers));
services.get(WeldModules.class).postContextRegistration(contextId, services, contexts);
/*
* Register the contexts with the bean manager and add the beans to the
* deployment manager so that they are easily accessible (contexts are app
* scoped)
*/
for (ContextHolder<? extends Context> context : contexts) {
deploymentManager.addContext(context.getContext());
deploymentManager.addBean(ContextBean.of(context, deploymentManager));
}
return contexts;
}
use of org.jboss.weld.serialization.BeanIdentifierIndex in project core by weld.
the class WeldWebModule method postContextRegistration.
@Override
public void postContextRegistration(PostContextRegistrationContext ctx) {
final BeanIdentifierIndex index = ctx.getServices().get(BeanIdentifierIndex.class);
final String contextId = ctx.getContextId();
if (Reflections.isClassLoadable(ServletApiAbstraction.SERVLET_CONTEXT_CLASS_NAME, WeldClassLoaderResourceLoader.INSTANCE)) {
// Register the Http contexts if not in
Set<Annotation> httpQualifiers = ImmutableSet.<Annotation>builder().addAll(Bindings.DEFAULT_QUALIFIERS).add(HttpLiteral.INSTANCE).build();
ctx.addContext(new ContextHolder<HttpSessionContext>(new HttpSessionContextImpl(contextId, index), HttpSessionContext.class, httpQualifiers));
ctx.addContext(new ContextHolder<HttpSessionDestructionContext>(new HttpSessionDestructionContext(contextId, index), HttpSessionDestructionContext.class, httpQualifiers));
ctx.addContext(new ContextHolder<HttpConversationContext>(new LazyHttpConversationContextImpl(contextId, ctx.getServices()), HttpConversationContext.class, httpQualifiers));
ctx.addContext(new ContextHolder<HttpRequestContext>(new HttpRequestContextImpl(contextId), HttpRequestContext.class, httpQualifiers));
}
}
use of org.jboss.weld.serialization.BeanIdentifierIndex in project core by weld.
the class BeanIdentifierIndexTest method testIndex.
@Test
public void testIndex() {
BeanIdentifierIndex index = beanManager.getServices().get(BeanIdentifierIndex.class);
// Index is enabled by default
assertTrue(index.isBuilt());
assertFalse(index.isEmpty());
ManagedBean<?> indexedBean = (ManagedBean<?>) beanManager.resolve(beanManager.getBeans(Indexed.class));
assertNotNull(index.getIndex(indexedBean.getIdentifier()));
HttpSessionBean httpSessionBean = (HttpSessionBean) beanManager.resolve(beanManager.getBeans(HttpSession.class));
// Built-in beans are not included
assertNull(index.getIndex(httpSessionBean.getIdentifier()));
}
Aggregations