This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch modeline in repository https://gitbox.apache.org/repos/asf/camel.git
commit 0b3cb06e1df738dbeec84d9ea17b8f96f389e332 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Sat May 17 10:37:33 2025 +0200 CAMEL-22079: camel-jbang - Move DEPS modeline parsing out of camel-k --- .../apache/camel/catalog/others/dsl-modeline.json | 4 +- .../java/org/apache/camel/spi/ModelineFactory.java | 5 +- dsl/camel-dsl-modeline/pom.xml | 4 +- .../services/org/apache/camel/other.properties | 4 +- .../src/generated/resources/dsl-modeline.json | 4 +- .../src/main/docs/dsl-modeline.adoc | 17 +++-- ...delineParser.java => CamelKModelineParser.java} | 46 ++---------- .../camel/dsl/modeline/DefaultModelineFactory.java | 29 +++++--- ...odelineParser.java => JBangModelineParser.java} | 86 ++++++---------------- .../apache/camel/dsl/modeline/ModelineParser.java | 5 +- ...rserTest.java => CamelKModelineParserTest.java} | 33 +-------- .../dsl/modeline/JBangModelineParserTest.java | 86 ++++++++++++++++++++++ .../apache/camel/dsl/jbang/core/commands/Run.java | 10 --- .../java/org/apache/camel/main/KameletMain.java | 4 - .../camel/main/download/DependencyDownloader.java | 8 -- .../camel/main/download/DownloadListener.java | 7 -- .../main/download/DownloadModelineParser.java | 42 ----------- .../main/download/MavenDependencyDownloader.java | 8 -- 18 files changed, 156 insertions(+), 246 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others/dsl-modeline.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others/dsl-modeline.json index a9799d405cf..721d83d135f 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others/dsl-modeline.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/others/dsl-modeline.json @@ -3,8 +3,8 @@ "kind": "other", "name": "dsl-modeline", "title": "DSL Modeline", - "description": "Camel DSL Camel K modeline", - "deprecated": true, + "description": "Camel DSL modeline", + "deprecated": false, "firstVersion": "3.16.0", "label": "dsl", "supportLevel": "Stable", diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/ModelineFactory.java b/core/camel-api/src/main/java/org/apache/camel/spi/ModelineFactory.java index 3107c22ab09..1209c2d87b9 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/ModelineFactory.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/ModelineFactory.java @@ -17,9 +17,8 @@ package org.apache.camel.spi; /** - * Factory for parsing camel-k modeline when running Camel standalone with DSLs. + * Factory for parsing modeline when running Camel JBang standalone with DSLs. */ -@Deprecated(since = "4.10") public interface ModelineFactory { /** @@ -28,7 +27,7 @@ public interface ModelineFactory { String FACTORY = "dsl-modeline-factory"; /** - * Parses the resources to discover camel-k modeline snippets which is parsed and processed. + * Parses the resources to discover camel-jbang modeline snippets which is parsed and processed. * * @param resource the resource with Camel routes such as a yaml, xml or java source file. * @throws Exception is thrown if error parsing diff --git a/dsl/camel-dsl-modeline/pom.xml b/dsl/camel-dsl-modeline/pom.xml index c93bbd91cc5..7633ba50188 100644 --- a/dsl/camel-dsl-modeline/pom.xml +++ b/dsl/camel-dsl-modeline/pom.xml @@ -29,8 +29,8 @@ <artifactId>camel-dsl-modeline</artifactId> <packaging>jar</packaging> - <name>Camel :: DSL :: Modeline (deprecated)</name> - <description>Camel DSL Camel K modeline</description> + <name>Camel :: DSL :: Modeline</name> + <description>Camel DSL modeline</description> <properties> <firstVersion>3.16.0</firstVersion> diff --git a/dsl/camel-dsl-modeline/src/generated/resources/META-INF/services/org/apache/camel/other.properties b/dsl/camel-dsl-modeline/src/generated/resources/META-INF/services/org/apache/camel/other.properties index 3fb1d0f1afc..71418d0b97b 100644 --- a/dsl/camel-dsl-modeline/src/generated/resources/META-INF/services/org/apache/camel/other.properties +++ b/dsl/camel-dsl-modeline/src/generated/resources/META-INF/services/org/apache/camel/other.properties @@ -3,5 +3,5 @@ name=dsl-modeline groupId=org.apache.camel artifactId=camel-dsl-modeline version=4.12.0-SNAPSHOT -projectName=Camel :: DSL :: Modeline (deprecated) -projectDescription=Camel DSL Camel K modeline +projectName=Camel :: DSL :: Modeline +projectDescription=Camel DSL modeline diff --git a/dsl/camel-dsl-modeline/src/generated/resources/dsl-modeline.json b/dsl/camel-dsl-modeline/src/generated/resources/dsl-modeline.json index a9799d405cf..721d83d135f 100644 --- a/dsl/camel-dsl-modeline/src/generated/resources/dsl-modeline.json +++ b/dsl/camel-dsl-modeline/src/generated/resources/dsl-modeline.json @@ -3,8 +3,8 @@ "kind": "other", "name": "dsl-modeline", "title": "DSL Modeline", - "description": "Camel DSL Camel K modeline", - "deprecated": true, + "description": "Camel DSL modeline", + "deprecated": false, "firstVersion": "3.16.0", "label": "dsl", "supportLevel": "Stable", diff --git a/dsl/camel-dsl-modeline/src/main/docs/dsl-modeline.adoc b/dsl/camel-dsl-modeline/src/main/docs/dsl-modeline.adoc index 33eee8fac06..93622555a50 100644 --- a/dsl/camel-dsl-modeline/src/main/docs/dsl-modeline.adoc +++ b/dsl/camel-dsl-modeline/src/main/docs/dsl-modeline.adoc @@ -1,19 +1,24 @@ -= DSL Modeline Component (deprecated) += DSL Modeline Component :doctitle: DSL Modeline :shortname: dsl-modeline :artifactid: camel-dsl-modeline -:description: Camel DSL Camel K modeline +:description: Camel DSL modeline :since: 3.16 -:supportlevel: Stable-deprecated -:deprecated: *deprecated* +:supportlevel: Stable :tabs-sync-option: //Manually maintained attributes :group: DSL *Since Camel {since}* +== Camel JBang + +There is support for https://www.jbang.dev/documentation/guide/latest/dependencies.html[JBang dependencies] using the `//DEPS` comments style. + == Camel K +*Deprecated* + Support for Camel K style modeline when running Camel standalone such as with Camel JBang. The following traits is supported: @@ -22,7 +27,3 @@ The following traits is supported: - env - name - property - -== Camel JBang - -There is also support for https://www.jbang.dev/documentation/guide/latest/dependencies.html[JBang dependencies] using the `//DEPS` comments style. diff --git a/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/DefaultModelineParser.java b/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/CamelKModelineParser.java similarity index 67% copy from dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/DefaultModelineParser.java copy to dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/CamelKModelineParser.java index 232468c7998..551d37086d8 100644 --- a/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/DefaultModelineParser.java +++ b/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/CamelKModelineParser.java @@ -31,16 +31,15 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Deprecated(since = "4.10") -public class DefaultModelineParser implements ModelineParser { +public class CamelKModelineParser implements ModelineParser { - private static final Logger LOG = LoggerFactory.getLogger(DefaultModelineParser.class); + private static final Logger LOG = LoggerFactory.getLogger(CamelKModelineParser.class); public static final String MODELINE_START = "camel-k:"; - public static final String JBANG_DEPS_START = "//DEPS"; private final Map<String, Trait> traits = new HashMap<>(); - public DefaultModelineParser() { + public CamelKModelineParser() { // add known traits Trait trait = new DependencyTrait(); this.traits.put(trait.getName(), trait); @@ -102,41 +101,6 @@ public class DefaultModelineParser implements ModelineParser { } } - if (line.startsWith(JBANG_DEPS_START)) { - line = line.substring(JBANG_DEPS_START.length()).trim(); - line = line.trim(); - Trait dep = traits.get("dependency"); - String[] parts = StringQuoteHelper.splitSafeQuote(line, ' ', false); - for (String part : parts) { - part = part.trim(); - if (part.endsWith("@pom")) { - // skip @pom - continue; - } - // in case DEPS uses jbang ${ } style that refer to JVM system properties - if (part.contains("${") && part.contains("}")) { - String target = StringHelper.between(part, "${", "}"); - String value = StringHelper.before(target, ":", target); - if (target.contains(":")) { - String def = StringHelper.after(target, ":"); - value = System.getProperty(value, def); - } else { - String found = System.getProperty(value); - if (found == null) { - throw new IllegalArgumentException( - "Cannot find JVM system property: " + value + " for dependency: " + part); - } - value = found; - } - part = part.replace("${" + target + "}", value); - } - CamelContextCustomizer customizer = dep.parseTrait(resource, part); - if (customizer != null) { - answer.add(customizer); - } - } - } - return answer; } @@ -152,7 +116,7 @@ public class DefaultModelineParser implements ModelineParser { return false; } line = removeLeadingComments(line); - return line.startsWith(MODELINE_START) || line.startsWith(JBANG_DEPS_START); + return line.startsWith(MODELINE_START); } private static String removeLeadingComments(String line) { @@ -161,7 +125,7 @@ public class DefaultModelineParser implements ModelineParser { } line = line.trim(); - while (!line.startsWith(JBANG_DEPS_START) && line.startsWith("/") || line.startsWith("#")) { + while (line.startsWith("/") || line.startsWith("#")) { line = line.substring(1); } diff --git a/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/DefaultModelineFactory.java b/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/DefaultModelineFactory.java index 03c89fce64b..da617f8152e 100644 --- a/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/DefaultModelineFactory.java +++ b/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/DefaultModelineFactory.java @@ -16,6 +16,7 @@ */ package org.apache.camel.dsl.modeline; +import java.util.ArrayList; import java.util.List; import org.apache.camel.CamelContext; @@ -31,12 +32,13 @@ import org.apache.camel.spi.annotations.JdkService; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.service.ServiceSupport; -@Deprecated(since = "4.10") @JdkService(ModelineFactory.FACTORY) public class DefaultModelineFactory extends ServiceSupport implements ModelineFactory, CamelContextAware, NonManagedService, StaticService { private CamelContext camelContext; + private final ModelineParser camelk = new CamelKModelineParser(); + private final ModelineParser jbang = new JBangModelineParser(); private ModelineParser parser; @Override @@ -51,7 +53,16 @@ public class DefaultModelineFactory extends ServiceSupport @Override public void parseModeline(Resource resource) throws Exception { - List<CamelContextCustomizer> customizers = parser.parse(resource); + List<CamelContextCustomizer> customizers = new ArrayList<>(); + customizers.addAll(camelk.parse(resource)); + customizers.addAll(jbang.parse(resource)); + // custom parser which may return null + if (parser != null) { + var list = parser.parse(resource); + if (list != null) { + customizers.addAll(list); + } + } customizers.forEach(this::onConfigureModeline); } @@ -66,25 +77,19 @@ public class DefaultModelineFactory extends ServiceSupport @Override protected void doInit() throws Exception { + // is there any custom modeline parser parser = CamelContextHelper.findSingleByType(camelContext, ModelineParser.class); - if (parser == null) { - parser = createModelineParser(); - } - // the property is both a trait and a source but we must use the same instance + // the property is both a trait and a source, but we must use the same instance // so we need to get the existing instance from the properties component to // add to the parser as its trait PropertiesComponent pc = camelContext.getPropertiesComponent(); PropertiesSource ps = pc.getPropertiesSource("property"); - if (ps instanceof Trait) { - parser.addTrait((Trait) ps); + if (ps instanceof Trait trait) { + camelk.addTrait(trait); } } - protected ModelineParser createModelineParser() { - return new DefaultModelineParser(); - } - @Override public String toString() { return "camel-dsl-modeline"; diff --git a/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/DefaultModelineParser.java b/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/JBangModelineParser.java similarity index 66% rename from dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/DefaultModelineParser.java rename to dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/JBangModelineParser.java index 232468c7998..f55fd40b894 100644 --- a/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/DefaultModelineParser.java +++ b/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/JBangModelineParser.java @@ -19,41 +19,26 @@ package org.apache.camel.dsl.modeline; import java.io.LineNumberReader; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; import org.apache.camel.spi.CamelContextCustomizer; +import org.apache.camel.spi.DependencyStrategy; import org.apache.camel.spi.Resource; import org.apache.camel.util.StringHelper; import org.apache.camel.util.StringQuoteHelper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -@Deprecated(since = "4.10") -public class DefaultModelineParser implements ModelineParser { +public class JBangModelineParser implements ModelineParser { - private static final Logger LOG = LoggerFactory.getLogger(DefaultModelineParser.class); - - public static final String MODELINE_START = "camel-k:"; public static final String JBANG_DEPS_START = "//DEPS"; - private final Map<String, Trait> traits = new HashMap<>(); - - public DefaultModelineParser() { - // add known traits - Trait trait = new DependencyTrait(); - this.traits.put(trait.getName(), trait); - // property trait is added from the default mode line factory - trait = new NameTrait(); - this.traits.put(trait.getName(), trait); - trait = new EnvTrait(); - this.traits.put(trait.getName(), trait); + @Override + public void addTrait(Trait trait) { + throw new UnsupportedOperationException("Cannot add traits"); } @Override - public void addTrait(Trait trait) { - this.traits.put(trait.getName(), trait); + public Trait parseModeline(Resource resource, String key, String value) { + return null; } @Override @@ -74,6 +59,16 @@ public class DefaultModelineParser implements ModelineParser { return answer; } + @Override + public boolean isModeline(String line) { + // the line must be a comment and start with //DEPS + if (line == null) { + return false; + } + line = removeLeadingComments(line); + return line.startsWith(JBANG_DEPS_START); + } + protected List<CamelContextCustomizer> parse(Resource resource, String line) { if (!isModeline(line)) { return Collections.emptyList(); @@ -82,30 +77,9 @@ public class DefaultModelineParser implements ModelineParser { List<CamelContextCustomizer> answer = new ArrayList<>(); - if (line.startsWith(MODELINE_START)) { - LOG.warn("Using modeline is deprecated. {}: {}", resource.getLocation(), line); - - line = line.substring(MODELINE_START.length()).trim(); - // split into key value pairs - String[] parts = StringQuoteHelper.splitSafeQuote(line, ' ', false); - for (String part : parts) { - part = part.trim(); - String key = StringHelper.before(part, "="); - String value = StringHelper.after(part, "="); - Trait trait = parseModeline(resource, key, value); - if (trait != null) { - CamelContextCustomizer customizer = trait.parseTrait(resource, value); - if (customizer != null) { - answer.add(customizer); - } - } - } - } - if (line.startsWith(JBANG_DEPS_START)) { line = line.substring(JBANG_DEPS_START.length()).trim(); line = line.trim(); - Trait dep = traits.get("dependency"); String[] parts = StringQuoteHelper.splitSafeQuote(line, ' ', false); for (String part : parts) { part = part.trim(); @@ -130,31 +104,19 @@ public class DefaultModelineParser implements ModelineParser { } part = part.replace("${" + target + "}", value); } - CamelContextCustomizer customizer = dep.parseTrait(resource, part); - if (customizer != null) { - answer.add(customizer); - } + final String dep = part; + CamelContextCustomizer customizer = camelContext -> { + for (DependencyStrategy ds : camelContext.getRegistry().findByType(DependencyStrategy.class)) { + ds.onDependency(dep); + } + }; + answer.add(customizer); } } return answer; } - @Override - public Trait parseModeline(Resource resource, String key, String value) { - return traits.get(key); - } - - @Override - public boolean isModeline(String line) { - // the line must be a comment and start with camel-k - if (line == null) { - return false; - } - line = removeLeadingComments(line); - return line.startsWith(MODELINE_START) || line.startsWith(JBANG_DEPS_START); - } - private static String removeLeadingComments(String line) { if (line == null) { return null; diff --git a/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/ModelineParser.java b/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/ModelineParser.java index 6d8145937d2..5d49361f952 100644 --- a/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/ModelineParser.java +++ b/dsl/camel-dsl-modeline/src/main/java/org/apache/camel/dsl/modeline/ModelineParser.java @@ -24,7 +24,6 @@ import org.apache.camel.spi.Resource; /** * Modeline parser */ -@Deprecated(since = "4.10") public interface ModelineParser { /** @@ -32,6 +31,7 @@ public interface ModelineParser { * * @param trait the trait */ + @Deprecated void addTrait(Trait trait); /** @@ -43,7 +43,7 @@ public interface ModelineParser { boolean isModeline(String line); /** - * Parses the resource to detect modelines and process them via {@link Trait}s + * Parses the resource to detect modelines * * @param resource the source code resource * @return list of {@link CamelContextCustomizer} customizers that processes the modelines @@ -59,5 +59,6 @@ public interface ModelineParser { * @param value the mode line value * @return the trait that handles the detected modeline */ + @Deprecated Trait parseModeline(Resource resource, String key, String value); } diff --git a/dsl/camel-dsl-modeline/src/test/java/org/apache/camel/dsl/modeline/ModelineParserTest.java b/dsl/camel-dsl-modeline/src/test/java/org/apache/camel/dsl/modeline/CamelKModelineParserTest.java similarity index 86% rename from dsl/camel-dsl-modeline/src/test/java/org/apache/camel/dsl/modeline/ModelineParserTest.java rename to dsl/camel-dsl-modeline/src/test/java/org/apache/camel/dsl/modeline/CamelKModelineParserTest.java index 941336521f7..5e398bf8ca5 100644 --- a/dsl/camel-dsl-modeline/src/test/java/org/apache/camel/dsl/modeline/ModelineParserTest.java +++ b/dsl/camel-dsl-modeline/src/test/java/org/apache/camel/dsl/modeline/CamelKModelineParserTest.java @@ -28,7 +28,8 @@ import org.apache.camel.test.junit5.CamelTestSupport; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -public class ModelineParserTest extends CamelTestSupport { +@Deprecated +public class CamelKModelineParserTest extends CamelTestSupport { private final List<String> deps = new ArrayList<>(); @@ -81,20 +82,6 @@ public class ModelineParserTest extends CamelTestSupport { Assertions.assertEquals("mvn:org.my:application:1.0", deps.get(0)); } - @Test - public void testModelineSingleJBangDependency() throws Exception { - context.start(); - - Assertions.assertEquals(0, deps.size()); - - String line = "//DEPS org.my:application:1.0"; - ModelineFactory factory = resolveModelineFactory(context); - factory.parseModeline(ResourceHelper.fromString(null, line)); - - Assertions.assertEquals(1, deps.size()); - Assertions.assertEquals("org.my:application:1.0", deps.get(0)); - } - @Test public void testModelineMultiDependency() throws Exception { context.start(); @@ -111,22 +98,6 @@ public class ModelineParserTest extends CamelTestSupport { Assertions.assertEquals("mvn:com.foo:myapp:2.1", deps.get(1)); } - @Test - public void testModelineMultiJBangDependency() throws Exception { - context.start(); - deps.clear(); - - Assertions.assertEquals(0, deps.size()); - - String line = "//DEPS org.my:application:1.0 com.foo:myapp:2.1"; - ModelineFactory factory = resolveModelineFactory(context); - factory.parseModeline(ResourceHelper.fromString(null, line)); - - Assertions.assertEquals(2, deps.size()); - Assertions.assertEquals("org.my:application:1.0", deps.get(0)); - Assertions.assertEquals("com.foo:myapp:2.1", deps.get(1)); - } - @Test public void testModelineSingleProperty() throws Exception { context.start(); diff --git a/dsl/camel-dsl-modeline/src/test/java/org/apache/camel/dsl/modeline/JBangModelineParserTest.java b/dsl/camel-dsl-modeline/src/test/java/org/apache/camel/dsl/modeline/JBangModelineParserTest.java new file mode 100644 index 00000000000..84f7c3e3c97 --- /dev/null +++ b/dsl/camel-dsl-modeline/src/test/java/org/apache/camel/dsl/modeline/JBangModelineParserTest.java @@ -0,0 +1,86 @@ +/* + * 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.dsl.modeline; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.camel.CamelContext; +import org.apache.camel.spi.DependencyStrategy; +import org.apache.camel.spi.ModelineFactory; +import org.apache.camel.support.PluginHelper; +import org.apache.camel.support.ResourceHelper; +import org.apache.camel.test.junit5.CamelTestSupport; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class JBangModelineParserTest extends CamelTestSupport { + + private final List<String> deps = new ArrayList<>(); + + private ModelineFactory resolveModelineFactory(CamelContext camelContext) { + return PluginHelper.getModelineFactory(camelContext); + } + + @Override + protected CamelContext createCamelContext() throws Exception { + CamelContext context = super.createCamelContext(); + context.getRegistry().bind("myDep", new DependencyStrategy() { + @Override + public void onDependency(String dependency) { + deps.add(dependency); + } + }); + return context; + } + + @Override + public boolean isUseRouteBuilder() { + return false; + } + + @Test + public void testModelineSingleJBangDependency() throws Exception { + context.start(); + + Assertions.assertEquals(0, deps.size()); + + String line = "//DEPS org.my:application:1.0"; + ModelineFactory factory = resolveModelineFactory(context); + factory.parseModeline(ResourceHelper.fromString(null, line)); + + Assertions.assertEquals(1, deps.size()); + Assertions.assertEquals("org.my:application:1.0", deps.get(0)); + } + + @Test + public void testModelineMultiJBangDependency() throws Exception { + context.start(); + deps.clear(); + + Assertions.assertEquals(0, deps.size()); + + String line = "//DEPS org.my:application:1.0 com.foo:myapp:2.1"; + ModelineFactory factory = resolveModelineFactory(context); + factory.parseModeline(ResourceHelper.fromString(null, line)); + + Assertions.assertEquals(2, deps.size()); + Assertions.assertEquals("org.my:application:1.0", deps.get(0)); + Assertions.assertEquals("com.foo:myapp:2.1", deps.get(1)); + } + +} 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 880efd7658c..f6b8835ac74 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 @@ -2005,7 +2005,6 @@ public class Run extends CamelCommand { final Set<String> downloaded = new HashSet<>(); final Set<String> repos = new HashSet<>(); final Set<String> kamelets = new HashSet<>(); - final Set<String> modelines = new HashSet<>(); @Override public void onDownloadDependency(String groupId, String artifactId, String version) { @@ -2040,15 +2039,6 @@ public class Run extends CamelCommand { kamelets.add(name); } } - - @Override - public void onLoadingModeline(String key, String value) { - String line = key + "=" + value; - if (!modelines.contains(line)) { - writeSettings("modeline", line); - modelines.add(line); - } - } } static class FilesConsumer extends ParameterConsumer<Run> { diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java index 6c90f07e70b..272f554893d 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/KameletMain.java @@ -60,7 +60,6 @@ import org.apache.camel.main.download.DependencyDownloaderTransformerResolver; import org.apache.camel.main.download.DependencyDownloaderUriFactoryResolver; import org.apache.camel.main.download.DownloadEndpointStrategy; import org.apache.camel.main.download.DownloadListener; -import org.apache.camel.main.download.DownloadModelineParser; import org.apache.camel.main.download.ExportPropertiesParser; import org.apache.camel.main.download.ExportTypeConverter; import org.apache.camel.main.download.JavaKnownImportsDownloader; @@ -669,9 +668,6 @@ public class KameletMain extends MainCommandLineSupport { } else { answer.addService(new DependencyDownloaderKamelet(answer)); } - answer.getCamelContextExtension().getRegistry().bind(DownloadModelineParser.class.getSimpleName(), - new DownloadModelineParser(answer)); - answer.addService(new DependencyDownloaderPropertiesComponent(answer, knownDeps, silent)); // reloader diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java index 044bf8cc726..840ca8b136b 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DependencyDownloader.java @@ -184,14 +184,6 @@ public interface DependencyDownloader extends CamelContextAware, StaticService { */ void onLoadingKamelet(String name); - /** - * When a modeline is being loaded - * - * @param key modeline key - * @param value modeline value - */ - void onLoadingModeline(String key, String value); - /** * Gets download record for a given artifact * diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java index 842aa0c5ceb..0efe17adea0 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadListener.java @@ -52,11 +52,4 @@ public interface DownloadListener { // noop } - /** - * When a modeline is detected - */ - default void onLoadingModeline(String key, String value) { - // noop - } - } diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadModelineParser.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadModelineParser.java deleted file mode 100644 index 340f94a38c4..00000000000 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/DownloadModelineParser.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.main.download; - -import org.apache.camel.CamelContext; -import org.apache.camel.dsl.modeline.DefaultModelineParser; -import org.apache.camel.dsl.modeline.Trait; -import org.apache.camel.spi.Resource; - -public class DownloadModelineParser extends DefaultModelineParser { - - private final DependencyDownloader downloader; - - public DownloadModelineParser(CamelContext camelContext) { - super(); - this.downloader = camelContext.hasService(DependencyDownloader.class); - } - - @Override - public Trait parseModeline(Resource resource, String key, String value) { - Trait answer = super.parseModeline(resource, key, value); - if (downloader != null && answer != null) { - // only trigger for modelines for traits that can parse - downloader.onLoadingModeline(key, value); - } - return answer; - } -} diff --git a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java index dd7c219e2cf..7b1954c33fd 100644 --- a/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java +++ b/dsl/camel-kamelet-main/src/main/java/org/apache/camel/main/download/MavenDependencyDownloader.java @@ -465,14 +465,6 @@ public class MavenDependencyDownloader extends ServiceSupport implements Depende } } - @Override - public void onLoadingModeline(String key, String value) { - // trigger listener - for (DownloadListener listener : downloadListeners) { - listener.onLoadingModeline(key, value); - } - } - @Override public DownloadRecord getDownloadState(String groupId, String artifactId, String version) { return downloadRecords.get(groupId + ":" + artifactId + ":" + version);