Skip to content

Commit 8cbac5b

Browse files
committed
Replace http client for alarm log app
1 parent a0e3746 commit 8cbac5b

File tree

14 files changed

+205
-104
lines changed

14 files changed

+205
-104
lines changed

app/alarm/logging-ui/pom.xml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,6 @@
3838
<version>4.7.4-SNAPSHOT</version>
3939
<scope>compile</scope>
4040
</dependency>
41-
<dependency>
42-
<groupId>com.sun.jersey</groupId>
43-
<artifactId>jersey-client</artifactId>
44-
<version>1.19</version>
45-
</dependency>
4641
<dependency>
4742
<groupId>com.fasterxml.jackson.core</groupId>
4843
<artifactId>jackson-core</artifactId>
@@ -63,10 +58,5 @@
6358
<artifactId>jackson-datatype-jsr310</artifactId>
6459
<version>${jackson.version}</version>
6560
</dependency>
66-
<dependency>
67-
<groupId>javax.ws.rs</groupId>
68-
<artifactId>javax.ws.rs-api</artifactId>
69-
<version>2.1</version>
70-
</dependency>
7161
</dependencies>
7262
</project>

app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AdvancedSearchViewController.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.phoebus.applications.alarm.logging.ui;
22

3-
import com.sun.jersey.api.client.WebResource;
43
import javafx.application.Platform;
54
import javafx.beans.binding.Bindings;
65
import javafx.beans.value.ObservableValue;
@@ -21,6 +20,7 @@
2120
import org.phoebus.util.time.TimeRelativeInterval;
2221
import org.phoebus.util.time.TimestampFormats;
2322

23+
import java.net.http.HttpClient;
2424
import java.util.logging.Logger;
2525

2626
import static org.phoebus.ui.time.TemporalAmountPane.Type.TEMPORAL_AMOUNTS_AND_NOW;
@@ -57,16 +57,17 @@ public class AdvancedSearchViewController {
5757

5858
PopOver timeSearchPopover;
5959

60-
private WebResource searchClient;
60+
//private WebResource searchClient;
61+
private HttpClient httpClient;
6162

6263
// Search parameters
6364
ObservableMap<Keys, String> searchParameters;
6465

6566
@FXML
6667
private AnchorPane advancedSearchPane;
6768

68-
public AdvancedSearchViewController(WebResource client){
69-
this.searchClient = client;
69+
public AdvancedSearchViewController(HttpClient httpClient) {
70+
this.httpClient = httpClient;
7071
}
7172

7273
@FXML
@@ -169,7 +170,7 @@ public void initialize() {
169170
});
170171
}
171172

