Skip to content

Commit a7bf94a

Browse files
author
Psilo
committed
update
1 parent 58ebe20 commit a7bf94a

File tree

7 files changed

+70
-15
lines changed

7 files changed

+70
-15
lines changed

Diff for: Information.template

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package @package@;
22

33
public class Information {
4-
public static final String BuildTime = "@buildTime@";
5-
public static final String PomVersion = "@pomVersion@";
4+
public static final String name = "@name@";
5+
public static final String buildTime = "@buildTime@";
6+
public static final String pomVersion = "@pomVersion@";
67
}

Diff for: pom.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
<properties>
1212
<mainclass>info.unterrainer.commons.httpserver.HttpServer</mainclass>
13+
<name>Http-Server</name>
1314
<package-path>info/unterrainer/commons/httpserver</package-path>
1415
<packg-string>info.unterrainer.commons.httpserver</packg-string>
1516
</properties>
@@ -24,7 +25,7 @@
2425
<dependency>
2526
<groupId>info.unterrainer.commons</groupId>
2627
<artifactId>jre-utils</artifactId>
27-
<version>0.0.6</version>
28+
<version>0.0.10</version>
2829
</dependency>
2930
<dependency>
3031
<groupId>info.unterrainer.commons</groupId>

Diff for: src/main/java/info/unterrainer/commons/httpserver/HttpServer.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.Arrays;
66
import java.util.HashSet;
77
import java.util.List;
8+
import java.util.Optional;
89
import java.util.concurrent.ExecutorService;
910
import java.util.concurrent.LinkedBlockingQueue;
1011
import java.util.concurrent.ThreadPoolExecutor;
@@ -38,6 +39,7 @@
3839
@Slf4j
3940
public class HttpServer {
4041

42+
private static final String VERSION_FQN = "info.unterrainer.commons.httpserver.Information";
4143
private Javalin javalin;
4244
private HttpServerConfiguration config;
4345
private String applicationName;
@@ -46,16 +48,20 @@ public class HttpServer {
4648
private final List<HandlerGroup> handlerGroups = new ArrayList<>();
4749
private List<HandlerInstance> handlerInstances = new ArrayList<>();
4850
ExecutorService executorService;
51+
List<String> appVersionFqns;
4952

5053
private HttpServer() {
5154
}
5255

5356
@Builder
5457
private HttpServer(final String configPrefix, final String applicationName, final MapperFactory orikaFactory,
55-
final JsonMapper jsonMapper, final ExecutorService executorService) {
58+
final JsonMapper jsonMapper, final ExecutorService executorService, final String... appVersionFqns) {
5659
config = HttpServerConfiguration.read(configPrefix);
5760
this.applicationName = applicationName;
5861
this.executorService = executorService;
62+
this.appVersionFqns = new ArrayList<>(List.of(Optional.ofNullable(appVersionFqns).orElse(new String[0])));
63+
if (!this.appVersionFqns.contains(VERSION_FQN))
64+
this.appVersionFqns.add(VERSION_FQN);
5965
if (executorService == null)
6066
this.executorService = new ThreadPoolExecutor(1, 200, 0L, TimeUnit.MILLISECONDS,
6167
new LinkedBlockingQueue<Runnable>());
@@ -109,7 +115,7 @@ private void create() {
109115
});
110116

111117
get("/", new AppNameHandler(applicationName));
112-
get("/version", new AppVersionHandler());
118+
get("/version", new AppVersionHandler(appVersionFqns));
113119
get("/datetime", new DateTimeHandler());
114120
get("/health", new HealthHandler());
115121

Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package info.unterrainer.commons.httpserver;
22

33
public class Information {
4-
public static final String BuildTime = "2020-07-06T13:16:01Z";
5-
public static final String PomVersion = "0.0.19";
4+
public static final String name = "Http-Server";
5+
public static final String buildTime = "2020-07-06T14:13:35Z";
6+
public static final String pomVersion = "0.0.19";
67
}
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,55 @@
11
package info.unterrainer.commons.httpserver.handlers;
22

3-
import info.unterrainer.commons.httpserver.Information;
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
46
import info.unterrainer.commons.httpserver.enums.Attribute;
57
import info.unterrainer.commons.httpserver.jsons.AppVersionJson;
8+
import info.unterrainer.commons.httpserver.jsons.VersionsJson;
9+
import info.unterrainer.commons.jreutils.ForName;
610
import io.javalin.http.Context;
711
import io.javalin.http.Handler;
812
import lombok.RequiredArgsConstructor;
913

1014
@RequiredArgsConstructor
1115
public class AppVersionHandler implements Handler {
1216

13-
private AppVersionJson message;
17+
private final static String NAME = "name";
18+
private final static String BUILD_TIME = "buildTime";
19+
private final static String POM_VERSION = "pomVersion";
20+
private final List<String> appVersionFqns;
21+
private VersionsJson message;
1422

1523
@Override
1624
public void handle(final Context ctx) throws Exception {
1725
if (message == null)
18-
message = AppVersionJson.builder()
19-
.PomVersion(Information.PomVersion)
20-
.BuildTime(Information.BuildTime)
21-
.build();
26+
message = buildMessage();
2227
ctx.attribute(Attribute.RESPONSE_OBJECT, message);
2328
ctx.attribute(Attribute.RESPONSE_STATUS, 200);
2429
}
30+
31+
private VersionsJson buildMessage() {
32+
List<AppVersionJson> versions = new ArrayList<>();
33+
for (String fqn : appVersionFqns) {
34+
Class<?> clazz = ForName.get(fqn);
35+
if (clazz == null)
36+
continue;
37+
38+
String name;
39+
String buildTime;
40+
String pomVersion;
41+
try {
42+
name = (String) clazz.getField(NAME).get(null);
43+
buildTime = (String) clazz.getField(BUILD_TIME).get(null);
44+
pomVersion = (String) clazz.getField(POM_VERSION).get(null);
45+
46+
} catch (IllegalAccessException | IllegalArgumentException | SecurityException | NoSuchFieldException e) {
47+
continue;
48+
}
49+
50+
AppVersionJson av = AppVersionJson.builder().name(name).pomVersion(pomVersion).buildTime(buildTime).build();
51+
versions.add(av);
52+
}
53+
return VersionsJson.builder().Versions(versions).build();
54+
}
2555
}

Diff for: src/main/java/info/unterrainer/commons/httpserver/jsons/AppVersionJson.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
@SuperBuilder(toBuilder = true)
1010
public class AppVersionJson {
1111

12-
private String BuildTime;
13-
private String PomVersion;
12+
private String name;
13+
private String buildTime;
14+
private String pomVersion;
1415
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package info.unterrainer.commons.httpserver.jsons;
2+
3+
import java.util.List;
4+
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
import lombok.experimental.SuperBuilder;
8+
9+
@Data
10+
@NoArgsConstructor
11+
@SuperBuilder(toBuilder = true)
12+
public class VersionsJson {
13+
14+
private List<AppVersionJson> Versions;
15+
}

0 commit comments

Comments
 (0)