]> git.argeo.org Git - lgpl/argeo-commons.git/blob - cms/websocket/server/StatusHandler.java
Prepare next development cycle
[lgpl/argeo-commons.git] / cms / websocket / server / StatusHandler.java
1 package org.argeo.cms.websocket.server;
2
3 import java.io.IOException;
4 import java.nio.charset.StandardCharsets;
5 import java.util.Arrays;
6 import java.util.HashSet;
7 import java.util.List;
8 import java.util.Set;
9 import java.util.StringJoiner;
10
11 import org.argeo.api.cms.CmsState;
12 import org.argeo.cms.CmsDeployProperty;
13
14 import com.sun.net.httpserver.HttpExchange;
15 import com.sun.net.httpserver.HttpHandler;
16
17 public class StatusHandler implements WebsocketEndpoints, HttpHandler {
18 private CmsState cmsState;
19
20 @Override
21 public Set<Class<?>> getEndPoints() {
22 Set<Class<?>> res = new HashSet<>();
23 res.add(PingEndpoint.class);
24 res.add(EventEndpoint.class);
25 return res;
26 }
27
28 @Override
29 public void handle(HttpExchange exchange) throws IOException {
30
31 StringJoiner sb = new StringJoiner("\n");
32 CmsDeployProperty[] deployProperties = CmsDeployProperty.values();
33 Arrays.sort(deployProperties, (o1, o2) -> o1.name().compareTo(o2.name()));
34 for (CmsDeployProperty deployProperty : deployProperties) {
35 List<String> values = cmsState.getDeployProperties(deployProperty.getProperty());
36 for (int i = 0; i < values.size(); i++) {
37 String value = values.get(i);
38 if (value != null) {
39 String line = deployProperty.getProperty() + (i == 0 ? "" : "." + i) + "=" + value;
40 sb.add(line);
41 }
42 }
43 }
44
45 byte[] msg = sb.toString().getBytes(StandardCharsets.UTF_8);
46 exchange.sendResponseHeaders(200, msg.length);
47 exchange.getResponseBody().write(msg);
48 }
49
50 public void setCmsState(CmsState cmsState) {
51 this.cmsState = cmsState;
52 }
53
54 }