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 2023/06/13 11:46:12 UTC
[camel] branch main updated (f7fd227a3a3 -> 4e6a6e88f4f)
This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
from f7fd227a3a3 Regen for commit a3eb30c52f39f92bcf72012d89a126b93f320a23
new cf9e948ab90 (chores) camel-core-languages: cleanup duplicated code in the base simpler parser
new b78addc3aed (chores) camel-core-languages: cleanup duplicated code extracting exception information from exchanges
new 2e85ee6747f (chores) camel-core-languages: cleanup duplicated code handling string patterns
new e458905204a (chores) camel-core-languages: cleanup duplicated code handling the exchange formatter
new 89b0d32e8b7 (chores) camel-core-languages: cleanup duplicated code handling system environment variables
new ad31ff0a6f8 (chores) camel-core-languages: cleanup duplicated code handling escaping quotes
new 4e6a6e88f4f (chores) camel-core-languages: cleanup duplicated code handling creating quotes
The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../camel/language/csimple/CSimpleHelper.java | 96 +---------
.../camel/language/simple/BaseSimpleParser.java | 38 ++--
.../language/simple/SimpleExpressionBuilder.java | 26 +--
.../language/simple/SimpleExpressionParser.java | 19 +-
.../language/simple/SimplePredicateParser.java | 19 +-
.../camel/language/simple/ast/BaseSimpleNode.java | 15 ++
.../language/simple/ast/DoubleQuoteStart.java | 11 +-
.../language/simple/ast/SingleQuoteStart.java | 12 +-
.../org/apache/camel/support/LanguageHelper.java | 203 +++++++++++++++++++++
.../camel/support/builder/ExpressionBuilder.java | 30 +--
.../camel/support/builder/PredicateBuilder.java | 31 +---
11 files changed, 256 insertions(+), 244 deletions(-)
create mode 100644 core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
[camel] 02/07: (chores) camel-core-languages: cleanup duplicated code extracting exception information from exchanges
Posted by or...@apache.org.
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 b78addc3aedbb88993bfac149a681495ef58ac20
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Jun 13 09:19:23 2023 +0200
(chores) camel-core-languages: cleanup duplicated code extracting exception information from exchanges
---
.../camel/language/csimple/CSimpleHelper.java | 28 ++------
.../org/apache/camel/support/LanguageHelper.java | 79 ++++++++++++++++++++++
.../camel/support/builder/ExpressionBuilder.java | 18 +----
.../camel/support/builder/PredicateBuilder.java | 1 +
4 files changed, 86 insertions(+), 40 deletions(-)
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
index de7fc87740f..c6b83f2f5c5 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
@@ -16,8 +16,6 @@
*/
package org.apache.camel.language.csimple;
-import java.io.PrintWriter;
-import java.io.StringWriter;
import java.lang.reflect.Array;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -45,10 +43,10 @@ import org.apache.camel.spi.PropertiesComponent;
import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.support.GroupIterator;
+import org.apache.camel.support.LanguageHelper;
import org.apache.camel.support.MessageHelper;
import org.apache.camel.support.processor.DefaultExchangeFormatter;
import org.apache.camel.util.FileUtil;
-import org.apache.camel.util.IOHelper;
import org.apache.camel.util.InetAddressUtil;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.OgnlHelper;
@@ -171,11 +169,7 @@ public final class CSimpleHelper {
}
public static Exception exception(Exchange exchange) {
- Exception exception = exchange.getException();
- if (exception == null) {
- exception = exchange.getProperty(ExchangePropertyKey.EXCEPTION_CAUGHT, Exception.class);
- }
- return exception;
+ return LanguageHelper.exception(exchange);
}
public static <T> T exceptionAs(Exchange exchange, Class<T> type) {
@@ -191,25 +185,11 @@ public final class CSimpleHelper {
}
public static String exceptionMessage(Exchange exchange) {
- Exception exception = exception(exchange);
- if (exception != null) {
- return exception.getMessage();
- } else {
- return null;
- }
+ return LanguageHelper.exceptionMessage(exchange);
}
public static String exceptionStacktrace(Exchange exchange) {
- Exception exception = exception(exchange);
- if (exception != null) {
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- exception.printStackTrace(pw);
- IOHelper.close(pw, sw);
- return sw.toString();
- } else {
- return null;
- }
+ return LanguageHelper.exceptionStacktrace(exchange);
}
public static String threadName() {
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
new file mode 100644
index 00000000000..2ced7d58cc8
--- /dev/null
+++ b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
@@ -0,0 +1,79 @@
+/*
+ * 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.support;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePropertyKey;
+import org.apache.camel.util.IOHelper;
+
+public final class LanguageHelper {
+ private LanguageHelper() {
+
+ }
+
+ /**
+ * Extracts the exception from an Exchange
+ *
+ * @param exchange the exchange to extract the exception
+ * @return the exception or null if not present
+ */
+ public static Exception exception(Exchange exchange) {
+ Exception exception = exchange.getException();
+ if (exception == null) {
+ exception = exchange.getProperty(ExchangePropertyKey.EXCEPTION_CAUGHT, Exception.class);
+ }
+ return exception;
+ }
+
+ /**
+ * Extracts the exception message from an exchange
+ *
+ * @param exchange the exchange to extract the exception
+ * @return the message or null if not found
+ */
+ public static String exceptionMessage(Exchange exchange) {
+ Exception exception = exception(exchange);
+ if (exception != null) {
+ return exception.getMessage();
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Gets the exception stack trace from an exchange
+ *
+ * @param exchange exchange the exchange to extract the stack trace
+ * @return the stack trace or null if no exception is present on the exchange
+ */
+ public static String exceptionStacktrace(Exchange exchange) {
+ Exception exception = exception(exchange);
+ if (exception != null) {
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ exception.printStackTrace(pw);
+ IOHelper.close(pw, sw);
+ return sw.toString();
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
index 73455f148f1..0c8e4f0ce4a 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
@@ -16,8 +16,6 @@
*/
package org.apache.camel.support.builder;
-import java.io.PrintWriter;
-import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
@@ -51,8 +49,8 @@ import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.support.ExpressionAdapter;
import org.apache.camel.support.GroupIterator;
import org.apache.camel.support.GroupTokenIterator;
+import org.apache.camel.support.LanguageHelper;
import org.apache.camel.support.LanguageSupport;
-import org.apache.camel.util.IOHelper;
import org.apache.camel.util.InetAddressUtil;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.StringHelper;
@@ -452,19 +450,7 @@ public class ExpressionBuilder {
return new ExpressionAdapter() {
@Override
public Object evaluate(Exchange exchange) {
- Exception exception = exchange.getException();
- if (exception == null) {
- exception = exchange.getProperty(ExchangePropertyKey.EXCEPTION_CAUGHT, Exception.class);
- }
- if (exception != null) {
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- exception.printStackTrace(pw);
- IOHelper.close(pw, sw);
- return sw.toString();
- } else {
- return null;
- }
+ return LanguageHelper.exceptionStacktrace(exchange);
}
@Override
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/builder/PredicateBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/PredicateBuilder.java
index 522bcc4d8ec..531ec238734 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/builder/PredicateBuilder.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/PredicateBuilder.java
@@ -26,6 +26,7 @@ import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
import org.apache.camel.support.ExpressionToPredicateAdapter;
+import org.apache.camel.support.LanguageHelper;
import org.apache.camel.support.ObjectHelper;
import static org.apache.camel.util.ObjectHelper.notNull;
[camel] 03/07: (chores) camel-core-languages: cleanup duplicated code handling string patterns
Posted by or...@apache.org.
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 2e85ee6747f3a9ea132b73c4398d2ad54876496f
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Jun 13 09:28:05 2023 +0200
(chores) camel-core-languages: cleanup duplicated code handling string patterns
---
.../camel/language/csimple/CSimpleHelper.java | 30 +------------
.../org/apache/camel/support/LanguageHelper.java | 50 ++++++++++++++++++++++
.../camel/support/builder/PredicateBuilder.java | 30 +------------
3 files changed, 54 insertions(+), 56 deletions(-)
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
index c6b83f2f5c5..7f71ced1498 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
@@ -605,37 +605,11 @@ public final class CSimpleHelper {
}
public static boolean startsWith(Exchange exchange, Object leftValue, Object rightValue) {
- if (leftValue == null && rightValue == null) {
- // they are equal
- return true;
- } else if (leftValue == null || rightValue == null) {
- // only one of them is null so they are not equal
- return false;
- }
- String leftStr = exchange.getContext().getTypeConverter().convertTo(String.class, leftValue);
- String rightStr = exchange.getContext().getTypeConverter().convertTo(String.class, rightValue);
- if (leftStr != null && rightStr != null) {
- return leftStr.startsWith(rightStr);
- } else {
- return false;
- }
+ return LanguageHelper.startsWith(exchange, leftValue, rightValue);
}
public static boolean endsWith(Exchange exchange, Object leftValue, Object rightValue) {
- if (leftValue == null && rightValue == null) {
- // they are equal
- return true;
- } else if (leftValue == null || rightValue == null) {
- // only one of them is null so they are not equal
- return false;
- }
- String leftStr = exchange.getContext().getTypeConverter().convertTo(String.class, leftValue);
- String rightStr = exchange.getContext().getTypeConverter().convertTo(String.class, rightValue);
- if (leftStr != null && rightStr != null) {
- return leftStr.endsWith(rightStr);
- } else {
- return false;
- }
+ return LanguageHelper.endsWith(exchange, leftValue, rightValue);
}
public static boolean is(Exchange exchange, Object leftValue, Class<?> type) {
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
index 2ced7d58cc8..ae81fe687da 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
@@ -76,4 +76,54 @@ public final class LanguageHelper {
return null;
}
}
+
+ /**
+ * Tests if the exchange ends with a given value
+ *
+ * @param exchange the exchange to test
+ * @param leftValue the value being tested
+ * @param rightValue the suffix to test
+ * @return true if it ends with or false otherwise
+ */
+ public static boolean endsWith(Exchange exchange, Object leftValue, Object rightValue) {
+ if (leftValue == null && rightValue == null) {
+ // they are equal
+ return true;
+ } else if (leftValue == null || rightValue == null) {
+ // only one of them is null so they are not equal
+ return false;
+ }
+ String leftStr = exchange.getContext().getTypeConverter().convertTo(String.class, leftValue);
+ String rightStr = exchange.getContext().getTypeConverter().convertTo(String.class, rightValue);
+ if (leftStr != null && rightStr != null) {
+ return leftStr.endsWith(rightStr);
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Tests if the exchange starts with a given value
+ *
+ * @param exchange the exchange to test
+ * @param leftValue the value being tested
+ * @param rightValue the prefix to test
+ * @return true if it starts with or false otherwise
+ */
+ public static boolean startsWith(Exchange exchange, Object leftValue, Object rightValue) {
+ if (leftValue == null && rightValue == null) {
+ // they are equal
+ return true;
+ } else if (leftValue == null || rightValue == null) {
+ // only one of them is null so they are not equal
+ return false;
+ }
+ String leftStr = exchange.getContext().getTypeConverter().convertTo(String.class, leftValue);
+ String rightStr = exchange.getContext().getTypeConverter().convertTo(String.class, rightValue);
+ if (leftStr != null && rightStr != null) {
+ return leftStr.startsWith(rightStr);
+ } else {
+ return false;
+ }
+ }
}
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/builder/PredicateBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/PredicateBuilder.java
index 531ec238734..572f6ee4897 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/builder/PredicateBuilder.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/PredicateBuilder.java
@@ -436,20 +436,7 @@ public class PredicateBuilder {
return new BinaryPredicateSupport(left, right) {
protected boolean matches(Exchange exchange, Object leftValue, Object rightValue) {
- if (leftValue == null && rightValue == null) {
- // they are equal
- return true;
- } else if (leftValue == null || rightValue == null) {
- // only one of them is null so they are not equal
- return false;
- }
- String leftStr = exchange.getContext().getTypeConverter().convertTo(String.class, leftValue);
- String rightStr = exchange.getContext().getTypeConverter().convertTo(String.class, rightValue);
- if (leftStr != null && rightStr != null) {
- return leftStr.startsWith(rightStr);
- } else {
- return false;
- }
+ return LanguageHelper.startsWith(exchange, leftValue, rightValue);
}
protected String getOperationText() {
@@ -462,20 +449,7 @@ public class PredicateBuilder {
return new BinaryPredicateSupport(left, right) {
protected boolean matches(Exchange exchange, Object leftValue, Object rightValue) {
- if (leftValue == null && rightValue == null) {
- // they are equal
- return true;
- } else if (leftValue == null || rightValue == null) {
- // only one of them is null so they are not equal
- return false;
- }
- String leftStr = exchange.getContext().getTypeConverter().convertTo(String.class, leftValue);
- String rightStr = exchange.getContext().getTypeConverter().convertTo(String.class, rightValue);
- if (leftStr != null && rightStr != null) {
- return leftStr.endsWith(rightStr);
- } else {
- return false;
- }
+ return LanguageHelper.endsWith(exchange, leftValue, rightValue);
}
protected String getOperationText() {
[camel] 04/07: (chores) camel-core-languages: cleanup duplicated code handling the exchange formatter
Posted by or...@apache.org.
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 e458905204a41013460ce76b7ce2a6f232cd41f8
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Jun 13 09:32:21 2023 +0200
(chores) camel-core-languages: cleanup duplicated code handling the exchange formatter
---
.../camel/language/csimple/CSimpleHelper.java | 25 +--------------
.../language/simple/SimpleExpressionBuilder.java | 26 ++-------------
.../org/apache/camel/support/LanguageHelper.java | 37 ++++++++++++++++++++++
3 files changed, 40 insertions(+), 48 deletions(-)
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
index 7f71ced1498..d80e3336a8f 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
@@ -40,12 +40,10 @@ import org.apache.camel.RuntimeCamelException;
import org.apache.camel.spi.ExchangeFormatter;
import org.apache.camel.spi.Language;
import org.apache.camel.spi.PropertiesComponent;
-import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.support.GroupIterator;
import org.apache.camel.support.LanguageHelper;
import org.apache.camel.support.MessageHelper;
-import org.apache.camel.support.processor.DefaultExchangeFormatter;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.InetAddressUtil;
import org.apache.camel.util.ObjectHelper;
@@ -478,28 +476,7 @@ public final class CSimpleHelper {
}
private static ExchangeFormatter getOrCreateExchangeFormatter(CamelContext camelContext) {
- if (exchangeFormatter == null) {
- exchangeFormatter = camelContext.getRegistry().findSingleByType(ExchangeFormatter.class);
- if (exchangeFormatter == null) {
- // setup exchange formatter to be used for message history dump
- DefaultExchangeFormatter def = new DefaultExchangeFormatter();
- def.setShowExchangeId(true);
- def.setMultiline(true);
- def.setShowHeaders(true);
- def.setStyle(DefaultExchangeFormatter.OutputStyle.Fixed);
- try {
- Integer maxChars = CamelContextHelper.parseInteger(camelContext,
- camelContext.getGlobalOption(Exchange.LOG_DEBUG_BODY_MAX_CHARS));
- if (maxChars != null) {
- def.setMaxChars(maxChars);
- }
- } catch (Exception e) {
- throw RuntimeCamelException.wrapRuntimeCamelException(e);
- }
- exchangeFormatter = def;
- }
- }
- return exchangeFormatter;
+ return LanguageHelper.getOrCreateExchangeFormatter(camelContext, exchangeFormatter);
}
public static boolean isEqualTo(Exchange exchange, Object leftValue, Object rightValue) {
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
index a89121eb416..9a915925280 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
@@ -34,7 +34,6 @@ import org.apache.camel.Exchange;
import org.apache.camel.ExchangePropertyKey;
import org.apache.camel.Expression;
import org.apache.camel.InvalidPayloadException;
-import org.apache.camel.RuntimeCamelException;
import org.apache.camel.spi.ClassResolver;
import org.apache.camel.spi.ExchangeFormatter;
import org.apache.camel.spi.Language;
@@ -43,11 +42,11 @@ import org.apache.camel.support.CamelContextHelper;
import org.apache.camel.support.ClassicUuidGenerator;
import org.apache.camel.support.DefaultUuidGenerator;
import org.apache.camel.support.ExpressionAdapter;
+import org.apache.camel.support.LanguageHelper;
import org.apache.camel.support.MessageHelper;
import org.apache.camel.support.ShortUuidGenerator;
import org.apache.camel.support.SimpleUuidGenerator;
import org.apache.camel.support.builder.ExpressionBuilder;
-import org.apache.camel.support.processor.DefaultExchangeFormatter;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.OgnlHelper;
@@ -102,28 +101,7 @@ public final class SimpleExpressionBuilder {
}
private ExchangeFormatter getOrCreateExchangeFormatter(CamelContext camelContext) {
- if (formatter == null) {
- formatter = camelContext.getRegistry().findSingleByType(ExchangeFormatter.class);
- if (formatter == null) {
- // setup exchange formatter to be used for message history dump
- DefaultExchangeFormatter def = new DefaultExchangeFormatter();
- def.setShowExchangeId(true);
- def.setMultiline(true);
- def.setShowHeaders(true);
- def.setStyle(DefaultExchangeFormatter.OutputStyle.Fixed);
- try {
- Integer maxChars = CamelContextHelper.parseInteger(camelContext,
- camelContext.getGlobalOption(Exchange.LOG_DEBUG_BODY_MAX_CHARS));
- if (maxChars != null) {
- def.setMaxChars(maxChars);
- }
- } catch (Exception e) {
- throw RuntimeCamelException.wrapRuntimeCamelException(e);
- }
- formatter = def;
- }
- }
- return formatter;
+ return LanguageHelper.getOrCreateExchangeFormatter(camelContext, formatter);
}
@Override
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
index ae81fe687da..3334d524754 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
@@ -20,8 +20,12 @@ package org.apache.camel.support;
import java.io.PrintWriter;
import java.io.StringWriter;
+import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePropertyKey;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.spi.ExchangeFormatter;
+import org.apache.camel.support.processor.DefaultExchangeFormatter;
import org.apache.camel.util.IOHelper;
public final class LanguageHelper {
@@ -126,4 +130,37 @@ public final class LanguageHelper {
return false;
}
}
+
+ /**
+ * Gets the exchange formatter or creates one if unset
+ *
+ * @param camelContext the Camel context
+ * @param exchangeFormatter the exchange formatter
+ * @return the exchange formatter or the newly created one if previously unset
+ */
+ public static ExchangeFormatter getOrCreateExchangeFormatter(
+ CamelContext camelContext, ExchangeFormatter exchangeFormatter) {
+ if (exchangeFormatter == null) {
+ exchangeFormatter = camelContext.getRegistry().findSingleByType(ExchangeFormatter.class);
+ if (exchangeFormatter == null) {
+ // setup exchange formatter to be used for message history dump
+ DefaultExchangeFormatter def = new DefaultExchangeFormatter();
+ def.setShowExchangeId(true);
+ def.setMultiline(true);
+ def.setShowHeaders(true);
+ def.setStyle(DefaultExchangeFormatter.OutputStyle.Fixed);
+ try {
+ Integer maxChars = CamelContextHelper.parseInteger(camelContext,
+ camelContext.getGlobalOption(Exchange.LOG_DEBUG_BODY_MAX_CHARS));
+ if (maxChars != null) {
+ def.setMaxChars(maxChars);
+ }
+ } catch (Exception e) {
+ throw RuntimeCamelException.wrapRuntimeCamelException(e);
+ }
+ exchangeFormatter = def;
+ }
+ }
+ return exchangeFormatter;
+ }
}
[camel] 07/07: (chores) camel-core-languages: cleanup duplicated code handling creating quotes
Posted by or...@apache.org.
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 4e6a6e88f4fc328b55a30a04cb9097d40037a9ec
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Jun 13 09:47:59 2023 +0200
(chores) camel-core-languages: cleanup duplicated code handling creating quotes
---
.../apache/camel/language/simple/ast/BaseSimpleNode.java | 15 +++++++++++++++
.../camel/language/simple/ast/DoubleQuoteStart.java | 11 +----------
.../camel/language/simple/ast/SingleQuoteStart.java | 12 +-----------
3 files changed, 17 insertions(+), 21 deletions(-)
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java
index 392be61ed01..374212071f3 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/BaseSimpleNode.java
@@ -16,6 +16,7 @@
*/
package org.apache.camel.language.simple.ast;
+import org.apache.camel.language.simple.types.SimpleParserException;
import org.apache.camel.language.simple.types.SimpleToken;
/**
@@ -38,4 +39,18 @@ public abstract class BaseSimpleNode implements SimpleNode {
public String toString() {
return token.getText();
}
+
+ protected static String createCode(String expression, CompositeNodes block) throws SimpleParserException {
+ String answer = null;
+ if (block != null) {
+ answer = block.createCode(expression);
+ }
+ // use double quote as this become used as string literals in the generated code
+ if (answer == null) {
+ answer = "\"\"";
+ } else {
+ answer = "\"" + answer + "\"";
+ }
+ return answer;
+ }
}
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java
index f447f5001e5..bd4428db5b6 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/DoubleQuoteStart.java
@@ -61,15 +61,6 @@ public class DoubleQuoteStart extends BaseSimpleNode implements BlockStart {
@Override
public String createCode(String expression) throws SimpleParserException {
- String answer = null;
- if (block != null) {
- answer = block.createCode(expression);
- }
- if (answer == null) {
- answer = "\"\"";
- } else {
- answer = "\"" + answer + "\"";
- }
- return answer;
+ return BaseSimpleNode.createCode(expression, block);
}
}
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java
index bde77782d60..ce23e4246d6 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SingleQuoteStart.java
@@ -65,16 +65,6 @@ public class SingleQuoteStart extends BaseSimpleNode implements BlockStart {
@Override
public String createCode(String expression) throws SimpleParserException {
- String answer = null;
- if (block != null) {
- answer = block.createCode(expression);
- }
- // use double quote as this become used as string literals in the generated code
- if (answer == null) {
- answer = "\"\"";
- } else {
- answer = "\"" + answer + "\"";
- }
- return answer;
+ return BaseSimpleNode.createCode(expression, block);
}
}
[camel] 05/07: (chores) camel-core-languages: cleanup duplicated code handling system environment variables
Posted by or...@apache.org.
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 89b0d32e8b702d87d7c8740a89be31d1fa9445a9
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Jun 13 09:36:00 2023 +0200
(chores) camel-core-languages: cleanup duplicated code handling system environment variables
---
.../camel/language/csimple/CSimpleHelper.java | 13 +------------
.../org/apache/camel/support/LanguageHelper.java | 21 +++++++++++++++++++++
.../camel/support/builder/ExpressionBuilder.java | 12 +-----------
3 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
index d80e3336a8f..72d57890c3f 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
@@ -461,18 +461,7 @@ public final class CSimpleHelper {
}
public static String sysenv(String name) {
- String answer = null;
- if (name != null) {
- // lookup OS env with upper case key
- name = name.toUpperCase();
- answer = System.getenv(name);
- // some OS do not support dashes in keys, so replace with underscore
- if (answer == null) {
- String noDashKey = name.replace('-', '_');
- answer = System.getenv(noDashKey);
- }
- }
- return answer;
+ return LanguageHelper.sysenv(name);
}
private static ExchangeFormatter getOrCreateExchangeFormatter(CamelContext camelContext) {
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
index 3334d524754..307d5aaf902 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
@@ -163,4 +163,25 @@ public final class LanguageHelper {
}
return exchangeFormatter;
}
+
+ /**
+ * Gets an environment variable from the system (parsing and adjusting the name according to the OS)
+ *
+ * @param name the environment variable name
+ * @return the environment variable value
+ */
+ public static String sysenv(String name) {
+ String answer = null;
+ if (name != null) {
+ // lookup OS env with upper case key
+ name = name.toUpperCase();
+ answer = System.getenv(name);
+ // some OS do not support dashes in keys, so replace with underscore
+ if (answer == null) {
+ String noDashKey = name.replace('-', '_');
+ answer = System.getenv(noDashKey);
+ }
+ }
+ return answer;
+ }
}
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
index 0c8e4f0ce4a..62a17d94c7e 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
@@ -668,17 +668,7 @@ public class ExpressionBuilder {
@Override
public Object evaluate(Exchange exchange) {
String text = propertyName.evaluate(exchange, String.class);
- String answer = null;
- if (text != null) {
- // lookup OS env with upper case key
- text = text.toUpperCase();
- answer = System.getenv(text);
- // some OS do not support dashes in keys, so replace with underscore
- if (answer == null) {
- String noDashKey = text.replace('-', '_');
- answer = System.getenv(noDashKey);
- }
- }
+ String answer = LanguageHelper.sysenv(text);
if (answer == null) {
answer = defaultValue.evaluate(exchange, String.class);
[camel] 01/07: (chores) camel-core-languages: cleanup duplicated code in the base simpler parser
Posted by or...@apache.org.
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 cf9e948ab9014ea52f3589878e2c08571d58c1ae
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Jun 13 09:00:00 2023 +0200
(chores) camel-core-languages: cleanup duplicated code in the base simpler parser
---
.../camel/language/simple/BaseSimpleParser.java | 38 +++++++++-------------
1 file changed, 16 insertions(+), 22 deletions(-)
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java
index 5214edabd0c..2fdf6b79457 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/BaseSimpleParser.java
@@ -133,30 +133,10 @@ public abstract class BaseSimpleParser {
Block top = stack.pop();
// if there is a block on the stack then it should accept the child token
- Block block = stack.isEmpty() ? null : stack.peek();
- if (block != null) {
- if (!block.acceptAndAddNode(top)) {
- throw new SimpleParserException(
- block.getToken().getType() + " cannot accept " + token.getToken().getType(),
- token.getToken().getIndex());
- }
- } else {
- // no block, so add to answer
- answer.add(top);
- }
+ acceptOrAdd(answer, stack, top);
} else {
// if there is a block on the stack then it should accept the child token
- Block block = stack.isEmpty() ? null : stack.peek();
- if (block != null) {
- if (!block.acceptAndAddNode(token)) {
- throw new SimpleParserException(
- block.getToken().getType() + " cannot accept " + token.getToken().getType(),
- token.getToken().getIndex());
- }
- } else {
- // no block, so add to answer
- answer.add(token);
- }
+ acceptOrAdd(answer, stack, token);
}
}
@@ -165,6 +145,20 @@ public abstract class BaseSimpleParser {
nodes.addAll(answer);
}
+ private static void acceptOrAdd(List<SimpleNode> answer, Deque<Block> stack, SimpleNode token) {
+ Block block = stack.isEmpty() ? null : stack.peek();
+ if (block != null) {
+ if (!block.acceptAndAddNode(token)) {
+ throw new SimpleParserException(
+ block.getToken().getType() + " cannot accept " + token.getToken().getType(),
+ token.getToken().getIndex());
+ }
+ } else {
+ // no block, so add to answer
+ answer.add(token);
+ }
+ }
+
/**
* Prepares unary expressions.
* <p/>
[camel] 06/07: (chores) camel-core-languages: cleanup duplicated code handling escaping quotes
Posted by or...@apache.org.
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 ad31ff0a6f84cc94c8dd9fd03354ccaf928366ef
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Tue Jun 13 09:43:23 2023 +0200
(chores) camel-core-languages: cleanup duplicated code handling escaping quotes
---
.../camel/language/simple/SimpleExpressionParser.java | 19 ++-----------------
.../camel/language/simple/SimplePredicateParser.java | 19 ++-----------------
.../java/org/apache/camel/support/LanguageHelper.java | 16 ++++++++++++++++
3 files changed, 20 insertions(+), 34 deletions(-)
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java
index 59515f8c8ff..2b512ebea28 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionParser.java
@@ -33,6 +33,7 @@ import org.apache.camel.language.simple.types.SimpleIllegalSyntaxException;
import org.apache.camel.language.simple.types.SimpleParserException;
import org.apache.camel.language.simple.types.SimpleToken;
import org.apache.camel.language.simple.types.TokenType;
+import org.apache.camel.support.LanguageHelper;
import org.apache.camel.support.builder.ExpressionBuilder;
import org.apache.camel.util.StringHelper;
@@ -223,7 +224,7 @@ public class SimpleExpressionParser extends BaseSimpleParser {
exp = StringHelper.removeLeadingAndEndingQuotes(exp);
sb.append("\"");
// " should be escaped to \"
- exp = escapeQuotes(exp);
+ exp = LanguageHelper.escapeQuotes(exp);
// \n \t \r should be escaped
exp = exp.replaceAll("\n", "\\\\n");
exp = exp.replaceAll("\t", "\\\\t");
@@ -242,22 +243,6 @@ public class SimpleExpressionParser extends BaseSimpleParser {
return sb.toString();
}
- private static String escapeQuotes(String text) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < text.length(); i++) {
- char prev = i > 0 ? text.charAt(i - 1) : 0;
- char ch = text.charAt(i);
-
- if (ch == '"' && (i == 0 || prev != '\\')) {
- sb.append('\\');
- sb.append('"');
- } else {
- sb.append(ch);
- }
- }
- return sb.toString();
- }
-
// --------------------------------------------------------------
// grammar
// --------------------------------------------------------------
diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
index b68897431b9..83353f65106 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimplePredicateParser.java
@@ -50,6 +50,7 @@ import org.apache.camel.language.simple.types.SimpleParserException;
import org.apache.camel.language.simple.types.SimpleToken;
import org.apache.camel.language.simple.types.TokenType;
import org.apache.camel.support.ExpressionToPredicateAdapter;
+import org.apache.camel.support.LanguageHelper;
import org.apache.camel.support.builder.PredicateBuilder;
import org.apache.camel.util.StringHelper;
@@ -173,7 +174,7 @@ public class SimplePredicateParser extends BaseSimpleParser {
exp = StringHelper.removeLeadingAndEndingQuotes(exp);
sb.append("\"");
// " should be escaped to \"
- exp = escapeQuotes(exp);
+ exp = LanguageHelper.escapeQuotes(exp);
// \n \t \r should be escaped
exp = exp.replaceAll("\n", "\\\\n");
exp = exp.replaceAll("\t", "\\\\t");
@@ -191,22 +192,6 @@ public class SimplePredicateParser extends BaseSimpleParser {
return sb.toString();
}
- private static String escapeQuotes(String text) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < text.length(); i++) {
- char prev = i > 0 ? text.charAt(i - 1) : 0;
- char ch = text.charAt(i);
-
- if (ch == '"' && (i == 0 || prev != '\\')) {
- sb.append('\\');
- sb.append('"');
- } else {
- sb.append(ch);
- }
- }
- return sb.toString();
- }
-
/**
* Parses the tokens and crates the AST nodes.
* <p/>
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
index 307d5aaf902..3e7e627c195 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/LanguageHelper.java
@@ -184,4 +184,20 @@ public final class LanguageHelper {
}
return answer;
}
+
+ public static String escapeQuotes(String text) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < text.length(); i++) {
+ char prev = i > 0 ? text.charAt(i - 1) : 0;
+ char ch = text.charAt(i);
+
+ if (ch == '"' && (i == 0 || prev != '\\')) {
+ sb.append('\\');
+ sb.append('"');
+ } else {
+ sb.append(ch);
+ }
+ }
+ return sb.toString();
+ }
}