generateMetadata() — netty Function Reference
Architecture documentation for the generateMetadata() function in ChannelHandlerMetadataUtil.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 551c0cf8_9074_2186_24dc_6d297424d67b["generateMetadata()"] 746b9c8e_354b_ecaf_85dc_a1e83631fad5["ChannelHandlerMetadataUtil"] 551c0cf8_9074_2186_24dc_6d297424d67b -->|defined in| 746b9c8e_354b_ecaf_85dc_a1e83631fad5 4af8bb15_8b41_7e81_dfb7_5f30251ffaf2["findChannelHandlerSubclasses()"] 551c0cf8_9074_2186_24dc_6d297424d67b -->|calls| 4af8bb15_8b41_7e81_dfb7_5f30251ffaf2 fa51f88b_c104_04f8_9dd3_f303e401e6fe["HandlerMetadata()"] 551c0cf8_9074_2186_24dc_6d297424d67b -->|calls| fa51f88b_c104_04f8_9dd3_f303e401e6fe 75802313_9f6f_fac0_6148_0bfe7ad40b93["Condition()"] 551c0cf8_9074_2186_24dc_6d297424d67b -->|calls| 75802313_9f6f_fac0_6148_0bfe7ad40b93 style 551c0cf8_9074_2186_24dc_6d297424d67b fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
transport/src/test/java/io/netty/nativeimage/ChannelHandlerMetadataUtil.java lines 58–128
public static void generateMetadata(String... packageNames) {
String projectGroupId = System.getProperty("nativeImage.handlerMetadataGroupId");
String projectArtifactId = System.getProperty("nativeimage.handlerMetadataArtifactId");
Set<Class<? extends ChannelHandler>> subtypes = findChannelHandlerSubclasses(packageNames);
if (Arrays.asList(packageNames).contains("io.netty.channel")) {
// We want the metadata for the ChannelHandler itself too
subtypes.add(ChannelHandler.class);
}
Set<HandlerMetadata> handlerMetadata = new HashSet<HandlerMetadata>();
for (Class<?> subtype : subtypes) {
handlerMetadata.add(new HandlerMetadata(subtype.getName(), new Condition(subtype.getName()), true));
}
String projectRelativeResourcePath = "src/main/resources/META-INF/native-image/" + projectGroupId + "/" +
projectArtifactId + "/generated/handlers/reflect-config.json";
File existingMetadataFile = new File(projectRelativeResourcePath);
String existingMetadataPath = existingMetadataFile.getAbsolutePath();
if (!existingMetadataFile.exists()) {
if (handlerMetadata.size() == 0) {
return;
}
String message = "Native Image reflection metadata is required for handlers in this project. " +
"This metadata was not found under " +
existingMetadataPath +
"\nPlease create this file with the following content: \n" +
getMetadataJsonString(handlerMetadata) +
"\n";
Assertions.fail(message);
}
List<HandlerMetadata> existingMetadata = null;
try {
FileReader reader = new FileReader(existingMetadataFile);
existingMetadata = gson.fromJson(reader, HANDLER_METADATA_LIST_TYPE);
} catch (IOException e) {
Assertions.fail("Failed to open the native-image metadata file at: " + existingMetadataPath, e);
}
Set<HandlerMetadata> newMetadata = new HashSet<HandlerMetadata>(handlerMetadata);
newMetadata.removeAll(existingMetadata);
Set<HandlerMetadata> removedMetadata = new HashSet<HandlerMetadata>(existingMetadata);
removedMetadata.removeAll(handlerMetadata);
if (!newMetadata.isEmpty() || !removedMetadata.isEmpty()) {
StringBuilder builder = new StringBuilder();
builder.append("In the native-image handler metadata file at ")
.append(existingMetadataPath)
.append("\n");
if (!newMetadata.isEmpty()) {
builder.append("The following new metadata must be added:\n\n")
.append(getMetadataJsonString(newMetadata))
.append("\n\n");
}
if (!removedMetadata.isEmpty()) {
builder.append("The following metadata must be removed:\n\n")
.append(getMetadataJsonString(removedMetadata))
.append("\n\n");
}
builder.append("Expected metadata file contents:\n\n")
.append(getMetadataJsonString(handlerMetadata))
.append("\n");
Assertions.fail(builder.toString());
}
}
Domain
Subdomains
Source
Frequently Asked Questions
What does generateMetadata() do?
generateMetadata() is a function in the netty codebase, defined in transport/src/test/java/io/netty/nativeimage/ChannelHandlerMetadataUtil.java.
Where is generateMetadata() defined?
generateMetadata() is defined in transport/src/test/java/io/netty/nativeimage/ChannelHandlerMetadataUtil.java at line 58.
What does generateMetadata() call?
generateMetadata() calls 3 function(s): Condition, HandlerMetadata, findChannelHandlerSubclasses.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free