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

commit a8b77d1dd35d2b9b0dcc28811a0edb0205b88ea7
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Aug 21 15:56:55 2024 +0200

    Revert "dev console - source to be able to download using raw mode (#15248)"
    
    This reverts commit 07f3ab882f9eca232322f6ceaf24e78f68643e66.
---
 .../platform/http/main/MainHttpServer.java         |  69 ++++-------
 .../java/org/apache/camel/console/DevConsole.java  |   3 +-
 .../apache/camel/impl/console/RouteDevConsole.java |   5 +-
 .../camel/impl/console/RouteDumpDevConsole.java    |   5 +-
 .../camel/impl/console/SourceDevConsole.java       | 131 ++++-----------------
 .../apache/camel/impl/console/TopDevConsole.java   |   4 +-
 .../org/apache/camel/support/LoggerHelper.java     |   8 --
 .../camel/support/console/AbstractDevConsole.java  |  16 +--
 8 files changed, 47 insertions(+), 194 deletions(-)

diff --git 
a/components/camel-platform-http-main/src/main/java/org/apache/camel/component/platform/http/main/MainHttpServer.java
 
b/components/camel-platform-http-main/src/main/java/org/apache/camel/component/platform/http/main/MainHttpServer.java
index 1f20f3fb44d..d53aa48d101 100644
--- 
a/components/camel-platform-http-main/src/main/java/org/apache/camel/component/platform/http/main/MainHttpServer.java
+++ 
b/components/camel-platform-http-main/src/main/java/org/apache/camel/component/platform/http/main/MainHttpServer.java
@@ -35,7 +35,6 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.StringJoiner;
 import java.util.TreeSet;
-import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
 import io.vertx.core.Handler;
