This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-2.25.x in repository https://gitbox.apache.org/repos/asf/camel.git
commit b6aa6da46c99e745e189541e2b2586e97f31bed4 Author: Claus Ibsen <[email protected]> AuthorDate: Tue Apr 20 13:00:19 2021 +0200 CAMEL-16533: Spring and Blueprint XML XSD now include completion documentation for EIP elements also (before it was only attributes). --- .../apache/camel/maven/DocumentationEnricher.java | 7 +++--- .../java/org/apache/camel/maven/DomFinder.java | 6 +++++ .../camel/maven/EipDocumentationEnricherMojo.java | 29 +++++++++++++++------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/DocumentationEnricher.java b/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/DocumentationEnricher.java index e601974..284609d 100644 --- a/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/DocumentationEnricher.java +++ b/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/DocumentationEnricher.java @@ -54,9 +54,9 @@ public class DocumentationEnricher { } } - public void enrichTypeAttributesDocumentation(Log log, NodeList attributeElements, File jsonFile) throws IOException { - for (int j = 0; j < attributeElements.getLength(); j++) { - Element item = (Element) attributeElements.item(j); + public void enrichElementDocumentation(Log log, NodeList elements, File jsonFile) throws IOException { + for (int j = 0; j < elements.getLength(); j++) { + Element item = (Element) elements.item(j); addAttributeDocumentation(log, item, jsonFile); } } @@ -77,7 +77,6 @@ public class DocumentationEnricher { } private void addAttributeDocumentation(Log log, Element item, File jsonFile) throws IOException { - String name = item.getAttribute(Constants.NAME_ATTRIBUTE_NAME); if (isNullOrEmpty(name)) { return; diff --git a/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/DomFinder.java b/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/DomFinder.java index 64b4a20..c7ddbb9 100644 --- a/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/DomFinder.java +++ b/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/DomFinder.java @@ -46,6 +46,12 @@ public class DomFinder { .evaluate(document, XPathConstants.NODESET); } + public NodeList findElementsElements(String name) throws XPathExpressionException { + return (NodeList) xPath.compile( + "/xs:schema/xs:complexType[@name='" + name + "']//xs:element") + .evaluate(document, XPathConstants.NODESET); + } + public String findBaseType(String name) throws XPathExpressionException { return (String) xPath.compile( "/xs:schema/xs:complexType[@name='" + name + "']//xs:extension/@base") diff --git a/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/EipDocumentationEnricherMojo.java b/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/EipDocumentationEnricherMojo.java index 8364dcc..e82120a 100644 --- a/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/EipDocumentationEnricherMojo.java +++ b/tooling/maven/camel-eip-documentation-enricher-maven-plugin/src/main/java/org/apache/camel/maven/EipDocumentationEnricherMojo.java @@ -166,7 +166,12 @@ public class EipDocumentationEnricherMojo extends AbstractMojo { if (jsonFileExistsForElement(jsonFiles, elementName)) { getLog().debug("Enriching " + elementName); File file = jsonFiles.get(elementName); - injectAttributesDocumentation(domFinder, documentationEnricher, file, elementType, injectedTypes); + injectChildElementsDocumentation(domFinder, documentationEnricher, file, elementType, injectedTypes); + } else { + boolean ignore = "ExpressionDefinition".equalsIgnoreCase(elementName); + if (!ignore) { + getLog().warn("Cannot find json metadata to use for enriching element " + elementName); + } } } @@ -187,13 +192,15 @@ public class EipDocumentationEnricherMojo extends AbstractMojo { } /** - * Recursively injects documentation to complex type attributes and it's parents. + * Recursively injects documentation to complex type attributes and elements and it's parents. */ - private void injectAttributesDocumentation(DomFinder domFinder, - DocumentationEnricher documentationEnricher, - File jsonFile, - String type, - Set<String> injectedTypes) throws XPathExpressionException, IOException { + private void injectChildElementsDocumentation( + DomFinder domFinder, + DocumentationEnricher documentationEnricher, + File jsonFile, + String type, + Set<String> injectedTypes) + throws XPathExpressionException, IOException { if (injectedTypes.contains(type)) { return; } @@ -201,13 +208,17 @@ public class EipDocumentationEnricherMojo extends AbstractMojo { injectedTypes.add(type); NodeList attributeElements = domFinder.findAttributesElements(type); if (attributeElements.getLength() > 0) { - documentationEnricher.enrichTypeAttributesDocumentation(getLog(), attributeElements, jsonFile); + documentationEnricher.enrichElementDocumentation(getLog(), attributeElements, jsonFile); + } + NodeList elementElements = domFinder.findElementsElements(type); + if (elementElements.getLength() > 0) { + documentationEnricher.enrichElementDocumentation(getLog(), elementElements, jsonFile); } String baseType = domFinder.findBaseType(type); if (baseType != null && !StringUtils.isEmpty(baseType)) { baseType = truncateTypeNamespace(baseType); - injectAttributesDocumentation(domFinder, documentationEnricher, jsonFile, baseType, injectedTypes); + injectChildElementsDocumentation(domFinder, documentationEnricher, jsonFile, baseType, injectedTypes); } }
