Skip to content

Commit

Permalink
Fix deprecated ReflectiveClassBuildItem construct methods and replace…
Browse files Browse the repository at this point in the history
… with builder()
  • Loading branch information
zhfeng committed Mar 20, 2023
1 parent 820ee91 commit 7bb333f
Show file tree
Hide file tree
Showing 116 changed files with 785 additions and 546 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,13 @@
public class CollectionClassProcessor {
@BuildStep
ReflectiveClassBuildItem setupCollectionClasses() {
return new ReflectiveClassBuildItem(false, false,
ArrayList.class.getName(),
return ReflectiveClassBuildItem.builder(ArrayList.class.getName(),
HashMap.class.getName(),
HashSet.class.getName(),
LinkedList.class.getName(),
LinkedHashMap.class.getName(),
LinkedHashSet.class.getName(),
TreeMap.class.getName(),
TreeSet.class.getName());
TreeSet.class.getName()).build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,6 @@ private void registerInstance(BuildProducer<ReflectiveClassBuildItem> reflective
}

private ReflectiveClassBuildItem asReflectiveClassBuildItem(String annotatedClass) {
return new ReflectiveClassBuildItem(true, false, annotatedClass);
return ReflectiveClassBuildItem.builder(annotatedClass).methods().build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,13 @@ static void processConfigClass(
new GeneratedClassBuildItem(isApplicationClass, mappingMetadata.getClassName(),
mappingMetadata.getClassBytes()));
reflectiveClasses
.produce(ReflectiveClassBuildItem.builder(mappingMetadata.getInterfaceType()).methods(true).build());
.produce(ReflectiveClassBuildItem.builder(mappingMetadata.getInterfaceType()).methods().build());
reflectiveClasses
.produce(ReflectiveClassBuildItem.builder(mappingMetadata.getClassName()).constructors(true)
.methods(true).build());
.produce(ReflectiveClassBuildItem.builder(mappingMetadata.getClassName())
.methods().build());

for (Class<?> parent : getHierarchy(mappingMetadata.getInterfaceType())) {
reflectiveClasses.produce(ReflectiveClassBuildItem.builder(parent).methods(true).build());
reflectiveClasses.produce(ReflectiveClassBuildItem.builder(parent).methods().build());
}

generatedClassesNames.add(mappingMetadata.getClassName());
Expand All @@ -117,7 +117,8 @@ static void processConfigClass(
// E.g. Optional<Foo>
type = type.asParameterizedType().arguments().get(0);
}
reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, type.name().toString()));
reflectiveClasses
.produce(ReflectiveClassBuildItem.builder(type.name().toString()).methods().build());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,9 +278,9 @@ LoggingSetupBuildItem setupLoggingRuntimeInit(RecorderContext context, LoggingSe

DiscoveredLogComponents discoveredLogComponents = discoverLogComponents(combinedIndexBuildItem.getIndex());
if (!discoveredLogComponents.getNameToFilterClass().isEmpty()) {
reflectiveClassBuildItemBuildProducer.produce(new ReflectiveClassBuildItem(true, false, false,
discoveredLogComponents.getNameToFilterClass().values().toArray(
EMPTY_STRING_ARRAY)));
reflectiveClassBuildItemBuildProducer.produce(
ReflectiveClassBuildItem.builder(discoveredLogComponents.getNameToFilterClass().values().toArray(
EMPTY_STRING_ARRAY)).build());
serviceProviderBuildItemBuildProducer
.produce(ServiceProviderBuildItem.allProvidersFromClassPath(LogFilterFactory.class.getName()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@ void buildTimeRunTimeConfig(
method.returnValue(configBuilder);
}

reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, false, builderClassName));
reflectiveClass.produce(
ReflectiveClassBuildItem.builder(builderClassName).build());
staticInitConfigBuilder.produce(new StaticInitConfigBuilderBuildItem(builderClassName));
runTimeConfigBuilder.produce(new RunTimeConfigBuilderBuildItem(builderClassName));
}
Expand Down Expand Up @@ -196,7 +197,8 @@ void runtimeDefaultsConfig(
method.returnValue(configBuilder);
}

reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, false, builderClassName));
reflectiveClass.produce(
ReflectiveClassBuildItem.builder(builderClassName).build());
staticInitConfigBuilder.produce(new StaticInitConfigBuilderBuildItem(builderClassName));
runTimeConfigBuilder.produce(new RunTimeConfigBuilderBuildItem(builderClassName));
}
Expand Down Expand Up @@ -300,7 +302,8 @@ void generateConfigClass(
Set<String> runtimeConfigBuilderClassNames = runTimeConfigBuilders.stream()
.map(RunTimeConfigBuilderBuildItem::getBuilderClassName).collect(toSet());
reflectiveClass
.produce(new ReflectiveClassBuildItem(false, false, runtimeConfigBuilderClassNames.toArray(new String[0])));
.produce(ReflectiveClassBuildItem.builder(runtimeConfigBuilderClassNames.toArray(new String[0]))
.build());

RunTimeConfigurationGenerator.GenerateOperation
.builder()
Expand Down Expand Up @@ -514,7 +517,8 @@ private static void generateDefaultsConfigSource(
ctor.returnVoid();
}

reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, false, className));
reflectiveClass
.produce(ReflectiveClassBuildItem.builder(className).build());
}

