You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2022/06/30 12:01:24 UTC
[camel] 01/03: (chores) camel-route-parser: remove duplicated parsing-related code
This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 91554c5fb18b16966e05f7883ae43d1c01f1ca41
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Thu Jun 30 13:02:11 2022 +0200
(chores) camel-route-parser: remove duplicated parsing-related code
---
.../apache/camel/parser/RouteBuilderParser.java | 145 +++++++++------------
1 file changed, 59 insertions(+), 86 deletions(-)
diff --git a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
index 098532aff3f..18fe868d61e 100644
--- a/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
+++ b/catalog/camel-route-parser/src/main/java/org/apache/camel/parser/RouteBuilderParser.java
@@ -61,17 +61,7 @@ public final class RouteBuilderParser {
JavaClassSource clazz, String fullyQualifiedFileName,
boolean includeInlinedRouteBuilders) {
- List<MethodSource<JavaClassSource>> methods = new ArrayList<>();
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
- if (method != null) {
- methods.add(method);
- }
- if (includeInlinedRouteBuilders) {
- List<MethodSource<JavaClassSource>> inlinedMethods = CamelJavaParserHelper.findInlinedConfigureMethods(clazz);
- if (!inlinedMethods.isEmpty()) {
- methods.addAll(inlinedMethods);
- }
- }
+ List<MethodSource<JavaClassSource>> methods = findAllConfigureMethods(clazz, includeInlinedRouteBuilders);
CamelJavaTreeParserHelper parser = new CamelJavaTreeParserHelper();
List<CamelNodeDetails> list = new ArrayList<>();
@@ -146,10 +136,7 @@ public final class RouteBuilderParser {
if (!Strings.isNullOrEmpty(uri) && findEndpointByUri(endpoints, uri) == null) {
// we only want the relative dir name from the
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
+ String fileName = parseFileName(baseDir, fullyQualifiedFileName);
String id = field.getName();
CamelEndpointDetails detail = new CamelEndpointDetails();
@@ -187,17 +174,7 @@ public final class RouteBuilderParser {
}
// find all the configure methods
- List<MethodSource<JavaClassSource>> methods = new ArrayList<>();
- MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
- if (method != null) {
- methods.add(method);
- }
- if (includeInlinedRouteBuilders) {
- List<MethodSource<JavaClassSource>> inlinedMethods = CamelJavaParserHelper.findInlinedConfigureMethods(clazz);
- if (!inlinedMethods.isEmpty()) {
- methods.addAll(inlinedMethods);
- }
- }
+ List<MethodSource<JavaClassSource>> methods = findAllConfigureMethods(clazz, includeInlinedRouteBuilders);
// look if any of these fields are used in the route only as consumer or producer, as then we can
// determine this to ensure when we edit the endpoint we should only the options accordingly
@@ -210,31 +187,9 @@ public final class RouteBuilderParser {
unparsable.add(result.getElement());
}
} else {
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
+ String fileName = parseFileName(baseDir, fullyQualifiedFileName);
- CamelEndpointDetails detail = new CamelEndpointDetails();
- detail.setFileName(fileName);
- detail.setClassName(clazz.getQualifiedName());
- detail.setMethodName(configureMethod.getName());
- detail.setEndpointInstance(null);
- detail.setEndpointUri(result.getElement());
- int line = findLineNumber(clazz.toUnformattedString(), result.getPosition());
- if (line > -1) {
- detail.setLineNumber("" + line);
- }
- int lineEnd = findLineNumber(clazz.toUnformattedString(), result.getPosition() + result.getLength());
- if (lineEnd > -1) {
- detail.setLineNumberEnd("" + lineEnd);
- }
- detail.setAbsolutePosition(result.getPosition());
- int linePos = findLinePosition(clazz.toUnformattedString(), result.getPosition());
- if (linePos > -1) {
- detail.setLinePosition(linePos);
- }
- detail.setEndpointComponentName(endpointComponentName(result.getElement()));
+ CamelEndpointDetails detail = buildCamelEndpointDetails(clazz, configureMethod, result, fileName);
detail.setConsumerOnly(true);
detail.setProducerOnly(false);
endpoints.add(detail);
@@ -250,31 +205,9 @@ public final class RouteBuilderParser {
} else {
// the same endpoint uri may be used in multiple places in the same route
// so we should maybe add all of them
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
+ String fileName = parseFileName(baseDir, fullyQualifiedFileName);
- CamelEndpointDetails detail = new CamelEndpointDetails();
- detail.setFileName(fileName);
- detail.setClassName(clazz.getQualifiedName());
- detail.setMethodName(configureMethod.getName());
- detail.setEndpointInstance(null);
- detail.setEndpointUri(result.getElement());
- int line = findLineNumber(clazz.toUnformattedString(), result.getPosition());
- if (line > -1) {
- detail.setLineNumber("" + line);
- }
- int endLine = findLineNumber(clazz.toUnformattedString(), result.getPosition() + result.getLength());
- if (endLine > -1) {
- detail.setLineNumberEnd("" + endLine);
- }
- detail.setAbsolutePosition(result.getPosition());
- int linePos = findLinePosition(clazz.toUnformattedString(), result.getPosition());
- if (linePos > -1) {
- detail.setLinePosition(linePos);
- }
- detail.setEndpointComponentName(endpointComponentName(result.getElement()));
+ CamelEndpointDetails detail = buildCamelEndpointDetails(clazz, configureMethod, result, fileName);
detail.setConsumerOnly(false);
detail.setProducerOnly(true);
endpoints.add(detail);
@@ -283,6 +216,55 @@ public final class RouteBuilderParser {
}
}
+ private static List<MethodSource<JavaClassSource>> findAllConfigureMethods(
+ JavaClassSource clazz, boolean includeInlinedRouteBuilders) {
+ List<MethodSource<JavaClassSource>> methods = new ArrayList<>();
+ MethodSource<JavaClassSource> method = CamelJavaParserHelper.findConfigureMethod(clazz);
+ if (method != null) {
+ methods.add(method);
+ }
+ if (includeInlinedRouteBuilders) {
+ List<MethodSource<JavaClassSource>> inlinedMethods = CamelJavaParserHelper.findInlinedConfigureMethods(clazz);
+ if (!inlinedMethods.isEmpty()) {
+ methods.addAll(inlinedMethods);
+ }
+ }
+ return methods;
+ }
+
+ private static CamelEndpointDetails buildCamelEndpointDetails(
+ JavaClassSource clazz, MethodSource<JavaClassSource> configureMethod, ParserResult result, String fileName) {
+ CamelEndpointDetails detail = new CamelEndpointDetails();
+ detail.setFileName(fileName);
+ detail.setClassName(clazz.getQualifiedName());
+ detail.setMethodName(configureMethod.getName());
+ detail.setEndpointInstance(null);
+ detail.setEndpointUri(result.getElement());
+ int line = findLineNumber(clazz.toUnformattedString(), result.getPosition());
+ if (line > -1) {
+ detail.setLineNumber("" + line);
+ }
+ int lineEnd = findLineNumber(clazz.toUnformattedString(), result.getPosition() + result.getLength());
+ if (lineEnd > -1) {
+ detail.setLineNumberEnd("" + lineEnd);
+ }
+ detail.setAbsolutePosition(result.getPosition());
+ int linePos = findLinePosition(clazz.toUnformattedString(), result.getPosition());
+ if (linePos > -1) {
+ detail.setLinePosition(linePos);
+ }
+ detail.setEndpointComponentName(endpointComponentName(result.getElement()));
+ return detail;
+ }
+
+ private static String parseFileName(String baseDir, String fullyQualifiedFileName) {
+ String fileName = fullyQualifiedFileName;
+ if (fileName.startsWith(baseDir)) {
+ fileName = fileName.substring(baseDir.length() + 1);
+ }
+ return fileName;
+ }
+
/**
* Parses the java source class to discover Camel simple expressions.
*
@@ -299,10 +281,7 @@ public final class RouteBuilderParser {
List<ParserResult> expressions = CamelJavaParserHelper.parseCamelLanguageExpressions(method, "simple");
for (ParserResult result : expressions) {
if (result.isParsed()) {
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
+ String fileName = parseFileName(baseDir, fullyQualifiedFileName);
CamelSimpleExpressionDetails detail = new CamelSimpleExpressionDetails();
detail.setFileName(fileName);
@@ -350,10 +329,7 @@ public final class RouteBuilderParser {
List<ParserResult> expressions = CamelJavaParserHelper.parseCamelLanguageExpressions(method, "csimple");
for (ParserResult result : expressions) {
if (result.isParsed()) {
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
+ String fileName = parseFileName(baseDir, fullyQualifiedFileName);
CamelCSimpleExpressionDetails detail = new CamelCSimpleExpressionDetails();
detail.setFileName(fileName);
@@ -403,10 +379,7 @@ public final class RouteBuilderParser {
for (ParserResult result : expressions) {
// route ids is assigned in java dsl using the routeId method
if (result.isParsed()) {
- String fileName = fullyQualifiedFileName;
- if (fileName.startsWith(baseDir)) {
- fileName = fileName.substring(baseDir.length() + 1);
- }
+ String fileName = parseFileName(baseDir, fullyQualifiedFileName);
CamelRouteDetails detail = new CamelRouteDetails();
detail.setFileName(fileName);