Repository: camel Updated Branches: refs/heads/master 78dba26ee -> edeb983b1
CAMEL-9456: Component docs - Add information if a component is deprecated Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/edeb983b Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/edeb983b Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/edeb983b Branch: refs/heads/master Commit: edeb983b12b617567996cf7a3f10582b0b9f5dbc Parents: 78dba26 Author: Claus Ibsen <davscl...@apache.org> Authored: Mon Dec 28 15:39:26 2015 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Mon Dec 28 15:39:26 2015 +0100 ---------------------------------------------------------------------- .../management/mbean/CamelOpenMBeanTypes.java | 8 +++---- .../management/mbean/ManagedCamelContext.java | 10 ++++++-- .../commands/CatalogComponentListCommand.java | 24 ++++++++++---------- .../tools/apt/EndpointAnnotationProcessor.java | 14 +++++++++++- .../camel/tools/apt/model/ComponentModel.java | 9 ++++++++ 5 files changed, 46 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/edeb983b/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java index 72babc8..596b2d4 100644 --- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java +++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/CamelOpenMBeanTypes.java @@ -132,10 +132,10 @@ public final class CamelOpenMBeanTypes { } public static CompositeType listComponentsCompositeType() throws OpenDataException { - return new CompositeType("components", "Components", new String[]{"name", "title", "description", "label", "status", "type", "groupId", "artifactId", "version"}, - new String[]{"Name", "Title", "Description", "Label", "Status", "Type", "GroupId", "ArtifactId", "Version"}, - new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, - SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING}); + return new CompositeType("components", "Components", new String[]{"name", "title", "syntax", "description", "label", "deprecated", "status", "type", "groupId", "artifactId", "version"}, + new String[]{"Name", "Title", "Syntax", "Description", "Label", "Deprecated", "Status", "Type", "GroupId", "ArtifactId", "Version"}, + new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, + SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING}); } public static TabularType listAwaitThreadsTabularType() throws OpenDataException { http://git-wip-us.apache.org/repos/asf/camel/blob/edeb983b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java index 91ffac0..a694bb8 100644 --- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java +++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedCamelContext.java @@ -584,8 +584,10 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti for (Map.Entry<String, Properties> entry : components.entrySet()) { String name = entry.getKey(); String title = null; + String syntax = null; String description = null; String label = null; + String deprecated = null; String status = context.hasComponent(name) != null ? "in use" : "on classpath"; String type = (String) entry.getValue().get("class"); String groupId = null; @@ -603,10 +605,14 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti for (Map<String, String> row : rows) { if (row.containsKey("title")) { title = row.get("title"); + } else if (row.containsKey("syntax")) { + syntax = row.get("syntax"); } else if (row.containsKey("description")) { description = row.get("description"); } else if (row.containsKey("label")) { label = row.get("label"); + } else if (row.containsKey("deprecated")) { + deprecated = row.get("deprecated"); } else if (row.containsKey("javaType")) { type = row.get("javaType"); } else if (row.containsKey("groupId")) { @@ -619,8 +625,8 @@ public class ManagedCamelContext extends ManagedPerformanceCounter implements Ti } CompositeType ct = CamelOpenMBeanTypes.listComponentsCompositeType(); - CompositeData data = new CompositeDataSupport(ct, new String[]{"name", "title", "description", "label", "status", "type", "groupId", "artifactId", "version"}, - new Object[]{name, title, description, label, status, type, groupId, artifactId, version}); + CompositeData data = new CompositeDataSupport(ct, new String[]{"name", "title", "syntax", "description", "label", "deprecated", "status", "type", "groupId", "artifactId", "version"}, + new Object[]{name, title, syntax, description, label, deprecated, status, type, groupId, artifactId, version}); answer.put(data); } return answer; http://git-wip-us.apache.org/repos/asf/camel/blob/edeb983b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/CatalogComponentListCommand.java ---------------------------------------------------------------------- diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/CatalogComponentListCommand.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/CatalogComponentListCommand.java index 59fe9da..2146369 100644 --- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/CatalogComponentListCommand.java +++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/CatalogComponentListCommand.java @@ -27,7 +27,7 @@ import java.util.Map; public class CatalogComponentListCommand extends AbstractCamelCommand { private static final String TITLE_COLUMN_LABEL = "Title"; - private static final String SCHEME_COLUMN_LABEL = "Scheme"; + private static final String SYNTAX_COLUMN_LABEL = "Syntax"; private static final String LABEL_COLUMN_LABEL = "Label"; private static final String MAVEN_COLUMN_LABEL = "Maven Coordinate"; private static final String DESCRIPTION_COLUMN_LABEL = "Description"; @@ -63,7 +63,7 @@ public class CatalogComponentListCommand extends AbstractCamelCommand { final String rowFormat = buildFormatString(columnWidths, false); if (verbose) { - out.println(String.format(headerFormat, TITLE_COLUMN_LABEL, SCHEME_COLUMN_LABEL, LABEL_COLUMN_LABEL, MAVEN_COLUMN_LABEL)); + out.println(String.format(headerFormat, TITLE_COLUMN_LABEL, SYNTAX_COLUMN_LABEL, LABEL_COLUMN_LABEL, MAVEN_COLUMN_LABEL)); out.println(String.format(headerFormat, "-----", "------", "-----", "----------------")); } else { out.println(String.format(headerFormat, TITLE_COLUMN_LABEL, DESCRIPTION_COLUMN_LABEL)); @@ -72,13 +72,13 @@ public class CatalogComponentListCommand extends AbstractCamelCommand { for (final Map<String, String> component : components) { if (verbose) { String title = safeNull(component.get("title")); - String scheme = safeNull(component.get("name")); + String syntax = safeNull(component.get("syntax")); String label = safeNull(component.get("label")); String maven = ""; if (component.containsKey("groupId") && component.containsKey("artifactId") && component.containsKey("version")) { maven = component.get("groupId") + "/" + component.get("artifactId") + "/" + component.get("version"); } - out.println(String.format(rowFormat, title, scheme, label, maven)); + out.println(String.format(rowFormat, title, syntax, label, maven)); } else { String title = safeNull(component.get("title")); String description = safeNull(component.get("description")); @@ -95,7 +95,7 @@ public class CatalogComponentListCommand extends AbstractCamelCommand { } else { // some of the options is optional so we need to start from 1 int maxTitleLen = TITLE_COLUMN_LABEL.length(); - int maxSchemeLen = SCHEME_COLUMN_LABEL.length(); + int maxSyntaxLen = SYNTAX_COLUMN_LABEL.length(); int maxLabelLen = LABEL_COLUMN_LABEL.length(); int maxMavenLen = MAVEN_COLUMN_LABEL.length(); int maxDescriptionLen = DESCRIPTION_COLUMN_LABEL.length(); @@ -103,9 +103,9 @@ public class CatalogComponentListCommand extends AbstractCamelCommand { for (final Map<String, String> component : components) { // grab the information and compute max len - String name = component.get("name"); - if (name != null) { - maxSchemeLen = Math.max(maxSchemeLen, name.length()); + String syntax = component.get("syntax"); + if (syntax != null) { + maxSyntaxLen = Math.max(maxSyntaxLen, syntax.length()); } String title = component.get("title"); if (title != null) { @@ -127,7 +127,7 @@ public class CatalogComponentListCommand extends AbstractCamelCommand { final Map<String, Integer> retval = new Hashtable<String, Integer>(); retval.put(TITLE_COLUMN_LABEL, maxTitleLen); - retval.put(SCHEME_COLUMN_LABEL, maxSchemeLen); + retval.put(SYNTAX_COLUMN_LABEL, maxSyntaxLen); retval.put(LABEL_COLUMN_LABEL, maxLabelLen); retval.put(MAVEN_COLUMN_LABEL, maxMavenLen); retval.put(DESCRIPTION_COLUMN_LABEL, maxDescriptionLen); @@ -152,18 +152,18 @@ public class CatalogComponentListCommand extends AbstractCamelCommand { if (verbose) { int titleLen = Math.min(columnWidths.get(TITLE_COLUMN_LABEL) + columnWidthIncrement, getMaxColumnWidth()); - int schemeLen = Math.min(columnWidths.get(SCHEME_COLUMN_LABEL) + columnWidthIncrement, getMaxColumnWidth()); + int syntaxLen = Math.min(columnWidths.get(SYNTAX_COLUMN_LABEL) + columnWidthIncrement, getMaxColumnWidth()); int labelLen = Math.min(columnWidths.get(LABEL_COLUMN_LABEL) + columnWidthIncrement, getMaxColumnWidth()); int mavenLen = Math.min(columnWidths.get(MAVEN_COLUMN_LABEL) + columnWidthIncrement, getMaxColumnWidth()); titleLen = Math.max(MIN_COLUMN_WIDTH, titleLen); - schemeLen = Math.max(MIN_COLUMN_WIDTH, schemeLen); + syntaxLen = Math.max(MIN_COLUMN_WIDTH, syntaxLen); labelLen = Math.max(MIN_COLUMN_WIDTH, labelLen); mavenLen = Math.max(MIN_COLUMN_WIDTH, mavenLen); final StringBuilder retval = new StringBuilder(DEFAULT_FORMAT_BUFFER_LENGTH); retval.append(fieldPreamble).append("%-").append(titleLen).append('.').append(titleLen).append('s').append(fieldPostamble).append(' '); - retval.append(fieldPreamble).append("%-").append(schemeLen).append('.').append(schemeLen).append('s').append(fieldPostamble).append(' '); + retval.append(fieldPreamble).append("%-").append(syntaxLen).append('.').append(syntaxLen).append('s').append(fieldPostamble).append(' '); retval.append(fieldPreamble).append("%-").append(labelLen).append('.').append(labelLen).append('s').append(fieldPostamble).append(' '); retval.append(fieldPreamble).append("%-").append(mavenLen).append('.').append(mavenLen).append('s').append(fieldPostamble).append(' '); return retval.toString(); http://git-wip-us.apache.org/repos/asf/camel/blob/edeb983b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java ---------------------------------------------------------------------- diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java index 61e5dbc..1f4025a 100644 --- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java +++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/EndpointAnnotationProcessor.java @@ -143,9 +143,10 @@ public class EndpointAnnotationProcessor extends AbstractAnnotationProcessor { writer.println("</header>"); writer.println("<body>"); writer.println("<h1>" + title + "</h1>"); - writer.println("<b>Description:</b> " + description + "<br/>"); writer.println("<b>Scheme:</b> " + scheme + "<br/>"); writer.println("<b>Syntax:</b> " + syntax + "<br/>"); + writer.println("<b>Description:</b> " + description + "<br/>"); + writer.println("<b>Deprecated:</b>" + componentModel.isDeprecated() + "<br/>"); writer.println("<b>Maven:</b> " + componentModel.getGroupId() + "/" + componentModel.getArtifactId() + "/" + componentModel.getVersionId() + "<br/>"); writeHtmlDocumentationAndFieldInjections(writer, roundEnv, componentModel, classElement, ""); @@ -212,6 +213,7 @@ public class EndpointAnnotationProcessor extends AbstractAnnotationProcessor { buffer.append("\n \"title\": \"").append(componentModel.getTitle()).append("\","); buffer.append("\n \"description\": \"").append(componentModel.getDescription()).append("\","); buffer.append("\n \"label\": \"").append(getOrElse(componentModel.getLabel(), "")).append("\","); + buffer.append("\n \"deprecated\": \"").append(componentModel.isDeprecated()).append("\","); if (componentModel.isConsumerOnly()) { buffer.append("\n \"consumerOnly\": \"").append("true").append("\","); } else if (componentModel.isProducerOnly()) { @@ -439,6 +441,16 @@ public class EndpointAnnotationProcessor extends AbstractAnnotationProcessor { } else { model.setDescription(""); } + + // we can mark a component as deprecated by using the annotation or in the pom.xml + boolean deprecated = endpointClassElement.getAnnotation(Deprecated.class) != null; + if (!deprecated) { + String name = map.get("projectName"); + // we may have marked a component as deprecated in the project name + deprecated = name != null && name.contains("(deprecated)"); + } + model.setDeprecated(deprecated); + if (map.containsKey("groupId")) { model.setGroupId(map.get("groupId")); } else { http://git-wip-us.apache.org/repos/asf/camel/blob/edeb983b/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/ComponentModel.java ---------------------------------------------------------------------- diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/ComponentModel.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/ComponentModel.java index 56810ec..9de77f4 100644 --- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/ComponentModel.java +++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/model/ComponentModel.java @@ -30,6 +30,7 @@ public final class ComponentModel { private String label; private boolean consumerOnly; private boolean producerOnly; + private boolean deprecated; public ComponentModel(String scheme) { this.scheme = scheme; @@ -126,4 +127,12 @@ public final class ComponentModel { public void setProducerOnly(boolean producerOnly) { this.producerOnly = producerOnly; } + + public boolean isDeprecated() { + return deprecated; + } + + public void setDeprecated(boolean deprecated) { + this.deprecated = deprecated; + } }