tkobayas commented on code in PR #6414:
URL:
https://github.com/apache/incubator-kie-drools/pull/6414#discussion_r2259530191
##########
drools-model/drools-model-codegen/src/main/java/org/drools/model/codegen/execmodel/generator/declaredtype/DescrTypeDefinition.java:
##########
@@ -243,15 +258,33 @@ private List<DescrFieldDefinition> processFields() {
private ProcessedTypeField processTypeField(int position, TypeFieldDescr
typeFieldDescr) {
DescrFieldDefinition typeField = new
DescrFieldDefinition(typeFieldDescr);
- List<DescrAnnotationDefinition> parsedAnnotations =
typeFieldDescr.getAnnotations().stream()
- .map(this::createAnnotationDefinition)
- .filter(Optional::isPresent)
- .map(Optional::get)
- .collect(toList());
+ // Create a map of successfully parsed annotations, keyed by original
annotation name
+ Map<String, DescrAnnotationDefinition> parsedAnnotations = new
HashMap<>();
+ for (AnnotationDescr ann : typeFieldDescr.getAnnotations()) {
+ Optional<DescrAnnotationDefinition> parsed =
createAnnotationDefinition(ann);
+ if (parsed.isPresent()) {
+ parsedAnnotations.put(ann.getName(), parsed.get());
+ }
+ }
- parsedAnnotations.stream().filter(a -> !a.isPosition()).forEach(a ->
processDefinitions(typeField, a));
+ parsedAnnotations.values().stream().filter(a ->
!a.isPosition()).forEach(a -> processDefinitions(typeField, a));
- int currentFieldPosition = setFieldPosition(position, typeField,
parsedAnnotations);
+ // Add built-in annotations and non-defined custom annotations as
field metadata
+ for (AnnotationDescr ann : typeFieldDescr.getAnnotations()) {
+ DescrAnnotationDefinition parsed =
parsedAnnotations.get(ann.getName());
+ if (parsed != null) {
+ // This annotation was successfully parsed - check if it's
built-in
+ if (isBuiltInAnnotation(parsed)) {
+ Object value = ann.getSingleValue();
+ typeField.addFieldMetaData(ann.getName(), value);
+ }
Review Comment:
built-in annotation handling is not well organized, probably we may be able
to refactor, but not the main topic of this PR.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]