You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2020/01/15 16:12:09 UTC
[camel] 03/07: Move srcgen to camel-tooling-util
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 01e676338fea7f0664188e148a05a52d94e91c6b
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Mon Jan 13 08:31:12 2020 +0100
Move srcgen to camel-tooling-util
---
.../maven/config/ConnectorConfigGenerator.java | 8 +-
.../camel/tooling/util}/srcgen/Annotation.java | 2 +-
.../apache/camel/tooling/util}/srcgen/Field.java | 2 +-
.../camel/tooling/util}/srcgen/GenericType.java | 6 +-
.../camel/tooling/util}/srcgen/JavaClass.java | 153 +++++++++++++--------
.../apache/camel/tooling/util}/srcgen/Javadoc.java | 2 +-
.../apache/camel/tooling/util}/srcgen/Method.java | 24 +++-
.../apache/camel/tooling/util}/srcgen/Param.java | 2 +-
.../camel/tooling/util}/srcgen/Property.java | 2 +-
.../camel/maven/packaging/EndpointDslMojo.java | 8 +-
10 files changed, 134 insertions(+), 75 deletions(-)
diff --git a/components/camel-debezium-common/camel-debezium-maven-plugin/src/main/java/org/apache/camel/maven/config/ConnectorConfigGenerator.java b/components/camel-debezium-common/camel-debezium-maven-plugin/src/main/java/org/apache/camel/maven/config/ConnectorConfigGenerator.java
index 4893914..67cff02 100644
--- a/components/camel-debezium-common/camel-debezium-maven-plugin/src/main/java/org/apache/camel/maven/config/ConnectorConfigGenerator.java
+++ b/components/camel-debezium-common/camel-debezium-maven-plugin/src/main/java/org/apache/camel/maven/config/ConnectorConfigGenerator.java
@@ -27,9 +27,9 @@ import io.debezium.config.Configuration;
import io.debezium.config.Field;
import io.debezium.relational.history.FileDatabaseHistory;
import org.apache.camel.component.debezium.configuration.ConfigurationValidation;
-import org.apache.camel.maven.packaging.srcgen.Annotation;
-import org.apache.camel.maven.packaging.srcgen.JavaClass;
-import org.apache.camel.maven.packaging.srcgen.Method;
+import org.apache.camel.tooling.util.srcgen.Annotation;
+import org.apache.camel.tooling.util.srcgen.JavaClass;
+import org.apache.camel.tooling.util.srcgen.Method;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriParam;
import org.apache.camel.spi.UriParams;
@@ -173,7 +173,7 @@ public final class ConnectorConfigGenerator {
// connector fields
dbzConfigFields.forEach((fieldName, fieldConfig) -> {
if (!isFieldInternalOrDeprecated(fieldConfig)) {
- final org.apache.camel.maven.packaging.srcgen.Field field = javaClass.addField()
+ final org.apache.camel.tooling.util.srcgen.Field field = javaClass.addField()
.setName(fieldConfig.getFieldName())
.setType(fieldConfig.getRawType())
.setPrivate();
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Annotation.java b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Annotation.java
similarity index 98%
rename from tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Annotation.java
rename to tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Annotation.java
index 992a122..34c1ef8 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Annotation.java
+++ b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Annotation.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.maven.packaging.srcgen;
+package org.apache.camel.tooling.util.srcgen;
import java.util.LinkedHashMap;
import java.util.stream.Collectors;
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Field.java b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Field.java
similarity index 98%
rename from tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Field.java
rename to tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Field.java
index 1fd3cac..edfc731 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Field.java
+++ b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Field.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.maven.packaging.srcgen;
+package org.apache.camel.tooling.util.srcgen;
import java.util.ArrayList;
import java.util.List;
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/GenericType.java b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/GenericType.java
similarity index 99%
rename from tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/GenericType.java
rename to tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/GenericType.java
index abc325a..1f1b064 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/GenericType.java
+++ b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/GenericType.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.maven.packaging.srcgen;
+package org.apache.camel.tooling.util.srcgen;
import java.lang.reflect.Array;
import java.lang.reflect.GenericArrayType;
@@ -29,10 +29,10 @@ import java.util.Map;
@SuppressWarnings("rawtypes")
public class GenericType {
- private static final GenericType ALL = new GenericType(Object.class);
-
private static final GenericType[] EMPTY = new GenericType[0];
+ private static final GenericType ALL = new GenericType(Object.class);
+
private static final Map<String, Class> PRIMITIVE_CLASSES = new HashMap<>();
public enum BoundType {
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/JavaClass.java b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/JavaClass.java
similarity index 81%
rename from tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/JavaClass.java
rename to tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/JavaClass.java
index 4c44e8e..d0e47c1 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/JavaClass.java
+++ b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/JavaClass.java
@@ -14,10 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.maven.packaging.srcgen;
+package org.apache.camel.tooling.util.srcgen;
import java.util.ArrayList;
import java.util.Comparator;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -25,7 +26,6 @@ import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
-import org.jboss.forge.roaster.model.util.Strings;
public class JavaClass {
@@ -49,6 +49,7 @@ public class JavaClass {
boolean isAbstract;
boolean isClass = true;
boolean isEnum;
+ int maxImportPerPackage = 10;
public JavaClass() {
}
@@ -69,6 +70,10 @@ public class JavaClass {
}
}
+ public void setMaxImportPerPackage(int maxImportPerPackage) {
+ this.maxImportPerPackage = maxImportPerPackage;
+ }
+
public JavaClass setStatic(boolean aStatic) {
isStatic = aStatic;
return this;
@@ -243,6 +248,20 @@ public class JavaClass {
imports.removeIf(f -> f.startsWith("java.lang.") || f.startsWith(packageName + "."));
imports.removeIf(GenericType::isPrimitive);
+ Map<String, List<String>> importsByPackages = new LinkedHashMap<>();
+ for (String imp : imports) {
+ String key = imp.substring(0, imp.lastIndexOf('.'));
+ importsByPackages.computeIfAbsent(key, k -> new ArrayList<>()).add(imp);
+ }
+ imports.clear();
+ for (Map.Entry<String, List<String>> e : importsByPackages.entrySet()) {
+ if (e.getValue().size() < maxImportPerPackage) {
+ imports.addAll(e.getValue());
+ } else {
+ imports.add(e.getKey() + ".*");
+ }
+ }
+
sb.append("package ").append(packageName).append(";\n");
sb.append("\n");
if (!imports.isEmpty()) {
@@ -267,7 +286,7 @@ public class JavaClass {
.append("enum ").append(name).append(" {\n")
.append(indent)
.append(" ")
- .append(Strings.join(values, ",\n" + indent + " "))
+ .append(String.join(",\n" + indent + " ", values))
.append(";\n")
.append(indent)
.append("}");
@@ -289,7 +308,7 @@ public class JavaClass {
}
if (!implementNames.isEmpty()) {
sb2.append(isClass ? " implements " : " extends ")
- .append(Strings.join(implementNames, ", "));
+ .append(String.join(", ", implementNames));
}
sb2.append(" {");
if (sb2.length() < 80) {
@@ -311,7 +330,7 @@ public class JavaClass {
if (!implementNames.isEmpty()) {
sb.append("\n");
sb.append(indent).append(isClass ? " implements\n" : " extends\n");
- sb.append(indent).append(" ").append(Strings.join(implementNames, ", "));
+ sb.append(indent).append(" ").append(String.join(", ", implementNames));
}
sb.append(" {\n");
}
@@ -415,73 +434,91 @@ public class JavaClass {
}
printAnnotations(sb, indent, method.annotations);
- StringBuilder sb2 = new StringBuilder();
- sb2.append(indent);
- if (method.isPublic) {
- sb2.append("public ");
- } else if (method.isProtected) {
- sb2.append("protected ");
- }
- if (method.isDefault) {
- sb2.append("default ");
- }
- if (method.isStatic) {
- sb2.append("static ");
- }
- if (!method.isConstructor) {
- sb2.append(method.returnType != null ? shortName(method.returnType) : "void");
- sb2.append(" ");
- }
- sb2.append(method.name);
- sb2.append("(");
- sb2.append(method.parameters.stream().map(p -> shortName(p.type) + " " + p.name)
- .collect(Collectors.joining(", ")));
- sb2.append(") ");
- if (!method.exceptions.isEmpty()) {
- sb2.append("throws ");
- sb2.append(method.exceptions.stream().map(this::shortName).collect(Collectors.joining(", ", "", " ")));
- }
- sb2.append("{");
- if (sb2.length() < 84) {
- sb.append(sb2);
+ if (method.signature != null) {
+ sb.append(method.signature);
+ if (!method.isAbstract) {
+ sb.append(" {");
+ }
} else {
- sb.append(indent);
+ StringBuilder sb2 = new StringBuilder();
+ sb2.append(indent);
if (method.isPublic) {
- sb.append("public ");
+ sb2.append("public ");
} else if (method.isProtected) {
- sb.append("protected ");
+ sb2.append("protected ");
+ } else if (method.isPrivate) {
+ sb2.append("private ");
}
if (method.isDefault) {
- sb.append("default ");
+ sb2.append("default ");
}
if (method.isStatic) {
- sb.append("static ");
+ sb2.append("static ");
}
- sb.append(shortName(method.returnType));
- sb.append(" ");
- sb.append(method.name);
- if (method.parameters.size() > 0) {
- sb.append("(\n");
- sb.append(method.parameters.stream().map(p -> indent + " " + shortName(p.type) + " " + p.name)
- .collect(Collectors.joining(",\n")));
- sb.append(")");
- } else {
- sb.append("()");
+ if (!method.isConstructor) {
+ sb2.append(method.returnType != null ? shortName(method.returnType) : "void");
+ sb2.append(" ");
}
+ sb2.append(method.name);
+ sb2.append("(");
+ sb2.append(method.parameters.stream().map(p -> shortName(p.type) + " " + p.name)
+ .collect(Collectors.joining(", ")));
+ sb2.append(") ");
if (!method.exceptions.isEmpty()) {
- sb.append("\n throws");
- sb.append(method.exceptions.stream().map(this::shortName).collect(Collectors.joining(", ", " ", "")));
+ sb2.append("throws ");
+ sb2.append(method.exceptions.stream().map(this::shortName).collect(Collectors.joining(", ", "", " ")));
+ }
+ if (!method.isAbstract) {
+ sb2.append("{");
+ }
+ if (sb2.length() < 84) {
+ sb.append(sb2);
+ } else {
+ sb.append(indent);
+ if (method.isPublic) {
+ sb.append("public ");
+ } else if (method.isProtected) {
+ sb.append("protected ");
+ } else if (method.isPrivate) {
+ sb.append("private ");
+ }
+ if (method.isDefault) {
+ sb.append("default ");
+ }
+ if (!method.isConstructor) {
+ sb.append(method.returnType != null ? shortName(method.returnType) : "void");
+ sb.append(" ");
+ }
+ sb.append(method.name);
+ if (method.parameters.size() > 0) {
+ sb.append("(\n");
+ sb.append(method.parameters.stream().map(p -> indent + " " + shortName(p.type) + " " + p.name)
+ .collect(Collectors.joining(",\n")));
+ sb.append(")");
+ } else {
+ sb.append("()");
+ }
+ if (!method.exceptions.isEmpty()) {
+ sb.append("\n throws");
+ sb.append(method.exceptions.stream().map(this::shortName).collect(Collectors.joining(", ", " ", "")));
+ }
+ if (!method.isAbstract) {
+ sb.append(" {");
+ }
}
- sb.append(" {");
}
- sb.append("\n");
- for (String l : method.body.split("\n")) {
- sb.append(indent);
- sb.append(" ");
- sb.append(l);
+ if (!method.isAbstract) {
sb.append("\n");
+ for (String l : method.body.split("\n")) {
+ sb.append(indent);
+ sb.append(" ");
+ sb.append(l);
+ sb.append("\n");
+ }
+ sb.append(indent).append("}\n");
+ } else {
+ sb.append(";\n");
}
- sb.append(indent).append("}\n");
}
private void printField(StringBuilder sb, String indent, Field field) {
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Javadoc.java b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Javadoc.java
similarity index 95%
rename from tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Javadoc.java
rename to tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Javadoc.java
index 97b1132..a1ca7c6 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Javadoc.java
+++ b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Javadoc.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.maven.packaging.srcgen;
+package org.apache.camel.tooling.util.srcgen;
public class Javadoc {
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Method.java b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Method.java
similarity index 87%
rename from tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Method.java
rename to tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Method.java
index 66f388f..8277350 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Method.java
+++ b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Method.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.maven.packaging.srcgen;
+package org.apache.camel.tooling.util.srcgen;
import java.lang.reflect.Type;
import java.util.ArrayList;
@@ -27,23 +27,40 @@ public class Method {
boolean isDefault;
boolean isPublic;
boolean isProtected;
+ boolean isPrivate;
boolean isStatic;
boolean isConstructor;
+ boolean isAbstract;
+ String signature;
String body;
List<Param> parameters = new ArrayList<>();
List<GenericType> exceptions = new ArrayList<>();
List<Annotation> annotations = new ArrayList<>();
Javadoc javadoc = new Javadoc();
+ public Method setSignature(String signature) {
+ this.signature = signature;
+ return this;
+ }
+
public Method setPublic() {
isPublic = true;
isProtected = false;
+ isPrivate = false;
return this;
}
public Method setProtected() {
isPublic = false;
isProtected = true;
+ isPrivate = false;
+ return this;
+ }
+
+ public Method setPrivate() {
+ isPublic = false;
+ isProtected = false;
+ isPrivate = true;
return this;
}
@@ -57,6 +74,11 @@ public class Method {
return this;
}
+ public Method setAbstract() {
+ isAbstract = true;
+ return this;
+ }
+
public String getName() {
return name;
}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Param.java b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Param.java
similarity index 95%
rename from tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Param.java
rename to tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Param.java
index 3e79b22..9f6ae5b 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Param.java
+++ b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Param.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.maven.packaging.srcgen;
+package org.apache.camel.tooling.util.srcgen;
public class Param {
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Property.java b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Property.java
similarity index 98%
rename from tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Property.java
rename to tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Property.java
index 819e94f..5d29755 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/srcgen/Property.java
+++ b/tooling/camel-tooling-util/src/main/java/org/apache/camel/tooling/util/srcgen/Property.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.maven.packaging.srcgen;
+package org.apache.camel.tooling.util.srcgen;
public class Property {
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
index aa7ea71..0d54d1a 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
@@ -51,10 +51,10 @@ import org.apache.camel.maven.packaging.generics.GenericsUtil;
import org.apache.camel.maven.packaging.model.ComponentModel;
import org.apache.camel.maven.packaging.model.ComponentOptionModel;
import org.apache.camel.maven.packaging.model.EndpointOptionModel;
-import org.apache.camel.maven.packaging.srcgen.GenericType;
-import org.apache.camel.maven.packaging.srcgen.GenericType.BoundType;
-import org.apache.camel.maven.packaging.srcgen.JavaClass;
-import org.apache.camel.maven.packaging.srcgen.Method;
+import org.apache.camel.tooling.util.srcgen.GenericType;
+import org.apache.camel.tooling.util.srcgen.GenericType.BoundType;
+import org.apache.camel.tooling.util.srcgen.JavaClass;
+import org.apache.camel.tooling.util.srcgen.Method;
import org.apache.camel.tooling.util.JSonSchemaHelper;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;