From 031372c4973fb366849df07c5257e50ee7410bc8 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Mon, 27 Feb 2023 18:24:59 +0100 Subject: [PATCH] Added the possibility for a client to add additional HTTP headers --- .../ResourceRegistryPublisherImpl.java | 72 ++++++++++--------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisherImpl.java b/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisherImpl.java index 39f2dea..2c1c1b9 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisherImpl.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/publisher/ResourceRegistryPublisherImpl.java @@ -55,7 +55,12 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher private static final Logger logger = LoggerFactory.getLogger(ResourceRegistryPublisherImpl.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 boolean hierarchicalMode; protected boolean includeContextsInHeader; @@ -122,9 +127,23 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher } }; + + 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 ResourceRegistryPublisherImpl(String address) { this.address = address; + this.headers = new HashMap<>(); ContextCache contextCache = ContextCache.getInstance(); contextCache.setContextCacheRenewal(contextCacheRenewal); } @@ -132,9 +151,8 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher public List getAllContextFromServer() throws ResourceRegistryException { try { logger.info("Going to read all {}s", Context.NAME); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryPublisher.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(AccessPath.ACCESS_PATH_PART); gxHTTPStringRequest.path(AccessPath.CONTEXTS_PATH_PART); @@ -166,9 +184,8 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher protected Context getContextFromServer(String id) throws ContextNotFoundException, ResourceRegistryException { try { logger.info("Going to get current {} ", Context.NAME); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryPublisher.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(AccessPath.ACCESS_PATH_PART); gxHTTPStringRequest.path(AccessPath.CONTEXTS_PATH_PART); gxHTTPStringRequest.path(id); @@ -256,9 +273,8 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher public String list(String type, Boolean polymorphic) throws ResourceRegistryException { try { logger.info("Going to get all instances of {} ", type); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryPublisher.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(AccessPath.INSTANCES_PATH_PART); gxHTTPStringRequest.path(type); @@ -285,10 +301,9 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher throws SchemaViolationException, AlreadyPresentException, ResourceRegistryException { try { logger.trace("Going to create {} : {}", type, json); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryPublisher.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(InstancePath.INSTANCES_PATH_PART); gxHTTPStringRequest.path(type); gxHTTPStringRequest.path(uuid.toString()); @@ -382,9 +397,8 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher throws AvailableInAnotherContextException, ResourceRegistryException { try { logger.info("Going to check if {} with UUID {} exists", type, uuid); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryPublisher.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(AccessPath.ACCESS_PATH_PART); gxHTTPStringRequest.path(AccessPath.INSTANCES_PATH_PART); gxHTTPStringRequest.path(type); @@ -447,9 +461,8 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher throws NotFoundException, AvailableInAnotherContextException, ResourceRegistryException { try { logger.trace("Going to read {} with UUID {}", type, uuid); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryPublisher.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(InstancePath.INSTANCES_PATH_PART); gxHTTPStringRequest.path(type); gxHTTPStringRequest.path(uuid.toString()); @@ -527,10 +540,9 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher throws SchemaViolationException, NotFoundException, ResourceRegistryException { try { logger.trace("Going to create {} : {}", type, json); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryPublisher.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(InstancePath.INSTANCES_PATH_PART); gxHTTPStringRequest.path(type); gxHTTPStringRequest.path(uuid.toString()); @@ -573,9 +585,8 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher throws SchemaViolationException, NotFoundException, ResourceRegistryException { try { logger.trace("Going to delete {} with UUID {}", type, uuid); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryPublisher.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(InstancePath.INSTANCES_PATH_PART); gxHTTPStringRequest.path(type); gxHTTPStringRequest.path(uuid.toString()); @@ -796,8 +807,7 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher try { logger.trace("Going to add {} with UUID {} to {} with UUID {} ", type, instanceUUID, Context.NAME, contextUUID); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryPublisher.class.getSimpleName()); + GXHTTPStringRequest gxHTTPStringRequest = getGXHTTPStringRequest(); gxHTTPStringRequest.path(SharingPath.SHARING_PATH_PART); gxHTTPStringRequest.path(SharingPath.CONTEXTS_PATH_PART); gxHTTPStringRequest.path(contextUUID.toString()); @@ -867,8 +877,7 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher try { logger.trace("Going to add {} with UUID {} to {} with UUID {} ", type, instanceUUID, Context.NAME, contextUUID); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryPublisher.class.getSimpleName()); + GXHTTPStringRequest gxHTTPStringRequest = getGXHTTPStringRequest(); gxHTTPStringRequest.path(SharingPath.SHARING_PATH_PART); gxHTTPStringRequest.path(SharingPath.CONTEXTS_PATH_PART); gxHTTPStringRequest.path(contextUUID.toString()); @@ -936,8 +945,7 @@ public class ResourceRegistryPublisherImpl implements ResourceRegistryPublisher throws NotFoundException, ResourceRegistryException { try { logger.trace("Going to get contexts of {} with UUID {}", type, instanceUUID); - GXHTTPStringRequest gxHTTPStringRequest = GXHTTPUtility.getGXHTTPStringRequest(address); - gxHTTPStringRequest.from(ResourceRegistryPublisher.class.getSimpleName()); + GXHTTPStringRequest gxHTTPStringRequest = getGXHTTPStringRequest(); gxHTTPStringRequest.path(InstancePath.INSTANCES_PATH_PART); gxHTTPStringRequest.path(type); gxHTTPStringRequest.path(instanceUUID.toString());