Skip to content

Commit 7346616

Browse files
authored
Merge pull request #2 from sashirestela/developer
Refactoring classes
2 parents 84c0be1 + d7196cc commit 7346616

26 files changed

+131
-153
lines changed

.github/workflows/maven.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ name: Java CI with Maven
55

66
on:
77
push:
8-
branches: ["main", "developer"]
8+
branches: ["main"]
99
pull_request:
1010
branches: ["main"]
1111

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>io.github.sashirestela</groupId>
88
<artifactId>cleverclient</artifactId>
9-
<version>0.1.0</version>
9+
<version>0.2.0</version>
1010
<packaging>jar</packaging>
1111

1212
<name>cleverclient</name>
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package io.github.sashirestela.cleverclient;
2+
3+
import java.net.http.HttpClient;
4+
import java.util.List;
5+
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
9+
import io.github.sashirestela.cleverclient.http.HttpProcessor;
10+
import io.github.sashirestela.cleverclient.http.InvocationFilter;
11+
import lombok.Builder;
12+
import lombok.NoArgsConstructor;
13+
import lombok.NonNull;
14+
15+
@NoArgsConstructor
16+
public class CleverClient {
17+
private static Logger logger = LoggerFactory.getLogger(CleverClient.class);
18+
19+
@NonNull
20+
private HttpClient httpClient;
21+
22+
@NonNull
23+
private String urlBase;
24+
25+
private List<String> headers;
26+
private HttpProcessor httpProcessor;
27+
28+
@Builder
29+
public CleverClient(HttpClient httpClient, String urlBase, List<String> headers) {
30+
this.httpClient = httpClient;
31+
this.urlBase = urlBase;
32+
this.headers = headers;
33+
this.httpProcessor = new HttpProcessor(this.httpClient, this.urlBase, this.headers);
34+
logger.debug("CleverClient has been created.");
35+
}
36+
37+
public <T> T create(Class<T> interfaceClass) {
38+
return httpProcessor.createProxy(interfaceClass, null);
39+
}
40+
41+
public <T> T create(Class<T> interfaceClass, InvocationFilter filter) {
42+
return httpProcessor.createProxy(interfaceClass, filter);
43+
}
44+
}

src/main/java/io/github/sashirestela/cleverclient/HttpConnector.java renamed to src/main/java/io/github/sashirestela/cleverclient/http/HttpConnector.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.sashirestela.cleverclient;
1+
package io.github.sashirestela.cleverclient.http;
22

33
import java.net.URI;
44
import java.net.http.HttpClient;
@@ -46,12 +46,12 @@ private BodyPublisher createBodyPublisher(Object bodyObject, boolean isMultipart
4646
logger.debug("Body Request: (Empty)");
4747
bodyPublisher = BodyPublishers.noBody();
4848
} else if (isMultipart) {
49-
var data = ReflectUtil.get().getMapFields(bodyObject);
50-
var requestBytes = HttpMultipart.get().toByteArrays(data);
49+
var data = ReflectUtil.getMapFields(bodyObject);
50+
var requestBytes = HttpMultipart.toByteArrays(data);
5151
logger.debug("Body Request: {}", data);
5252
bodyPublisher = BodyPublishers.ofByteArrays(requestBytes);
5353
} else {
54-
var requestString = JsonUtil.get().objectToJson(bodyObject);
54+
var requestString = JsonUtil.objectToJson(bodyObject);
5555
logger.debug("Body Request: {}", requestString);
5656
bodyPublisher = BodyPublishers.ofString(requestString);
5757
}

src/main/java/io/github/sashirestela/cleverclient/HttpInvocationHandler.java renamed to src/main/java/io/github/sashirestela/cleverclient/http/HttpInvocationHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.sashirestela.cleverclient;
1+
package io.github.sashirestela.cleverclient.http;
22

33
import java.lang.reflect.InvocationHandler;
44
import java.lang.reflect.Method;

src/main/java/io/github/sashirestela/cleverclient/HttpMultipart.java renamed to src/main/java/io/github/sashirestela/cleverclient/http/HttpMultipart.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.sashirestela.cleverclient;
1+
package io.github.sashirestela.cleverclient.http;
22

33
import java.io.IOException;
44
import java.nio.charset.StandardCharsets;
@@ -12,8 +12,6 @@
1212
import io.github.sashirestela.cleverclient.util.Constant;
1313