private static void generateMappingsConfigBuilder(
Expand Down Expand Up @@ -542,7 +546,8 @@ private static void generateMappingsConfigBuilder(
method.returnValue(configBuilder);
}

reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, false, className));
reflectiveClass
.produce(ReflectiveClassBuildItem.builder(className).build());
}

private static Set<String> discoverService(
Expand All @@ -552,7 +557,8 @@ private static Set<String> discoverService(
Set<String> services = new HashSet<>();
for (String service : classNamesNamedIn(classLoader, SERVICES_PREFIX + serviceClass.getName())) {
services.add(service);
reflectiveClass.produce(new ReflectiveClassBuildItem(true, false, false, service));
reflectiveClass
.produce(ReflectiveClassBuildItem.builder(service).build());
}
return services;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,8 @@ void nativeResources(BuildProducer<NativeImageResourceBundleBuildItem> resources

@BuildStep(onlyIf = { NativeBuild.class, NonDefaultLocale.class })
ReflectiveClassBuildItem setupReflectionClasses() {
return new ReflectiveClassBuildItem(false, false,
"sun.util.resources.provider.SupplementaryLocaleDataProvider",
"sun.util.resources.provider.LocaleDataProvider");
return ReflectiveClassBuildItem.builder("sun.util.resources.provider.SupplementaryLocaleDataProvider",
"sun.util.resources.provider.LocaleDataProvider").build();
}

@BuildStep(onlyIf = { NativeBuild.class, NonDefaultLocale.class })
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ private void writeRecordedBytecode(BytecodeRecorderImpl recorder, String fallbac
*/
@BuildStep
ReflectiveClassBuildItem applicationReflection() {
return new ReflectiveClassBuildItem(false, false, Application.APP_CLASS_NAME);
return ReflectiveClassBuildItem.builder(Application.APP_CLASS_NAME).build();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,8 @@ private void addClassTypeHierarchy(CombinedIndexBuildItem combinedIndexBuildItem
reflectiveClass.produce(
ReflectiveClassBuildItem
.builder(name.toString())
.methods(true)
.fields(true)
.methods()
.fields()
.serialization(reflectiveHierarchyBuildItem.isSerialization())
.build());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,17 +111,17 @@ void build(

if (aggregatedDataSourceBuildTimeConfig.getJdbcConfig().tracing) {
reflectiveClass
.produce(new ReflectiveClassBuildItem(true, false,
DataSources.TRACING_DRIVER_CLASSNAME));
.produce(ReflectiveClassBuildItem.builder(DataSources.TRACING_DRIVER_CLASSNAME).methods()
.build());
}

if (aggregatedDataSourceBuildTimeConfig.getJdbcConfig().telemetry) {
otelJdbcInstrumentationActive = true;
}

reflectiveClass
.produce(new ReflectiveClassBuildItem(true, false,
aggregatedDataSourceBuildTimeConfig.getResolvedDriverClass()));
.produce(ReflectiveClassBuildItem.builder(aggregatedDataSourceBuildTimeConfig.getResolvedDriverClass())
.methods().build());

aggregatedConfig.produce(aggregatedDataSourceBuildTimeConfig);
}
Expand All @@ -140,15 +140,14 @@ void build(
resource.produce(new NativeImageResourceBuildItem(
"META-INF/services/" + io.agroal.api.security.AgroalSecurityProvider.class.getName()));

reflectiveClass.produce(new ReflectiveClassBuildItem(false, false,
io.agroal.pool.ConnectionHandler[].class.getName(),
reflectiveClass.produce(ReflectiveClassBuildItem.builder(io.agroal.pool.ConnectionHandler[].class.getName(),
io.agroal.pool.ConnectionHandler.class.getName(),
io.agroal.api.security.AgroalDefaultSecurityProvider.class.getName(),
io.agroal.api.security.AgroalKerberosSecurityProvider.class.getName(),
java.sql.Statement[].class.getName(),
java.sql.Statement.class.getName(),
java.sql.ResultSet.class.getName(),
java.sql.ResultSet[].class.getName()));
java.sql.ResultSet[].class.getName()).build());

// Enable SSL support by default
sslNativeSupport.produce(new ExtensionSslNativeSupportBuildItem(Feature.AGROAL.getName()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,15 +78,15 @@ public ProvidedAmazonLambdaHandlerBuildItem setHandler() {
@BuildStep
public void registerReflectionClasses(BuildProducer<ReflectiveClassBuildItem> reflectiveClassBuildItemBuildProducer) {
reflectiveClassBuildItemBuildProducer
.produce(new ReflectiveClassBuildItem(true, true, true,
APIGatewayV2HTTPEvent.class,
.produce(ReflectiveClassBuildItem.builder(APIGatewayV2HTTPEvent.class,
APIGatewayV2HTTPEvent.RequestContext.class,
APIGatewayV2HTTPEvent.RequestContext.Http.class,
APIGatewayV2HTTPEvent.RequestContext.Authorizer.class,
APIGatewayV2HTTPEvent.RequestContext.CognitoIdentity.class,
APIGatewayV2HTTPEvent.RequestContext.IAM.class,
APIGatewayV2HTTPEvent.RequestContext.Authorizer.JWT.class,
APIGatewayV2HTTPResponse.class, Headers.class, MultiValuedTreeMap.class));
APIGatewayV2HTTPResponse.class, Headers.class, MultiValuedTreeMap.class)
.methods().fields().build());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,7 @@ public ProvidedAmazonLambdaHandlerBuildItem setHandler() {
@BuildStep
public void registerReflectionClasses(BuildProducer<ReflectiveClassBuildItem> reflectiveClassBuildItemBuildProducer) {
reflectiveClassBuildItemBuildProducer
.produce(new ReflectiveClassBuildItem(true, true, true,
AlbContext.class,
.produce(ReflectiveClassBuildItem.builder(AlbContext.class,
ApiGatewayAuthorizerContext.class,
ApiGatewayRequestIdentity.class,
AwsProxyRequest.class,
Expand All @@ -87,7 +86,7 @@ public void registerReflectionClasses(BuildProducer<ReflectiveClassBuildItem> re
CognitoAuthorizerClaims.class,
ErrorModel.class,
Headers.class,
MultiValuedTreeMap.class));
MultiValuedTreeMap.class).methods().fields().build());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ public void process(BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
runtimeInitialized.produce(
new RuntimeInitializedClassBuildItem("com.amazonaws.xray.strategy.sampling.LocalizedSamplingStrategy"));
runtimeInitialized.produce(new RuntimeInitializedClassBuildItem("com.amazonaws.xray.ThreadLocalStorage"));
reflectiveClass.produce(new ReflectiveClassBuildItem(
true, true, true,
"com.amazonaws.xray.handlers.config.AWSServiceHandlerManifest",
reflectiveClass.produce(ReflectiveClassBuildItem.builder("com.amazonaws.xray.handlers.config.AWSServiceHandlerManifest",
"com.amazonaws.xray.AWSXRay",
"com.amazonaws.xray.strategy.sampling.manifest.SamplingRuleManifest",
"com.amazonaws.xray.strategy.sampling.rule.SamplingRule",
Expand All @@ -41,7 +39,8 @@ public void process(BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
"com.amazonaws.xray.entities.TraceID",
"com.amazonaws.xray.entities.Cause",
"com.amazonaws.xray.entities.SegmentImpl",
"com.fasterxml.jackson.databind.ser.std.ToStringSerializer"));
"com.fasterxml.jackson.databind.ser.std.ToStringSerializer").methods().fields()
.build());

resource.produce(new NativeImageResourceBuildItem(
"com/amazonaws/xray/interceptors/DefaultOperationParameterWhitelist.json",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ List<AmazonLambdaBuildItem> discover(CombinedIndexBuildItem combinedIndexBuildIt
final DotName name = info.name();
final String lambda = name.toString();
builder.addBeanClass(lambda);
reflectiveClassBuildItemBuildProducer.produce(new ReflectiveClassBuildItem(true, false, lambda));
reflectiveClassBuildItemBuildProducer
.produce(ReflectiveClassBuildItem.builder(lambda).methods().build());

String cdiName = null;
AnnotationInstance named = info.classAnnotation(NAMED);
Expand Down Expand Up @@ -140,7 +141,8 @@ List<AmazonLambdaBuildItem> discover(CombinedIndexBuildItem combinedIndexBuildIt
}
additionalBeanBuildItemBuildProducer.produce(builder.build());
reflectiveClassBuildItemBuildProducer
.produce(new ReflectiveClassBuildItem(true, true, true, FunctionError.class));
.produce(ReflectiveClassBuildItem.builder(FunctionError.class).methods().fields()
.build());
return ret;
}

Expand All @@ -157,7 +159,7 @@ void processProvidedLambda(Optional<ProvidedAmazonLambdaHandlerBuildItem> provid
additionalBeanBuildItemBuildProducer.produce(builder.build());

reflectiveClassBuildItemBuildProducer
.produce(new ReflectiveClassBuildItem(true, true, true, handlerClass));
.produce(ReflectiveClassBuildItem.builder(handlerClass).methods().fields().build());

// TODO
// This really isn't good enough. We should recursively add reflection for all method and field types of the parameter
Expand All @@ -169,11 +171,13 @@ void processProvidedLambda(Optional<ProvidedAmazonLambdaHandlerBuildItem> provid
Class<?>[] parameterTypes = method.getParameterTypes();
if (!parameterTypes[0].equals(Object.class)) {
reflectiveClassBuildItemBuildProducer
.produce(new ReflectiveClassBuildItem(true, true, true, parameterTypes[0].getName()));
.produce(ReflectiveClassBuildItem.builder(parameterTypes[0].getName())
.methods().fields().build());
reflectiveClassBuildItemBuildProducer
.produce(new ReflectiveClassBuildItem(true, true, true, method.getReturnType().getName()));
reflectiveClassBuildItemBuildProducer.produce(new ReflectiveClassBuildItem(true, true, true,
DateTime.class));
.produce(ReflectiveClassBuildItem.builder(method.getReturnType().getName())
.methods().fields().build());
reflectiveClassBuildItemBuildProducer.produce(ReflectiveClassBuildItem.builder(DateTime.class)
.methods().fields().build());
break;
}
}
Expand Down Expand Up @@ -307,7 +311,8 @@ void recordExpectedExceptions(LambdaBuildTimeConfig config,
BuildProducer<ReflectiveClassBuildItem> registerForReflection,
AmazonLambdaStaticRecorder recorder) {
Set<Class<?>> classes = config.expectedExceptions.map(Set::copyOf).orElseGet(Set::of);
classes.stream().map(clazz -> new ReflectiveClassBuildItem(false, false, false, clazz))
classes.stream()
.map(clazz -> ReflectiveClassBuildItem.builder(clazz).constructors(false).build())
.forEach(registerForReflection::produce);
recorder.setExpectedExceptionClasses(classes);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -599,15 +599,17 @@ public void registerField(FieldInfo fieldInfo) {
public void registerClientProxy(DotName beanClassName, String clientProxyName) {
if (reflectiveBeanClassesNames.contains(beanClassName)) {
// Fields should never be registered for client proxies
reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, clientProxyName));
reflectiveClasses
.produce(ReflectiveClassBuildItem.builder(clientProxyName).methods().build());
}
}

@Override
public void registerSubclass(DotName beanClassName, String subclassName) {
if (reflectiveBeanClassesNames.contains(beanClassName)) {
// Fields should never be registered for subclasses
reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, subclassName));
reflectiveClasses
.produce(ReflectiveClassBuildItem.builder(subclassName).methods().build());
}
}

Expand Down Expand Up @@ -638,12 +640,14 @@ public void registerSubclass(DotName beanClassName, String subclassName) {

// Register all qualifiers for reflection to support type-safe resolution at runtime in native image
for (ClassInfo qualifier : beanProcessor.getBeanDeployment().getQualifiers()) {
reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, qualifier.name().toString()));
reflectiveClasses
.produce(ReflectiveClassBuildItem.builder(qualifier.name().toString()).methods().build());
}

// Register all interceptor bindings for reflection so that AnnotationLiteral.equals() works in a native image
for (ClassInfo binding : beanProcessor.getBeanDeployment().getInterceptorBindings()) {
reflectiveClasses.produce(new ReflectiveClassBuildItem(true, false, binding.name().toString()));
reflectiveClasses
.produce(ReflectiveClassBuildItem.builder(binding.name().toString()).methods().build());
}

ArcContainer container = recorder.initContainer(shutdown,
Expand Down
Loading

0 comments on commit 7bb333f

Please sign in to comment.