[ https://issues.apache.org/jira/browse/SLING-9755?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Radu Cotescu closed SLING-9755. ------------------------------- > Make annotation parsing in ModelPackageBundleListener.analyzeClass() more > lenient > --------------------------------------------------------------------------------- > > 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 > Assignee: Konrad Windszus > Priority: Major > Fix For: Sling Models Impl 1.4.14 > > Time Spent: 50m > Remaining Estimate: 0h > > I have seen an exception like this > {code} > [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) > {code} > It is not obvious from this exception which Model class is the culprit. The > annotation parser at {{ModelPackageBundleListener.analyzeClass()}} should > catch those exceptions and log them properly. > 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)