1414
public class HttpMultipart {
15-
private static HttpMultipart multipart = null;
16-
1715
private static final String DASH = "--";
1816
private static final String DQ = "\"";
1917
private static final String NL = "\r\n";
@@ -25,14 +23,7 @@ public class HttpMultipart {
2523
private HttpMultipart() {
2624
}
2725

28-
public static HttpMultipart get() {
29-
if (multipart == null) {
30-
multipart = new HttpMultipart();
31-
}
32-
return multipart;
33-
}
34-
35-
public List<byte[]> toByteArrays(Map<String, Object> data) {
26+
public static List<byte[]> toByteArrays(Map<String, Object> data) {
3627
List<byte[]> byteArrays = new ArrayList<>();
3728
for (var entry : data.entrySet()) {
3829
byteArrays.add(toBytes(DASH + Constant.BOUNDARY_VALUE + NL));
@@ -66,7 +57,7 @@ public List<byte[]> toByteArrays(Map<String, Object> data) {
6657
return byteArrays;
6758
}
6859

69-
private byte[] toBytes(String text) {
60+
private static byte[] toBytes(String text) {
7061
return text.getBytes(StandardCharsets.UTF_8);
7162
}
7263
}

src/main/java/io/github/sashirestela/cleverclient/HttpProcessor.java renamed to src/main/java/io/github/sashirestela/cleverclient/http/HttpProcessor.java

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.sashirestela.cleverclient;
1+
package io.github.sashirestela.cleverclient.http;
22

33
import java.lang.reflect.Method;
44
import java.net.http.HttpClient;
@@ -17,27 +17,16 @@
1717
import io.github.sashirestela.cleverclient.util.CommonUtil;
1818
import io.github.sashirestela.cleverclient.util.Constant;
1919
import io.github.sashirestela.cleverclient.util.ReflectUtil;
20-
import lombok.Builder;
21-
import lombok.Getter;
22-
import lombok.NoArgsConstructor;
23-
import lombok.NonNull;
2420

25-
@NoArgsConstructor
26-
@Getter
2721
public class HttpProcessor {
2822
private static Logger logger = LoggerFactory.getLogger(HttpProcessor.class);
2923

30-
@NonNull
3124
private HttpClient httpClient;
32-
33-
@NonNull
3425
private String urlBase;
35-
3626
private List<String> headers;
3727
private Metadata metadata;
3828
private URLBuilder urlBuilder;
3929

40-
@Builder
4130
public HttpProcessor(HttpClient httpClient, String urlBase, List<String> headers) {
4231
this.httpClient = httpClient;
4332
this.urlBase = urlBase;
@@ -56,12 +45,12 @@ public HttpProcessor(HttpClient httpClient, String urlBase, List<String> headers
5645
* {@link HttpInvocationHandler HttpInvocationHandler}.
5746
* @return A "virtual" instance for the interface.
5847
*/
59-
public <T> T create(Class<T> interfaceClass, InvocationFilter filter) {
60-
metadata = MetadataCollector.get().collect(interfaceClass);
48+
public <T> T createProxy(Class<T> interfaceClass, InvocationFilter filter) {
49+
metadata = MetadataCollector.collect(interfaceClass);
6150
validateMetadata();
6251
urlBuilder = new URLBuilder(metadata);
6352
var httpInvocationHandler = new HttpInvocationHandler(this, filter);
64-
var proxy = ReflectUtil.get().createProxy(interfaceClass, httpInvocationHandler);
53+
var proxy = ReflectUtil.createProxy(interfaceClass, httpInvocationHandler);
6554
logger.debug("Created Instance : {}", interfaceClass.getSimpleName());
6655
return proxy;
6756
}
@@ -99,8 +88,8 @@ private void validateMetadata() {
9988
final var PATH = Path.class.getSimpleName();
10089
metadata.getMethods().forEach((methodName, methodMetadata) -> {
10190
var url = methodMetadata.getUrl();
102-
var listPathParams = CommonUtil.get().findFullMatches(url, Constant.REGEX_PATH_PARAM_URL);
103-
if (!CommonUtil.get().isNullOrEmpty(listPathParams)) {
91+
var listPathParams = CommonUtil.findFullMatches(url, Constant.REGEX_PATH_PARAM_URL);
92+
if (!CommonUtil.isNullOrEmpty(listPathParams)) {
10493
listPathParams.forEach(pathParam -> methodMetadata.getParametersByType().get(PATH).stream()
10594
.filter(paramMetadata -> pathParam.equals(paramMetadata.getAnnotationValue())).findFirst()
10695
.orElseThrow(() -> new CleverClientException(

src/main/java/io/github/sashirestela/cleverclient/InvocationFilter.java renamed to src/main/java/io/github/sashirestela/cleverclient/http/InvocationFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.sashirestela.cleverclient;
1+
package io.github.sashirestela.cleverclient.http;
22

33
import java.lang.reflect.Method;
44

src/main/java/io/github/sashirestela/cleverclient/ReturnType.java renamed to src/main/java/io/github/sashirestela/cleverclient/http/ReturnType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.sashirestela.cleverclient;
1+
package io.github.sashirestela.cleverclient.http;
22

33
import java.lang.reflect.Method;
44

src/main/java/io/github/sashirestela/cleverclient/URLBuilder.java renamed to src/main/java/io/github/sashirestela/cleverclient/http/URLBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.sashirestela.cleverclient;
1+
package io.github.sashirestela.cleverclient.http;
22

33
import java.util.List;
44

0 commit comments

Comments
 (0)