Skip to content

Commit

Permalink
merge InterceptedBeanMetadataProvider and DecoratedBeanMetadataProvider
Browse files Browse the repository at this point in the history
  • Loading branch information
rmanibus committed Oct 15, 2024
1 parent 9108df1 commit d54e1b2
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 51 deletions.
2 changes: 1 addition & 1 deletion docs/src/main/asciidoc/cdi.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ public class LargeTxAccount implements Account { <3>

@Inject
@Decorated
Bean<?> delegateInfo; <5>
Bean<Account> delegateInfo; <5>


@Inject
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,10 @@
import io.quarkus.arc.InjectableBean;
import io.quarkus.arc.impl.BeanManagerProvider;
import io.quarkus.arc.impl.BeanMetadataProvider;
import io.quarkus.arc.impl.DecoratedBeanMetadataProvider;
import io.quarkus.arc.impl.EventProvider;
import io.quarkus.arc.impl.InjectionPointProvider;
import io.quarkus.arc.impl.InstanceProvider;
import io.quarkus.arc.impl.InterceptedBeanMetadataProvider;
import io.quarkus.arc.impl.InterceptedDecoratedBeanMetadataProvider;
import io.quarkus.arc.impl.ListProvider;
import io.quarkus.arc.impl.ResourceProvider;
import io.quarkus.arc.processor.InjectionPointInfo.InjectionPointKind;
Expand All @@ -53,12 +52,12 @@ public enum BuiltinBean {
BEAN(BuiltinBean::generateBeanBytecode,
(ip, names) -> cdiAndRawTypeMatches(ip, DotNames.BEAN, DotNames.INJECTABLE_BEAN) && ip.hasDefaultedQualifier(),
BuiltinBean::validateBean, DotNames.BEAN),
INTERCEPTED_BEAN(BuiltinBean::generateInterceptedBeanBytecode,
INTERCEPTED_BEAN(BuiltinBean::generateInterceptedDecoratedBeanBytecode,
(ip, names) -> cdiAndRawTypeMatches(ip, DotNames.BEAN, DotNames.INJECTABLE_BEAN) && !ip.hasDefaultedQualifier()
&& ip.getRequiredQualifiers().size() == 1
&& ip.getRequiredQualifiers().iterator().next().name().equals(DotNames.INTERCEPTED),
BuiltinBean::validateInterceptedBean, DotNames.BEAN),
DECORATED_BEAN(BuiltinBean::generateDecoratedBeanBytecode,
DECORATED_BEAN(BuiltinBean::generateInterceptedDecoratedBeanBytecode,
(ip, names) -> cdiAndRawTypeMatches(ip, DotNames.BEAN, DotNames.INJECTABLE_BEAN) && !ip.hasDefaultedQualifier()
&& ip.getRequiredQualifiers().size() == 1
&& ip.getRequiredQualifiers().iterator().next().name().equals(DotNames.DECORATED),
Expand Down Expand Up @@ -314,9 +313,9 @@ private static void generateBeanBytecode(GeneratorContext ctx) {
beanProviderSupplier);
}

private static void generateInterceptedBeanBytecode(GeneratorContext ctx) {
private static void generateInterceptedDecoratedBeanBytecode(GeneratorContext ctx) {
ResultHandle interceptedBeanMetadataProvider = ctx.constructor
.newInstance(MethodDescriptor.ofConstructor(InterceptedBeanMetadataProvider.class));
.newInstance(MethodDescriptor.ofConstructor(InterceptedDecoratedBeanMetadataProvider.class));

ResultHandle interceptedBeanMetadataProviderSupplier = ctx.constructor.newInstance(
MethodDescriptors.FIXED_VALUE_SUPPLIER_CONSTRUCTOR, interceptedBeanMetadataProvider);
Expand All @@ -327,19 +326,6 @@ private static void generateInterceptedBeanBytecode(GeneratorContext ctx) {
interceptedBeanMetadataProviderSupplier);
}

private static void generateDecoratedBeanBytecode(GeneratorContext ctx) {
ResultHandle decoratedBeanMetadataProvider = ctx.constructor
.newInstance(MethodDescriptor.ofConstructor(DecoratedBeanMetadataProvider.class));

ResultHandle decoratedBeanMetadataProviderSupplier = ctx.constructor.newInstance(
MethodDescriptors.FIXED_VALUE_SUPPLIER_CONSTRUCTOR, decoratedBeanMetadataProvider);
ctx.constructor.writeInstanceField(
FieldDescriptor.of(ctx.clazzCreator.getClassName(), ctx.providerName,
Supplier.class.getName()),
ctx.constructor.getThis(),
decoratedBeanMetadataProviderSupplier);
}

private static void generateBeanManagerBytecode(GeneratorContext ctx) {
ResultHandle beanManagerProvider = ctx.constructor.newInstance(
MethodDescriptor.ofConstructor(BeanManagerProvider.class));
Expand Down Expand Up @@ -537,7 +523,7 @@ private static void validateInterceptedBean(ValidatorContext ctx) {
private static void validateDecoratedBean(ValidatorContext ctx) {
if (ctx.injectionTarget.kind() != InjectionTargetInfo.TargetKind.BEAN
|| !ctx.injectionTarget.asBean().isDecorator()) {
ctx.errors.accept(new DefinitionException("Only decorators can access intercepted bean metadata"));
ctx.errors.accept(new DefinitionException("Only decorators can access decorated bean metadata"));
}
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@

import jakarta.enterprise.context.spi.Contextual;
import jakarta.enterprise.context.spi.CreationalContext;
import jakarta.enterprise.inject.Decorated;
import jakarta.enterprise.inject.Intercepted;
import jakarta.enterprise.inject.spi.Bean;

import io.quarkus.arc.InjectableReferenceProvider;

/**
* {@link Intercepted} {@link Bean} metadata provider.
* {@link Intercepted} {@link Decorated} {@link Bean} metadata provider.
*/
public class InterceptedBeanMetadataProvider implements InjectableReferenceProvider<Contextual<?>> {
public class InterceptedDecoratedBeanMetadataProvider implements InjectableReferenceProvider<Contextual<?>> {

@Override
public Contextual<?> get(CreationalContext<Contextual<?>> creationalContext) {
Expand Down

0 comments on commit d54e1b2

Please sign in to comment.