This is an automated email from the ASF dual-hosted git repository.

janbednar pushed a commit to branch CAMEL-15001
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 41a4618ddb0a1eb04a6b532780075cebdc5ee0fa
Author: Jan Bednář <m...@janbednar.eu>
AuthorDate: Mon May 4 01:40:46 2020 +0200

    CAMEL-15001: introduce excludeProperties for component
---
 .../packaging/EndpointSchemaGeneratorMojo.java     | 31 +++++++++++++++-------
 1 file changed, 21 insertions(+), 10 deletions(-)

diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
index 1fcbf2f..abe8116 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
@@ -213,20 +213,26 @@ public class EndpointSchemaGeneratorMojo extends 
AbstractGeneratorMojo {
 
         // component options
         Class<?> componentClassElement = 
loadClass(componentModel.getJavaType());
+        String excludedComponentProperties = "";
         if (componentClassElement != null) {
             findComponentClassProperties(componentModel, 
componentClassElement, "", null, null);
+            Metadata componentMetadata = 
componentClassElement.getAnnotation(Metadata.class);
+            if (componentMetadata != null) {
+                excludedComponentProperties = 
componentMetadata.excludeProperties();
+            }
         }
 
         // endpoint options
         findClassProperties(componentModel, classElement, new HashSet<>(), "", 
null, null, false);
 
-        String excludedProperties = "";
-        Metadata metadata = classElement.getAnnotation(Metadata.class);
-        if (metadata != null) {
-            excludedProperties = metadata.excludeProperties();
+        String excludedEndpointProperties = "";
+        Metadata endpointMetadata = classElement.getAnnotation(Metadata.class);
+        if (endpointMetadata != null) {
+            excludedEndpointProperties = endpointMetadata.excludeProperties();
         }
+
         // enhance and generate
-        enhanceComponentModel(componentModel, parentData, excludedProperties);
+        enhanceComponentModel(componentModel, parentData, 
excludedEndpointProperties, excludedComponentProperties);
 
         // if the component has known class name
         if (!"@@@JAVATYPE@@@".equals(componentModel.getJavaType())) {
@@ -270,7 +276,7 @@ public class EndpointSchemaGeneratorMojo extends 
AbstractGeneratorMojo {
         return data;
     }
 
-    private void enhanceComponentModel(ComponentModel componentModel, 
ComponentModel parentData, String excludeProperties) {
+    private void enhanceComponentModel(ComponentModel componentModel, 
ComponentModel parentData, String excludedEndpointProperties, String 
excludedComponentProperties) {
         componentModel.getComponentOptions().removeIf(option -> 
filterOutOption(componentModel, option));
         componentModel.getComponentOptions().forEach(option -> fixDoc(option, 
parentData != null ? parentData.getComponentOptions() : null));
         
componentModel.getComponentOptions().sort(EndpointHelper.createGroupAndLabelComparator());
@@ -281,7 +287,8 @@ public class EndpointSchemaGeneratorMojo extends 
AbstractGeneratorMojo {
         if (parentData != null) {
             Set<String> componentOptionNames = 
componentModel.getComponentOptions().stream().map(BaseOptionModel::getName).collect(Collectors.toSet());
             Set<String> endpointOptionNames = 
componentModel.getEndpointOptions().stream().map(BaseOptionModel::getName).collect(Collectors.toSet());
-            Collections.addAll(endpointOptionNames, 
excludeProperties.split(","));
+            Collections.addAll(componentOptionNames, 
excludedComponentProperties.split(","));
+            Collections.addAll(endpointOptionNames, 
excludedEndpointProperties.split(","));
             parentData.getComponentOptions().stream()
                     .filter(option -> 
!componentOptionNames.contains(option.getName()))
                     .forEach(option -> 
componentModel.getComponentOptions().add(option));
@@ -528,10 +535,14 @@ public class EndpointSchemaGeneratorMojo extends 
AbstractGeneratorMojo {
     protected void findComponentClassProperties(ComponentModel componentModel, 
Class<?> classElement,
                                                 String prefix, String 
nestedTypeName, String nestedFieldName) {
         final Class<?> orgClassElement = classElement;
+        Set<String> excludes = new HashSet<>();
         while (true) {
             Metadata componentAnnotation = 
classElement.getAnnotation(Metadata.class);
-            if (componentAnnotation != null && Objects.equals("verifiers", 
componentAnnotation.label())) {
-                componentModel.setVerifiers(componentAnnotation.enums());
+            if (componentAnnotation != null) {
+                if(Objects.equals("verifiers", componentAnnotation.label())) {
+                    componentModel.setVerifiers(componentAnnotation.enums());
+                }
+                Collections.addAll(excludes, 
componentAnnotation.excludeProperties().split(","));
             }
 
             List<Method> methods = 
Stream.of(classElement.getDeclaredMethods()).filter(method -> {
@@ -682,7 +693,7 @@ public class EndpointSchemaGeneratorMojo extends 
AbstractGeneratorMojo {
 
                 String group = EndpointHelper.labelAsGroupName(label, 
componentModel.isConsumerOnly(), componentModel.isProducerOnly());
                 // filter out consumer/producer only
-                boolean accept = true;
+                boolean accept = !excludes.contains(name);
                 if (componentModel.isConsumerOnly() && 
"producer".equals(group)) {
                     accept = false;
                 } else if (componentModel.isProducerOnly() && 
"consumer".equals(group)) {

Reply via email to