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 2022/05/24 05:32:56 UTC
[camel] branch main updated: CAMEL-18139: camel-jbang - Run from clipboard does not work for java
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new dce91e64366 CAMEL-18139: camel-jbang - Run from clipboard does not work for java
dce91e64366 is described below
commit dce91e6436669552a806409c3482b93be80dda7a
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue May 24 07:32:40 2022 +0200
CAMEL-18139: camel-jbang - Run from clipboard does not work for java
---
.../apache/camel/dsl/jbang/core/commands/Run.java | 32 ++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index 8576f6cd5d5..cb8a66d406c 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -40,6 +40,8 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -78,6 +80,12 @@ class Run extends CamelCommand {
private static final String OPENAPI_GENERATED_FILE = ".camel-jbang/generated-openapi.yaml";
private static final String CLIPBOARD_GENERATED_FILE = ".camel-jbang/generated-clipboard";
+ private static final Pattern PACKAGE_PATTERN = Pattern.compile(
+ "^\\s*package\\s+([a-zA-Z][\\.\\w]*)\\s*;.*$", Pattern.MULTILINE);
+
+ private static final Pattern CLASS_PATTERN = Pattern.compile(
+ "^\\s*public class\\s+([a-zA-Z0-9]*)[\\s+|;].*$", Pattern.MULTILINE);
+
private CamelContext context;
private File lockFile;
private ScheduledExecutorService executor;
@@ -596,6 +604,14 @@ class Run extends CamelCommand {
Object t = c.getData(DataFlavor.stringFlavor);
if (t != null) {
String fn = CLIPBOARD_GENERATED_FILE + "." + ext;
+ if ("java".equals(ext)) {
+ String fqn = determineClassName(t.toString());
+ if (fqn == null) {
+ throw new IllegalArgumentException(
+ "Cannot determine the Java class name from the source in the clipboard");
+ }
+ fn = fqn + ".java";
+ }
Files.write(Paths.get(fn), t.toString().getBytes(StandardCharsets.UTF_8));
file = "file:" + fn;
}
@@ -761,4 +777,20 @@ class Run extends CamelCommand {
}
}
+ private static String determineClassName(String content) {
+ Matcher matcher = PACKAGE_PATTERN.matcher(content);
+ String pn = matcher.find() ? matcher.group(1) : null;
+
+ matcher = CLASS_PATTERN.matcher(content);
+ String cn = matcher.find() ? matcher.group(1) : null;
+
+ String fqn;
+ if (pn != null) {
+ fqn = pn + "." + cn;
+ } else {
+ fqn = cn;
+ }
+ return fqn;
+ }
+
}