You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2014/12/30 11:42:38 UTC
[22/29] camel git commit: CAMEL-7999: apt compiler to generate json
schema documentation for the model,
whcih we later use to enrich the xml xsd to include documentation. Work in
progress.
CAMEL-7999: apt compiler to generate json schema documentation for the model, whcih we later use to enrich the xml xsd to include documentation. Work in progress.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/e9e16b87
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/e9e16b87
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/e9e16b87
Branch: refs/heads/master
Commit: e9e16b87f7ac6743315d3c65acabcf66a0ef10d8
Parents: a1e24bd
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Dec 28 12:37:59 2014 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Tue Dec 30 10:56:46 2014 +0100
----------------------------------------------------------------------
.../java/org/apache/camel/CamelContext.java | 10 +++++
.../management/mbean/CamelOpenMBeanTypes.java | 11 +++++
.../management/mbean/ManagedProcessorMBean.java | 5 +++
.../apache/camel/impl/DefaultCamelContext.java | 19 +++++++++
.../management/mbean/ManagedProcessor.java | 44 +++++++++++++++++++-
.../management/ManagedSendProcessorTest.java | 5 +++
6 files changed, 92 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/e9e16b87/camel-core/src/main/java/org/apache/camel/CamelContext.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/CamelContext.java b/camel-core/src/main/java/org/apache/camel/CamelContext.java
index 99eefe4..28955c0 100644
--- a/camel-core/src/main/java/org/apache/camel/CamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/CamelContext.java
@@ -1408,6 +1408,16 @@ public interface CamelContext extends SuspendableService, RuntimeConfiguration {
String getEipParameterJsonSchema(String eipName) throws IOException;
/**
+ * Returns a JSON schema representation of the EIP parameters for the given EIP by its id.
+ *
+ * @param eipName the name of the EIP ({@link NamedNode#getShortName()}
+ * @param id optional id of an EIP in use from any of the routes to explain
+ * @param includeAllOptions whether to include non configured options also (eg default options)
+ * @return the json or <tt>null</tt> if the eipName or the id was not found
+ */
+ String explainEipJson(String eipName, String id, boolean includeAllOptions);
+
+ /**
* Returns a JSON schema representation of the endpoint parameters for the given endpoint uri.
*
* @param uri the endpoint uri
http://git-wip-us.apache.org/repos/asf/camel/blob/e9e16b87/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 070f5c8..df14e88 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
@@ -77,6 +77,17 @@ public final class CamelOpenMBeanTypes {
new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
}
+ public static TabularType explainEipTabularType() throws OpenDataException {
+ CompositeType ct = explainEipsCompositeType();
+ return new TabularType("explainEip", "Explain how this EIP is configured", ct, new String[]{"option"});
+ }
+
+ public static CompositeType explainEipsCompositeType() throws OpenDataException {
+ return new CompositeType("eips", "EIPs", new String[]{"option", "kind", "type", "java type", "value", "default value", "description"},
+ new String[]{"Option", "Kind", "Type", "Java Type", "Value", "Default Value", "Description"},
+ new OpenType[]{SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.STRING});
+ }
+
public static TabularType listComponentsTabularType() throws OpenDataException {
CompositeType ct = listComponentsCompositeType();
return new TabularType("listComponents", "Lists all the components", ct, new String[]{"name"});
http://git-wip-us.apache.org/repos/asf/camel/blob/e9e16b87/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java
index eaf16d5..f5c43a1 100644
--- a/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java
+++ b/camel-core/src/main/java/org/apache/camel/api/management/mbean/ManagedProcessorMBean.java
@@ -16,6 +16,8 @@
*/
package org.apache.camel.api.management.mbean;
+import javax.management.openmbean.TabularData;
+
import org.apache.camel.api.management.ManagedAttribute;
import org.apache.camel.api.management.ManagedOperation;
@@ -45,4 +47,7 @@ public interface ManagedProcessorMBean extends ManagedPerformanceCounterMBean {
@ManagedOperation(description = "Stop Processor")
void stop() throws Exception;
+ @ManagedOperation(description = "Explain how this processor is configured")
+ TabularData explain(boolean allOptions);
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/camel/blob/e9e16b87/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
index d1d5369..c074ece 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
@@ -1179,6 +1179,25 @@ public class DefaultCamelContext extends ServiceSupport implements ModelCamelCon
return null;
}
+ public String explainEipJson(String eipName, String id, boolean includeAllOptions) {
+ try {
+ String json = getEipParameterJsonSchema(eipName);
+ if (json == null) {
+ return null;
+ }
+
+ return json;
+
+ // TODO: overlay with runtime parameters that id uses at runtime
+
+ //List<Map<String, String>> rows = JsonSchemaHelper.parseJsonSchema("properties", json, true);
+
+ } catch (Exception e) {
+ // ignore and return empty response
+ return null;
+ }
+ }
+
/**
* Sanitizes the component name by removing dash (-) in the name, when using the component name to load
* resources from the classpath.
http://git-wip-us.apache.org/repos/asf/camel/blob/e9e16b87/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
index c3d6dd3..b38a6cc 100644
--- a/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
+++ b/camel-core/src/main/java/org/apache/camel/management/mbean/ManagedProcessor.java
@@ -16,6 +16,14 @@
*/
package org.apache.camel.management.mbean;
+import java.util.List;
+import java.util.Map;
+import javax.management.openmbean.CompositeData;
+import javax.management.openmbean.CompositeDataSupport;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.TabularDataSupport;
+
import org.apache.camel.CamelContext;
import org.apache.camel.ManagementStatisticsLevel;
import org.apache.camel.Processor;
@@ -24,8 +32,11 @@ import org.apache.camel.ServiceStatus;
import org.apache.camel.StatefulService;
import org.apache.camel.api.management.ManagedInstance;
import org.apache.camel.api.management.ManagedResource;
+import org.apache.camel.api.management.mbean.CamelOpenMBeanTypes;
import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.util.JsonSchemaHelper;
+import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.ServiceHelper;
/**
@@ -54,6 +65,10 @@ public class ManagedProcessor extends ManagedPerformanceCounter implements Manag
return context;
}
+ public Object getInstance() {
+ return processor;
+ }
+
public Processor getProcessor() {
return processor;
}
@@ -122,7 +137,32 @@ public class ManagedProcessor extends ManagedPerformanceCounter implements Manag
ServiceHelper.stopService(getProcessor());
}
- public Object getInstance() {
- return processor;
+ public TabularData explain(boolean allOptions) {
+ try {
+ String json = context.explainEipJson(definition.getShortName(), id, allOptions);
+ List<Map<String, String>> rows = JsonSchemaHelper.parseJsonSchema("properties", json, true);
+
+ TabularData answer = new TabularDataSupport(CamelOpenMBeanTypes.explainEipTabularType());
+
+ for (Map<String, String> row : rows) {
+ String name = row.get("name");
+ String kind = row.get("kind");
+ String type = row.get("type");
+ String javaType = row.get("javaType");
+ String value = row.get("value") != null ? row.get("value") : "";
+ String defaultValue = row.get("defaultValue") != null ? row.get("defaultValue") : "";
+ String description = row.get("description") != null ? row.get("description") : "";
+
+ CompositeType ct = CamelOpenMBeanTypes.explainEipsCompositeType();
+ CompositeData data = new CompositeDataSupport(ct,
+ new String[]{"option", "kind", "type", "java type", "value", "default value", "description"},
+ new Object[]{name, kind, type, javaType, value, defaultValue, description});
+ answer.put(data);
+ }
+
+ return answer;
+ } catch (Exception e) {
+ throw ObjectHelper.wrapRuntimeCamelException(e);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/e9e16b87/camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
----------------------------------------------------------------------
diff --git a/camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java b/camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
index c720bdc..af7d187 100644
--- a/camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
+++ b/camel-core/src/test/java/org/apache/camel/management/ManagedSendProcessorTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.management;
import javax.management.MBeanServer;
import javax.management.ObjectName;
+import javax.management.openmbean.TabularData;
import org.apache.camel.ServiceStatus;
import org.apache.camel.builder.RouteBuilder;
@@ -64,6 +65,10 @@ public class ManagedSendProcessorTest extends ManagementTestSupport {
String pattern = (String) mbeanServer.getAttribute(on, "MessageExchangePattern");
assertNull(pattern);
+
+ TabularData data = (TabularData) mbeanServer.invoke(on, "explain", new Object[]{true}, new String[]{"boolean"});
+ assertNotNull(data);
+ assertEquals(7, data.size());
}
@Override