Uploaded image for project: 'Solder'
  1. Solder
  2. SOLDER-116

BeanBuilder create beans that don't support InjectionPoint injection

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Critical
    • Resolution: Out of Date
    • Affects Version/s: 3.0.0.Final
    • Fix Version/s: None
    • Component/s: Builders
    • Labels:
      None
    • Environment:

      MacOS X 10.7 (apple jdk 6) with Arquillian and weld-ee-embedded-1.1 container or JBoss AS 7

      Description

      I wrote a bean like this one :

      @MyQualifier
      public class MyBean {
      
          @Inject
          InjectionPoint ip;
      
          public String saySomething() {
              String value = "";
              if (ip != null)
                  value = ip.getAnnotated().getAnnotation(MyQualifier.class).value();
              return "Hello CDI World " + value;
          }
      }
      

      with MyQualifier being a simple qualifier with a non binding parameter value.
      And I wrote an extension which register another version of this bean without Qualifier

      public class MyExtension implements Extension {
      
          @SuppressWarnings({ "unchecked", "rawtypes" })
          public void afterBeanDiscovery(@Observes AfterBeanDiscovery abd, BeanManager bm) {
      
              AnnotatedTypeBuilder annoBuilder = new AnnotatedTypeBuilder().readFromType(MyBean.class).removeFromClass(
                      MyQualifier.class);
              AnnotatedType myAnnotatedType = annoBuilder.create();
      
              BeanBuilder beanBuilder = new BeanBuilder(bm).readFromType(myAnnotatedType);
              abd.addBean(beanBuilder.create());
          }
      }
      

      When bootstrapping Weld I have the following exception :

      org.jboss.weld.exceptions.DefinitionException: WELD-001405 Cannot inject [field] @Inject org.jboss.solderbug.MyBean.ip in a class which isnt a bean
      	at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:280)
      	at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:139)
      	at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:389)
      	at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:371)
      	at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:390)
      	at org.jboss.arquillian.container.weld.ee.embedded_1_1.mock.TestContainer.startContainer(TestContainer.java:257)
      	at org.jboss.arquillian.container.weld.ee.embedded_1_1.WeldEEMockContainer.deploy(WeldEEMockContainer.java:98)
      	...
      

      If I comment the @Inject line in the bean everything is fine and I can use both version of the bean (with or without qualifier)

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                jharting Jozef Hartinger
                Reporter:
                antoinesabot-durand Antoine Sabot-Durand
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: