This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 7518aa5 camel3 - Make Component and DataFormat API as Service as we should also manage their lifecycle with the service contract. 7518aa5 is described below commit 7518aa587c0b887d7e071d6c64c14d91bd0d0e67 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Jun 25 10:42:33 2019 +0200 camel3 - Make Component and DataFormat API as Service as we should also manage their lifecycle with the service contract. --- MIGRATION.md | 4 ++- .../blueprint/BlueprintComponentResolverTest.java | 13 +++++++- .../mime/multipart/MimeMultipartDataFormat.java | 4 +-- .../src/main/java/org/apache/camel/Component.java | 2 +- .../main/java/org/apache/camel/spi/DataFormat.java | 5 ++- .../camel/core/osgi/OsgiComponentResolverTest.java | 13 +++++++- .../core/osgi/OsgiDataFormatResolverTest.java | 4 +-- .../impl/DefaultCamelContextResolverTest.java | 3 +- .../impl/transformer/TransformerContractTest.java | 5 ++- .../impl/transformer/TransformerRouteTest.java | 5 ++- .../apache/camel/support/DefaultDataFormat.java | 36 ++++++++++++++++++++++ 11 files changed, 76 insertions(+), 18 deletions(-) diff --git a/MIGRATION.md b/MIGRATION.md index 251eb9e..66250d0 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -264,7 +264,9 @@ The classes `ReloadStrategySupport` and `FileWatcherReloadStrategy` has been rem The `MessageHistoryFactory` interface has some options to filter and copy the message and a slight change in its API. -Remove 'TypeConverterAware' as you shoudld instead use `Exchange` as parameter to the type converter method. +Removed `TypeConverterAware` as you shoudld instead use `Exchange` as parameter to the type converter method. + +The `Component` and `DataFormat` interfaces now extend `Service` as components and data formats should also have service contract to manage their lifecycle. The default base classes already implements these interfaces. #### camel-test diff --git a/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintComponentResolverTest.java b/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintComponentResolverTest.java index 3195158..db10c35 100644 --- a/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintComponentResolverTest.java +++ b/components/camel-blueprint/src/test/java/org/apache/camel/blueprint/BlueprintComponentResolverTest.java @@ -24,6 +24,7 @@ import org.apache.camel.Endpoint; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.spi.Registry; import org.apache.camel.support.DefaultRegistry; +import org.apache.camel.support.service.ServiceSupport; import org.apache.camel.test.junit4.TestSupport; import org.junit.Test; @@ -57,7 +58,7 @@ public class BlueprintComponentResolverTest extends TestSupport { assertFalse("We should NOT find the fallback component", ((SampleComponent) component).isFallback()); } - private static class SampleComponent implements Component { + private static class SampleComponent extends ServiceSupport implements Component { private boolean fallback; @@ -97,6 +98,16 @@ public class BlueprintComponentResolverTest extends TestSupport { public void setFallback(boolean fallback) { this.fallback = fallback; } + + @Override + protected void doStart() throws Exception { + // noop + } + + @Override + protected void doStop() throws Exception { + // noop + } } } diff --git a/components/camel-mail/src/main/java/org/apache/camel/dataformat/mime/multipart/MimeMultipartDataFormat.java b/components/camel-mail/src/main/java/org/apache/camel/dataformat/mime/multipart/MimeMultipartDataFormat.java index 9af0771..975902f 100644 --- a/components/camel-mail/src/main/java/org/apache/camel/dataformat/mime/multipart/MimeMultipartDataFormat.java +++ b/components/camel-mail/src/main/java/org/apache/camel/dataformat/mime/multipart/MimeMultipartDataFormat.java @@ -48,9 +48,9 @@ import org.apache.camel.Attachment; import org.apache.camel.Exchange; import org.apache.camel.Message; import org.apache.camel.NoTypeConversionAvailableException; -import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.annotations.Dataformat; import org.apache.camel.support.DefaultAttachment; +import org.apache.camel.support.DefaultDataFormat; import org.apache.camel.support.ExchangeHelper; import org.apache.camel.support.MessageHelper; import org.apache.camel.util.IOHelper; @@ -58,7 +58,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Dataformat("mime-multipart") -public class MimeMultipartDataFormat implements DataFormat { +public class MimeMultipartDataFormat extends DefaultDataFormat { private static final Logger LOG = LoggerFactory.getLogger(MimeMultipartDataFormat.class); private static final String MIME_VERSION = "MIME-Version"; private static final String CONTENT_TYPE = "Content-Type"; diff --git a/core/camel-api/src/main/java/org/apache/camel/Component.java b/core/camel-api/src/main/java/org/apache/camel/Component.java index 39c4010..9909f3c 100644 --- a/core/camel-api/src/main/java/org/apache/camel/Component.java +++ b/core/camel-api/src/main/java/org/apache/camel/Component.java @@ -27,7 +27,7 @@ import org.apache.camel.component.extension.ComponentExtension; * A <a href="http://camel.apache.org/component.html">component</a> is * a factory of {@link Endpoint} objects. */ -public interface Component extends CamelContextAware { +public interface Component extends CamelContextAware, Service { /** * Attempt to resolve an endpoint for the given URI if the component is diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/DataFormat.java b/core/camel-api/src/main/java/org/apache/camel/spi/DataFormat.java index d8e8250..ffba850 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/DataFormat.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/DataFormat.java @@ -21,6 +21,7 @@ import java.io.OutputStream; import org.apache.camel.Exchange; import org.apache.camel.Message; +import org.apache.camel.Service; /** * Represents a @@ -29,9 +30,7 @@ import org.apache.camel.Message; * such as Java Serialization or using JAXB2 to encode/decode objects using XML * or using SOAP encoding. */ -public interface DataFormat { - - // TODO: DataFormats should extends Service like the others +public interface DataFormat extends Service { /** * Marshals the object to the given Stream. diff --git a/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiComponentResolverTest.java b/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiComponentResolverTest.java index 11a4d39..1a12a13 100644 --- a/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiComponentResolverTest.java +++ b/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiComponentResolverTest.java @@ -25,6 +25,7 @@ import org.apache.camel.component.file.FileComponent; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.spi.Registry; import org.apache.camel.support.DefaultRegistry; +import org.apache.camel.support.service.ServiceSupport; import org.junit.Test; public class OsgiComponentResolverTest extends CamelOsgiTestSupport { @@ -66,7 +67,7 @@ public class OsgiComponentResolverTest extends CamelOsgiTestSupport { assertFalse("We should NOT find the fallback component", ((SampleComponent) component).isFallback()); } - private static class SampleComponent implements Component { + private static class SampleComponent extends ServiceSupport implements Component { private boolean fallback; @@ -106,6 +107,16 @@ public class OsgiComponentResolverTest extends CamelOsgiTestSupport { public void setFallback(boolean fallback) { this.fallback = fallback; } + + @Override + protected void doStart() throws Exception { + // noop + } + + @Override + protected void doStop() throws Exception { + // noop + } } } diff --git a/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiDataFormatResolverTest.java b/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiDataFormatResolverTest.java index cff796f..dab6602 100644 --- a/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiDataFormatResolverTest.java +++ b/core/camel-core-osgi/src/test/java/org/apache/camel/core/osgi/OsgiDataFormatResolverTest.java @@ -24,12 +24,12 @@ import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultCamelContext; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.Registry; +import org.apache.camel.support.DefaultDataFormat; import org.apache.camel.support.DefaultRegistry; import org.junit.Test; public class OsgiDataFormatResolverTest extends CamelOsgiTestSupport { - @Test public void testOsgiResolverFindDataFormatFallbackTest() throws Exception { Registry registry = new DefaultRegistry(); @@ -58,7 +58,7 @@ public class OsgiDataFormatResolverTest extends CamelOsgiTestSupport { assertFalse("We should NOT find the fallback dataformat", ((SampleDataFormat) dataformat).isFallback()); } - private static class SampleDataFormat implements DataFormat { + private static class SampleDataFormat extends DefaultDataFormat { private boolean fallback; diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextResolverTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextResolverTest.java index fff7356..32b58f1 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextResolverTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/DefaultCamelContextResolverTest.java @@ -30,6 +30,7 @@ import org.apache.camel.Predicate; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.Language; import org.apache.camel.support.DefaultComponent; +import org.apache.camel.support.DefaultDataFormat; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -168,7 +169,7 @@ public class DefaultCamelContextResolverTest { } } - public static class SampleDataFormat implements DataFormat { + public static class SampleDataFormat extends DefaultDataFormat { private boolean fallback; diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java index 6103e53..50948dd 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerContractTest.java @@ -23,7 +23,6 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; -import org.apache.camel.CamelContext; import org.apache.camel.ContextTestSupport; import org.apache.camel.Converter; import org.apache.camel.Exchange; @@ -31,9 +30,9 @@ import org.apache.camel.TypeConverters; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.model.DataFormatDefinition; -import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.DataType; import org.apache.camel.spi.DataTypeAware; +import org.apache.camel.support.DefaultDataFormat; import org.junit.Test; public class TransformerContractTest extends ContextTestSupport { @@ -144,7 +143,7 @@ public class TransformerContractTest extends ContextTestSupport { public static class MyDataFormatDefinition extends DataFormatDefinition { public MyDataFormatDefinition() { - super(new DataFormat() { + super(new DefaultDataFormat() { @Override public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception { assertEquals(B.class, graph.getClass()); diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java index 1e7d416..174145f 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/transformer/TransformerRouteTest.java @@ -23,7 +23,6 @@ import java.io.OutputStream; import java.util.Map; import org.apache.camel.AsyncCallback; -import org.apache.camel.CamelContext; import org.apache.camel.Consumer; import org.apache.camel.ContextTestSupport; import org.apache.camel.Converter; @@ -37,12 +36,12 @@ import org.apache.camel.TypeConverters; import org.apache.camel.builder.RouteBuilder; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.model.DataFormatDefinition; -import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.DataType; import org.apache.camel.spi.DataTypeAware; import org.apache.camel.spi.Transformer; import org.apache.camel.support.DefaultAsyncProducer; import org.apache.camel.support.DefaultComponent; +import org.apache.camel.support.DefaultDataFormat; import org.apache.camel.support.DefaultEndpoint; import org.apache.camel.support.DefaultExchange; import org.junit.Test; @@ -251,7 +250,7 @@ public class TransformerRouteTest extends ContextTestSupport { public static class MyJsonDataFormatDefinition extends DataFormatDefinition { public MyJsonDataFormatDefinition() { - super(new DataFormat() { + super(new DefaultDataFormat() { @Override public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception { assertEquals(graph.toString(), XOrderResponse.class, graph.getClass()); diff --git a/core/camel-support/src/main/java/org/apache/camel/support/DefaultDataFormat.java b/core/camel-support/src/main/java/org/apache/camel/support/DefaultDataFormat.java new file mode 100644 index 0000000..42e2a1c --- /dev/null +++ b/core/camel-support/src/main/java/org/apache/camel/support/DefaultDataFormat.java @@ -0,0 +1,36 @@ +/* + * 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 org.apache.camel.spi.DataFormat; +import org.apache.camel.support.service.ServiceSupport; + +/** + * A default dataformat useful for implementation inheritance. + */ +public abstract class DefaultDataFormat extends ServiceSupport implements DataFormat { + + @Override + protected void doStart() throws Exception { + // noop + } + + @Override + protected void doStop() throws Exception { + // noop + } +}