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)