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 <gno...@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;