Hi Felipe!

Let me first ask you what you intend to do. I like to learn about your use case 
and then we should be able to help you.

Your sample shows a class (Permissao) which has no qualifier annotations at 
all. 

But your sample also shows a Qualifier @BusinessBean. Where do you use it?
Do you get a BeanManager at all?

Do you have your sample online somewhere? Maybe on github?
That would really make it easier for us to help you.

LIeGrue,
strub



On Thursday, 12 June 2014, 19:11, Felipe Pina <[email protected]> wrote:
 

>
>
>I haved changed my method according to your reference 
>http://deltaspike.apache.org/core.html#beanprovider
>
>
>but still no success  :( 
>
>
>@SuppressWarnings("unchecked")
>public static <T> T getContextualInstance(final Class<T> type) {
>BeanManager manager = getBeanManager();
>    T result = null;
>    
>    @SuppressWarnings("serial")
>Annotation[] annotations = { new AnnotationLiteral<BusinessBean>() {} };
>        
>Set<Bean<?>> beans = manager.getBeans(type, annotations); -> empty
>beans = manager.getBeans(type);  -> empty
>beans = manager.getBeans("teste"); -> empty
>Bean<T> bean = (Bean<T>) manager.resolve(beans);
>    if (bean != null) {
>        CreationalContext<T> context = manager.createCreationalContext(bean);
>        if (context != null) {
>            result = (T) manager.getReference(bean, type, context);
>        }
>    }
>    return result;
>}
>
>My dependencies 
>
>
> <properties>
>
>  <openwebbeans.version>1.2.1</openwebbeans.version>
>
></properties>
>
>
>
>    <dependency>
>            <groupId>org.apache.geronimo.specs</groupId>
>            <artifactId>geronimo-atinject_1.0_spec</artifactId>
>            <version>1.0</version>
>            <scope>compile</scope>
>        </dependency>
>        <!-- JSR-299  -->
>        <dependency>
>            <groupId>org.apache.geronimo.specs</groupId>
>            <artifactId>geronimo-jcdi_1.0_spec</artifactId>
>            <version>1.0</version>
>            <scope>compile</scope>
>        </dependency>
>
>
>        <dependency>
>            <groupId>org.apache.geronimo.specs</groupId>
>            <artifactId>geronimo-interceptor_1.1_spec</artifactId>
>            <version>1.0</version>
>            <scope>compile</scope>
>        </dependency>
>        
>        <dependency>
>            <groupId>org.apache.openwebbeans</groupId>
>            <artifactId>openwebbeans-impl</artifactId>
>            <version>${openwebbeans.version}</version>
>            <scope>runtime</scope>
>        </dependency>
>
>
>        <dependency>
>            <groupId>org.apache.openwebbeans</groupId>
>            <artifactId>openwebbeans-web</artifactId>
>            <version>${openwebbeans.version}</version>
>            <scope>runtime</scope>
>        </dependency>
>        
>         <!-- SPI (Service Provider Interface). -->
>     <dependency>
>            <groupId>org.apache.openwebbeans</groupId>
>            <artifactId>openwebbeans-spi</artifactId>
>            <version>${openwebbeans.version}</version>
>            <scope>runtime</scope>
>        </dependency>    
>
>
>
>
>
>
>
>2014-06-12 10:03 GMT-03:00 Thomas Andraschko <[email protected]>:
>
>Maybe you miss the beans.xml in your jar but the way how you call #getBeans 
>with an qualifier is wrong.
>>
>>
>>
>>
>>2014-06-12 14:55 GMT+02:00 Felipe Pina <[email protected]>:
>>
>>
>>Take a look to my tests. The focus is not how am i passing as parameter 
>>annotation, because the lookup by name works to bean inside WebProject but 
>>not works to bean inside BusinessProject
>>>
>>>
>>>I have tested using three ways of lookup the bean, and both of bean are 
>>>annotated similarly, but the webproject bean works and the BussinessProject 
>>>bean do not works (jar package).
>>>
>>>
>>>Set<Bean<?>> beans = manager.getBeans(type, 
>>>type.getAnnotation(BusinessBean.class));
>>>Set<Bean<?>> beans = manager.getBeans(type);
>>>Set<Bean<?>> beans = manager.getBeans("teste");
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>2014-06-12 9:34 GMT-03:00 Thomas Andraschko <[email protected]>:
>>>
>>>
>>>You need to a pass a AnnotationLiteral instance instead of 
>>>"type.getAnnotation(yourAnnotation.class)"
>>>>Here it's explained how to create one and use one: 
>>>>http://deltaspike.apache.org/core.html#beanprovider
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>2014-06-12 14:26 GMT+02:00 Gerhard Petracek <[email protected]>:
>>>>
>>>>
>>>>@felipe:
>>>>>we won't respond something different (see [1]), if you keep the wrong code.
>>>>>the one case you mentioned just works, because #getAnnotation returns null.
>>>>>
>>>>>
>>>>>regards,
>>>>>gerhard
>>>>>
>>>>>
>>>>>[1] http://s.apache.org/oDb
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>2014-06-12 14:16 GMT+02:00 Thomas Andraschko <[email protected]>:
>>>>>
>>>>>
>>>>>Have a look at the bean manager java doc ->
>>>>>>
>>>>>>getBeans(java.lang.reflect.Type beanType, 
>>>>>>java.lang.annotation.Annotation... qualifiers) 
>>>>>>
>>>>>>RequestScoped isn't a CDI qualifier! ;)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>2014-06-12 14:03 GMT+02:00 Felipe Pina <[email protected]>:
>>>>>>
>>>>>>
>>>>>>Questions
>>>>>>>
>>>>>>>
>>>>>>> 1. Is there any schema that uses in the beans.xml file that configures 
>>>>>>> the engine to evaluate candidates beans through a package path?
>>>>>>>
>>>>>>> 2. the fact that the bean be packaged inside a jar which in turn, 
>>>>>>> within a war, is impediment to the proper functioning of the injection 
>>>>>>> of bean?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>Tests 
>>>>>>> 1. lookup bean from string value
>>>>>>>
>>>>>>> 1. lookup "teste" -> works fine
>>>>>>> 2. lookup "perm" -> fail returning null
>>>>>>> * lookup bean from type
>>>>>>> 1. lookup using Permissao.class ->  fail returning null
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>Project Structure
>>>>>>>
>>>>>>>
>>>>>>>WAR
>>>>>>>  |- WebProject
>>>>>>>            |- com.company.bean.JSFBean  -> @Named(value="teste")
>>>>>>>  |-  BusinessProject
>>>>>>>             |- com.company.bean.Permissao -> @Named(value="perm") 
>>>>>>>@BusinessBean
>>>>>>>
>>>>>>>
>>>>>>>My Qualifier
>>>>>>>
>>>>>>>
@Qualifier 
>>>>>>>@Retention(RUNTIME) 
>>>>>>>@Target({TYPE, METHOD, FIELD, PARAMETER})
>>>>>>>public @interface BusinessBean {
>>>>>>>
>>>>>>>}
>>>>>>>
>>>>>>>My bean.
>>>>>>>
>>>>>>>
>>>>>>>@javax.enterprise.context.RequestScoped
>>>>>>>@javax.enterprise.inject.Default
>>>>>>>
>>>>>>>public class Permissao extends NegocioBase<PermissaoDTO> { 
>>>>>>>....
>>>>>>>}
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>context.xml
>>>>>>> <Resource name="BeanManager" 
>>>>>>>        auth="Container"
>>>>>>>        type="javax.enterprise.inject.spi.BeanManager"
>>>>>>>        factory="org.apache.webbeans.container.ManagerObjectFactory"/>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>web.xml
>>>>>>>
>>>>>>>
>>>>>>><!-- I ran with and without this resource-env-ref section -->
>>>>>>>  <resource-env-ref>
>>>>>>>    <description>Object factory for the CDI Bean Manager</description>
>>>>>>>    <resource-env-ref-name>BeanManager</resource-env-ref-name>
>>>>>>><resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
>>>>>>>  </resource-env-ref>
>>>>>>>
>>>>>>>
>>>>>>>BeanFactory
>>>>>>>
>>>>>>>
>>>>>>>public class BeanFactory {
>>>>>>>static BeanManager getBeanManager() {
>>>>>>>    InitialContext context;
>>>>>>>    Object result;
>>>>>>>    try {
>>>>>>>        context = new InitialContext();
>>>>>>>        result = context.lookup("java:comp/env/BeanManager"); //lookup 
>>>>>>>in Tomcat
>>>>>>>    } catch (NamingException e) {
>>>>>>>        try {
>>>>>>>            context = new InitialContext();
>>>>>>>            result = context.lookup("java:comp/BeanManager"); //lookup 
>>>>>>>in JBossAS
>>>>>>>        } catch (NamingException ex) {
>>>>>>>            throw new RuntimeException("BeanManager could not be found 
>>>>>>>in JNDI", e);
>>>>>>>        }
>>>>>>>    }
>>>>>>>    return (BeanManager) result;
>>>>>>>}
>>>>>>>@SuppressWarnings("unchecked")
>>>>>>>public static <T> T getContextualInstance(final Class<T> type) {
>>>>>>>BeanManager manager = getBeanManager();
>>>>>>>    T result = null;
>>>>>>>Set<Bean<?>> beans = manager.getBeans(type, 
>>>>>>>type.getAnnotation(RequestScoped.class));
>>>>>>>---- >  why variable beans isEmpty !!!
>>>>>>>Bean<T> bean = (Bean<T>) manager.resolve(beans);
>>>>>>>    if (bean != null) {
>>>>>>>        CreationalContext<T> context = 
>>>>>>>manager.createCreationalContext(bean);
>>>>>>>        if (context != null) {
>>>>>>>            result = (T) manager.getReference(bean, type, context);
>>>>>>>        }
>>>>>>>    }
>>>>>>>    return result;
>>>>>>>}
>>>>>>>}
>>>>>>>
>>>>>>>-- 
>>>>>>>Atenciosamente,
>>>>>>>Felipe Pina
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>>>-- 
>>>Atenciosamente,
>>>Felipe Pina
>>>
>>
>
>
>
>-- 
>Atenciosamente,
>Felipe Pina
>
>
>

Reply via email to