From c529b03d970224f7d88ec457c061fb0a54036c27 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Mon, 27 Feb 2023 18:21:52 +0100 Subject: [PATCH] Added the possibility for a client to add additional HTTP headers --- .../ResourceRegistryContextClientImpl.java | 55 ++++++++++++------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ResourceRegistryContextClientImpl.java b/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ResourceRegistryContextClientImpl.java index a225737..2e34b04 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ResourceRegistryContextClientImpl.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/contexts/ResourceRegistryContextClientImpl.java @@ -2,7 +2,9 @@ package org.gcube.informationsystem.resourceregistry.contexts; import java.io.IOException; import java.net.HttpURLConnection; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.UUID; import org.gcube.com.fasterxml.jackson.core.JsonProcessingException; @@ -32,8 +34,13 @@ public class ResourceRegistryContextClientImpl implements ResourceRegistryContex private static final Logger logger = LoggerFactory.getLogger(ResourceRegistryContextClientImpl.class); + private static final String ACCEPT_HTTP_HEADER_KEY = "Accept"; + private static final String CONTENT_TYPE_HTTP_HEADER_KEY = "Content-Type"; + protected final String address; + protected Map headers; + protected ContextCacheRenewal contextCacheRenewal = new ContextCacheRenewal() { @Override @@ -43,8 +50,22 @@ public class ResourceRegistryContextClientImpl implements ResourceRegistryContex }; + public void addHeader(String name, String value) { + headers.put(name, value); + } + + protected GXHTTPStringRequest getGXHTTPStringRequest() { + GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); + gxHTTPStringRequest.from(this.getClass().getSimpleName()); + for(String name : headers.keySet()) { + gxHTTPStringRequest.header(name, headers.get(name)); + } + return gxHTTPStringRequest; + } + public ResourceRegistryContextClientImpl(String address) { this.address = address; + this.headers = new HashMap<>(); ContextCache contextCache = ContextCache.getInstance(); contextCache.setContextCacheRenewal(contextCacheRenewal); } @@ -62,9 +83,8 @@ public class ResourceRegistryContextClientImpl implements ResourceRegistryContex protected List getAllContextFromServer() throws ResourceRegistryException { try { logger.trace("Going to read {} with UUID {}", Context.NAME); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryContextClient.class.getSimpleName()); - gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8); + GXHTTPStringRequest gxHTTPStringRequest = getGXHTTPStringRequest(); + gxHTTPStringRequest.header(ACCEPT_HTTP_HEADER_KEY, GXConnection.APPLICATION_JSON_CHARSET_UTF_8); gxHTTPStringRequest.path(ContextPath.CONTEXTS_PATH_PART); HttpURLConnection httpURLConnection = gxHTTPStringRequest.get(); @@ -101,10 +121,9 @@ public class ResourceRegistryContextClientImpl implements ResourceRegistryContex logger.trace("Going to create {}", contextString); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryContextClient.class.getSimpleName()); - gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8); - gxHTTPStringRequest.header("Content-type", GXConnection.APPLICATION_JSON_CHARSET_UTF_8); + GXHTTPStringRequest gxHTTPStringRequest = getGXHTTPStringRequest(); + gxHTTPStringRequest.header(ACCEPT_HTTP_HEADER_KEY, GXConnection.APPLICATION_JSON_CHARSET_UTF_8); + gxHTTPStringRequest.header(CONTENT_TYPE_HTTP_HEADER_KEY, GXConnection.APPLICATION_JSON_CHARSET_UTF_8); gxHTTPStringRequest.path(ContextPath.CONTEXTS_PATH_PART); gxHTTPStringRequest.path(uuid.toString()); @@ -156,9 +175,8 @@ public class ResourceRegistryContextClientImpl implements ResourceRegistryContex public boolean existFromServer(String uuid) throws ContextNotFoundException, ResourceRegistryException { try { logger.trace("Going to read {} with UUID {}", Context.NAME, uuid); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryContextClient.class.getSimpleName()); - gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8); + GXHTTPStringRequest gxHTTPStringRequest = getGXHTTPStringRequest(); + gxHTTPStringRequest.header(ACCEPT_HTTP_HEADER_KEY, GXConnection.APPLICATION_JSON_CHARSET_UTF_8); gxHTTPStringRequest.path(ContextPath.CONTEXTS_PATH_PART); gxHTTPStringRequest.path(uuid); @@ -262,9 +280,8 @@ public class ResourceRegistryContextClientImpl implements ResourceRegistryContex public String readFromServer(String uuid) throws ContextNotFoundException, ResourceRegistryException { try { logger.trace("Going to read {} with UUID {}", Context.NAME, uuid); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryContextClient.class.getSimpleName()); - gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8); + GXHTTPStringRequest gxHTTPStringRequest = getGXHTTPStringRequest(); + gxHTTPStringRequest.header(ACCEPT_HTTP_HEADER_KEY, GXConnection.APPLICATION_JSON_CHARSET_UTF_8); gxHTTPStringRequest.path(ContextPath.CONTEXTS_PATH_PART); gxHTTPStringRequest.path(uuid); @@ -289,10 +306,9 @@ public class ResourceRegistryContextClientImpl implements ResourceRegistryContex UUID uuid = context.getHeader().getUUID(); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryContextClient.class.getSimpleName()); - gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8); - gxHTTPStringRequest.header("Content-type", GXConnection.APPLICATION_JSON_CHARSET_UTF_8); + GXHTTPStringRequest gxHTTPStringRequest = getGXHTTPStringRequest(); + gxHTTPStringRequest.header(ACCEPT_HTTP_HEADER_KEY, GXConnection.APPLICATION_JSON_CHARSET_UTF_8); + gxHTTPStringRequest.header(CONTENT_TYPE_HTTP_HEADER_KEY, GXConnection.APPLICATION_JSON_CHARSET_UTF_8); gxHTTPStringRequest.path(ContextPath.CONTEXTS_PATH_PART); gxHTTPStringRequest.path(uuid.toString()); @@ -355,9 +371,8 @@ public class ResourceRegistryContextClientImpl implements ResourceRegistryContex public boolean delete(String uuid) throws ContextNotFoundException, ResourceRegistryException { try { logger.trace("Going to delete {} with UUID {}", Context.NAME, uuid); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryContextClient.class.getSimpleName()); - gxHTTPStringRequest.header("Accept", GXConnection.APPLICATION_JSON_CHARSET_UTF_8); + GXHTTPStringRequest gxHTTPStringRequest = getGXHTTPStringRequest(); + gxHTTPStringRequest.header(ACCEPT_HTTP_HEADER_KEY, GXConnection.APPLICATION_JSON_CHARSET_UTF_8); gxHTTPStringRequest.path(ContextPath.CONTEXTS_PATH_PART); gxHTTPStringRequest.path(uuid);