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 2016/08/10 17:08:29 UTC
[5/7] camel git commit: CAMEL-9482: Generate json schema model for
camel-spring
CAMEL-9482: Generate json schema model for camel-spring
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/06e3b155
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/06e3b155
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/06e3b155
Branch: refs/heads/master
Commit: 06e3b155bd9607797f62a9f08eb2237d56a15e91
Parents: 3f14b02
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Aug 10 12:58:23 2016 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Aug 10 19:08:13 2016 +0200
----------------------------------------------------------------------
.../camel/spring/CamelContextFactoryBean.java | 2 +-
.../apt/CamelContextAnnotationProcessor.java | 36 ++++++++++++++++++--
.../apache/camel/tools/apt/helper/Strings.java | 15 ++++++++
.../org/apache/camel/tools/apt/StringsTest.java | 30 ++++++++++++++++
4 files changed, 79 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/06e3b155/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
----------------------------------------------------------------------
diff --git a/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java b/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
index 60547ee..652b84c 100644
--- a/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
+++ b/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
@@ -122,7 +122,7 @@ public class CamelContextFactoryBean extends AbstractCamelContextFactoryBean<Spr
private String useBreadcrumb;
@XmlAttribute
private String allowUseOriginalMessage;
- @XmlAttribute @Metadata(defaultValue = "true")
+ @XmlAttribute
private String runtimeEndpointRegistryEnabled;
@XmlAttribute
private String managementNamePattern;
http://git-wip-us.apache.org/repos/asf/camel/blob/06e3b155/tooling/apt/src/main/java/org/apache/camel/tools/apt/CamelContextAnnotationProcessor.java
----------------------------------------------------------------------
diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CamelContextAnnotationProcessor.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CamelContextAnnotationProcessor.java
index 3538ef6..bf0b3b0 100644
--- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/CamelContextAnnotationProcessor.java
+++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/CamelContextAnnotationProcessor.java
@@ -79,10 +79,11 @@ public class CamelContextAnnotationProcessor extends AbstractAnnotationProcessor
}
protected void processModelClass(final RoundEnvironment roundEnv, final TypeElement classElement) {
- // must be from org.apache.camel.model
+ // must be from camel-spring or camel-core-xml
final String javaTypeName = canonicalClassName(classElement.getQualifiedName().toString());
String packageName = javaTypeName.substring(0, javaTypeName.lastIndexOf("."));
- if (!javaTypeName.startsWith("org.apache.camel.spring")) {
+ boolean valid = javaTypeName.startsWith("org.apache.camel.spring") || javaTypeName.startsWith("org.apache.camel.core.xml");
+ if (!valid) {
return;
}
@@ -381,9 +382,38 @@ public class CamelContextAnnotationProcessor extends AbstractAnnotationProcessor
}
}
+ // is it a definition/factory-bean type then its a oneOf
+ TreeSet oneOfTypes = new TreeSet<String>();
+ if (fieldTypeName.endsWith("Definition") || fieldTypeName.endsWith("FactoryBean")) {
+ TypeElement definitionClass = findTypeElement(roundEnv, fieldTypeElement.asType().toString());
+ if (definitionClass != null) {
+ XmlRootElement rootElement = definitionClass.getAnnotation(XmlRootElement.class);
+ if (rootElement != null) {
+ String childName = rootElement.name();
+ if (childName != null) {
+ oneOfTypes.add(childName);
+ }
+ }
+ }
+ } else if (fieldTypeName.endsWith("Definition>") || fieldTypeName.endsWith("FactoryBean>")) {
+ // its a list so we need to load the generic type
+ String typeName = Strings.between(fieldTypeName, "<", ">");
+ TypeElement definitionClass = findTypeElement(roundEnv, typeName);
+ if (definitionClass != null) {
+ XmlRootElement rootElement = definitionClass.getAnnotation(XmlRootElement.class);
+ if (rootElement != null) {
+ String childName = rootElement.name();
+ if (childName != null) {
+ oneOfTypes.add(childName);
+ }
+ }
+ }
+ }
+ boolean oneOf = !oneOfTypes.isEmpty();
+
boolean deprecated = fieldElement.getAnnotation(Deprecated.class) != null;
- EipOption ep = new EipOption(name, kind, fieldTypeName, required, defaultValue, docComment, deprecated, isEnum, enums, false, null);
+ EipOption ep = new EipOption(name, kind, fieldTypeName, required, defaultValue, docComment, deprecated, isEnum, enums, oneOf, oneOfTypes);
eipOptions.add(ep);
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/06e3b155/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/Strings.java
----------------------------------------------------------------------
diff --git a/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/Strings.java b/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/Strings.java
index 30b826f..7037140 100644
--- a/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/Strings.java
+++ b/tooling/apt/src/main/java/org/apache/camel/tools/apt/helper/Strings.java
@@ -100,4 +100,19 @@ public final class Strings {
return quote + text + quote;
}
+ /**
+ * Clips the text between the start and end markers
+ */
+ public static String between(String text, String start, String end) {
+ int pos = text.indexOf(start);
+ if (pos > 0) {
+ text = text.substring(pos + 1);
+ }
+ int pos2 = text.lastIndexOf(end);
+ if (pos2 > 0) {
+ text = text.substring(0, pos2);
+ }
+ return text;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/06e3b155/tooling/apt/src/test/java/org/apache/camel/tools/apt/StringsTest.java
----------------------------------------------------------------------
diff --git a/tooling/apt/src/test/java/org/apache/camel/tools/apt/StringsTest.java b/tooling/apt/src/test/java/org/apache/camel/tools/apt/StringsTest.java
new file mode 100644
index 0000000..3903d53
--- /dev/null
+++ b/tooling/apt/src/test/java/org/apache/camel/tools/apt/StringsTest.java
@@ -0,0 +1,30 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.tools.apt;
+
+import org.junit.Test;
+
+import static org.apache.camel.tools.apt.helper.Strings.between;
+import static org.junit.Assert.assertEquals;
+
+public class StringsTest {
+
+ @Test
+ public void testBetween() {
+ assertEquals("org.apache.camel.model.OnCompletionDefinition", between("java.util.List<org.apache.camel.model.OnCompletionDefinition>", "<", ">"));
+ }
+}