Konrad Windszus created SLING-9755:
--------------------------------------

             Summary: Enrich exceptions in 
ModelPackageBundleListener.analyzeClass() by class name
                 Key: SLING-9755
                 URL: https://issues.apache.org/jira/browse/SLING-9755
             Project: Sling
          Issue Type: Improvement
          Components: Sling Models
    Affects Versions: Sling Models Impl 1.4.12
            Reporter: Konrad Windszus
             Fix For: Sling Models Impl 1.4.14


If you see an exception like

[ERROR] myPackage.MyTest.testMethod  Time elapsed: 0.052 s  <<< ERROR!
java.lang.annotation.AnnotationFormatError: Invalid default: public abstract 
java.lang.Class com.adobe.granite.haf.annotations.ApiModel.modelLookup()
        at java.lang.reflect.Method.getDefaultValue(Method.java:612)
        at sun.reflect.annotation.AnnotationType.<init>(AnnotationType.java:132)
        at 
sun.reflect.annotation.AnnotationType.getInstance(AnnotationType.java:85)
        at 
sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:266)
        at 
sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
        at 
sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
        at java.lang.Class.createAnnotationData(Class.java:3521)
        at java.lang.Class.annotationData(Class.java:3510)
        at java.lang.Class.getAnnotation(Class.java:3415)
        at 
org.apache.sling.models.impl.ModelPackageBundleListener.analyzeClass(ModelPackageBundleListener.java:145)
        at 
org.apache.sling.models.impl.ModelPackageBundleListener.addingBundle(ModelPackageBundleListener.java:125)
        at 
org.apache.sling.models.impl.ModelPackageBundleListener.addingBundle(ModelPackageBundleListener.java:52)
        at 
org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:475)
        at 
org.osgi.util.tracker.BundleTracker$Tracked.customizerAdding(BundleTracker.java:420)
        at 
org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
        at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
        at 
org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:450)
        at 
org.apache.sling.testing.mock.osgi.MockBundleContext.sendBundleEvent(MockBundleContext.java:383)
        at 
org.apache.sling.testing.mock.osgi.MockOsgi.sendBundleEvent(MockOsgi.java:62)
        at 
org.apache.sling.testing.mock.sling.context.ModelAdapterFactoryUtil.addModelsForPackages(ModelAdapterFactoryUtil.java:95)
        at 
org.apache.sling.testing.mock.sling.context.ModelAdapterFactoryUtil.addModelsForManifestEntries(ModelAdapterFactoryUtil.java:128)
        at 
org.apache.sling.testing.mock.sling.context.SlingContextImpl.registerDefaultServices(SlingContextImpl.java:187)
        at 
io.wcm.testing.mock.aem.context.AemContextImpl.registerDefaultServices(AemContextImpl.java:67)
        at 
org.apache.sling.testing.mock.sling.context.SlingContextImpl.setUp(SlingContextImpl.java:131)
        at 
io.wcm.testing.mock.aem.context.AemContextImpl.setUp(AemContextImpl.java:94)
        at 
io.wcm.testing.mock.aem.junit.AemContext.access$100(AemContext.java:49)
        at 
io.wcm.testing.mock.aem.junit.AemContext$1.before(AemContext.java:183)
        at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:46)
        at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.evaluateStatement(PowerMockJUnit47RunnerDelegateImpl.java:107)
        at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:82)
        at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:298)
        at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:87)
        at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:50)
        at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:218)
        at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:160)
        at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:134)
        at 
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34)
        at 
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44)
        at 
org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.run(PowerMockJUnit44RunnerDelegateImpl.java:136)
        at 
org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:121)
        at 
org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:57)
        at 
org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
        at 
org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
        at 
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:377)
        at 
org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:138)
        at 
org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:465)
        at 
org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:451)
It is not obvious which Model class is the culprit. The annotation parser at 
ModelPackageBundleListener.analyzeClass() should catch all Throwables and 
enrich them with class name which caused the issue. 


This particular error was caused by the fact that the Sling Model at 
{{com.adobe.cq.screens.impl.aemio.ScreensApplicationsFolderModel}} references 
the annotation {{ApiModel}} which itself references a default class which is 
not available on the classpath:


public @interface ApiModel {
....
Class<? extends ModelLookup> modelLookup() default NullModelLookup.class; // 
NullModelLookup.class is not on the classpath
...
}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to