Skip to content

Commit

Permalink
WELD-471
Browse files Browse the repository at this point in the history
  • Loading branch information
nickarls committed Mar 27, 2010
1 parent 0f3d1f2 commit 22d3668
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 22 deletions.
Expand Up @@ -26,6 +26,8 @@
import java.util.Map;
import java.util.Set;

import javax.enterprise.event.Event;
import javax.enterprise.inject.Instance;
import javax.enterprise.inject.New;

import org.jboss.weld.bean.AbstractBean;
Expand Down Expand Up @@ -88,12 +90,12 @@ public BeanDeployerEnvironment(EjbDescriptors ejbDescriptors, BeanManagerImpl ma
this.newManagedBeanClasses = new HashSet<WeldClass<?>>();
this.newSessionBeanDescriptors = new HashSet<InternalEjbDescriptor<?>>();
}

public Set<WeldClass<?>> getNewManagedBeanClasses()
{
return newManagedBeanClasses;
}

public Set<InternalEjbDescriptor<?>> getNewSessionBeanDescriptors()
{
return newSessionBeanDescriptors;
Expand All @@ -113,7 +115,7 @@ public <X, T> ProducerMethod<X, T> getProducerMethod(WeldMethod<X, T> method)
return (ProducerMethod<X, T>) bean;
}
}

public AbstractClassBean<?> getClassBean(WeldClass<?> clazz)
{
if (!classBeanMap.containsKey(clazz))
Expand All @@ -133,22 +135,22 @@ public void addProducerMethod(ProducerMethod<?, ?> bean)
producerMethodBeanMap.put(new WeldMethodKey(bean.getWeldAnnotated()), bean);
addAbstractBean(bean);
}

public void addProducerField(ProducerField<?, ?> bean)
{
addAbstractBean(bean);
}

public void addExtension(ExtensionBean bean)
{
beans.add(bean);
}

public void addBuiltInBean(AbstractBuiltInBean<?> bean)
{
beans.add(bean);
}

protected void addAbstractClassBean(AbstractClassBean<?> bean)
{
if (!(bean instanceof NewBean))
Expand All @@ -157,29 +159,29 @@ protected void addAbstractClassBean(AbstractClassBean<?> bean)
}
addAbstractBean(bean);
}

public void addManagedBean(ManagedBean<?> bean)
{
newManagedBeanClasses.add(bean.getWeldAnnotated());
addAbstractClassBean(bean);
}

public void addSessionBean(SessionBean<?> bean)
{
newSessionBeanDescriptors.add(bean.getEjbDescriptor());
addAbstractClassBean(bean);
}

public void addNewManagedBean(NewManagedBean<?> bean)
{
beans.add(bean);
}

public void addNewSessionBean(NewSessionBean<?> bean)
{
beans.add(bean);
}

protected void addAbstractBean(AbstractBean<?, ?> bean)
{
addNewBeansFromInjectionPoints(bean);
Expand All @@ -195,29 +197,33 @@ public void addInterceptor(InterceptorImpl<?> bean)
{
interceptors.add(bean);
}

public void addDisposesMethod(DisposalMethod<?, ?> bean)
{
allDisposalBeans.add(bean);
addNewBeansFromInjectionPoints(bean);
}

public void addObserverMethod(ObserverMethodImpl<?, ?> observer)
{
this.observers.add(observer);
addNewBeansFromInjectionPoints(observer.getNewInjectionPoints());
}



private void addNewBeansFromInjectionPoints(AbstractBean<?, ?> bean)
{
addNewBeansFromInjectionPoints(bean.getNewInjectionPoints());
}

private void addNewBeansFromInjectionPoints(Set<WeldInjectionPoint<?, ?>> newInjectionPoints)
{
for (WeldInjectionPoint<?, ?> injectionPoint : newInjectionPoints)
{
// FIXME: better check
if (injectionPoint.getJavaClass() == Instance.class || injectionPoint.getJavaClass() == Event.class)
{
continue;
}
New _new = injectionPoint.getAnnotation(New.class);
if (_new.value().equals(New.class))
{
Expand All @@ -227,10 +233,10 @@ private void addNewBeansFromInjectionPoints(Set<WeldInjectionPoint<?, ?>> newInj
{
addNewBeanFromInjecitonPoint(_new.value(), _new.value());
}

}
}

private void addNewBeanFromInjecitonPoint(Class<?> rawType, Type baseType)
{
if (getEjbDescriptors().contains(rawType))
Expand All @@ -247,7 +253,7 @@ public Set<? extends RIBean<?>> getBeans()
{
return Collections.unmodifiableSet(beans);
}

public Set<DecoratorImpl<?>> getDecorators()
{
return Collections.unmodifiableSet(decorators);
Expand All @@ -263,7 +269,6 @@ public Set<InterceptorImpl<?>> getInterceptors()
return Collections.unmodifiableSet(observers);
}


public Set<DisposalMethod<?, ?>> getUnresolvedDisposalBeans()
{
Set<DisposalMethod<?, ?>> beans = new HashSet<DisposalMethod<?, ?>>(allDisposalBeans);
Expand All @@ -275,7 +280,7 @@ public EjbDescriptors getEjbDescriptors()
{
return ejbDescriptors;
}

/**
* Resolve the disposal method for the given producer method. Any resolved
* beans will be marked as such for the purpose of validating that all
Expand Down
@@ -0,0 +1,11 @@
package org.jboss.weld.tests.builtinBeans.weld471;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Instance;
import javax.enterprise.inject.New;
import javax.inject.Inject;

@ApplicationScoped
public class Bar {
@Inject @New private Instance<Foo> foo;
}
@@ -0,0 +1,8 @@
package org.jboss.weld.tests.builtinBeans.weld471;

import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class Foo {

}
@@ -0,0 +1,13 @@
package org.jboss.weld.tests.builtinBeans.weld471;

import org.jboss.testharness.impl.packaging.Artifact;
import org.jboss.weld.test.AbstractWeldTest;
import org.testng.annotations.Test;

@Artifact
public class InstanceTest extends AbstractWeldTest {

@Test
public void testNewInstance() {
}
}

0 comments on commit 22d3668

Please sign in to comment.