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 2019/06/25 09:24:16 UTC
[camel] branch master updated: camel3 - Make Component and
DataFormat API as Service as we should also manage their lifecycle with the
service contract.
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 <cl...@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
+ }
+}