Uploaded image for project: 'Weld'
  1. Weld
  2. WELD-1670

Not possible to wrap and replace observer method injection point

    XMLWordPrintable

Details

    • Bug
    • Resolution: Won't Do
    • Major
    • None
    • 2.2.0.SP1
    • Extensions
    • None

    Description

      Having e.g. this:

       public void observerMilk(@Observes Milk milk, @Any Fruit fruit)
      

      and trying to wrap the second parameter fruit (injection point) will fail during validation in org.jboss.weld.annotated.enhanced.jlr.AbstractEnhancedAnnotatedCallable, because callable instance has only one parameter (injection point) and common java method has two parameters.

      Caused by: org.jboss.weld.exceptions.DefinitionException: WELD-000614: Incorrect number of AnnotatedParameters 1 on AnnotatedMethod [UnbackedAnnotatedMethod] public org.jboss.cdi.tck.tests.extensions.alternative.metadata.Grocery.observerMilk(@Observes TropicalFruit). AnnotatedMethod has [[UnbackedAnnotatedParameter] Parameter 1 of [UnbackedAnnotatedMethod] public org.jboss.cdi.tck.tests.extensions.alternative.metadata.Grocery.observerMilk(@Observes TropicalFruit)] as parameters but should have [class org.jboss.cdi.tck.tests.extensions.alternative.metadata.Milk, interface org.jboss.cdi.tck.tests.extensions.alternative.metadata.Fruit] as parameters
      	at org.jboss.weld.annotated.enhanced.jlr.AbstractEnhancedAnnotatedCallable.validateParameterCount(AbstractEnhancedAnnotatedCallable.java:58)
      	at org.jboss.weld.annotated.enhanced.jlr.EnhancedAnnotatedMethodImpl.<init>(EnhancedAnnotatedMethodImpl.java:79)
      	at org.jboss.weld.annotated.enhanced.jlr.EnhancedAnnotatedMethodImpl.of(EnhancedAnnotatedMethodImpl.java:62)
      	at org.jboss.weld.annotated.enhanced.jlr.EnhancedAnnotatedTypeImpl.<init>(EnhancedAnnotatedTypeImpl.java:259)
      	at org.jboss.weld.annotated.enhanced.jlr.EnhancedAnnotatedTypeImpl.of(EnhancedAnnotatedTypeImpl.java:144)
      	at org.jboss.weld.resources.ClassTransformer$TransformSlimAnnotatedTypeToEnhancedAnnotatedType.load(ClassTransformer.java:93)
      	at org.jboss.weld.resources.ClassTransformer$TransformSlimAnnotatedTypeToEnhancedAnnotatedType.load(ClassTransformer.java:89)
      	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524)
      	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317)
      	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280)
      	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195)
      	at com.google.common.cache.LocalCache.get(LocalCache.java:3934)
      	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938)
      	at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821)
      	at org.jboss.weld.util.cache.LoadingCacheUtils.getCacheValue(LoadingCacheUtils.java:52)
      	at org.jboss.weld.util.cache.LoadingCacheUtils.getCastCacheValue(LoadingCacheUtils.java:80)
      	at org.jboss.weld.resources.ClassTransformer.getEnhancedAnnotatedType(ClassTransformer.java:247)
      	at org.jboss.weld.bootstrap.BeanDeployer.createClassBean(BeanDeployer.java:217)
      	at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$2.doWork(ConcurrentBeanDeployer.java:78)
      	at org.jboss.weld.bootstrap.ConcurrentBeanDeployer$2.doWork(ConcurrentBeanDeployer.java:75)
      	at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:60)
      	at org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:53)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262) [rt.jar:1.7.0_45]
      	... 3 more
      

      Attachments

        Activity

          People

            rhn-engineering-jharting Jozef Hartinger
            tremes1@redhat.com Tomas Remes
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: