From dd1388cb67d0ef99fc295c427eef683fea80ab2a Mon Sep 17 00:00:00 2001 From: georgweiss Date: Thu, 14 Mar 2024 17:12:38 +0100 Subject: [PATCH] Fix save&restore readback rendering --- .../client/SaveAndRestoreJerseyClient.java | 67 +++++++++---------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/client/SaveAndRestoreJerseyClient.java b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/client/SaveAndRestoreJerseyClient.java index 91b2860bcc..83427c4587 100644 --- a/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/client/SaveAndRestoreJerseyClient.java +++ b/app/save-and-restore/app/src/main/java/org/phoebus/applications/saveandrestore/client/SaveAndRestoreJerseyClient.java @@ -44,22 +44,18 @@ public class SaveAndRestoreJerseyClient implements org.phoebus.applications.saveandrestore.client.SaveAndRestoreClient { private static final String CONTENT_TYPE_JSON = "application/json; charset=UTF-8"; - private final Logger logger = Logger.getLogger(SaveAndRestoreJerseyClient.class.getName()); + private static final Logger logger = Logger.getLogger(SaveAndRestoreJerseyClient.class.getName()); private static final int DEFAULT_READ_TIMEOUT = 5000; // ms private static final int DEFAULT_CONNECT_TIMEOUT = 5000; // ms - ObjectMapper mapper = new ObjectMapper(); + private static final ObjectMapper mapper = new ObjectMapper(); - private HTTPBasicAuthFilter httpBasicAuthFilter; + private static final Client client; - public SaveAndRestoreJerseyClient() { - - mapper.registerModule(new JavaTimeModule()); - mapper.setSerializationInclusion(Include.NON_NULL); - } + private static HTTPBasicAuthFilter httpBasicAuthFilter; - private Client getClient() { + static { int httpClientReadTimeout = Preferences.httpClientReadTimeout > 0 ? Preferences.httpClientReadTimeout : DEFAULT_READ_TIMEOUT; logger.log(Level.INFO, "Save&restore client using read timeout " + httpClientReadTimeout + " ms"); @@ -73,7 +69,7 @@ private Client getClient() { JacksonJsonProvider jacksonJsonProvider = new JacksonJsonProvider(mapper); defaultClientConfig.getSingletons().add(jacksonJsonProvider); - Client client = Client.create(defaultClientConfig); + client = Client.create(defaultClientConfig); try { SecureStore store = new SecureStore(); @@ -89,8 +85,11 @@ private Client getClient() { } catch (Exception e) { logger.log(Level.WARNING, "Unable to retrieve credentials from secure store", e); } + } - return client; + public SaveAndRestoreJerseyClient() { + mapper.registerModule(new JavaTimeModule()); + mapper.setSerializationInclusion(Include.NON_NULL); } @Override @@ -110,7 +109,7 @@ public Node getNode(String uniqueNodeId) { @Override public List getCompositeSnapshotReferencedNodes(String uniqueNodeId) { - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + "/composite-snapshot/" + uniqueNodeId + "/nodes"); + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + "/composite-snapshot/" + uniqueNodeId + "/nodes"); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON).get(ClientResponse.class); if (response.getStatus() != ClientResponse.Status.OK.getStatusCode()) { @@ -129,7 +128,7 @@ public List getCompositeSnapshotReferencedNodes(String uniqueNodeId) { @Override public List getCompositeSnapshotItems(String uniqueNodeId) { - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + "/composite-snapshot/" + uniqueNodeId + "/items"); + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + "/composite-snapshot/" + uniqueNodeId + "/items"); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON).get(ClientResponse.class); if (response.getStatus() != ClientResponse.Status.OK.getStatusCode()) { @@ -160,7 +159,7 @@ public List getChildNodes(String uniqueNodeId) throws SaveAndRestoreClient @Override public Node createNewNode(String parentNodeId, Node node) { - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + "/node") + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + "/node") .queryParam("parentNodeId", parentNodeId); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) .entity(node, CONTENT_TYPE_JSON) @@ -184,7 +183,7 @@ public Node updateNode(Node nodeToUpdate) { @Override public Node updateNode(Node nodeToUpdate, boolean customTimeForMigration) { - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + "/node") + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + "/node") .queryParam("customTimeForMigration", customTimeForMigration ? "true" : "false"); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) @@ -210,7 +209,7 @@ private T getCall(String relativeUrl, Class clazz) { } private ClientResponse getCall(String relativeUrl) { - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + relativeUrl); + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + relativeUrl); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON).get(ClientResponse.class); if (response.getStatus() != ClientResponse.Status.OK.getStatusCode()) { @@ -228,7 +227,7 @@ private ClientResponse getCall(String relativeUrl) { @Override public void deleteNodes(List nodeIds) { - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + "/node"); + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + "/node"); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) .entity(nodeIds, CONTENT_TYPE_JSON) .delete(ClientResponse.class); @@ -255,7 +254,7 @@ public List getAllSnapshots() { @Override public Node moveNodes(List sourceNodeIds, String targetNodeId) { WebResource webResource = - getClient().resource(Preferences.jmasarServiceUrl + "/move") + client.resource(Preferences.jmasarServiceUrl + "/move") .queryParam("to", targetNodeId); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) @@ -277,7 +276,7 @@ public Node moveNodes(List sourceNodeIds, String targetNodeId) { @Override public Node copyNodes(List sourceNodeIds, String targetNodeId) { WebResource webResource = - getClient().resource(Preferences.jmasarServiceUrl + "/copy") + client.resource(Preferences.jmasarServiceUrl + "/copy") .queryParam("to", targetNodeId); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) @@ -299,7 +298,7 @@ public Node copyNodes(List sourceNodeIds, String targetNodeId) { @Override public String getFullPath(String uniqueNodeId) { WebResource webResource = - getClient().resource(Preferences.jmasarServiceUrl + "/path/" + uniqueNodeId); + client.resource(Preferences.jmasarServiceUrl + "/path/" + uniqueNodeId); ClientResponse response = webResource.get(ClientResponse.class); if (response.getStatus() != ClientResponse.Status.OK.getStatusCode()) { @@ -322,7 +321,7 @@ public ConfigurationData getConfigurationData(String nodeId) { @Override public Configuration createConfiguration(String parentNodeId, Configuration configuration) { WebResource webResource = - getClient().resource(Preferences.jmasarServiceUrl + "/config") + client.resource(Preferences.jmasarServiceUrl + "/config") .queryParam("parentNodeId", parentNodeId); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) .entity(configuration, CONTENT_TYPE_JSON) @@ -341,7 +340,7 @@ public Configuration createConfiguration(String parentNodeId, Configuration conf @Override public Configuration updateConfiguration(Configuration configuration) { - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + "/config"); + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + "/config"); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) .entity(configuration, CONTENT_TYPE_JSON) @@ -367,7 +366,7 @@ public SnapshotData getSnapshotData(String nodeId) { @Override public Snapshot createSnapshot(String parentNodeId, Snapshot snapshot) { WebResource webResource = - getClient().resource(Preferences.jmasarServiceUrl + "/snapshot") + client.resource(Preferences.jmasarServiceUrl + "/snapshot") .queryParam("parentNodeId", parentNodeId); ClientResponse response; try { @@ -392,7 +391,7 @@ public Snapshot createSnapshot(String parentNodeId, Snapshot snapshot) { @Override public Snapshot updateSnapshot(Snapshot snapshot) { WebResource webResource = - getClient().resource(Preferences.jmasarServiceUrl + "/snapshot"); + client.resource(Preferences.jmasarServiceUrl + "/snapshot"); ClientResponse response; try { response = webResource.accept(CONTENT_TYPE_JSON) @@ -417,7 +416,7 @@ public Snapshot updateSnapshot(Snapshot snapshot) { @Override public CompositeSnapshot createCompositeSnapshot(String parentNodeId, CompositeSnapshot compositeSnapshot) { WebResource webResource = - getClient().resource(Preferences.jmasarServiceUrl + "/composite-snapshot") + client.resource(Preferences.jmasarServiceUrl + "/composite-snapshot") .queryParam("parentNodeId", parentNodeId); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) .entity(compositeSnapshot, CONTENT_TYPE_JSON) @@ -437,7 +436,7 @@ public CompositeSnapshot createCompositeSnapshot(String parentNodeId, CompositeS @Override public List checkCompositeSnapshotConsistency(List snapshotNodeIds) { WebResource webResource = - getClient().resource(Preferences.jmasarServiceUrl + "/composite-snapshot-consistency-check"); + client.resource(Preferences.jmasarServiceUrl + "/composite-snapshot-consistency-check"); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) .entity(snapshotNodeIds, CONTENT_TYPE_JSON) .post(ClientResponse.class); @@ -456,7 +455,7 @@ public List checkCompositeSnapshotConsistency(List snapshotNodeI @Override public CompositeSnapshot updateCompositeSnapshot(CompositeSnapshot compositeSnapshot) { - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + "/composite-snapshot"); + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + "/composite-snapshot"); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) .entity(compositeSnapshot, CONTENT_TYPE_JSON) @@ -475,7 +474,7 @@ public CompositeSnapshot updateCompositeSnapshot(CompositeSnapshot compositeSnap @Override public SearchResult search(MultivaluedMap searchParams) { - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + "/search") + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + "/search") .queryParams(searchParams); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) .get(ClientResponse.class); @@ -493,7 +492,7 @@ public SearchResult search(MultivaluedMap searchParams) { @Override public Filter saveFilter(Filter filter) { - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + "/filter"); + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + "/filter"); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) .entity(filter, CONTENT_TYPE_JSON) .put(ClientResponse.class); @@ -511,7 +510,7 @@ public Filter saveFilter(Filter filter) { @Override public List getAllFilters() { - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + "/filters"); + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + "/filters"); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) .get(ClientResponse.class); if (response.getStatus() != ClientResponse.Status.OK.getStatusCode()) { @@ -531,7 +530,7 @@ public List getAllFilters() { public void deleteFilter(String name) { // Filter name may contain space chars, need to URL encode these. String filterName = name.replace(" ", "%20"); - WebResource webResource = getClient().resource(Preferences.jmasarServiceUrl + "/filter/" + filterName); + WebResource webResource = client.resource(Preferences.jmasarServiceUrl + "/filter/" + filterName); ClientResponse response = webResource.accept(CONTENT_TYPE_JSON) .delete(ClientResponse.class); if (response.getStatus() != ClientResponse.Status.OK.getStatusCode()) { @@ -555,7 +554,7 @@ public void deleteFilter(String name) { public List addTag(TagData tagData) { WebResource webResource = - getClient().resource(Preferences.jmasarServiceUrl + "/tags"); + client.resource(Preferences.jmasarServiceUrl + "/tags"); ClientResponse response; try { response = webResource.accept(CONTENT_TYPE_JSON) @@ -586,7 +585,7 @@ public List addTag(TagData tagData) { */ public List deleteTag(TagData tagData) { WebResource webResource = - getClient().resource(Preferences.jmasarServiceUrl + "/tags"); + client.resource(Preferences.jmasarServiceUrl + "/tags"); ClientResponse response; try { response = webResource.accept(CONTENT_TYPE_JSON) @@ -611,7 +610,7 @@ public List deleteTag(TagData tagData) { @Override public UserData authenticate(String userName, String password) { WebResource webResource = - getClient().resource(Preferences.jmasarServiceUrl + "/login") + client.resource(Preferences.jmasarServiceUrl + "/login") .queryParam("username", userName) .queryParam("password", password); ClientResponse response;