This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch camel-main-camel-3.10-cq-2x in repository https://gitbox.apache.org/repos/asf/camel-k-runtime.git
commit bcd5de9d36d98b8e54eb61d065963a0c1ff0a44e Author: Pasquale Congiusti <pasquale.congiu...@gmail.com> AuthorDate: Tue May 25 15:12:31 2021 +0200 fix(core): default SourceType as source Setting any empty SourceType as a source. Closes #658 Closes https://github.com/apache/camel-k/issues/2223 --- .../java/org/apache/camel/k/SourceDefinition.java | 3 +- .../apache/camel/k/listener/SourcesConfigurer.java | 15 +------- .../camel/k/listener/SourceConfigurerTest.java | 45 ++++++++++++++++++---- 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/camel-k-core/api/src/main/java/org/apache/camel/k/SourceDefinition.java b/camel-k-core/api/src/main/java/org/apache/camel/k/SourceDefinition.java index ff3f0ea..dbc8784 100644 --- a/camel-k-core/api/src/main/java/org/apache/camel/k/SourceDefinition.java +++ b/camel-k-core/api/src/main/java/org/apache/camel/k/SourceDefinition.java @@ -28,7 +28,8 @@ public class SourceDefinition implements IdAware { private String language; private String loader; private List<String> interceptors; - private SourceType type; + // Default as source type + private SourceType type = SourceType.source; private List<String> propertyNames; private String location; private byte[] content; diff --git a/camel-k-core/support/src/main/java/org/apache/camel/k/listener/SourcesConfigurer.java b/camel-k-core/support/src/main/java/org/apache/camel/k/listener/SourcesConfigurer.java index 69c061c..4488590 100644 --- a/camel-k-core/support/src/main/java/org/apache/camel/k/listener/SourcesConfigurer.java +++ b/camel-k-core/support/src/main/java/org/apache/camel/k/listener/SourcesConfigurer.java @@ -17,6 +17,7 @@ package org.apache.camel.k.listener; import java.util.Arrays; +import java.util.Comparator; import org.apache.camel.k.Runtime; import org.apache.camel.k.SourceDefinition; @@ -100,19 +101,7 @@ public class SourcesConfigurer extends AbstractPhaseListener { return; } // We must ensure the source order as defined in SourceType enum - Arrays.sort(sources, - (a, b) -> { - if (a.getType() == null && b.getType() == null) { - return 0; - } - if (a.getType() == null) { - return SourceType.source.compareTo(b.getType()); - } else if (b.getType() == null) { - return a.getType().compareTo(SourceType.source); - } else { - return a.getType().compareTo(b.getType()); - } - }); + Arrays.sort(sources, Comparator.comparingInt(a -> a.getType().ordinal())); } } diff --git a/camel-k-core/support/src/test/java/org/apache/camel/k/listener/SourceConfigurerTest.java b/camel-k-core/support/src/test/java/org/apache/camel/k/listener/SourceConfigurerTest.java index edebe28..732c77a 100644 --- a/camel-k-core/support/src/test/java/org/apache/camel/k/listener/SourceConfigurerTest.java +++ b/camel-k-core/support/src/test/java/org/apache/camel/k/listener/SourceConfigurerTest.java @@ -18,26 +18,26 @@ package org.apache.camel.k.listener; import org.apache.camel.CamelContext; import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.k.SourceType; import org.apache.camel.k.support.PropertiesSupport; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import static org.apache.camel.k.test.CamelKTestSupport.asProperties; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; public class SourceConfigurerTest { @Test public void shouldLoadMultipleSources() { CamelContext context = new DefaultCamelContext(); context.getPropertiesComponent().setInitialProperties(asProperties( - "camel.k.sources[0].name", "sourceName0", - "camel.k.sources[0].location", "classpath:MyTemplate1.java", + "camel.k.sources[0].name", "templateName", + "camel.k.sources[0].location", "classpath:MyTemplate.java", "camel.k.sources[0].type", "template", - "camel.k.sources[1].name", "err1", - "camel.k.sources[1].location", "classpath:MyTemplate2.java", - "camel.k.sources[2].name", "err2", - "camel.k.sources[2].location", "classpath:Err2.java", + "camel.k.sources[1].name", "src", + "camel.k.sources[1].location", "classpath:MySrc.java", + "camel.k.sources[2].name", "err", + "camel.k.sources[2].location", "classpath:Err.java", "camel.k.sources[2].type", "errorHandler" )); @@ -56,7 +56,7 @@ public class SourceConfigurerTest { public void shouldFailOnMultipleErrorHandlers() { CamelContext context = new DefaultCamelContext(); context.getPropertiesComponent().setInitialProperties(asProperties( - "camel.k.sources[0].name", "sourceName0", + "camel.k.sources[0].name", "templateName0", "camel.k.sources[0].location", "classpath:MyTemplate1.java", "camel.k.sources[0].type", "template", "camel.k.sources[1].name", "err1", @@ -82,12 +82,37 @@ public class SourceConfigurerTest { } @Test + public void shouldDefaultSourcesWithEmptyType() { + CamelContext context = new DefaultCamelContext(); + context.getPropertiesComponent().setInitialProperties(asProperties( + "camel.k.sources[0].name", "source0", + "camel.k.sources[1].name", "source1", + "camel.k.sources[2].name", "source2", + "camel.k.sources[2].type", "source" + )); + + SourcesConfigurer configuration = new SourcesConfigurer(); + + PropertiesSupport.bindProperties( + context, + configuration, + k -> k.startsWith(SourcesConfigurer.CAMEL_K_SOURCES_PREFIX), + SourcesConfigurer.CAMEL_K_PREFIX); + + assertThat(configuration.getSources().length).isEqualTo(3); + assertThat(configuration.getSources()[0].getType()).isEqualTo(SourceType.source); + assertThat(configuration.getSources()[1].getType()).isEqualTo(SourceType.source); + assertThat(configuration.getSources()[2].getType()).isEqualTo(SourceType.source); + } + + @Test public void shouldOrderSourcesByType() { CamelContext context = new DefaultCamelContext(); context.getPropertiesComponent().setInitialProperties(asProperties( "camel.k.sources[0].name", "template1", "camel.k.sources[0].type", "template", "camel.k.sources[1].name", "source1", + "camel.k.sources[1].type", "source", "camel.k.sources[2].name", "source2", "camel.k.sources[3].name", "errorHandler1", "camel.k.sources[3].type", "errorHandler" @@ -104,10 +129,14 @@ public class SourceConfigurerTest { assertThat(configuration.getSources()).hasSize(4); assertThat(configuration.getSources()[0].getName()).isEqualTo("errorHandler1"); + assertThat(configuration.getSources()[0].getType()).isEqualTo(SourceType.errorHandler); assertThat(configuration.getSources()[1].getName()).isEqualTo("template1"); + assertThat(configuration.getSources()[1].getType()).isEqualTo(SourceType.template); // Order for the same type does not matter assertThat(configuration.getSources()[2].getName()).contains("source"); + assertThat(configuration.getSources()[2].getType()).isEqualTo(SourceType.source); assertThat(configuration.getSources()[3].getName()).contains("source"); + assertThat(configuration.getSources()[3].getType()).isEqualTo(SourceType.source); } @Test