@@ -466,7 +465,7 @@ public class MainHttpServer extends ServiceSupport 
implements CamelContextAware,
 
             @Override
             public void handle(RoutingContext ctx) {
-                ctx.response().putHeader("Content-Type", "application/json");
+                ctx.response().putHeader("content-type", "application/json");
 
                 JsonObject root = new JsonObject();
                 JsonObject jo = new JsonObject();
@@ -567,7 +566,7 @@ public class MainHttpServer extends ServiceSupport 
implements CamelContextAware,
         Handler<RoutingContext> handler = new Handler<RoutingContext>() {
             @Override
             public void handle(RoutingContext ctx) {
-                ctx.response().putHeader("Content-Type", "application/json");
+                ctx.response().putHeader("content-type", "application/json");
 
                 HealthCheckRegistry registry = 
HealthCheckRegistry.get(camelContext);
                 String level = ctx.request().getParam("exposureLevel");
@@ -764,22 +763,10 @@ public class MainHttpServer extends ServiceSupport 
implements CamelContextAware,
         devSub.method(HttpMethod.GET);
         devSub.produces("text/plain");
         devSub.produces("application/json");
-        devSub.produces("application/octet-stream");
 
         Handler<RoutingContext> handler = new Handler<RoutingContext>() {
             @Override
             public void handle(RoutingContext ctx) {
-                if (!camelContext.isDevConsole()) {
-                    ctx.response().putHeader("Content-Type", "text/plain");
-                    ctx.end("Developer Console is not enabled on CamelContext. 
Set camel.context.dev-console=true in application.properties");
-                }
-                DevConsoleRegistry dcr = 
camelContext.getCamelContextExtension().getContextPlugin(DevConsoleRegistry.class);
-                if (dcr == null || !dcr.isEnabled()) {
-                    ctx.response().putHeader("Content-Type", "text/plain");
-                    ctx.end("Developer Console is not enabled");
-                    return;
-                }
-
                 String acp = ctx.request().getHeader("Accept");
                 int pos1 = acp != null ? acp.indexOf("html") : 
Integer.MAX_VALUE;
                 if (pos1 == -1) {
@@ -789,13 +776,20 @@ public class MainHttpServer extends ServiceSupport 
implements CamelContextAware,
                 if (pos2 == -1) {
                     pos2 = Integer.MAX_VALUE;
                 }
-                // special for download mode where we want to make it easy 
from a web-browser
-                final boolean download = 
"true".equals(ctx.request().getParam("download"));
-                final boolean raw = download || acp != null && 
acp.contains("application/octet-stream");
-                final boolean html = !raw && pos1 < pos2;
-                final boolean json = !raw && pos2 < pos1;
-                final DevConsole.MediaType mediaType
-                        = raw ? DevConsole.MediaType.RAW : json ? 
DevConsole.MediaType.JSON : DevConsole.MediaType.TEXT;
+                final boolean html = pos1 < pos2;
+                final boolean json = pos2 < pos1;
+                final DevConsole.MediaType mediaType = json ? 
DevConsole.MediaType.JSON : DevConsole.MediaType.TEXT;
+
+                ctx.response().putHeader("content-type", "text/plain");
+
+                if (!camelContext.isDevConsole()) {
+                    ctx.end("Developer Console is not enabled on CamelContext. 
Set camel.context.dev-console=true in application.properties");
+                }
+                DevConsoleRegistry dcr = 
camelContext.getCamelContextExtension().getContextPlugin(DevConsoleRegistry.class);
+                if (dcr == null || !dcr.isEnabled()) {
+                    ctx.end("Developer Console is not enabled");
+                    return;
+                }
 
                 String path = StringHelper.after(ctx.request().path(), 
"/q/dev/");
                 String s = path;
@@ -834,13 +828,11 @@ public class MainHttpServer extends ServiceSupport 
implements CamelContextAware,
                     if (!sb.isEmpty()) {
                         String out = sb.toString();
                         if (html) {
-                            ctx.response().putHeader("Content-Type", 
"text/html");
-                        } else {
-                            ctx.response().putHeader("Content-Type", 
"text/plain");
+                            ctx.response().putHeader("content-type", 
"text/html");
                         }
                         ctx.end(out);
                     } else if (!root.isEmpty()) {
-                        ctx.response().putHeader("Content-Type", 
"application/json");
+                        ctx.response().putHeader("content-type", 
"application/json");
                         String out = root.toJson();
                         ctx.end(out);
                     } else {
@@ -852,7 +844,6 @@ public class MainHttpServer extends ServiceSupport 
implements CamelContextAware,
                     params.put(Exchange.HTTP_PATH, path);
                     StringBuilder sb = new StringBuilder();
                     JsonObject root = new JsonObject();
-                    final AtomicBoolean found = new AtomicBoolean();
 
                     // sort according to index by given id
                     dcr.stream().sorted((o1, o2) -> {
@@ -863,45 +854,25 @@ public class MainHttpServer extends ServiceSupport 
implements CamelContextAware,
                         boolean include = "all".equals(id) || 
c.getId().equalsIgnoreCase(id);
                         if (include && c.supportMediaType(mediaType)) {
                             Object out = c.call(mediaType, params);
-                            found.set(true);
                             if (out != null && mediaType == 
DevConsole.MediaType.TEXT) {
                                 sb.append(c.getDisplayName()).append(":");
                                 sb.append("\n\n");
                                 sb.append(out);
                                 sb.append("\n\n");
-                            } else if (out != null && mediaType == 
DevConsole.MediaType.RAW) {
-                                sb.append(out);
                             } else if (out != null && mediaType == 
DevConsole.MediaType.JSON) {
                                 root.put(c.getId(), out);
                             }
                         }
                     });
                     if (!sb.isEmpty()) {
-                        if (raw) {
-                            ctx.response().putHeader("Content-Type", 
"application/octet-stream");
-                            // in raw mode we may download files so put this 
into header information
-                            String disposition = (String) 
params.get("Content-Disposition");
-                            if (disposition != null) {
-                                
ctx.response().putHeader("Content-Disposition", disposition);
-                            }
-                        } else {
-                            ctx.response().putHeader("Content-Type", 
"text/plain");
-                        }
                         String out = sb.toString();
                         ctx.end(out);
                     } else if (!root.isEmpty()) {
-                        // root is json object
-                        ctx.response().putHeader("Content-Type", 
"application/json");
+                        ctx.response().putHeader("content-type", 
"application/json");
                         String out = root.toJson();
                         ctx.end(out);
                     } else {
-                        if (!found.get()) {
-                            ctx.response().putHeader("Content-Type", 
"text/plain");
-                            ctx.end("Developer Console not found: " + id);
-                        } else {
-                            ctx.response().setStatusCode(204);
-                            ctx.end();
-                        }
+                        ctx.end("Developer Console not found: " + id);
                     }
                 }
             }
diff --git 
a/core/camel-api/src/main/java/org/apache/camel/console/DevConsole.java 
b/core/camel-api/src/main/java/org/apache/camel/console/DevConsole.java
index add78556a56..bdcdf069b6c 100644
--- a/core/camel-api/src/main/java/org/apache/camel/console/DevConsole.java
+++ b/core/camel-api/src/main/java/org/apache/camel/console/DevConsole.java
@@ -29,8 +29,7 @@ public interface DevConsole {
 
     enum MediaType {
         TEXT,
-        JSON,
-        RAW
+        JSON
     }
 
     /**
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
index 57df94a720f..01358928afd 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDevConsole.java
@@ -35,7 +35,6 @@ import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.spi.annotations.DevConsole;
-import org.apache.camel.support.LoggerHelper;
 import org.apache.camel.support.PatternHelper;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.StringHelper;
@@ -440,11 +439,9 @@ public class RouteDevConsole extends AbstractDevConsole {
             return true;
         }
 
-        String onlyName = LoggerHelper.sourceNameOnly(mrb.getSourceLocation());
         return PatternHelper.matchPattern(mrb.getRouteId(), filter)
                 || PatternHelper.matchPattern(mrb.getEndpointUri(), filter)
-                || PatternHelper.matchPattern(mrb.getSourceLocationShort(), 
filter)
-                || PatternHelper.matchPattern(onlyName, filter);
+                || PatternHelper.matchPattern(mrb.getSourceLocationShort(), 
filter);
     }
 
     private static int sort(ManagedRouteMBean o1, ManagedRouteMBean o2) {
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java
index aacea236c85..65b46aeb838 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/RouteDumpDevConsole.java
@@ -28,7 +28,6 @@ import org.apache.camel.Route;
 import org.apache.camel.api.management.ManagedCamelContext;
 import org.apache.camel.api.management.mbean.ManagedRouteMBean;
 import org.apache.camel.spi.annotations.DevConsole;
-import org.apache.camel.support.LoggerHelper;
 import org.apache.camel.support.PatternHelper;
 import org.apache.camel.support.console.AbstractDevConsole;
 import org.apache.camel.util.StringHelper;
@@ -167,11 +166,9 @@ public class RouteDumpDevConsole extends 
AbstractDevConsole {
             return true;
         }
 
-        String onlyName = LoggerHelper.sourceNameOnly(mrb.getSourceLocation());
         return PatternHelper.matchPattern(mrb.getRouteId(), filter)
                 || PatternHelper.matchPattern(mrb.getEndpointUri(), filter)
-                || PatternHelper.matchPattern(mrb.getSourceLocationShort(), 
filter)
-                || PatternHelper.matchPattern(onlyName, filter);
+                || PatternHelper.matchPattern(mrb.getSourceLocationShort(), 
filter);
     }
 
     private static int sort(ManagedRouteMBean o1, ManagedRouteMBean o2) {
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
index b02b232ce50..82c7f57fbee 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/SourceDevConsole.java
@@ -21,8 +21,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Function;
 
 import org.apache.camel.Exchange;
@@ -52,37 +50,13 @@ public class SourceDevConsole extends AbstractDevConsole {
      */
     public static final String LIMIT = "limit";
 
-    /**
-     * Whether to dump or list file names only
-     */
-    public static final String DUMP = "dump";
-
-    /**
-     * Whether to make downloading the source file easier from a web browser
-     */
-    public static final String DOWNLOAD = "download";
-
     public SourceDevConsole() {
         super("camel", "source", "Source", "Dump route source code");
     }
 
-    @Override
-    public boolean supportMediaType(MediaType mediaType) {
-        // also supports raw
-        return true;
-    }
-
     @Override
     protected String doCallText(Map<String, Object> options) {
         final StringBuilder sb = new StringBuilder();
-
-        boolean download = "true".equals(options.getOrDefault(DOWNLOAD, 
"false"));
-        if (download) {
-            // use raw mode instead
-            return doCallRaw(options);
-        }
-
-        boolean dump = "true".equals(options.getOrDefault(DUMP, "true"));
         Function<ManagedRouteMBean, Object> task = mrb -> {
             String loc = mrb.getSourceLocation();
             if (loc != null) {
@@ -91,22 +65,21 @@ public class SourceDevConsole extends AbstractDevConsole {
                 try {
                     Resource resource = 
PluginHelper.getResourceLoader(getCamelContext()).resolveResource(loc);
                     if (resource != null) {
-                        if (dump) {
-                            if (!sb.isEmpty()) {
-                                sb.append("\n");
-                            }
-                            LineNumberReader reader = new 
LineNumberReader(resource.getReader());
-                            int i = 0;
-                            String t;
-                            do {
-                                t = reader.readLine();
-                                if (t != null) {
-                                    i++;
-                                    code.append(String.format("\n    #%s %s", 
i, t));
-                                }
-                            } while (t != null);
-                            IOHelper.close(reader);
+                        if (!sb.isEmpty()) {
+                            sb.append("\n");
                         }
+
+                        LineNumberReader reader = new 
LineNumberReader(resource.getReader());
+                        int i = 0;
+                        String t;
+                        do {
+                            t = reader.readLine();
+                            if (t != null) {
+                                i++;
+                                code.append(String.format("\n    #%s %s", i, 
t));
+                            }
+                        } while (t != null);
+                        IOHelper.close(reader);
                     }
                 } catch (Exception e) {
                     // ignore
@@ -114,7 +87,6 @@ public class SourceDevConsole extends AbstractDevConsole {
                 sb.append(String.format("    Id: %s", mrb.getRouteId()));
                 if (mrb.getSourceLocation() != null) {
                     sb.append(String.format("\n    Source: %s", 
mrb.getSourceLocation()));
-                    sb.append(String.format("\n    File: %s", 
LoggerHelper.sourceNameOnly(loc)));
                 }
                 if (!code.isEmpty()) {
                     sb.append("\n");
@@ -131,8 +103,6 @@ public class SourceDevConsole extends AbstractDevConsole {
 
     @Override
     protected JsonObject doCallJson(Map<String, Object> options) {
-        boolean dump = "true".equals(options.getOrDefault(DUMP, "true"));
-
         final JsonObject root = new JsonObject();
         final List<JsonObject> list = new ArrayList<>();
 
@@ -142,75 +112,20 @@ public class SourceDevConsole extends AbstractDevConsole {
 
             jo.put("routeId", mrb.getRouteId());
             jo.put("from", mrb.getEndpointUri());
-            String loc = mrb.getSourceLocation();
-            if (loc != null) {
-                jo.put("source", loc);
-                jo.put("file", LoggerHelper.sourceNameOnly(loc));
-                if (dump) {
-                    List<JsonObject> code = 
ConsoleHelper.loadSourceAsJson(getCamelContext(), loc);
-                    if (code != null) {
-                        jo.put("code", code);
-                    }
-                }
+            if (mrb.getSourceLocation() != null) {
+                jo.put("source", mrb.getSourceLocation());
             }
-            return null;
-        };
-        doCall(options, task);
-        root.put("routes", list);
-        return root;
-    }
-
-    @Override
-    protected String doCallRaw(Map<String, Object> options) {
-        final StringBuilder sb = new StringBuilder();
 
-        boolean dump = "true".equals(options.getOrDefault(DUMP, "true"));
-        final AtomicInteger counter = new AtomicInteger();
-        final AtomicReference<String> name = new AtomicReference<>();
-
-        Function<ManagedRouteMBean, Object> task = mrb -> {
             String loc = mrb.getSourceLocation();
-            if (loc != null) {
-                loc = LoggerHelper.stripSourceLocationLineNumber(loc);
-                StringBuilder code = new StringBuilder();
-                try {
-                    String onlyName = 
LoggerHelper.sourceNameOnly(mrb.getSourceLocation());
-                    Resource resource = 
PluginHelper.getResourceLoader(getCamelContext()).resolveResource(loc);
-                    if (resource != null) {
-                        if (dump) {
-                            // if we select only 1 file then remember the 
filename
-                            if (counter.incrementAndGet() == 1) {
-                                name.set(onlyName);
-                            } else {
-                                name.set(null);
-                            }
-                            if (!sb.isEmpty()) {
-                                sb.append("\n");
-                            }
-                            String text = 
IOHelper.loadText(resource.getInputStream());
-                            code.append(text);
-                        } else {
-                            // list of names
-                            sb.append(onlyName);
-                        }
-                    }
-                } catch (Exception e) {
-                    // ignore
-                }
-                if (!code.isEmpty()) {
-                    sb.append(code);
-                }
+            List<JsonObject> code = 
ConsoleHelper.loadSourceAsJson(getCamelContext(), loc);
+            if (code != null) {
+                jo.put("code", code);
             }
-            sb.append("\n");
             return null;
         };
         doCall(options, task);
-
-        if (name.get() != null) {
-            options.put("Content-Disposition", String.format("attachment; 
filename=\"%s\"", name.get()));
-        }
-
-        return sb.toString();
+        root.put("routes", list);
+        return root;
     }
 
     protected void doCall(Map<String, Object> options, 
Function<ManagedRouteMBean, Object> task) {
@@ -240,11 +155,9 @@ public class SourceDevConsole extends AbstractDevConsole {
             return true;
         }
 
-        String onlyName = LoggerHelper.sourceNameOnly(mrb.getSourceLocation());
         return PatternHelper.matchPattern(mrb.getRouteId(), filter)
                 || PatternHelper.matchPattern(mrb.getEndpointUri(), filter)
-                || PatternHelper.matchPattern(mrb.getSourceLocationShort(), 
filter)
-                || PatternHelper.matchPattern(onlyName, filter);
+                || PatternHelper.matchPattern(mrb.getSourceLocationShort(), 
filter);
     }
 
     private static int sort(ManagedRouteMBean o1, ManagedRouteMBean o2) {
diff --git 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
index 82be71ac99f..6bf8d32d321 100644
--- 
a/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
+++ 
b/core/camel-console/src/main/java/org/apache/camel/impl/console/TopDevConsole.java
@@ -319,11 +319,9 @@ public class TopDevConsole extends AbstractDevConsole {
             return true;
         }
 
-        String onlyName = LoggerHelper.sourceNameOnly(mrb.getSourceLocation());
         return PatternHelper.matchPattern(mrb.getRouteId(), filter)
                 || PatternHelper.matchPattern(mrb.getEndpointUri(), filter)
-                || PatternHelper.matchPattern(mrb.getSourceLocationShort(), 
filter)
-                || PatternHelper.matchPattern(onlyName, filter);
+                || PatternHelper.matchPattern(mrb.getSourceLocationShort(), 
filter);
     }
 
     private static boolean acceptProcessor(ManagedProcessorMBean mpb, String 
filter) {
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/LoggerHelper.java 
b/core/camel-support/src/main/java/org/apache/camel/support/LoggerHelper.java
index b0495908de6..a871604bdc7 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/LoggerHelper.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/LoggerHelper.java
@@ -99,14 +99,6 @@ public final class LoggerHelper {
         }
     }
 
-    public static String stripScheme(String location) {
-        return StringHelper.after(location, ":", location);
-    }
-
-    public static String sourceNameOnly(String location) {
-        return stripScheme(stripSourceLocationLineNumber(location));
-    }
-
     public static Integer extractSourceLocationLineNumber(String location) {
         int cnt = StringHelper.countChar(location, ':');
         if (cnt > 1) {
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/console/AbstractDevConsole.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/console/AbstractDevConsole.java
index 3d14a5050df..c664c61d3b0 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/console/AbstractDevConsole.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/console/AbstractDevConsole.java
@@ -57,8 +57,7 @@ public abstract class AbstractDevConsole extends 
ServiceSupport implements DevCo
 
     @Override
     public boolean supportMediaType(MediaType mediaType) {
-        // text and json supported by default
-        return mediaType == MediaType.TEXT || mediaType == MediaType.JSON;
+        return true;
     }
 
     @Override
@@ -106,8 +105,6 @@ public abstract class AbstractDevConsole extends 
ServiceSupport implements DevCo
         try {
             if (mediaType == MediaType.JSON) {
                 return doCallJson(options);
-            } else if (mediaType == MediaType.RAW && 
supportMediaType(MediaType.RAW)) {
-                return doCallRaw(options);
             } else {
                 return doCallText(options);
             }
@@ -116,17 +113,6 @@ public abstract class AbstractDevConsole extends 
ServiceSupport implements DevCo
         }
     }
 
-    /**
-     * Invokes and gets the output from this console in raw format.
-     *
-     * The returned object can for example be binary data for file downloads
-     *
-     * @see DevConsole#call(MediaType, Map)
-     */
-    protected Object doCallRaw(Map<String, Object> options) {
-        return null;
-    }
-
     /**
      * Invokes and gets the output from this console in json format.
      *

Reply via email to