diff --git a/src/main/java/com/sunquakes/jsonrpc4j/discovery/NettyHttpClient.java b/src/main/java/com/sunquakes/jsonrpc4j/client/NettyHttpClient.java similarity index 95% rename from src/main/java/com/sunquakes/jsonrpc4j/discovery/NettyHttpClient.java rename to src/main/java/com/sunquakes/jsonrpc4j/client/NettyHttpClient.java index da9bd74..7a45230 100644 --- a/src/main/java/com/sunquakes/jsonrpc4j/discovery/NettyHttpClient.java +++ b/src/main/java/com/sunquakes/jsonrpc4j/client/NettyHttpClient.java @@ -1,4 +1,4 @@ -package com.sunquakes.jsonrpc4j.discovery; +package com.sunquakes.jsonrpc4j.client; import com.sunquakes.jsonrpc4j.JsonRpcProtocol; import com.sunquakes.jsonrpc4j.utils.RequestUtils; @@ -30,9 +30,9 @@ public class NettyHttpClient { private static final int DEFAULT_HTTPS_PORT = 443; - private URI uri; + private final URI uri; - NettyHttpClient(String host) { + public NettyHttpClient(String host) { uri = URI.create(host); } @@ -107,7 +107,7 @@ protected void initChannel(Channel ch) throws Exception { } } - class HttpResponseHandler extends SimpleChannelInboundHandler { + static class HttpResponseHandler extends SimpleChannelInboundHandler { Promise promise; diff --git a/src/main/java/com/sunquakes/jsonrpc4j/discovery/Consul.java b/src/main/java/com/sunquakes/jsonrpc4j/discovery/Consul.java index 4a18ff1..2d416fe 100644 --- a/src/main/java/com/sunquakes/jsonrpc4j/discovery/Consul.java +++ b/src/main/java/com/sunquakes/jsonrpc4j/discovery/Consul.java @@ -1,6 +1,7 @@ package com.sunquakes.jsonrpc4j.discovery; import com.sunquakes.jsonrpc4j.JsonRpcProtocol; +import com.sunquakes.jsonrpc4j.client.NettyHttpClient; import com.sunquakes.jsonrpc4j.utils.AddressUtils; import com.sunquakes.jsonrpc4j.utils.JSONUtils; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/com/sunquakes/jsonrpc4j/discovery/Nacos.java b/src/main/java/com/sunquakes/jsonrpc4j/discovery/Nacos.java index ffa2cd7..24b9114 100644 --- a/src/main/java/com/sunquakes/jsonrpc4j/discovery/Nacos.java +++ b/src/main/java/com/sunquakes/jsonrpc4j/discovery/Nacos.java @@ -1,5 +1,6 @@ package com.sunquakes.jsonrpc4j.discovery; +import com.sunquakes.jsonrpc4j.client.NettyHttpClient; import com.sunquakes.jsonrpc4j.exception.JsonRpcException; import com.sunquakes.jsonrpc4j.utils.JSONUtils; import io.netty.buffer.ByteBuf; @@ -43,7 +44,7 @@ public class Nacos implements Driver { private String ephemeral = "true"; - private List> heartbeatList = new ArrayList<>(); + private final List> heartbeatList = new ArrayList<>(); @Override public Nacos newClient(String url) { @@ -163,7 +164,7 @@ public class GetResp { @Data @AllArgsConstructor @NoArgsConstructor - public class Service { + public static class Service { private String ip; private Integer port; private String instanceId; diff --git a/src/test/java/com/sunquakes/jsonrpc4j/client/JsonRpcHttpsClientTest.java b/src/test/java/com/sunquakes/jsonrpc4j/client/JsonRpcHttpsClientTest.java index 252b63c..039248b 100644 --- a/src/test/java/com/sunquakes/jsonrpc4j/client/JsonRpcHttpsClientTest.java +++ b/src/test/java/com/sunquakes/jsonrpc4j/client/JsonRpcHttpsClientTest.java @@ -2,18 +2,11 @@ import com.sunquakes.jsonrpc4j.dto.RequestDto; import com.sunquakes.jsonrpc4j.utils.JSONUtils; +import io.netty.buffer.ByteBuf; +import io.netty.handler.codec.http.FullHttpResponse; +import io.netty.util.CharsetUtil; import lombok.AllArgsConstructor; import lombok.Data; -import org.apache.http.HttpResponse; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.conn.ssl.SSLConnectionSocketFactory; -import org.apache.http.conn.ssl.TrustStrategy; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.ssl.SSLContextBuilder; -import org.apache.http.util.EntityUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -22,12 +15,14 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import javax.annotation.Resource; -import java.io.*; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; +import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -52,7 +47,7 @@ public void beforeTest() throws UnsupportedEncodingException { } @Test - void testRequest() throws IOException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException { + void testRequest() throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException, ExecutionException, InterruptedException { @Data @AllArgsConstructor class Params { @@ -63,19 +58,11 @@ class Params { RequestDto requestDto = new RequestDto("1234567890", "2.0", "JsonRpc/add", params); String request = JSONUtils.toString(requestDto); - SSLContextBuilder builder = new SSLContextBuilder(); - builder.loadTrustMaterial(null, new TrustStrategy() { - @Override - public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { - return true; - } - }); - SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(builder.build()); - CloseableHttpClient httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build(); - HttpPost httpPost = new HttpPost("https://localhost:3205"); - httpPost.setEntity(new StringEntity(request, ContentType.APPLICATION_JSON)); - HttpResponse response = httpClient.execute(httpPost); - assertEquals("{\"id\":\"1234567890\",\"jsonrpc\":\"2.0\",\"result\":3}", EntityUtils.toString(response.getEntity())); + NettyHttpClient httpClient = new NettyHttpClient("https://localhost:3205"); + FullHttpResponse res = httpClient.post("", request); + ByteBuf buf = res.content(); + String body = buf.toString(CharsetUtil.UTF_8); + assertEquals("{\"id\":\"1234567890\",\"jsonrpc\":\"2.0\",\"result\":3}", body); } @Test diff --git a/src/test/java/com/sunquakes/jsonrpc4j/discovery/NettyHttpClientTest.java b/src/test/java/com/sunquakes/jsonrpc4j/discovery/NettyHttpClientTest.java index 28c8c2e..6bb44e3 100644 --- a/src/test/java/com/sunquakes/jsonrpc4j/discovery/NettyHttpClientTest.java +++ b/src/test/java/com/sunquakes/jsonrpc4j/discovery/NettyHttpClientTest.java @@ -1,5 +1,6 @@ package com.sunquakes.jsonrpc4j.discovery; +import com.sunquakes.jsonrpc4j.client.NettyHttpClient; import io.netty.buffer.Unpooled; import io.netty.handler.codec.http.DefaultFullHttpResponse; import io.netty.handler.codec.http.FullHttpResponse; diff --git a/src/test/java/com/sunquakes/jsonrpc4j/server/JsonRpcHttpServerTest.java b/src/test/java/com/sunquakes/jsonrpc4j/server/JsonRpcHttpServerTest.java index c052e02..93243a9 100644 --- a/src/test/java/com/sunquakes/jsonrpc4j/server/JsonRpcHttpServerTest.java +++ b/src/test/java/com/sunquakes/jsonrpc4j/server/JsonRpcHttpServerTest.java @@ -1,23 +1,20 @@ package com.sunquakes.jsonrpc4j.server; +import com.sunquakes.jsonrpc4j.client.NettyHttpClient; import com.sunquakes.jsonrpc4j.dto.RequestDto; import com.sunquakes.jsonrpc4j.utils.JSONUtils; +import io.netty.buffer.ByteBuf; +import io.netty.handler.codec.http.FullHttpResponse; +import io.netty.util.CharsetUtil; import lombok.AllArgsConstructor; import lombok.Data; -import org.apache.http.HttpResponse; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.util.EntityUtils; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; -import java.io.IOException; +import java.util.concurrent.ExecutionException; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -28,34 +25,34 @@ class JsonRpcHttpServerTest { @Data @AllArgsConstructor - class Params { + static class Params { int a; int b; } @Test - void testHandle() throws IOException { + void testHandle() throws ExecutionException, InterruptedException { Params params = new Params(1, 2); RequestDto requestDto = new RequestDto("1234567890", "2.0", "JsonRpc/add", params); String request = JSONUtils.toString(requestDto); - CloseableHttpClient httpClient = HttpClients.createDefault(); - HttpPost httpPost = new HttpPost("http://localhost:3200"); - httpPost.setEntity(new StringEntity(request, ContentType.APPLICATION_JSON)); - HttpResponse response = httpClient.execute(httpPost); - assertEquals("{\"id\":\"1234567890\",\"jsonrpc\":\"2.0\",\"result\":3}", EntityUtils.toString(response.getEntity())); + NettyHttpClient httpClient = new NettyHttpClient("http://localhost:3200"); + FullHttpResponse res = httpClient.post("", request); + ByteBuf buf = res.content(); + String body = buf.toString(CharsetUtil.UTF_8); + assertEquals("{\"id\":\"1234567890\",\"jsonrpc\":\"2.0\",\"result\":3}", body); } @Test - void testMethod() throws IOException { + void testMethod() throws ExecutionException, InterruptedException { Params params = new Params(3, 4); RequestDto requestDto = new RequestDto("1234567890", "2.0", "json_rpc/add", params); String request = JSONUtils.toString(requestDto); - CloseableHttpClient httpClient = HttpClients.createDefault(); - HttpPost httpPost = new HttpPost("http://localhost:3200"); - httpPost.setEntity(new StringEntity(request.toString(), ContentType.APPLICATION_JSON)); - HttpResponse response = httpClient.execute(httpPost); - assertEquals("{\"id\":\"1234567890\",\"jsonrpc\":\"2.0\",\"result\":7}", EntityUtils.toString(response.getEntity())); + NettyHttpClient httpClient = new NettyHttpClient("http://localhost:3200"); + FullHttpResponse res = httpClient.post("", request); + ByteBuf buf = res.content(); + String body = buf.toString(CharsetUtil.UTF_8); + assertEquals("{\"id\":\"1234567890\",\"jsonrpc\":\"2.0\",\"result\":7}", body); } }