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 <ondrusek.j...@gmail.com> 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. + */ +@org.apache.camel.spi.annotations.JdkService("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":