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
The following commit(s) were added to refs/heads/main by this push:
new 084f689 Camel-avro-rpc introduction of SPI for the HTTP server (#5714)
084f689 is described below
commit 084f689827494bd8a6f89675ee8f6f3a89209109
Author: JiriOndrusek <[email protected]>
AuthorDate: Tue Jun 22 06:21:17 2021 +0200
Camel-avro-rpc introduction of SPI for the HTTP server (#5714)
---
bom/camel-bom/pom.xml | 25 +++++++
.../apache/camel/catalog/docs/avro-component.adoc | 7 ++
.../{ => camel-avro-rpc-component}/pom.xml | 87 ++++++++++++++--------
.../component/avro/AvroComponentConfigurer.java | 0
.../component/avro/AvroEndpointConfigurer.java | 0
.../component/avro/AvroEndpointUriFactory.java | 0
.../services/org/apache/camel/component.properties | 0
.../services/org/apache/camel/component/avro | 0
.../org/apache/camel/configurer/avro-component | 0
.../org/apache/camel/configurer/avro-endpoint | 0
.../org/apache/camel/urifactory/avro-endpoint | 0
.../org/apache/camel/component/avro/avro.json | 0
.../src/main/docs/avro-component.adoc | 7 ++
.../apache/camel/component/avro/AvroComponent.java | 0
.../component/avro/AvroComponentException.java | 0
.../camel/component/avro/AvroConfiguration.java | 4 +-
.../apache/camel/component/avro/AvroConstants.java | 0
.../apache/camel/component/avro/AvroConsumer.java | 0
.../apache/camel/component/avro/AvroEndpoint.java | 0
.../camel/component/avro/AvroHttpEndpoint.java | 0
.../camel/component/avro/AvroHttpProducer.java | 0
.../apache/camel/component/avro/AvroListener.java | 26 +++++--
.../camel/component/avro/AvroNettyEndpoint.java | 0
.../camel/component/avro/AvroNettyProducer.java | 0
.../apache/camel/component/avro/AvroProducer.java | 0
.../camel/component/avro/AvroReflectRequestor.java | 0
.../camel/component/avro/AvroReflectResponder.java | 0
.../component/avro/AvroSpecificRequestor.java | 0
.../component/avro/AvroSpecificResponder.java | 0
.../apache/camel/component/avro/AvroTransport.java | 0
.../src/test/avro/test.avpr | 0
.../java/org/apache/camel/avro/generated/Key.java | 0
.../camel/avro/generated/KeyValueProtocol.java | 0
.../org/apache/camel/avro/generated/Value.java | 0
.../camel/avro/impl/KeyValueProtocolImpl.java | 0
.../java/org/apache/camel/avro/test/TestPojo.java | 0
.../org/apache/camel/avro/test/TestReflection.java | 0
.../apache/camel/avro/test/TestReflectionImpl.java | 0
.../component/avro/AvroConsumerTestSupport.java | 0
.../camel/component/avro/AvroHttpConsumerTest.java | 0
.../camel/component/avro/AvroHttpProducerTest.java | 0
.../component/avro/AvroHttpSpringProducerTest.java | 0
.../component/avro/AvroNettyConsumerTest.java | 0
.../component/avro/AvroNettyProducerTest.java | 0
.../avro/AvroNettySpringConsumerTest.java | 0
.../avro/AvroNettySpringProducerTest.java | 0
.../component/avro/AvroProducerTestSupport.java | 0
.../camel/component/avro/AvroSettingsTest.java | 0
.../camel/component/avro/AvroTestSupport.java | 0
.../camel/component/avro/ConsumerRouteType.java | 0
.../camel/component/avro/ProducerRouteType.java | 0
.../component/avro/processors/GetProcessor.java | 0
.../component/avro/processors/PutProcessor.java | 0
.../avro/processors/ReflectionInOnlyProcessor.java | 0
.../avro/processors/ReflectionInOutProcessor.java | 0
.../src/test/resources/log4j2.properties | 0
.../camel/component/avro/avro-http-consumer.xml | 0
.../camel/component/avro/avro-http-producer.xml | 0
.../camel/component/avro/avro-netty-producer.xml | 0
.../camel/component/avro/netty-consumer/base.xml | 0
.../component/avro/netty-consumer/reflect.xml | 0
.../component/avro/netty-consumer/specific.xml | 0
.../avro/netty-consumer/specificProcessor.xml | 0
.../avro/netty-consumer/specificProcessorWrong.xml | 0
.../camel-avro-rpc/camel-avro-rpc-jetty/pom.xml | 56 ++++++++++++++
.../org/apache/camel/avro-rpc-http-server-factory | 2 +
.../services/org/apache/camel/other.properties | 7 ++
.../src/generated/resources/avro-rpc-jetty.json | 14 ++++
.../avro/spi/JettyHttpServerFactory.java} | 27 ++++---
.../camel-avro-rpc/camel-avro-rpc-spi/pom.xml | 48 ++++++++++++
.../services/org/apache/camel/other.properties | 7 ++
.../src/generated/resources/avro-rpc-spi.json | 14 ++++
.../avro/spi/AvroRpcHttpServerFactory.java} | 24 +++---
components/camel-avro-rpc/pom.xml | 84 +++------------------
core/camel-allcomponents/pom.xml | 12 +++
.../modules/ROOT/pages/avro-component.adoc | 9 ++-
parent/pom.xml | 25 +++++++
.../camel/maven/packaging/PrepareCatalogMojo.java | 3 +
78 files changed, 344 insertions(+), 144 deletions(-)
diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 8ad33f9..e963472 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -133,6 +133,31 @@
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-component</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-jetty</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-parent</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-aws-parent</artifactId>
<version>${project.version}</version>
</dependency>
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/avro-component.adoc
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/avro-component.adoc
index 24265ef..7b75fe5 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/avro-component.adoc
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/avro-component.adoc
@@ -277,4 +277,11 @@ Value value filled as array contents.
This component is not supported in Karaf.
+== Avro via HTTP SPI
+
+The Avro RPC component offers the
`org.apache.camel.component.avro.spi.AvroRpcHttpServerFactory` service provider
interface (SPI) so that various platforms can provide their own implementation
based on their native HTTP server.
+
+The default implementation available in `org.apache.camel:camel-avro-jetty` is
based on `org.apache.avro:avro-ipc-jetty`.
+
+
include::{page-component-version}@camel-spring-boot::page$avro-starter.adoc[]
diff --git a/components/camel-avro-rpc/pom.xml
b/components/camel-avro-rpc/camel-avro-rpc-component/pom.xml
similarity index 58%
copy from components/camel-avro-rpc/pom.xml
copy to components/camel-avro-rpc/camel-avro-rpc-component/pom.xml
index fe51e5e..126ac0b 100644
--- a/components/camel-avro-rpc/pom.xml
+++ b/components/camel-avro-rpc/camel-avro-rpc-component/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.camel</groupId>
- <artifactId>components</artifactId>
+ <artifactId>camel-avro-rpc-parent</artifactId>
<version>3.11.0-SNAPSHOT</version>
</parent>
@@ -33,34 +33,6 @@
<name>Camel :: Avro RPC</name>
<description>Camel Avro RPC component</description>
- <properties>
- </properties>
-
- <build>
- <plugins>
- <!--plugin>
- <groupId>org.apache.avro</groupId>
- <artifactId>avro-maven-plugin</artifactId>
- <version>${avro-version}</version>
- <executions>
- <execution>
- <id>schemas</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>schema</goal>
- <goal>protocol</goal>
- <goal>idl-protocol</goal>
- </goals>
- <configuration>
-
<sourceDirectory>${project.basedir}/src/test/avro/</sourceDirectory>
-
<outputDirectory>${project.basedir}/src/test/java/</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin-->
- </plugins>
- </build>
-
<dependencies>
<dependency>
<groupId>org.apache.camel</groupId>
@@ -76,9 +48,8 @@
<version>${avro-ipc-netty-version}</version>
</dependency>
<dependency>
- <groupId>org.apache.avro</groupId>
- <artifactId>avro-ipc-jetty</artifactId>
- <version>${avro-ipc-jetty-version}</version>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-jetty</artifactId>
</dependency>
<!-- testing -->
@@ -99,4 +70,56 @@
</dependency>
</dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <!-- we need to generate additional configurer classes -->
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-package-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>generate-configurer</id>
+ <phase>process-classes</phase>
+ <goals>
+ <goal>generate-configurer</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <id>generate-test-protocol</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-maven-plugin</artifactId>
+ <version>${avro-version}</version>
+ <executions>
+ <execution>
+ <id>schemas</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>schema</goal>
+ <goal>protocol</goal>
+ <goal>idl-protocol</goal>
+ </goals>
+ <configuration>
+
<sourceDirectory>${project.basedir}/src/test/avro/</sourceDirectory>
+
<outputDirectory>${project.basedir}/src/test/java/</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
\ No newline at end of file
diff --git
a/components/camel-avro-rpc/src/generated/java/org/apache/camel/component/avro/AvroComponentConfigurer.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/generated/java/org/apache/camel/component/avro/AvroComponentConfigurer.java
similarity index 100%
rename from
components/camel-avro-rpc/src/generated/java/org/apache/camel/component/avro/AvroComponentConfigurer.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/generated/java/org/apache/camel/component/avro/AvroComponentConfigurer.java
diff --git
a/components/camel-avro-rpc/src/generated/java/org/apache/camel/component/avro/AvroEndpointConfigurer.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/generated/java/org/apache/camel/component/avro/AvroEndpointConfigurer.java
similarity index 100%
rename from
components/camel-avro-rpc/src/generated/java/org/apache/camel/component/avro/AvroEndpointConfigurer.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/generated/java/org/apache/camel/component/avro/AvroEndpointConfigurer.java
diff --git
a/components/camel-avro-rpc/src/generated/java/org/apache/camel/component/avro/AvroEndpointUriFactory.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/generated/java/org/apache/camel/component/avro/AvroEndpointUriFactory.java
similarity index 100%
rename from
components/camel-avro-rpc/src/generated/java/org/apache/camel/component/avro/AvroEndpointUriFactory.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/generated/java/org/apache/camel/component/avro/AvroEndpointUriFactory.java
diff --git
a/components/camel-avro-rpc/src/generated/resources/META-INF/services/org/apache/camel/component.properties
b/components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/META-INF/services/org/apache/camel/component.properties
similarity index 100%
rename from
components/camel-avro-rpc/src/generated/resources/META-INF/services/org/apache/camel/component.properties
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/META-INF/services/org/apache/camel/component.properties
diff --git
a/components/camel-avro-rpc/src/generated/resources/META-INF/services/org/apache/camel/component/avro
b/components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/META-INF/services/org/apache/camel/component/avro
similarity index 100%
rename from
components/camel-avro-rpc/src/generated/resources/META-INF/services/org/apache/camel/component/avro
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/META-INF/services/org/apache/camel/component/avro
diff --git
a/components/camel-avro-rpc/src/generated/resources/META-INF/services/org/apache/camel/configurer/avro-component
b/components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/META-INF/services/org/apache/camel/configurer/avro-component
similarity index 100%
rename from
components/camel-avro-rpc/src/generated/resources/META-INF/services/org/apache/camel/configurer/avro-component
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/META-INF/services/org/apache/camel/configurer/avro-component
diff --git
a/components/camel-avro-rpc/src/generated/resources/META-INF/services/org/apache/camel/configurer/avro-endpoint
b/components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/META-INF/services/org/apache/camel/configurer/avro-endpoint
similarity index 100%
rename from
components/camel-avro-rpc/src/generated/resources/META-INF/services/org/apache/camel/configurer/avro-endpoint
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/META-INF/services/org/apache/camel/configurer/avro-endpoint
diff --git
a/components/camel-avro-rpc/src/generated/resources/META-INF/services/org/apache/camel/urifactory/avro-endpoint
b/components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/META-INF/services/org/apache/camel/urifactory/avro-endpoint
similarity index 100%
rename from
components/camel-avro-rpc/src/generated/resources/META-INF/services/org/apache/camel/urifactory/avro-endpoint
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/META-INF/services/org/apache/camel/urifactory/avro-endpoint
diff --git
a/components/camel-avro-rpc/src/generated/resources/org/apache/camel/component/avro/avro.json
b/components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/org/apache/camel/component/avro/avro.json
similarity index 100%
rename from
components/camel-avro-rpc/src/generated/resources/org/apache/camel/component/avro/avro.json
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/generated/resources/org/apache/camel/component/avro/avro.json
diff --git a/components/camel-avro-rpc/src/main/docs/avro-component.adoc
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/docs/avro-component.adoc
similarity index 97%
rename from components/camel-avro-rpc/src/main/docs/avro-component.adoc
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/docs/avro-component.adoc
index 24265ef..7b75fe5 100644
--- a/components/camel-avro-rpc/src/main/docs/avro-component.adoc
+++
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/docs/avro-component.adoc
@@ -277,4 +277,11 @@ Value value filled as array contents.
This component is not supported in Karaf.
+== Avro via HTTP SPI
+
+The Avro RPC component offers the
`org.apache.camel.component.avro.spi.AvroRpcHttpServerFactory` service provider
interface (SPI) so that various platforms can provide their own implementation
based on their native HTTP server.
+
+The default implementation available in `org.apache.camel:camel-avro-jetty` is
based on `org.apache.avro:avro-ipc-jetty`.
+
+
include::{page-component-version}@camel-spring-boot::page$avro-starter.adoc[]
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroComponent.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroComponent.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroComponent.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroComponent.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroComponentException.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroComponentException.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroComponentException.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroComponentException.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroConfiguration.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroConfiguration.java
similarity index 97%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroConfiguration.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroConfiguration.java
index 56e010a..b9054b1 100644
---
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroConfiguration.java
+++
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroConfiguration.java
@@ -70,8 +70,8 @@ public class AvroConfiguration implements Cloneable {
setHost(uri.getHost());
setPort(uri.getPort());
- if ((uri.getPath() != null)
- && (StringUtils.indexOf(uri.getPath(),
AVRO_MESSAGE_NAME_SEPARATOR) != -1)) {
+ if (uri.getPath() != null
+ && StringUtils.indexOf(uri.getPath(),
AVRO_MESSAGE_NAME_SEPARATOR) != -1) {
String path = StringUtils.substringAfter(uri.getPath(),
AVRO_MESSAGE_NAME_SEPARATOR);
if (!path.contains(AVRO_MESSAGE_NAME_SEPARATOR)) {
setMessageName(path);
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroConstants.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroConstants.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroConstants.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroConstants.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroConsumer.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroConsumer.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroConsumer.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroConsumer.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroEndpoint.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroEndpoint.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroEndpoint.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroEndpoint.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroHttpEndpoint.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroHttpEndpoint.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroHttpEndpoint.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroHttpEndpoint.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroHttpProducer.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroHttpProducer.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroHttpProducer.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroHttpProducer.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroListener.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroListener.java
similarity index 87%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroListener.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroListener.java
index b38bed1..734fc0b 100644
---
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroListener.java
+++
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroListener.java
@@ -23,15 +23,19 @@ import java.util.concurrent.ConcurrentMap;
import org.apache.avro.Protocol;
import org.apache.avro.Schema;
import org.apache.avro.ipc.Server;
-import org.apache.avro.ipc.jetty.HttpServer;
import org.apache.avro.ipc.netty.NettyServer;
import org.apache.avro.ipc.specific.SpecificResponder;
import org.apache.avro.specific.SpecificData;
+import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.component.avro.spi.AvroRpcHttpServerFactory;
+import org.apache.camel.spi.FactoryFinder;
import org.apache.camel.support.ExchangeHelper;
import org.apache.commons.lang3.StringUtils;
-import org.eclipse.jetty.util.log.Log;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import static
org.apache.camel.component.avro.AvroConstants.AVRO_HTTP_TRANSPORT;
import static
org.apache.camel.component.avro.AvroConstants.AVRO_NETTY_TRANSPORT;
@@ -42,12 +46,14 @@ import static
org.apache.camel.component.avro.AvroConstants.AVRO_NETTY_TRANSPORT
*/
public class AvroListener {
+ private static final Logger LOGGER =
LoggerFactory.getLogger(AvroListener.class);
+
private ConcurrentMap<String, AvroConsumer> consumerRegistry = new
ConcurrentHashMap<>();
private AvroConsumer defaultConsumer;
private final Server server;
public AvroListener(AvroEndpoint endpoint) throws Exception {
- server = initAndStartServer(endpoint.getConfiguration());
+ server = initAndStartServer(endpoint.getConfiguration(),
endpoint.getCamelContext());
}
/**
@@ -58,7 +64,7 @@ public class AvroListener {
* @return Initialized and started server
* @throws java.io.IOException
*/
- private Server initAndStartServer(AvroConfiguration configuration) throws
Exception {
+ private Server initAndStartServer(AvroConfiguration configuration,
CamelContext camelContext) throws Exception {
SpecificResponder responder;
Server server;
@@ -69,7 +75,13 @@ public class AvroListener {
}
if
(AVRO_HTTP_TRANSPORT.equalsIgnoreCase(configuration.getTransport().name())) {
- server = new HttpServer(responder, configuration.getPort());
+ AvroRpcHttpServerFactory factory = camelContext
+ .adapt(ExtendedCamelContext.class)
+ .getFactoryFinder(FactoryFinder.DEFAULT_PATH)
+ .newInstance("avro-rpc-http-server-factory",
AvroRpcHttpServerFactory.class)
+ .orElseThrow(() -> new IllegalStateException(
+ "AvroRpcHttpServerFactory is neither set on this
endpoint neither found in Camel Registry or FactoryFinder."));
+ server = factory.create(responder, configuration.getPort());
} else if
(AVRO_NETTY_TRANSPORT.equalsIgnoreCase(configuration.getTransport().name())) {
server = new NettyServer(responder, new
InetSocketAddress(configuration.getHost(), configuration.getPort()));
} else {
@@ -115,13 +127,13 @@ public class AvroListener {
public boolean unregister(String messageName) {
if (!StringUtils.isEmpty(messageName)) {
if (consumerRegistry.remove(messageName) == null) {
- Log.getLog().warn("Consumer with message name {} was already
unregistered.", messageName);
+ LOGGER.warn("Consumer with message name {} was already
unregistered.", messageName);
}
} else {
defaultConsumer = null;
}
- if ((defaultConsumer == null) && (consumerRegistry.isEmpty())) {
+ if (defaultConsumer == null && consumerRegistry.isEmpty()) {
if (server != null) {
server.close();
}
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroNettyEndpoint.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroNettyEndpoint.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroNettyEndpoint.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroNettyEndpoint.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroNettyProducer.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroNettyProducer.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroNettyProducer.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroNettyProducer.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroProducer.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroProducer.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroProducer.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroProducer.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroReflectRequestor.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroReflectRequestor.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroReflectRequestor.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroReflectRequestor.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroReflectResponder.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroReflectResponder.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroReflectResponder.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroReflectResponder.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroSpecificRequestor.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroSpecificRequestor.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroSpecificRequestor.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroSpecificRequestor.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroSpecificResponder.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroSpecificResponder.java
similarity index 100%
copy from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroSpecificResponder.java
copy to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroSpecificResponder.java
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroTransport.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroTransport.java
similarity index 100%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroTransport.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/main/java/org/apache/camel/component/avro/AvroTransport.java
diff --git a/components/camel-avro-rpc/src/test/avro/test.avpr
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/avro/test.avpr
similarity index 100%
rename from components/camel-avro-rpc/src/test/avro/test.avpr
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/avro/test.avpr
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/avro/generated/Key.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/generated/Key.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/avro/generated/Key.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/generated/Key.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/avro/generated/KeyValueProtocol.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/generated/KeyValueProtocol.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/avro/generated/KeyValueProtocol.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/generated/KeyValueProtocol.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/avro/generated/Value.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/generated/Value.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/avro/generated/Value.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/generated/Value.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/avro/impl/KeyValueProtocolImpl.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/impl/KeyValueProtocolImpl.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/avro/impl/KeyValueProtocolImpl.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/impl/KeyValueProtocolImpl.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/avro/test/TestPojo.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/test/TestPojo.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/avro/test/TestPojo.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/test/TestPojo.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/avro/test/TestReflection.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/test/TestReflection.java
similarity index 100%
copy from
components/camel-avro-rpc/src/test/java/org/apache/camel/avro/test/TestReflection.java
copy to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/test/TestReflection.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/avro/test/TestReflectionImpl.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/test/TestReflectionImpl.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/avro/test/TestReflectionImpl.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/avro/test/TestReflectionImpl.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroConsumerTestSupport.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroConsumerTestSupport.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroConsumerTestSupport.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroConsumerTestSupport.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroHttpConsumerTest.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroHttpConsumerTest.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroHttpConsumerTest.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroHttpConsumerTest.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroHttpProducerTest.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroHttpProducerTest.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroHttpProducerTest.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroHttpProducerTest.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroHttpSpringProducerTest.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroHttpSpringProducerTest.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroHttpSpringProducerTest.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroHttpSpringProducerTest.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroNettyConsumerTest.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroNettyConsumerTest.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroNettyConsumerTest.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroNettyConsumerTest.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroNettyProducerTest.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroNettyProducerTest.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroNettyProducerTest.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroNettyProducerTest.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroNettySpringConsumerTest.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroNettySpringConsumerTest.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroNettySpringConsumerTest.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroNettySpringConsumerTest.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroNettySpringProducerTest.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroNettySpringProducerTest.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroNettySpringProducerTest.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroNettySpringProducerTest.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroProducerTestSupport.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroProducerTestSupport.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroProducerTestSupport.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroProducerTestSupport.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroSettingsTest.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroSettingsTest.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroSettingsTest.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroSettingsTest.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroTestSupport.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroTestSupport.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/AvroTestSupport.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/AvroTestSupport.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/ConsumerRouteType.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/ConsumerRouteType.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/ConsumerRouteType.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/ConsumerRouteType.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/ProducerRouteType.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/ProducerRouteType.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/ProducerRouteType.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/ProducerRouteType.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/processors/GetProcessor.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/processors/GetProcessor.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/processors/GetProcessor.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/processors/GetProcessor.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/processors/PutProcessor.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/processors/PutProcessor.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/processors/PutProcessor.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/processors/PutProcessor.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/processors/ReflectionInOnlyProcessor.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/processors/ReflectionInOnlyProcessor.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/processors/ReflectionInOnlyProcessor.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/processors/ReflectionInOnlyProcessor.java
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/processors/ReflectionInOutProcessor.java
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/processors/ReflectionInOutProcessor.java
similarity index 100%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/component/avro/processors/ReflectionInOutProcessor.java
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/java/org/apache/camel/component/avro/processors/ReflectionInOutProcessor.java
diff --git a/components/camel-avro-rpc/src/test/resources/log4j2.properties
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/log4j2.properties
similarity index 100%
rename from components/camel-avro-rpc/src/test/resources/log4j2.properties
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/log4j2.properties
diff --git
a/components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/avro-http-consumer.xml
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/avro-http-consumer.xml
similarity index 100%
rename from
components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/avro-http-consumer.xml
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/avro-http-consumer.xml
diff --git
a/components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/avro-http-producer.xml
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/avro-http-producer.xml
similarity index 100%
rename from
components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/avro-http-producer.xml
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/avro-http-producer.xml
diff --git
a/components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/avro-netty-producer.xml
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/avro-netty-producer.xml
similarity index 100%
rename from
components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/avro-netty-producer.xml
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/avro-netty-producer.xml
diff --git
a/components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/netty-consumer/base.xml
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/netty-consumer/base.xml
similarity index 100%
rename from
components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/netty-consumer/base.xml
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/netty-consumer/base.xml
diff --git
a/components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/netty-consumer/reflect.xml
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/netty-consumer/reflect.xml
similarity index 100%
rename from
components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/netty-consumer/reflect.xml
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/netty-consumer/reflect.xml
diff --git
a/components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/netty-consumer/specific.xml
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/netty-consumer/specific.xml
similarity index 100%
rename from
components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/netty-consumer/specific.xml
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/netty-consumer/specific.xml
diff --git
a/components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/netty-consumer/specificProcessor.xml
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/netty-consumer/specificProcessor.xml
similarity index 100%
rename from
components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/netty-consumer/specificProcessor.xml
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/netty-consumer/specificProcessor.xml
diff --git
a/components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/netty-consumer/specificProcessorWrong.xml
b/components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/netty-consumer/specificProcessorWrong.xml
similarity index 100%
rename from
components/camel-avro-rpc/src/test/resources/org/apache/camel/component/avro/netty-consumer/specificProcessorWrong.xml
rename to
components/camel-avro-rpc/camel-avro-rpc-component/src/test/resources/org/apache/camel/component/avro/netty-consumer/specificProcessorWrong.xml
diff --git a/components/camel-avro-rpc/camel-avro-rpc-jetty/pom.xml
b/components/camel-avro-rpc/camel-avro-rpc-jetty/pom.xml
new file mode 100644
index 0000000..bd08547
--- /dev/null
+++ b/components/camel-avro-rpc/camel-avro-rpc-jetty/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-parent</artifactId>
+ <version>3.11.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>camel-avro-rpc-jetty</artifactId>
+ <name>Camel :: Avro RPC :: Jetty</name>
+ <description>Camel Avro RPC Jetty</description>
+
+
+ <properties>
+ <firstVersion>3.11.0</firstVersion>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-spi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-ipc-jetty</artifactId>
+ <version>${avro-ipc-jetty-version}</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git
a/components/camel-avro-rpc/camel-avro-rpc-jetty/src/generated/resources/META-INF/services/org/apache/camel/avro-rpc-http-server-factory
b/components/camel-avro-rpc/camel-avro-rpc-jetty/src/generated/resources/META-INF/services/org/apache/camel/avro-rpc-http-server-factory
new file mode 100644
index 0000000..e4a6e26
--- /dev/null
+++
b/components/camel-avro-rpc/camel-avro-rpc-jetty/src/generated/resources/META-INF/services/org/apache/camel/avro-rpc-http-server-factory
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.component.avro.spi.JettyHttpServerFactory
diff --git
a/components/camel-avro-rpc/camel-avro-rpc-jetty/src/generated/resources/META-INF/services/org/apache/camel/other.properties
b/components/camel-avro-rpc/camel-avro-rpc-jetty/src/generated/resources/META-INF/services/org/apache/camel/other.properties
new file mode 100644
index 0000000..8d0b6a4
--- /dev/null
+++
b/components/camel-avro-rpc/camel-avro-rpc-jetty/src/generated/resources/META-INF/services/org/apache/camel/other.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+name=avro-rpc-jetty
+groupId=org.apache.camel
+artifactId=camel-avro-rpc-jetty
+version=3.11.0-SNAPSHOT
+projectName=Camel :: Avro RPC :: Jetty
+projectDescription=Camel Avro RPC Jetty
diff --git
a/components/camel-avro-rpc/camel-avro-rpc-jetty/src/generated/resources/avro-rpc-jetty.json
b/components/camel-avro-rpc/camel-avro-rpc-jetty/src/generated/resources/avro-rpc-jetty.json
new file mode 100644
index 0000000..773562a
--- /dev/null
+++
b/components/camel-avro-rpc/camel-avro-rpc-jetty/src/generated/resources/avro-rpc-jetty.json
@@ -0,0 +1,14 @@
+{
+ "other": {
+ "kind": "other",
+ "name": "avro-rpc-jetty",
+ "title": "Avro Rpc Jetty",
+ "description": "Camel Avro RPC Jetty",
+ "deprecated": false,
+ "firstVersion": "3.11.0",
+ "supportLevel": "Preview",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-avro-rpc-jetty",
+ "version": "3.11.0-SNAPSHOT"
+ }
+}
diff --git
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroSpecificResponder.java
b/components/camel-avro-rpc/camel-avro-rpc-jetty/src/main/java/org/apache/camel/component/avro/spi/JettyHttpServerFactory.java
similarity index 59%
rename from
components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroSpecificResponder.java
rename to
components/camel-avro-rpc/camel-avro-rpc-jetty/src/main/java/org/apache/camel/component/avro/spi/JettyHttpServerFactory.java
index 037387d..0e428fc 100644
---
a/components/camel-avro-rpc/src/main/java/org/apache/camel/component/avro/AvroSpecificResponder.java
+++
b/components/camel-avro-rpc/camel-avro-rpc-jetty/src/main/java/org/apache/camel/component/avro/spi/JettyHttpServerFactory.java
@@ -14,23 +14,22 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.component.avro;
+package org.apache.camel.component.avro.spi;
-import org.apache.avro.Protocol;
-import org.apache.avro.ipc.specific.SpecificResponder;
-import org.apache.avro.specific.SpecificData;
-
-public class AvroSpecificResponder extends SpecificResponder {
- private AvroListener listener;
+import java.io.IOException;
- public AvroSpecificResponder(Protocol protocol, AvroListener listener) {
- super(protocol, listener);
- this.listener = listener;
- }
+import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.jetty.HttpServer;
+import org.apache.avro.ipc.specific.SpecificResponder;
+/**
+ * Default implementation of Avro via http, which is based on Jetty http
server. For more details see dependency
+ * org.apache.avro:avro-ipc-jetty.
+ */
[email protected]("avro-rpc-http-server-factory")
+public class JettyHttpServerFactory implements AvroRpcHttpServerFactory {
@Override
- public Object respond(Protocol.Message message, Object request) throws
Exception {
- return listener.respond(message, request, SpecificData.get());
+ public Server create(SpecificResponder responder, int port) throws
IOException {
+ return new HttpServer(responder, port);
}
-
}
diff --git a/components/camel-avro-rpc/camel-avro-rpc-spi/pom.xml
b/components/camel-avro-rpc/camel-avro-rpc-spi/pom.xml
new file mode 100644
index 0000000..9c7a8f4
--- /dev/null
+++ b/components/camel-avro-rpc/camel-avro-rpc-spi/pom.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-parent</artifactId>
+ <version>3.11.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>camel-avro-rpc-spi</artifactId>
+ <name>Camel :: Avro RPC :: Spi</name>
+ <description>Camel Avro RPC spi</description>
+
+
+ <properties>
+ <firstVersion>3.11.0</firstVersion>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-ipc-jetty</artifactId>
+ <version>${avro-ipc-jetty-version}</version>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
diff --git
a/components/camel-avro-rpc/camel-avro-rpc-spi/src/generated/resources/META-INF/services/org/apache/camel/other.properties
b/components/camel-avro-rpc/camel-avro-rpc-spi/src/generated/resources/META-INF/services/org/apache/camel/other.properties
new file mode 100644
index 0000000..24cd6fb
--- /dev/null
+++
b/components/camel-avro-rpc/camel-avro-rpc-spi/src/generated/resources/META-INF/services/org/apache/camel/other.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+name=avro-rpc-spi
+groupId=org.apache.camel
+artifactId=camel-avro-rpc-spi
+version=3.11.0-SNAPSHOT
+projectName=Camel :: Avro RPC :: Spi
+projectDescription=Camel Avro RPC spi
diff --git
a/components/camel-avro-rpc/camel-avro-rpc-spi/src/generated/resources/avro-rpc-spi.json
b/components/camel-avro-rpc/camel-avro-rpc-spi/src/generated/resources/avro-rpc-spi.json
new file mode 100644
index 0000000..d029820
--- /dev/null
+++
b/components/camel-avro-rpc/camel-avro-rpc-spi/src/generated/resources/avro-rpc-spi.json
@@ -0,0 +1,14 @@
+{
+ "other": {
+ "kind": "other",
+ "name": "avro-rpc-spi",
+ "title": "Avro Rpc Spi",
+ "description": "Camel Avro RPC spi",
+ "deprecated": false,
+ "firstVersion": "3.11.0",
+ "supportLevel": "Preview",
+ "groupId": "org.apache.camel",
+ "artifactId": "camel-avro-rpc-spi",
+ "version": "3.11.0-SNAPSHOT"
+ }
+}
diff --git
a/components/camel-avro-rpc/src/test/java/org/apache/camel/avro/test/TestReflection.java
b/components/camel-avro-rpc/camel-avro-rpc-spi/src/main/java/org/apache/camel/component/avro/spi/AvroRpcHttpServerFactory.java
similarity index 66%
rename from
components/camel-avro-rpc/src/test/java/org/apache/camel/avro/test/TestReflection.java
rename to
components/camel-avro-rpc/camel-avro-rpc-spi/src/main/java/org/apache/camel/component/avro/spi/AvroRpcHttpServerFactory.java
index d190942..c53fde1 100644
---
a/components/camel-avro-rpc/src/test/java/org/apache/camel/avro/test/TestReflection.java
+++
b/components/camel-avro-rpc/camel-avro-rpc-spi/src/main/java/org/apache/camel/component/avro/spi/AvroRpcHttpServerFactory.java
@@ -14,22 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.avro.test;
+package org.apache.camel.component.avro.spi;
-public interface TestReflection {
+import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.specific.SpecificResponder;
- String getName();
-
- void setName(String name);
-
- int getAge();
-
- void setAge(int age);
-
- int increaseAge(int age);
-
- void setTestPojo(TestPojo testPojo);
-
- TestPojo getTestPojo();
+/**
+ * SPI used by consumer for Avro via http. By default Jetty implementation is
used. @see
+ * org.apache.camel.component.avro.spi.JettyHttpServerFactory
+ */
+public interface AvroRpcHttpServerFactory {
+ Server create(SpecificResponder responder, int port) throws Exception;
}
diff --git a/components/camel-avro-rpc/pom.xml
b/components/camel-avro-rpc/pom.xml
index fe51e5e..cd7a986 100644
--- a/components/camel-avro-rpc/pom.xml
+++ b/components/camel-avro-rpc/pom.xml
@@ -17,9 +17,7 @@
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -28,75 +26,15 @@
<version>3.11.0-SNAPSHOT</version>
</parent>
- <artifactId>camel-avro-rpc</artifactId>
- <packaging>jar</packaging>
- <name>Camel :: Avro RPC</name>
- <description>Camel Avro RPC component</description>
+ <artifactId>camel-avro-rpc-parent</artifactId>
+ <packaging>pom</packaging>
- <properties>
- </properties>
+ <name>Camel :: Avro RPC :: Parent</name>
+ <description>Camel Avro RPC parent</description>
- <build>
- <plugins>
- <!--plugin>
- <groupId>org.apache.avro</groupId>
- <artifactId>avro-maven-plugin</artifactId>
- <version>${avro-version}</version>
- <executions>
- <execution>
- <id>schemas</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>schema</goal>
- <goal>protocol</goal>
- <goal>idl-protocol</goal>
- </goals>
- <configuration>
-
<sourceDirectory>${project.basedir}/src/test/avro/</sourceDirectory>
-
<outputDirectory>${project.basedir}/src/test/java/</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin-->
- </plugins>
- </build>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-support</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.avro</groupId>
- <artifactId>avro</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.avro</groupId>
- <artifactId>avro-ipc-netty</artifactId>
- <version>${avro-ipc-netty-version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.avro</groupId>
- <artifactId>avro-ipc-jetty</artifactId>
- <version>${avro-ipc-jetty-version}</version>
- </dependency>
-
- <!-- testing -->
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test-junit5</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-spring-xml</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-slf4j-impl</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
-</project>
\ No newline at end of file
+ <modules>
+ <module>camel-avro-rpc-spi</module>
+ <module>camel-avro-rpc-jetty</module>
+ <module>camel-avro-rpc-component</module>
+ </modules>
+</project>
diff --git a/core/camel-allcomponents/pom.xml b/core/camel-allcomponents/pom.xml
index 28845f8..c998dbe 100644
--- a/core/camel-allcomponents/pom.xml
+++ b/core/camel-allcomponents/pom.xml
@@ -99,10 +99,22 @@
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-jetty</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-spi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-avro-rpc</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-spi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-avro</artifactId>
</dependency>
<dependency>
diff --git a/docs/components/modules/ROOT/pages/avro-component.adoc
b/docs/components/modules/ROOT/pages/avro-component.adoc
index 5ba7745..db5157f 100644
--- a/docs/components/modules/ROOT/pages/avro-component.adoc
+++ b/docs/components/modules/ROOT/pages/avro-component.adoc
@@ -1,7 +1,7 @@
[[avro-component]]
= Avro RPC Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
-:page-source: components/camel-avro-rpc/src/main/docs/avro-component.adoc
+:page-source:
components/camel-avro-rpc/camel-avro-rpc-component/src/main/docs/avro-component.adoc
:docTitle: Avro RPC
:artifactId: camel-avro-rpc
:description: Produce or consume Apache Avro RPC services.
@@ -279,4 +279,11 @@ Value value filled as array contents.
This component is not supported in Karaf.
+== Avro via HTTP SPI
+
+The Avro RPC component offers the
`org.apache.camel.component.avro.spi.AvroRpcHttpServerFactory` service provider
interface (SPI) so that various platforms can provide their own implementation
based on their native HTTP server.
+
+The default implementation available in `org.apache.camel:camel-avro-jetty` is
based on `org.apache.avro:avro-ipc-jetty`.
+
+
include::{page-component-version}@camel-spring-boot::page$avro-starter.adoc[]
diff --git a/parent/pom.xml b/parent/pom.xml
index 2b5ff7b..cd10c03 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -845,11 +845,36 @@
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+
<artifactId>camel-avro-rpc-component</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-jetty</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-parent</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-rpc-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-avro-rpc</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+ <artifactId>camel-avro-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-avro</artifactId>
<version>${project.version}</version>
</dependency>
diff --git
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
index b21f929..ca71b51 100644
---
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
+++
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
@@ -580,6 +580,7 @@ public class PrepareCatalogMojo extends AbstractMojo {
case "camel-http-common":
case "camel-jetty-common":
case "camel-as2":
+ case "camel-avro-rpc":
case "camel-olingo2":
case "camel-olingo4":
case "camel-servicenow":
@@ -1176,6 +1177,8 @@ public class PrepareCatalogMojo extends AbstractMojo {
switch (dir.getFileName().toString()) {
case "camel-as2":
return
Collections.singletonList(dir.resolve("camel-as2-component"));
+ case "camel-avro-rpc":
+ return
Collections.singletonList(dir.resolve("camel-avro-rpc-component"));
case "camel-salesforce":
return
Collections.singletonList(dir.resolve("camel-salesforce-component"));
case "camel-olingo2":