Created
December 1, 2022 15:08
-
-
Save lptr/6dd6b890b760306fa5d9070a014d0ece to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/subprojects/model-core/src/main/java/org/gradle/internal/properties/annotations/TypeMetadataWalker.java b/subprojects/model-core/src/main/java/org/gradle/internal/properties/annotations/TypeMetadataWalker.java | |
index d902fa578f0..48b4ef6b5ff 100644 | |
--- a/subprojects/model-core/src/main/java/org/gradle/internal/properties/annotations/TypeMetadataWalker.java | |
+++ b/subprojects/model-core/src/main/java/org/gradle/internal/properties/annotations/TypeMetadataWalker.java | |
@@ -22,24 +22,29 @@ | |
import java.lang.annotation.Annotation; | |
import java.util.function.Supplier; | |
-public interface TypeMetadataWalker<T> { | |
- static TypeMetadataWalker<Object> instanceWalker(TypeMetadataStore typeMetadataStore, Class<? extends Annotation> nestedAnnotation) { | |
+public interface TypeMetadataWalker<T, V extends TypeMetadataWalker.NodeMetadataVisitor<T>> { | |
+ static InstanceMetadataWalker instanceWalker(TypeMetadataStore typeMetadataStore, Class<? extends Annotation> nestedAnnotation) { | |
return new AbstractTypeMetadataWalker.InstanceTypeMetadataWalker(typeMetadataStore, nestedAnnotation); | |
} | |
- static TypeMetadataWalker<TypeToken<?>> typeWalker(TypeMetadataStore typeMetadataStore, Class<? extends Annotation> nestedAnnotation) { | |
+ static StaticMetadataWalker typeWalker(TypeMetadataStore typeMetadataStore, Class<? extends Annotation> nestedAnnotation) { | |
return new AbstractTypeMetadataWalker.StaticTypeMetadataWalker(typeMetadataStore, nestedAnnotation); | |
} | |
- void walk(T root, NodeMetadataVisitor<T> visitor); | |
+ void walk(T root, V visitor); | |
+ interface StaticMetadataWalker extends TypeMetadataWalker<TypeToken<?>, StaticMetadataVisitor> {} | |
+ interface InstanceMetadataWalker extends TypeMetadataWalker<Object, InstanceMetadataVisitor> {} | |
interface NodeMetadataVisitor<T> { | |
void visitRoot(TypeMetadata typeMetadata, T value); | |
void visitNested(TypeMetadata typeMetadata, String qualifiedName, PropertyMetadata propertyMetadata, T value); | |
void visitLeaf(String qualifiedName, PropertyMetadata propertyMetadata, Supplier<T> value); | |
- default void visitUnpackNestedError(String qualifiedName, Exception e) { | |
- throw UncheckedException.throwAsUncheckedException(e); | |
- } | |
+ } | |
+ | |
+ interface StaticMetadataVisitor extends NodeMetadataVisitor<TypeToken<?>> {} | |
+ interface InstanceMetadataVisitor extends NodeMetadataVisitor<Object> { | |
+ void visitMissingNested(String qualifiedName, Exception e); | |
+ void visitUnpackNestedError(String qualifiedName, Exception e); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment