-
Bug
-
Resolution: Done-Errata
-
Major
-
None
-
False
-
-
False
-
---
-
-
This fixes several visibility issues in the generated subclass if decorators are not visible from the decorated bean or an other decorator in the chain.
An example error looks like this:
java.lang.IllegalAccessError: failed to access class io.quarkus.arc.test.decorators.NonPublicDecoratorTest$AdditionalConverterDecorator from class io.quarkus.arc.test.decorators.other.ToUpperCaseConverter_Subclass (io.quarkus.arc.test.decorators.NonPublicDecoratorTest$AdditionalConverterDecorator and io.quarkus.arc.test.decorators.other.ToUpperCaseConverter_Subclass are in unnamed module of loader 'app')
at io.quarkus.arc.test.decorators.other.ToUpperCaseConverter_Subclass.<init>(Unknown Source)
at io.quarkus.arc.test.decorators.other.ToUpperCaseConverter_Bean.doCreate(Unknown Source)
at io.quarkus.arc.test.decorators.other.ToUpperCaseConverter_Bean.create(Unknown Source)
at io.quarkus.arc.test.decorators.other.ToUpperCaseConverter_Bean.create(Unknown Source)
at io.quarkus.arc.impl.AbstractSharedContext.createInstanceHandle(AbstractSharedContext.java:119)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:38)
at io.quarkus.arc.impl.AbstractSharedContext$1.get(AbstractSharedContext.java:35)
at io.quarkus.arc.impl.LazyValue.get(LazyValue.java:32)
at io.quarkus.arc.impl.ComputingCache.computeIfAbsent(ComputingCache.java:69)
at io.quarkus.arc.impl.ComputingCacheContextInstances.computeIfAbsent(ComputingCacheContextInstances.java:19)
at io.quarkus.arc.impl.AbstractSharedContext.get(AbstractSharedContext.java:35)
at io.quarkus.arc.impl.ClientProxies.getApplicationScopedDelegate(ClientProxies.java:23)
at io.quarkus.arc.test.decorators.other.ToUpperCaseConverter_ClientProxy.arc$delegate(Unknown Source)
at io.quarkus.arc.test.decorators.other.ToUpperCaseConverter_ClientProxy.convert(Unknown Source)
at io.quarkus.arc.test.decorators.NonPublicDecoratorTest.testDecoration(NonPublicDecoratorTest.java:36)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
The fix is to use the methods on the decorated types and not the decorator class.
A work around without the fix would be to make the decorator abstract (only works with a single decorator and not with a chain).
- links to
-
RHSA-2026:158861
Red Hat build of Quarkus 3.27.2 release and security update