You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by dk...@apache.org on 2019/02/07 20:47:15 UTC
[avro] branch master updated: [AVRO-2106] Split netty/jetty out of
avro-ipc
This is an automated email from the ASF dual-hosted git repository.
dkulp pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/avro.git
The following commit(s) were added to refs/heads/master by this push:
new ac95feb [AVRO-2106] Split netty/jetty out of avro-ipc
ac95feb is described below
commit ac95febf82b15ffa564cac1d92475cdf6efed9f6
Author: Daniel Kulp <dk...@apache.org>
AuthorDate: Thu Feb 7 14:11:39 2019 -0500
[AVRO-2106] Split netty/jetty out of avro-ipc
---
.../avro-service-archetype/src/main/pom/pom.xml | 5 ++
.../java/transport/SimpleOrderServiceClient.java | 2 +-
.../java/transport/SimpleOrderServiceEndpoint.java | 2 +-
lang/java/compiler/pom.xml | 14 +---
lang/java/{ipc => ipc-jetty}/pom.xml | 87 +++++----------------
.../org/apache/avro/ipc/jetty}/HttpServer.java | 12 ++-
.../org/apache/avro/ipc/jetty}/StaticServlet.java | 4 +-
.../org/apache/avro/ipc/jetty}/StatsServer.java | 4 +-
.../avro/ipc/jetty}/StatsPluginOverhead.java | 4 +-
.../org/apache/avro/ipc/jetty}/TestBulkData.java | 3 +-
.../apache/avro/ipc/jetty}/TestProtocolHttp.java | 6 +-
.../apache/avro/ipc/jetty}/TestProtocolHttps.java | 4 +-
.../avro/ipc/jetty}/TestStatsPluginAndServlet.java | 7 +-
lang/java/ipc-jetty/src/test/keystore | Bin 0 -> 1366 bytes
.../resources/org/apache/avro/ipc/servercert.p12 | Bin 0 -> 1686 bytes
lang/java/ipc-jetty/src/test/truststore | Bin 0 -> 660 bytes
lang/java/{ipc => ipc-netty}/pom.xml | 85 +++++---------------
.../org/apache/avro/ipc/netty}/NettyServer.java | 10 ++-
.../apache/avro/ipc/netty}/NettyTransceiver.java | 11 ++-
.../avro/ipc/netty}/NettyTransportCodec.java | 2 +-
.../netty}/NettyTransceiverWhenFailsToConnect.java | 2 +-
.../apache/avro/ipc/netty}/TestNettyServer.java | 8 +-
.../netty}/TestNettyServerConcurrentExecution.java | 6 +-
.../ipc/netty}/TestNettyServerWithCallbacks.java | 7 +-
.../ipc/netty}/TestNettyServerWithCompression.java | 5 +-
.../avro/ipc/netty}/TestNettyServerWithSSL.java | 7 +-
.../TestNettyTransceiverWhenServerStops.java | 3 +-
.../apache/avro/ipc/netty}/TestProtocolNetty.java | 5 +-
lang/java/ipc-netty/src/test/keystore | Bin 0 -> 1366 bytes
.../resources/org/apache/avro/ipc/servercert.p12 | Bin 0 -> 1686 bytes
lang/java/ipc-netty/src/test/truststore | Bin 0 -> 660 bytes
lang/java/ipc/pom.xml | 20 ++---
.../ipc/src/main/java/org/apache/avro/ipc/Ipc.java | 23 ++++--
.../org/apache/avro/ipc/stats/StatsPlugin.java | 12 ++-
.../org/apache/avro/ipc/stats/StatsServlet.java | 2 +-
.../java/org/apache/avro/ipc/stats/FakeTicks.java | 2 +-
lang/java/mapred/pom.xml | 5 ++
.../apache/avro/mapred/tether/TetheredProcess.java | 2 +-
.../avro/mapred/tether/TetherTaskRunner.java | 2 +-
lang/java/pom.xml | 8 ++
40 files changed, 170 insertions(+), 211 deletions(-)
diff --git a/lang/java/archetypes/avro-service-archetype/src/main/pom/pom.xml b/lang/java/archetypes/avro-service-archetype/src/main/pom/pom.xml
index d611e69..817ab8c 100644
--- a/lang/java/archetypes/avro-service-archetype/src/main/pom/pom.xml
+++ b/lang/java/archetypes/avro-service-archetype/src/main/pom/pom.xml
@@ -48,6 +48,11 @@
<version>\${avro.version}</version>
</dependency>
<dependency>
+ <groupId>org.apache.avro</groupId>
+ <artifactId>avro-ipc-netty</artifactId>
+ <version>\${avro.version}</version>
+ </dependency>
+ <dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>\${jackson.version}</version>
diff --git a/lang/java/archetypes/avro-service-archetype/src/main/resources/archetype-resources/src/main/java/transport/SimpleOrderServiceClient.java b/lang/java/archetypes/avro-service-archetype/src/main/resources/archetype-resources/src/main/java/transport/SimpleOrderServiceClient.java
index dce4982..6fbbb5a 100644
--- a/lang/java/archetypes/avro-service-archetype/src/main/resources/archetype-resources/src/main/java/transport/SimpleOrderServiceClient.java
+++ b/lang/java/archetypes/avro-service-archetype/src/main/resources/archetype-resources/src/main/java/transport/SimpleOrderServiceClient.java
@@ -25,8 +25,8 @@ import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.avro.AvroRemoteException;
-import org.apache.avro.ipc.NettyTransceiver;
import org.apache.avro.ipc.Transceiver;
+import org.apache.avro.ipc.netty.NettyTransceiver;
import org.apache.avro.ipc.specific.SpecificRequestor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/lang/java/archetypes/avro-service-archetype/src/main/resources/archetype-resources/src/main/java/transport/SimpleOrderServiceEndpoint.java b/lang/java/archetypes/avro-service-archetype/src/main/resources/archetype-resources/src/main/java/transport/SimpleOrderServiceEndpoint.java
index f768e04..f00f07e 100644
--- a/lang/java/archetypes/avro-service-archetype/src/main/resources/archetype-resources/src/main/java/transport/SimpleOrderServiceEndpoint.java
+++ b/lang/java/archetypes/avro-service-archetype/src/main/resources/archetype-resources/src/main/java/transport/SimpleOrderServiceEndpoint.java
@@ -24,8 +24,8 @@ package ${package}.transport;
import java.net.InetSocketAddress;
import ${package}.service.SimpleOrderService;
-import org.apache.avro.ipc.NettyServer;
import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.netty.NettyServer;
import org.apache.avro.ipc.specific.SpecificResponder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/lang/java/compiler/pom.xml b/lang/java/compiler/pom.xml
index 3c29b36..8510b5e 100644
--- a/lang/java/compiler/pom.xml
+++ b/lang/java/compiler/pom.xml
@@ -82,6 +82,10 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
+ <!-- some tests hang if not run in a separate JVM -->
+ <forkCount>1</forkCount>
+ <reuseForks>false</reuseForks>
+ <parallel>none</parallel>
<systemPropertyVariables>
<test.idl.dir>${project.basedir}/src/test/idl</test.idl.dir>
</systemPropertyVariables>
@@ -137,16 +141,6 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <!-- some tests hang if not run in a separate JVM -->
- <forkCount>1</forkCount>
- <reuseForks>false</reuseForks>
- <parallel>none</parallel>
- </configuration>
- </plugin>
</plugins>
<pluginManagement>
<plugins>
diff --git a/lang/java/ipc/pom.xml b/lang/java/ipc-jetty/pom.xml
similarity index 55%
copy from lang/java/ipc/pom.xml
copy to lang/java/ipc-jetty/pom.xml
index f22a6a7..8fda076 100644
--- a/lang/java/ipc/pom.xml
+++ b/lang/java/ipc-jetty/pom.xml
@@ -27,32 +27,23 @@
<relativePath>../</relativePath>
</parent>
- <artifactId>avro-ipc</artifactId>
+ <artifactId>avro-ipc-jetty</artifactId>
- <name>Apache Avro IPC</name>
+ <name>Apache Avro IPC Jetty</name>
<url>http://avro.apache.org</url>
- <description>Avro inter-process communication components</description>
+ <description>Avro inter-process communication components using Jetty</description>
<packaging>bundle</packaging>
<properties>
<osgi.import>
- !org.apache.avro.ipc*,
+ !org.apache.avro.ipc.jetty*,
org.apache.avro*;version="${project.version}",
- org.jboss.netty*,
- javax.servlet*;resolution:=optional,
- org.eclipse*;resolution:=optional,
- org.apache.velocity*;resolution:=optional,
*
</osgi.import>
- <osgi.export>org.apache.avro.ipc*;version="${project.version}"</osgi.export>
+ <osgi.export>org.apache.avro.ipc.jetty*;version="${project.version}"</osgi.export>
</properties>
<build>
- <resources>
- <resource>
- <directory>src/main/velocity</directory>
- </resource>
- </resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -61,40 +52,10 @@
<!-- some tests hang if not run in a separate JVM -->
<forkCount>1</forkCount>
<reuseForks>false</reuseForks>
- <parallel>none</parallel>
+ <parallel>none</parallel>
</configuration>
</plugin>
<plugin>
- <groupId>${project.groupId}</groupId>
- <artifactId>avro-maven-plugin</artifactId>
- <version>${project.version}</version>
- <executions>
- <execution>
- <id>schemas</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>schema</goal>
- <goal>protocol</goal>
- <goal>idl-protocol</goal>
- </goals>
- <configuration>
- <excludes>
- <exclude>**/mapred/tether/**</exclude>
- <exclude>org/apache/avro/data/Json.avsc</exclude>
- </excludes>
- <stringType>String</stringType>
- <createOptionalGetters>true</createOptionalGetters>
- <!--<gettersReturnOptional>true</gettersReturnOptional>-->
- <sourceDirectory>${parent.project.basedir}/../../../../share/schemas/</sourceDirectory>
- <outputDirectory>${project.build.directory}/generated-sources/java</outputDirectory>
- <testSourceDirectory>${parent.project.basedir}/../../../../share/test/schemas/</testSourceDirectory>
- <testOutputDirectory>${project.build.directory}/generated-test-sources/java</testOutputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
@@ -115,6 +76,11 @@
<version>${project.version}</version>
</dependency>
<dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>avro-ipc</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
<groupId>${project.groupId}</groupId>
<artifactId>avro</artifactId>
<version>${project.version}</version>
@@ -122,20 +88,19 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>avro-ipc</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>${project.groupId}</groupId>
<artifactId>avro-compiler</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </dependency>
- <dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
</dependency>
@@ -143,21 +108,7 @@
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
</dependency>
- <dependency>
- <groupId>io.netty</groupId>
- <artifactId>netty</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.velocity</groupId>
- <artifactId>velocity-engine-core</artifactId>
- </dependency>
- <!-- javax.annotation-api dependency must be explicit for forward compatibility (Java > 9) -->
- <dependency>
- <groupId>javax.annotation</groupId>
- <artifactId>javax.annotation-api</artifactId>
- <version>1.3.2</version>
- </dependency>
-
</dependencies>
</project>
+
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/HttpServer.java b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/HttpServer.java
similarity index 92%
rename from lang/java/ipc/src/main/java/org/apache/avro/ipc/HttpServer.java
rename to lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/HttpServer.java
index 917a723..2a6df94 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/HttpServer.java
+++ b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/HttpServer.java
@@ -16,12 +16,16 @@
* limitations under the License.
*/
-package org.apache.avro.ipc;
+package org.apache.avro.ipc.jetty;
import java.io.IOException;
+import java.net.InetSocketAddress;
import java.util.Arrays;
import org.apache.avro.AvroRuntimeException;
+import org.apache.avro.ipc.Responder;
+import org.apache.avro.ipc.ResponderServlet;
+import org.apache.avro.ipc.Server;
import org.eclipse.jetty.server.ConnectionFactory;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.HttpConfiguration;
@@ -45,6 +49,12 @@ public class HttpServer implements Server {
this(servlet, null, port);
}
+
+ /** Constructs a server to run on the named port on the specified address. */
+ public HttpServer(Responder responder, InetSocketAddress addr) throws IOException {
+ this(new ResponderServlet(responder), addr.getHostString(), addr.getPort());
+ }
+
/** Constructs a server to run on the named port on the specified address. */
public HttpServer(Responder responder, String bindAddress, int port) throws IOException {
this(new ResponderServlet(responder), bindAddress, port);
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StaticServlet.java b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StaticServlet.java
similarity index 94%
rename from lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StaticServlet.java
rename to lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StaticServlet.java
index 53d16a8..b9e5633 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StaticServlet.java
+++ b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StaticServlet.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.avro.ipc.stats;
+package org.apache.avro.ipc.jetty;
import java.net.URL;
@@ -27,6 +27,8 @@ import org.eclipse.jetty.util.resource.Resource;
* Very simple servlet class capable of serving static files.
*/
public class StaticServlet extends DefaultServlet {
+ private static final long serialVersionUID = 1L;
+
public Resource getResource(String pathInContext) {
// Take only last slice of the URL as a filename, so we can adjust path.
// This also prevents mischief like '../../foo.css'
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServer.java b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StatsServer.java
similarity index 93%
rename from lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServer.java
rename to lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StatsServer.java
index 19d818a..687e9f2 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServer.java
+++ b/lang/java/ipc-jetty/src/main/java/org/apache/avro/ipc/jetty/StatsServer.java
@@ -1,4 +1,6 @@
-package org.apache.avro.ipc.stats;
+package org.apache.avro.ipc.jetty;
+import org.apache.avro.ipc.stats.StatsPlugin;
+import org.apache.avro.ipc.stats.StatsServlet;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/ipc/stats/StatsPluginOverhead.java b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/StatsPluginOverhead.java
similarity index 97%
rename from lang/java/ipc/src/test/java/org/apache/avro/ipc/stats/StatsPluginOverhead.java
rename to lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/StatsPluginOverhead.java
index e0c9a67..f7d2f84 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/ipc/stats/StatsPluginOverhead.java
+++ b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/StatsPluginOverhead.java
@@ -15,7 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.avro.ipc.stats;
+package org.apache.avro.ipc.jetty;
import java.io.IOException;
import java.net.URL;
@@ -23,12 +23,12 @@ import java.net.URL;
import org.apache.avro.AvroRemoteException;
import org.apache.avro.Protocol;
import org.apache.avro.Protocol.Message;
-import org.apache.avro.ipc.HttpServer;
import org.apache.avro.ipc.HttpTransceiver;
import org.apache.avro.ipc.Responder;
import org.apache.avro.ipc.Transceiver;
import org.apache.avro.ipc.generic.GenericRequestor;
import org.apache.avro.ipc.generic.GenericResponder;
+import org.apache.avro.ipc.stats.StatsPlugin;
/**
* Naively measures overhead of using the stats plugin.
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/TestBulkData.java b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestBulkData.java
similarity index 98%
rename from lang/java/ipc/src/test/java/org/apache/avro/TestBulkData.java
rename to lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestBulkData.java
index db9220f..5b9add6 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/TestBulkData.java
+++ b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestBulkData.java
@@ -15,9 +15,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.avro;
+package org.apache.avro.ipc.jetty;
-import org.apache.avro.ipc.HttpServer;
import org.apache.avro.ipc.HttpTransceiver;
import org.apache.avro.ipc.Server;
import org.apache.avro.ipc.Transceiver;
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/TestProtocolHttp.java b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestProtocolHttp.java
similarity index 95%
rename from lang/java/ipc/src/test/java/org/apache/avro/TestProtocolHttp.java
rename to lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestProtocolHttp.java
index d73f22d..d067edf 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/TestProtocolHttp.java
+++ b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestProtocolHttp.java
@@ -15,13 +15,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.avro;
+package org.apache.avro.ipc.jetty;
+import org.apache.avro.AvroRemoteException;
+import org.apache.avro.Protocol;
import org.apache.avro.Schema;
+import org.apache.avro.TestProtocolSpecific;
import org.apache.avro.ipc.Server;
import org.apache.avro.ipc.Transceiver;
import org.apache.avro.ipc.Responder;
-import org.apache.avro.ipc.HttpServer;
import org.apache.avro.ipc.HttpTransceiver;
import org.apache.avro.ipc.generic.GenericRequestor;
import org.apache.avro.ipc.specific.SpecificRequestor;
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/TestProtocolHttps.java b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestProtocolHttps.java
similarity index 96%
rename from lang/java/ipc/src/test/java/org/apache/avro/TestProtocolHttps.java
rename to lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestProtocolHttps.java
index 67182e1..9611a1c 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/TestProtocolHttps.java
+++ b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestProtocolHttps.java
@@ -15,12 +15,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.avro;
+package org.apache.avro.ipc.jetty;
import org.apache.avro.ipc.Server;
import org.apache.avro.ipc.Transceiver;
import org.apache.avro.ipc.Responder;
-import org.apache.avro.ipc.HttpServer;
+import org.apache.avro.TestProtocolSpecific;
import org.apache.avro.ipc.HttpTransceiver;
import org.eclipse.jetty.server.SslConnectionFactory;
import org.eclipse.jetty.util.ssl.SslContextFactory;
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/ipc/stats/TestStatsPluginAndServlet.java b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestStatsPluginAndServlet.java
similarity index 97%
rename from lang/java/ipc/src/test/java/org/apache/avro/ipc/stats/TestStatsPluginAndServlet.java
rename to lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestStatsPluginAndServlet.java
index 2585520..9206d47 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/ipc/stats/TestStatsPluginAndServlet.java
+++ b/lang/java/ipc-jetty/src/test/java/org/apache/avro/ipc/jetty/TestStatsPluginAndServlet.java
@@ -15,7 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.avro.ipc.stats;
+package org.apache.avro.ipc.jetty;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -33,7 +33,6 @@ import org.apache.avro.Protocol;
import org.apache.avro.Protocol.Message;
import org.apache.avro.generic.GenericData;
import org.apache.avro.generic.GenericRecord;
-import org.apache.avro.ipc.HttpServer;
import org.apache.avro.ipc.HttpTransceiver;
import org.apache.avro.ipc.LocalTransceiver;
import org.apache.avro.ipc.RPCContext;
@@ -41,6 +40,8 @@ import org.apache.avro.ipc.Responder;
import org.apache.avro.ipc.Transceiver;
import org.apache.avro.ipc.generic.GenericRequestor;
import org.apache.avro.ipc.generic.GenericResponder;
+import org.apache.avro.ipc.stats.StatsPlugin;
+import org.apache.avro.ipc.stats.StatsServlet;
import org.junit.Test;
public class TestStatsPluginAndServlet {
@@ -111,7 +112,7 @@ public class TestStatsPluginAndServlet {
@Test
public void testMultipleRPCs() throws IOException {
- FakeTicks t = new FakeTicks();
+ org.apache.avro.ipc.stats.FakeTicks t = new org.apache.avro.ipc.stats.FakeTicks();
StatsPlugin statsPlugin = new StatsPlugin(t, StatsPlugin.LATENCY_SEGMENTER,
StatsPlugin.PAYLOAD_SEGMENTER);
RPCContext context1 = makeContext();
diff --git a/lang/java/ipc-jetty/src/test/keystore b/lang/java/ipc-jetty/src/test/keystore
new file mode 100644
index 0000000..a13beae
Binary files /dev/null and b/lang/java/ipc-jetty/src/test/keystore differ
diff --git a/lang/java/ipc-jetty/src/test/resources/org/apache/avro/ipc/servercert.p12 b/lang/java/ipc-jetty/src/test/resources/org/apache/avro/ipc/servercert.p12
new file mode 100644
index 0000000..7911ce6
Binary files /dev/null and b/lang/java/ipc-jetty/src/test/resources/org/apache/avro/ipc/servercert.p12 differ
diff --git a/lang/java/ipc-jetty/src/test/truststore b/lang/java/ipc-jetty/src/test/truststore
new file mode 100644
index 0000000..e442bdc
Binary files /dev/null and b/lang/java/ipc-jetty/src/test/truststore differ
diff --git a/lang/java/ipc/pom.xml b/lang/java/ipc-netty/pom.xml
similarity index 57%
copy from lang/java/ipc/pom.xml
copy to lang/java/ipc-netty/pom.xml
index f22a6a7..f8a6811 100644
--- a/lang/java/ipc/pom.xml
+++ b/lang/java/ipc-netty/pom.xml
@@ -27,20 +27,18 @@
<relativePath>../</relativePath>
</parent>
- <artifactId>avro-ipc</artifactId>
+ <artifactId>avro-ipc-netty</artifactId>
- <name>Apache Avro IPC</name>
+ <name>Apache Avro IPC Netty</name>
<url>http://avro.apache.org</url>
<description>Avro inter-process communication components</description>
<packaging>bundle</packaging>
<properties>
<osgi.import>
- !org.apache.avro.ipc*,
+ !org.apache.avro.ipc.netty*,
org.apache.avro*;version="${project.version}",
org.jboss.netty*,
- javax.servlet*;resolution:=optional,
- org.eclipse*;resolution:=optional,
org.apache.velocity*;resolution:=optional,
*
</osgi.import>
@@ -48,11 +46,6 @@
</properties>
<build>
- <resources>
- <resource>
- <directory>src/main/velocity</directory>
- </resource>
- </resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -61,40 +54,10 @@
<!-- some tests hang if not run in a separate JVM -->
<forkCount>1</forkCount>
<reuseForks>false</reuseForks>
- <parallel>none</parallel>
+ <parallel>none</parallel>
</configuration>
</plugin>
<plugin>
- <groupId>${project.groupId}</groupId>
- <artifactId>avro-maven-plugin</artifactId>
- <version>${project.version}</version>
- <executions>
- <execution>
- <id>schemas</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>schema</goal>
- <goal>protocol</goal>
- <goal>idl-protocol</goal>
- </goals>
- <configuration>
- <excludes>
- <exclude>**/mapred/tether/**</exclude>
- <exclude>org/apache/avro/data/Json.avsc</exclude>
- </excludes>
- <stringType>String</stringType>
- <createOptionalGetters>true</createOptionalGetters>
- <!--<gettersReturnOptional>true</gettersReturnOptional>-->
- <sourceDirectory>${parent.project.basedir}/../../../../share/schemas/</sourceDirectory>
- <outputDirectory>${project.build.directory}/generated-sources/java</outputDirectory>
- <testSourceDirectory>${parent.project.basedir}/../../../../share/test/schemas/</testSourceDirectory>
- <testOutputDirectory>${project.build.directory}/generated-test-sources/java</testOutputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
@@ -115,6 +78,11 @@
<version>${project.version}</version>
</dependency>
<dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>avro-ipc</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
<groupId>${project.groupId}</groupId>
<artifactId>avro</artifactId>
<version>${project.version}</version>
@@ -122,42 +90,25 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>avro-ipc</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>${project.groupId}</groupId>
<artifactId>avro-compiler</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-server</artifactId>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlet</artifactId>
- </dependency>
- <dependency>
<groupId>io.netty</groupId>
<artifactId>netty</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.velocity</groupId>
- <artifactId>velocity-engine-core</artifactId>
- </dependency>
- <!-- javax.annotation-api dependency must be explicit for forward compatibility (Java > 9) -->
- <dependency>
- <groupId>javax.annotation</groupId>
- <artifactId>javax.annotation-api</artifactId>
- <version>1.3.2</version>
- </dependency>
+
</dependencies>
</project>
+
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/NettyServer.java b/lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyServer.java
similarity index 95%
rename from lang/java/ipc/src/main/java/org/apache/avro/ipc/NettyServer.java
rename to lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyServer.java
index 2e299a0..3f146db 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/NettyServer.java
+++ b/lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyServer.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.avro.ipc;
+package org.apache.avro.ipc.netty;
import java.io.IOException;
import java.net.InetSocketAddress;
@@ -25,9 +25,11 @@ import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executors;
-import org.apache.avro.ipc.NettyTransportCodec.NettyDataPack;
-import org.apache.avro.ipc.NettyTransportCodec.NettyFrameDecoder;
-import org.apache.avro.ipc.NettyTransportCodec.NettyFrameEncoder;
+import org.apache.avro.ipc.Responder;
+import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.netty.NettyTransportCodec.NettyDataPack;
+import org.apache.avro.ipc.netty.NettyTransportCodec.NettyFrameDecoder;
+import org.apache.avro.ipc.netty.NettyTransportCodec.NettyFrameEncoder;
import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelEvent;
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/NettyTransceiver.java b/lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyTransceiver.java
similarity index 98%
rename from lang/java/ipc/src/main/java/org/apache/avro/ipc/NettyTransceiver.java
rename to lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyTransceiver.java
index 107aac8..24f542f 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/NettyTransceiver.java
+++ b/lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyTransceiver.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.avro.ipc;
+package org.apache.avro.ipc.netty;
import java.io.IOException;
import java.net.InetSocketAddress;
@@ -32,9 +32,12 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.apache.avro.Protocol;
-import org.apache.avro.ipc.NettyTransportCodec.NettyDataPack;
-import org.apache.avro.ipc.NettyTransportCodec.NettyFrameDecoder;
-import org.apache.avro.ipc.NettyTransportCodec.NettyFrameEncoder;
+import org.apache.avro.ipc.CallFuture;
+import org.apache.avro.ipc.Callback;
+import org.apache.avro.ipc.Transceiver;
+import org.apache.avro.ipc.netty.NettyTransportCodec.NettyDataPack;
+import org.apache.avro.ipc.netty.NettyTransportCodec.NettyFrameDecoder;
+import org.apache.avro.ipc.netty.NettyTransportCodec.NettyFrameEncoder;
import org.jboss.netty.bootstrap.ClientBootstrap;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelEvent;
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/NettyTransportCodec.java b/lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyTransportCodec.java
similarity index 99%
rename from lang/java/ipc/src/main/java/org/apache/avro/ipc/NettyTransportCodec.java
rename to lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyTransportCodec.java
index 80f1f83..432fe28 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/NettyTransportCodec.java
+++ b/lang/java/ipc-netty/src/main/java/org/apache/avro/ipc/netty/NettyTransportCodec.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.avro.ipc;
+package org.apache.avro.ipc.netty;
import java.nio.ByteBuffer;
import java.util.ArrayList;
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/ipc/NettyTransceiverWhenFailsToConnect.java b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/NettyTransceiverWhenFailsToConnect.java
similarity index 98%
rename from lang/java/ipc/src/test/java/org/apache/avro/ipc/NettyTransceiverWhenFailsToConnect.java
rename to lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/NettyTransceiverWhenFailsToConnect.java
index 6776353..60196bc 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/ipc/NettyTransceiverWhenFailsToConnect.java
+++ b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/NettyTransceiverWhenFailsToConnect.java
@@ -15,7 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.avro.ipc;
+package org.apache.avro.ipc.netty;
import org.jboss.netty.channel.ChannelFactory;
import org.jboss.netty.channel.ChannelPipeline;
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServer.java b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServer.java
similarity index 96%
rename from lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServer.java
rename to lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServer.java
index a892744..3970a5e 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServer.java
+++ b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServer.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.avro.ipc;
+package org.apache.avro.ipc.netty;
import java.io.IOException;
import java.io.OutputStream;
@@ -29,7 +29,11 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import org.junit.Assert;
-
+import org.apache.avro.ipc.Responder;
+import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.Transceiver;
+import org.apache.avro.ipc.netty.NettyServer;
+import org.apache.avro.ipc.netty.NettyTransceiver;
import org.apache.avro.ipc.specific.SpecificRequestor;
import org.apache.avro.ipc.specific.SpecificResponder;
import org.apache.avro.test.Mail;
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerConcurrentExecution.java b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerConcurrentExecution.java
similarity index 97%
rename from lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerConcurrentExecution.java
rename to lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerConcurrentExecution.java
index de0ea35..afdc60b 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerConcurrentExecution.java
+++ b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerConcurrentExecution.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.avro.ipc;
+package org.apache.avro.ipc.netty;
import java.io.IOException;
import java.net.InetSocketAddress;
@@ -25,6 +25,10 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executors;
import org.apache.avro.AvroRemoteException;
+import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.Transceiver;
+import org.apache.avro.ipc.netty.NettyServer;
+import org.apache.avro.ipc.netty.NettyTransceiver;
import org.apache.avro.ipc.specific.SpecificRequestor;
import org.apache.avro.ipc.specific.SpecificResponder;
import org.apache.avro.test.Simple;
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerWithCallbacks.java b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerWithCallbacks.java
similarity index 99%
rename from lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerWithCallbacks.java
rename to lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerWithCallbacks.java
index 77c89a3..127f41b 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerWithCallbacks.java
+++ b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerWithCallbacks.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.avro.ipc;
+package org.apache.avro.ipc.netty;
import java.io.IOException;
import java.net.InetSocketAddress;
@@ -34,6 +34,11 @@ import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
import org.apache.avro.AvroRemoteException;
+import org.apache.avro.ipc.CallFuture;
+import org.apache.avro.ipc.Callback;
+import org.apache.avro.ipc.Responder;
+import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.Transceiver;
import org.apache.avro.ipc.specific.SpecificRequestor;
import org.apache.avro.ipc.specific.SpecificResponder;
import org.apache.avro.test.Simple;
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerWithCompression.java b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerWithCompression.java
similarity index 95%
rename from lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerWithCompression.java
rename to lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerWithCompression.java
index ab8de99..ca6fdeb 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerWithCompression.java
+++ b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerWithCompression.java
@@ -15,12 +15,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.avro.ipc;
+package org.apache.avro.ipc.netty;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.concurrent.Executors;
+import org.apache.avro.ipc.Responder;
+import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.Transceiver;
import org.jboss.netty.channel.ChannelFactory;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerWithSSL.java b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerWithSSL.java
similarity index 95%
rename from lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerWithSSL.java
rename to lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerWithSSL.java
index dfc8271..c021de3 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyServerWithSSL.java
+++ b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyServerWithSSL.java
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-package org.apache.avro.ipc;
+package org.apache.avro.ipc.netty;
import java.io.IOException;
import java.net.InetSocketAddress;
@@ -30,6 +30,11 @@ import javax.net.ssl.SSLEngine;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
+import org.apache.avro.ipc.Responder;
+import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.Transceiver;
+import org.apache.avro.ipc.netty.NettyServer;
+import org.apache.avro.ipc.netty.NettyTransceiver;
import org.jboss.netty.channel.ChannelFactory;
import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyTransceiverWhenServerStops.java b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyTransceiverWhenServerStops.java
similarity index 98%
rename from lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyTransceiverWhenServerStops.java
rename to lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyTransceiverWhenServerStops.java
index d79ce45..a191e87 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/ipc/TestNettyTransceiverWhenServerStops.java
+++ b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestNettyTransceiverWhenServerStops.java
@@ -15,8 +15,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.avro.ipc;
+package org.apache.avro.ipc.netty;
+import org.apache.avro.ipc.Responder;
import org.apache.avro.ipc.specific.SpecificRequestor;
import org.apache.avro.ipc.specific.SpecificResponder;
import org.apache.avro.test.Mail;
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/TestProtocolNetty.java b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestProtocolNetty.java
similarity index 93%
rename from lang/java/ipc/src/test/java/org/apache/avro/TestProtocolNetty.java
rename to lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestProtocolNetty.java
index 84da84d..c25b781 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/TestProtocolNetty.java
+++ b/lang/java/ipc-netty/src/test/java/org/apache/avro/ipc/netty/TestProtocolNetty.java
@@ -16,12 +16,11 @@
* limitations under the License.
*/
-package org.apache.avro;
+package org.apache.avro.ipc.netty;
import java.net.InetSocketAddress;
-import org.apache.avro.ipc.NettyServer;
-import org.apache.avro.ipc.NettyTransceiver;
+import org.apache.avro.TestProtocolSpecific;
import org.apache.avro.ipc.Responder;
import org.apache.avro.ipc.Server;
import org.apache.avro.ipc.Transceiver;
diff --git a/lang/java/ipc-netty/src/test/keystore b/lang/java/ipc-netty/src/test/keystore
new file mode 100644
index 0000000..a13beae
Binary files /dev/null and b/lang/java/ipc-netty/src/test/keystore differ
diff --git a/lang/java/ipc-netty/src/test/resources/org/apache/avro/ipc/servercert.p12 b/lang/java/ipc-netty/src/test/resources/org/apache/avro/ipc/servercert.p12
new file mode 100644
index 0000000..7911ce6
Binary files /dev/null and b/lang/java/ipc-netty/src/test/resources/org/apache/avro/ipc/servercert.p12 differ
diff --git a/lang/java/ipc-netty/src/test/truststore b/lang/java/ipc-netty/src/test/truststore
new file mode 100644
index 0000000..e442bdc
Binary files /dev/null and b/lang/java/ipc-netty/src/test/truststore differ
diff --git a/lang/java/ipc/pom.xml b/lang/java/ipc/pom.xml
index f22a6a7..6812265 100644
--- a/lang/java/ipc/pom.xml
+++ b/lang/java/ipc/pom.xml
@@ -38,13 +38,12 @@
<osgi.import>
!org.apache.avro.ipc*,
org.apache.avro*;version="${project.version}",
- org.jboss.netty*,
javax.servlet*;resolution:=optional,
- org.eclipse*;resolution:=optional,
org.apache.velocity*;resolution:=optional,
*
</osgi.import>
<osgi.export>org.apache.avro.ipc*;version="${project.version}"</osgi.export>
+ <osgi.dynamic.import>org.apache.avro.ipc.jetty,org.apache.avro.ipc.netty</osgi.dynamic.import>
</properties>
<build>
@@ -136,21 +135,14 @@
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-server</artifactId>
- </dependency>
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlet</artifactId>
- </dependency>
- <dependency>
- <groupId>io.netty</groupId>
- <artifactId>netty</artifactId>
- </dependency>
- <dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
</dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
<!-- javax.annotation-api dependency must be explicit for forward compatibility (Java > 9) -->
<dependency>
<groupId>javax.annotation</groupId>
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/Ipc.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/Ipc.java
index 06bf041..75b8bbb 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/Ipc.java
+++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/Ipc.java
@@ -22,9 +22,12 @@ import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.URI;
+import org.slf4j.LoggerFactory;
+
/** IPC utilities, including client and server factories. */
public class Ipc {
private Ipc() {} // no public ctor
+ static boolean warned = false;
/** Create a client {@link Transceiver} connecting to the provided URI. */
public static Transceiver createTransceiver(URI uri) throws IOException {
@@ -41,13 +44,23 @@ public class Ipc {
* responder. */
public static Server createServer(Responder responder,
URI uri) throws IOException {
- if ("http".equals(uri.getScheme()))
- return new HttpServer(responder, uri.getPort());
- else if ("avro".equals(uri.getScheme()))
+ if ("avro".equals(uri.getScheme())) {
return new SaslSocketServer
(responder, new InetSocketAddress(uri.getHost(), uri.getPort()));
- else
- throw new IOException("unknown uri scheme: "+uri);
+ } else if ("http".equals(uri.getScheme())) {
+ if (!warned) {
+ LoggerFactory.getLogger(Ipc.class).error("Using Ipc.createServer to create http instances is deprecated. Create "
+ + " an instace of org.apache.avro.ipc.jetty.HttpServer directly.");
+ warned = true;
+ }
+ try {
+ Class<?> cls = Class.forName("org.apache.avro.ipc.jetty.HttpServer");
+ return (Server)cls.getConstructor(Responder.class, Integer.TYPE).newInstance(responder, uri.getPort());
+ } catch (Throwable t) {
+ //ignore, exception will be thrown
+ }
+ }
+ throw new IOException("unknown uri scheme: "+uri);
}
}
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsPlugin.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsPlugin.java
index 553b424..120d3f2 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsPlugin.java
+++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsPlugin.java
@@ -43,7 +43,7 @@ import org.apache.avro.ipc.stats.Stopwatch.Ticks;
*/
public class StatsPlugin extends RPCPlugin {
/** Static declaration of histogram buckets. */
- static final Segmenter<String, Float> LATENCY_SEGMENTER =
+ public static final Segmenter<String, Float> LATENCY_SEGMENTER =
new Histogram.TreeMapSegmenter<>(new TreeSet<>(Arrays.asList(
0f,
25f,
@@ -61,7 +61,7 @@ public class StatsPlugin extends RPCPlugin {
60000f, // 1 minute
600000f)));
- static final Segmenter<String, Integer> PAYLOAD_SEGMENTER =
+ public static final Segmenter<String, Integer> PAYLOAD_SEGMENTER =
new Histogram.TreeMapSegmenter<>(new TreeSet<>(Arrays.asList(
0,
25,
@@ -102,7 +102,7 @@ public class StatsPlugin extends RPCPlugin {
private Segmenter<?, Integer> integerSegmenter;
/** Construct a plugin with custom Ticks and Segmenter implementations. */
- StatsPlugin(Ticks ticks, Segmenter<?, Float> floatSegmenter,
+ public StatsPlugin(Ticks ticks, Segmenter<?, Float> floatSegmenter,
Segmenter<?, Integer> integerSegmenter) {
this.floatSegmenter = floatSegmenter;
this.integerSegmenter = integerSegmenter;
@@ -209,14 +209,12 @@ public class StatsPlugin extends RPCPlugin {
}
}
- @SuppressWarnings("unchecked")
private FloatHistogram<?> createNewFloatHistogram() {
- return new FloatHistogram(floatSegmenter);
+ return new FloatHistogram<>(floatSegmenter);
}
- @SuppressWarnings("unchecked")
private IntegerHistogram<?> createNewIntegerHistogram() {
- return new IntegerHistogram(integerSegmenter);
+ return new IntegerHistogram<>(integerSegmenter);
}
/** Converts nanoseconds to milliseconds. */
diff --git a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServlet.java b/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServlet.java
index f51789a..8605095 100644
--- a/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServlet.java
+++ b/lang/java/ipc/src/main/java/org/apache/avro/ipc/stats/StatsServlet.java
@@ -125,7 +125,7 @@ public class StatsServlet extends HttpServlet {
}
}
- void writeStats(Writer w) throws IOException {
+ public void writeStats(Writer w) throws IOException {
VelocityContext context = new VelocityContext();
context.put("title", "Avro RPC Stats");
diff --git a/lang/java/ipc/src/test/java/org/apache/avro/ipc/stats/FakeTicks.java b/lang/java/ipc/src/test/java/org/apache/avro/ipc/stats/FakeTicks.java
index 68358b7..e3854b7 100644
--- a/lang/java/ipc/src/test/java/org/apache/avro/ipc/stats/FakeTicks.java
+++ b/lang/java/ipc/src/test/java/org/apache/avro/ipc/stats/FakeTicks.java
@@ -20,7 +20,7 @@ package org.apache.avro.ipc.stats;
import org.apache.avro.ipc.stats.Stopwatch.Ticks;
/** Implements Ticks with manual time-winding. */
-class FakeTicks implements Ticks {
+public class FakeTicks implements Ticks {
long time = 0;
@Override
diff --git a/lang/java/mapred/pom.xml b/lang/java/mapred/pom.xml
index 7be401e..e0fee81 100644
--- a/lang/java/mapred/pom.xml
+++ b/lang/java/mapred/pom.xml
@@ -123,6 +123,11 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>avro-ipc-jetty</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>avro-ipc</artifactId>
<classifier>tests</classifier>
<version>${project.version}</version>
diff --git a/lang/java/mapred/src/main/java/org/apache/avro/mapred/tether/TetheredProcess.java b/lang/java/mapred/src/main/java/org/apache/avro/mapred/tether/TetheredProcess.java
index 3d3153b..a1094af 100644
--- a/lang/java/mapred/src/main/java/org/apache/avro/mapred/tether/TetheredProcess.java
+++ b/lang/java/mapred/src/main/java/org/apache/avro/mapred/tether/TetheredProcess.java
@@ -44,7 +44,7 @@ import org.apache.avro.ipc.SaslSocketServer;
import org.apache.avro.ipc.SaslSocketTransceiver;
import org.apache.avro.ipc.specific.SpecificRequestor;
import org.apache.avro.ipc.specific.SpecificResponder;
-import org.apache.avro.ipc.HttpServer;
+import org.apache.avro.ipc.jetty.HttpServer;
import org.apache.avro.ipc.HttpTransceiver;
import org.slf4j.Logger;
diff --git a/lang/java/mapred/src/test/java/org/apache/avro/mapred/tether/TetherTaskRunner.java b/lang/java/mapred/src/test/java/org/apache/avro/mapred/tether/TetherTaskRunner.java
index 39cdc42..cd69943 100644
--- a/lang/java/mapred/src/test/java/org/apache/avro/mapred/tether/TetherTaskRunner.java
+++ b/lang/java/mapred/src/test/java/org/apache/avro/mapred/tether/TetherTaskRunner.java
@@ -25,10 +25,10 @@ import java.nio.ByteBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.apache.avro.ipc.HttpServer;
import org.apache.avro.ipc.SaslSocketServer;
import org.apache.avro.ipc.specific.SpecificResponder;
import org.apache.avro.ipc.Server;
+import org.apache.avro.ipc.jetty.HttpServer;
/** Java implementation of a tether executable. Useless except for testing,
* since it's already possible to write Java MapReduce programs without
diff --git a/lang/java/pom.xml b/lang/java/pom.xml
index 7e733ef..c93bc7d 100644
--- a/lang/java/pom.xml
+++ b/lang/java/pom.xml
@@ -40,6 +40,7 @@
<hadoop2.version>2.7.3</hadoop2.version>
<jackson.version>2.9.8</jackson.version>
+ <servlet-api.version>3.1.0</servlet-api.version>
<jetty.version>9.4.14.v20181114</jetty.version>
<jopt-simple.version>5.0.4</jopt-simple.version>
<junit.version>4.12</junit.version>
@@ -86,6 +87,8 @@
<module>compiler</module>
<module>maven-plugin</module>
<module>ipc</module>
+ <module>ipc-jetty</module>
+ <module>ipc-netty</module>
<module>trevni</module>
<module>tools</module>
<module>mapred</module>
@@ -459,6 +462,11 @@
<version>${jetty.version}</version>
</dependency>
<dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>${servlet-api.version}</version>
+ </dependency>
+ <dependency>
<groupId>io.netty</groupId>
<artifactId>netty</artifactId>
<version>${netty.version}</version>