172-
public void setSearchParameters(ObservableMap<Keys, String> params){
173+
public void setSearchParameters(ObservableMap<Keys, String> params) {
173174
searchParameters = params;
174175
searchParameters.addListener((MapChangeListener<Keys, String>) change -> {
175176
searchPV.setText(searchParameters.get(Keys.PV));
@@ -194,7 +195,7 @@ public void setSearchParameters(ObservableMap<Keys, String> params){
194195
searchCommand.setText(searchParameters.get(Keys.COMMAND));
195196
}
196197

197-
public AnchorPane getPane(){
198+
public AnchorPane getPane() {
198199
return advancedSearchPane;
199200
}
200201
}

app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogConfigSearchJob.java

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
package org.phoebus.applications.alarm.logging.ui;
22

3-
import com.fasterxml.jackson.core.JsonProcessingException;
43
import com.fasterxml.jackson.core.type.TypeReference;
54
import com.fasterxml.jackson.databind.DeserializationFeature;
65
import com.fasterxml.jackson.databind.ObjectMapper;
7-
import com.sun.jersey.api.client.WebResource;
86
import org.phoebus.framework.jobs.Job;
97
import org.phoebus.framework.jobs.JobManager;
108
import org.phoebus.framework.jobs.JobRunnableWithCancel;
9+
import org.phoebus.util.http.QueryParamsHelper;
1110

1211
import javax.ws.rs.core.MediaType;
1312
import javax.ws.rs.core.MultivaluedHashMap;
1413
import javax.ws.rs.core.MultivaluedMap;
14+
import java.net.URI;
15+
import java.net.http.HttpClient;
16+
import java.net.http.HttpRequest;
17+
import java.net.http.HttpResponse;
1518
import java.util.Arrays;
1619
import java.util.List;
1720
import java.util.function.BiConsumer;
@@ -23,28 +26,28 @@
2326
* @author Kunal Shroff
2427
*/
2528
public class AlarmLogConfigSearchJob extends JobRunnableWithCancel {
26-
private final WebResource client;
29+
private final HttpClient httpClient;
2730
private final String pattern;
2831

2932
private final Consumer<AlarmLogTableItem> alarmMessageHandler;
3033
private final BiConsumer<String, Exception> errorHandler;
3134

3235
private final ObjectMapper objectMapper;
3336

34-
public static Job submit(WebResource client,
37+
public static Job submit(HttpClient httpClient,
3538
final String pattern,
3639
final Consumer<AlarmLogTableItem> alarmMessageHandler,
3740
final BiConsumer<String, Exception> errorHandler) {
3841
return JobManager.schedule("searching alarm log messages for : " + pattern,
39-
new AlarmLogConfigSearchJob(client, pattern, alarmMessageHandler, errorHandler));
42+
new AlarmLogConfigSearchJob(httpClient, pattern, alarmMessageHandler, errorHandler));
4043
}
4144

42-
private AlarmLogConfigSearchJob(WebResource client,
45+
private AlarmLogConfigSearchJob(HttpClient httpClient,
4346
String pattern,
4447
Consumer<AlarmLogTableItem> alarmMessageHandler,
4548
BiConsumer<String, Exception> errorHandler) {
4649
super();
47-
this.client = client;
50+
this.httpClient = httpClient;
4851
this.pattern = pattern;
4952
this.alarmMessageHandler = alarmMessageHandler;
5053
this.errorHandler = errorHandler;
@@ -66,16 +69,25 @@ public Runnable getRunnable() {
6669
try {
6770
MultivaluedMap<String, String> map = new MultivaluedHashMap<>();
6871
map.put("config", Arrays.asList(pattern));
72+
73+
HttpRequest request = HttpRequest.newBuilder()
74+
.uri(URI.create(Preferences.service_uri + "/search/alarm/config?" + QueryParamsHelper.mapToQueryParams(map)))
75+
.header("Content-Type", MediaType.APPLICATION_JSON)
76+
.GET()
77+
.build();
78+
79+
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
80+
6981
List<AlarmLogTableItem> result = objectMapper
70-
.readValue(client.path("/search/alarm/config").queryParams(map).accept(MediaType.APPLICATION_JSON).get(String.class),
82+
.readValue(response.body(),
7183
new TypeReference<List<AlarmLogTableItem>>() {
7284
});
7385
if (result.size() >= 1) {
7486
alarmMessageHandler.accept(result.get(0));
7587
} else {
7688
alarmMessageHandler.accept(null);
7789
}
78-
} catch (JsonProcessingException e) {
90+
} catch (Exception e) {
7991
errorHandler.accept("Failed to search for alarm logs ", e);
8092
}
8193
};

app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogSearchJob.java

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,24 @@
33
import com.fasterxml.jackson.core.type.TypeReference;
44
import com.fasterxml.jackson.databind.DeserializationFeature;
55
import com.fasterxml.jackson.databind.ObjectMapper;
6-
import com.sun.jersey.api.client.WebResource;
76
import javafx.collections.ObservableMap;
87
import org.phoebus.applications.alarm.logging.ui.AlarmLogTableQueryUtil.Keys;
98
import org.phoebus.framework.jobs.Job;
109
import org.phoebus.framework.jobs.JobManager;
1110
import org.phoebus.framework.jobs.JobMonitor;
1211
import org.phoebus.framework.jobs.JobRunnable;
1312
import org.phoebus.framework.preferences.PreferencesReader;
13+
import org.phoebus.util.http.QueryParamsHelper;
1414

1515
import javax.ws.rs.core.MediaType;
1616
import javax.ws.rs.core.MultivaluedHashMap;
1717
import javax.ws.rs.core.MultivaluedMap;
18+
import java.net.URI;
19+
import java.net.URLEncoder;
20+
import java.net.http.HttpClient;
21+
import java.net.http.HttpRequest;
22+
import java.net.http.HttpResponse;
23+
import java.nio.charset.StandardCharsets;
1824
import java.util.List;
1925
import java.util.function.BiConsumer;
2026
import java.util.function.Consumer;
@@ -34,25 +40,26 @@ public class AlarmLogSearchJob implements JobRunnable {
3440
private final BiConsumer<String, Exception> errorHandler;
3541

3642
private final ObjectMapper objectMapper;
37-
private final WebResource client;
43+
//private final WebResource client;
44+
private final HttpClient httpClient;
3845

3946
private final PreferencesReader prefs = new PreferencesReader(AlarmLogTableApp.class,
4047
"/alarm_logging_preferences.properties");
4148

42-
public static Job submit(WebResource client,
49+
public static Job submit(HttpClient httpClient,
4350
final String pattern,
4451
Boolean isNodeTable,
4552
ObservableMap<Keys, String> searchParameters,
4653
final Consumer<List<AlarmLogTableItem>> alarmMessageHandler,
4754
final BiConsumer<String, Exception> errorHandler) {
4855
return JobManager.schedule("searching alarm log messages for : " + pattern,
49-
new AlarmLogSearchJob(client, isNodeTable, searchParameters, alarmMessageHandler, errorHandler));
56+
new AlarmLogSearchJob(httpClient, isNodeTable, searchParameters, alarmMessageHandler, errorHandler));
5057
}
5158

52-
private AlarmLogSearchJob(WebResource client, Boolean isNodeTable, ObservableMap<Keys, String> searchParameters,
59+
private AlarmLogSearchJob(HttpClient httpClient, Boolean isNodeTable, ObservableMap<Keys, String> searchParameters,
5360
Consumer<List<AlarmLogTableItem>> alarmMessageHandler, BiConsumer<String, Exception> errorHandler) {
5461
super();
55-
this.client = client;
62+
this.httpClient = httpClient;
5663
this.searchParameters = searchParameters;
5764
this.alarmMessageHandler = alarmMessageHandler;
5865
this.errorHandler = errorHandler;
@@ -69,19 +76,26 @@ public void run(JobMonitor monitor) {
6976
int size = prefs.getInt("results_max_size");
7077

7178
MultivaluedMap<String, String> map = new MultivaluedHashMap<>();
72-
searchParameters.forEach((key, value) -> { if (!value.equals("")) map.add(key.getName(), value); });
79+
searchParameters.forEach((key, value) -> {
80+
if (!value.equals("")) map.add(key.getName(), value);
81+
});
7382
map.putIfAbsent("size", List.of(String.valueOf(size)));
7483

7584
try {
7685

7786
long start = System.currentTimeMillis();
78-
String resultStr = client.path("/search/alarm")
79-
.queryParams(map)
80-
.accept(MediaType.APPLICATION_JSON).get(String.class);
87+
88+
HttpRequest request = HttpRequest.newBuilder()
89+
.uri(URI.create(Preferences.service_uri + "/search/alarm?" + QueryParamsHelper.mapToQueryParams(map)))
90+
.header("Content-Type", MediaType.APPLICATION_JSON)
91+
.GET()
92+
.build();
93+
94+
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
8195

8296
logger.log(Level.FINE, "String response = " + (System.currentTimeMillis() - start));
8397
start = System.currentTimeMillis();
84-
List<AlarmLogTableItem> result = objectMapper.readValue(resultStr, new TypeReference<>() {
98+
List<AlarmLogTableItem> result = objectMapper.readValue(response.body(), new TypeReference<>() {
8599
});
86100
logger.log(Level.FINE, "Object mapper response = " + (System.currentTimeMillis() - start));
87101
alarmMessageHandler.accept(result);

app/alarm/logging-ui/src/main/java/org/phoebus/applications/alarm/logging/ui/AlarmLogTable.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
import java.io.IOException;
44
import java.net.URI;
5+
import java.net.http.HttpClient;
56
import java.util.Arrays;
67
import java.util.ResourceBundle;
78
import java.util.logging.Level;
89
import java.util.logging.Logger;
910
import java.util.stream.Collectors;
1011

11-
import com.sun.jersey.api.client.WebResource;
1212
import org.phoebus.framework.nls.NLS;
1313
import org.phoebus.framework.spi.AppDescriptor;
1414
import org.phoebus.framework.spi.AppInstance;
@@ -34,12 +34,12 @@ public class AlarmLogTable implements AppInstance {
3434
loader.setControllerFactory(clazz -> {
3535
try {
3636
if(clazz.isAssignableFrom(AlarmLogTableController.class)){
37-
return clazz.getConstructor(WebResource.class)
38-
.newInstance(app.getClient());
37+
return clazz.getConstructor(HttpClient.class)
38+
.newInstance(app.httpClient());
3939
}
4040
else if(clazz.isAssignableFrom(AdvancedSearchViewController.class)){
41-
return clazz.getConstructor(WebResource.class)
42-
.newInstance(app.getClient());
41+
return clazz.getConstructor(HttpClient.class)
42+
.newInstance(app.httpClient());
4343
}
4444
} catch (Exception e) {
4545
Logger.getLogger(AlarmLogTable.class.getName()).log(Level.SEVERE, "Failed to construct controller for Alarm Log Table View", e);

0 commit comments

Comments
 (0)