You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Stuart McCulloch (JIRA)" <ji...@apache.org> on 2013/01/15 19:20:14 UTC

[jira] [Resolved] (FELIX-3638) Missing package import for annotation default value

     [ https://issues.apache.org/jira/browse/FELIX-3638?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Stuart McCulloch resolved FELIX-3638.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: maven-bundle-plugin-2.4.0
    
> Missing package import for annotation default value
> ---------------------------------------------------
>
>                 Key: FELIX-3638
>                 URL: https://issues.apache.org/jira/browse/FELIX-3638
>             Project: Felix
>          Issue Type: Bug
>          Components: Maven Bundle Plugin
>    Affects Versions: maven-bundle-plugin-2.3.7
>            Reporter: Harald Wellmann
>             Fix For: maven-bundle-plugin-2.4.0
>
>         Attachments: FELIX-3638.zip
>
>
> For the following annotation class in an OSGi bundle
> @Retention(RetentionPolicy.RUNTIME)
> @Target({ ElementType.TYPE, ElementType.METHOD })
> public @interface Transactional
> {
>     @Nonbinding Class<? extends Annotation>[] qualifier() default Any.class;
> }
> maven-bundle-plugin fails to generate the package import for javax.enterprise.inject.Any, the default value of the annotation method.
> At runtime, this leads to a non-descriptive exception 
> Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
>         at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:673) ~[na:1.7.0_04]
>         at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:480) ~[na:1.7.0_04]
>         at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:306) ~[na:1.7.0_04]
>         at java.lang.reflect.Method.getDefaultValue(Method.java:726) ~[na:1.7.0_04]
>         at sun.reflect.annotation.AnnotationType.<init>(AnnotationType.java:117) ~[na:1.7.0_04]
>         at sun.reflect.annotation.AnnotationType.getInstance(AnnotationType.java:84) ~[na:1.7.0_04]
>         at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:221) ~[na:1.7.0_04]
>         at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:88) ~[na:1.7.0_04]
>         at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:70) ~[na:1.7.0_04]
>         at java.lang.Class.initAnnotationsIfNecessary(Class.java:3089) ~[na:1.7.0_04]
>         at java.lang.Class.getDeclaredAnnotations(Class.java:3077) ~[na:1.7.0_04]
> which is hard to debug.
> The problem can be solved by adding an explicit Import-Package element to the plugin configuration, but I don't see why the plugin can't figure this out by itself.
> The example is taken from Apache Deltaspike. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira