Skip to content

Commit f3b4804

Browse files
committed
feat: add device api
Signed-off-by: zhiheng123 <[email protected]>
1 parent 4793ba9 commit f3b4804

File tree

5 files changed

+116
-0
lines changed

5 files changed

+116
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,55 @@
11
package io.github.protocol.mtconnect.client;
22

3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
35
import io.github.openfacade.http.HttpClient;
46
import io.github.openfacade.http.HttpClientFactory;
7+
import io.github.openfacade.http.HttpResponse;
8+
import io.github.protocol.mtconnect.api.MTConnectDevices;
9+
10+
import java.util.Arrays;
11+
import java.util.concurrent.CompletableFuture;
12+
import java.util.concurrent.ExecutionException;
513

614
public class MTConnectClient {
715
private final MTConnectClientConfiguration config;
816

917
private final HttpClient httpClient;
18+
private static final ObjectMapper MAPPER = new ObjectMapper();
1019

1120
public MTConnectClient(MTConnectClientConfiguration configuration) {
1221
this.config = configuration;
1322
this.httpClient = HttpClientFactory.createHttpClient(configuration.httpConfig());
1423
}
24+
25+
public MTConnectDevices deivce(String Id) {
26+
return null;
27+
};
28+
29+
public static <T> T toObject(String json, Class<T> type) throws JsonProcessingException {
30+
if (json == null || json.isEmpty()) {
31+
return null;
32+
}
33+
return MAPPER.readValue(json, type);
34+
}
35+
36+
public MTConnectDevices deivces() throws ExecutionException, InterruptedException {
37+
String url = String.format("http://%s:%s/devices", config.host(), config.port());
38+
CompletableFuture<HttpResponse> future = httpClient.get(url);
39+
40+
CompletableFuture<MTConnectDevices> resp = future.thenCompose(response -> {
41+
if (response.statusCode() >= 200 && response.statusCode() < 300) {
42+
try {
43+
MTConnectDevices body = toObject(Arrays.toString(response.body()), MTConnectDevices.class);
44+
return CompletableFuture.completedFuture(body);
45+
} catch (JsonProcessingException e) {
46+
return CompletableFuture.failedFuture(e);
47+
}
48+
} else {
49+
return CompletableFuture.failedFuture(new Exception("http error: " + Arrays.toString(response.body())));
50+
}
51+
});
52+
53+
return resp.get();
54+
};
1555
}

mtconnect-server/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@
3737
<artifactId>vertx-web</artifactId>
3838
<version>${vertx.version}</version>
3939
</dependency>
40+
<dependency>
41+
<groupId>io.github.protocol-laboratory</groupId>
42+
<artifactId>mtconnect-client</artifactId>
43+
<version>0.0.1-SNAPSHOT</version>
44+
<scope>test</scope>
45+
</dependency>
4046
</dependencies>
4147

4248
</project>

mtconnect-server/src/main/java/io/github/protocol/mtconnect/server/MTConnectServer.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ public CompletableFuture<Void> start() {
3232
return httpServer.start();
3333
}
3434

35+
public int getHttpPort() {
36+
return httpServer.listenPort();
37+
}
38+
3539
class MtAssetsHandler implements SyncRequestHandler {
3640
@Override
3741
public HttpResponse handle(HttpRequest request) {

mtconnect-server/src/main/java/io/github/protocol/mtconnect/server/impl/MemoryMtProcessor.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
public class MemoryMtProcessor implements MTProcessor {
1616

1717
Map<String, MTConnectAssets> mtConnectAssetsMap = new HashMap<>();
18+
private MTConnectDevices devices;
1819

1920
@Override
2021
public MTConnectAssets asset(AssetRequest assetRequest) {
@@ -25,4 +26,8 @@ public MTConnectAssets asset(AssetRequest assetRequest) {
2526
public MTConnectDevices device(DeviceRequest deviceRequest) {
2627
return null;
2728
}
29+
30+
public void updateDevice(MTConnectDevices devices) {
31+
this.devices = devices;
32+
}
2833
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package io.github.protocol.mtconnect.server;
2+
3+
import io.github.openfacade.http.HttpClientConfig;
4+
import io.github.openfacade.http.HttpServerConfig;
5+
import io.github.openfacade.http.HttpServerEngine;
6+
import io.github.protocol.mtconnect.api.Device;
7+
import io.github.protocol.mtconnect.api.MTConnectDevices;
8+
import io.github.protocol.mtconnect.client.MTConnectClient;
9+
import io.github.protocol.mtconnect.client.MTConnectClientConfiguration;
10+
import io.github.protocol.mtconnect.server.impl.MemoryMtProcessor;
11+
import org.junit.jupiter.api.Test;
12+
13+
import java.util.ArrayList;
14+
import java.util.Collections;
15+
import java.util.concurrent.ExecutionException;
16+
17+
public class MTConnectDeviceTest {
18+
19+
private int port;
20+
private final String localHost = "127.0.0.1";
21+
22+
// start memery server
23+
private MemoryMtProcessor startMemoryServer() {
24+
MTConnectServerConfiguration configuration = new MTConnectServerConfiguration();
25+
HttpServerConfig httpServerConfig = new HttpServerConfig.Builder()
26+
.engine(HttpServerEngine.Vertx)
27+
.host(localHost)
28+
.port(0)
29+
.build();
30+
configuration.setHttpConfig(httpServerConfig);
31+
MemoryMtProcessor mtProcessor = new MemoryMtProcessor();
32+
configuration.setMtProcessor(mtProcessor);
33+
MTConnectServer mtConnectServer = new MTConnectServer(configuration);
34+
mtConnectServer.start().join();
35+
36+
port = mtConnectServer.getHttpPort();
37+
38+
return mtProcessor;
39+
}
40+
41+
@Test
42+
public void testDevices() throws ExecutionException, InterruptedException {
43+
MemoryMtProcessor memoryMtProcessor = startMemoryServer();
44+
MTConnectDevices devices = new MTConnectDevices();
45+
Device device = new Device();
46+
47+
devices.setDevices(Collections.singletonList(device));
48+
memoryMtProcessor.updateDevice(devices);
49+
50+
MTConnectClientConfiguration configuration = new MTConnectClientConfiguration();
51+
HttpClientConfig httpClientConfig = new HttpClientConfig.Builder().build();
52+
configuration.setHttpConfig(httpClientConfig);
53+
configuration.setHost(localHost);
54+
configuration.setPort(port);
55+
MTConnectClient mtConnectClient = new MTConnectClient(configuration);
56+
57+
// use client show device
58+
MTConnectDevices resp = mtConnectClient.deivces();
59+
System.out.println(resp.getDevices());
60+
}
61+
}

0 commit comments

Comments
 (0)