diff --git a/CHANGELOG.md b/CHANGELOG.md index 21d16ad..aea3bc4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,18 +4,22 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [v2-5-0-SNAPSHOT] - 2021-30-03 +## [v2-5-0-SNAPSHOT] - 2021-04-08 **New features** -[Task #20993] Supported new resource "Wekeo Interface" - gettoken. +[#20993] Supported new resource "Wekeo Interface" - gettoken. + +**Bug fixes** + +[#21093] StorageHubResolver HEAD request does not support Content-Length ## [v2-4-1] - 2021-01-13 **Bug Fixes** -[Task #19942] Fixing master build fails +[#19942] Fixing master build fails ## [v2-4-0] [r4-24-0]- 2020-06-18 diff --git a/src/main/java/org/gcube/datatransfer/resolver/services/StorageHubResolver.java b/src/main/java/org/gcube/datatransfer/resolver/services/StorageHubResolver.java index 481168f..da5711c 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/services/StorageHubResolver.java +++ b/src/main/java/org/gcube/datatransfer/resolver/services/StorageHubResolver.java @@ -71,7 +71,7 @@ public class StorageHubResolver { ItemManagerClient client = AbstractPlugin.item().build(); StreamDescriptor descriptor = client.resolvePublicLink(id); - ResponseBuilder response = Response.noContent(); + ResponseBuilder response = Response.ok(); response = new StorageHubMetadataResponseBuilder(req, response).fillMetadata(descriptor, id, CONTENT_DISPOSITION_VALUE.attachment); return response.build(); diff --git a/src/main/java/org/gcube/datatransfer/resolver/services/WekeoResolver.java b/src/main/java/org/gcube/datatransfer/resolver/services/WekeoResolver.java index 654b3ab..1b35465 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/services/WekeoResolver.java +++ b/src/main/java/org/gcube/datatransfer/resolver/services/WekeoResolver.java @@ -3,6 +3,8 @@ package org.gcube.datatransfer.resolver.services; import static org.gcube.resources.discovery.icclient.ICFactory.clientFor; import static org.gcube.resources.discovery.icclient.ICFactory.queryFor; +import java.io.File; +import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; @@ -181,23 +183,29 @@ public class WekeoResolver { } @GET + @Produces({MediaType.TEXT_HTML}) @Path("") - @Produces(MediaType.TEXT_HTML) - public Response getIndex(@Context HttpServletRequest req) { - logger.info(this.getClass().getSimpleName()+" getIndex starts..."); - - StringBuilder wekeoResponse = new StringBuilder(); - wekeoResponse.append("

Welcome to Wekeo Resolver

"); - wekeoResponse.append("
See documentation at: "+helpURI +"
"); - String wekeoGetTokenURL = String.format("%s/%s", Util.getServerURL(req), "wekeo/gettoken"); - wekeoResponse.append("
Go to gettoken request: "+wekeoGetTokenURL +"
"); - - String theResponse = wekeoResponse.toString(); - logger.info("debug: \n"+theResponse); - return Response.ok(theResponse).build(); + public InputStream index(@Context HttpServletRequest req) throws WebApplicationException{ + + String indexFile = "/WEB-INF/jsp/wekeo.jsp"; + + try{ + logger.info(UriResolverIndex.class.getSimpleName() +" called"); + String realPath = req.getServletContext().getRealPath(indexFile); + return new FileInputStream(new File(realPath)); + }catch (Exception e) { + + if(!(e instanceof WebApplicationException)){ + //UNEXPECTED EXCEPTION managing it as WebApplicationException + String error = "Index.jsp not found. Please, contact the support!"; + throw ExceptionManager.internalErrorException(req, error, this.getClass(), null); + } + //ALREADY MANAGED AS WebApplicationException + logger.error("Exception:", e); + throw (WebApplicationException) e; + } } - /** * Reads the wekeo endpoint information from IS. {The SE name is: @link WekeoResolver#RUNTIME_WKEO_RESOURCE_NAME} * @@ -225,7 +233,7 @@ public class WekeoResolver { if(toReturn.size()==0){ String errorMessage = String.format("Missing the RR with Name '%s' and Category '%s' in the scope '%s'. Please contact the support.",RUNTIME_WKEO_RESOURCE_NAME,CATEGORY_WEKEO_TYPE,ScopeProvider.instance.get()); logger.error(errorMessage); - throw ExceptionManager.internalErrorException(req, errorMessage, AnalyticsCreateResolver.class, helpURI); + throw ExceptionManager.internalErrorException(req, errorMessage, WekeoResolver.class, helpURI); } String wekeoUsername = null; @@ -247,7 +255,7 @@ public class WekeoResolver { }catch(Exception e){ String errorMessage = "Error occurred on reading the "+RUNTIME_WKEO_RESOURCE_NAME+" SE registered in the scope: "+ScopeProvider.instance.get(); logger.error(errorMessage, e); - throw ExceptionManager.internalErrorException(req, errorMessage, AnalyticsCreateResolver.class, helpURI); + throw ExceptionManager.internalErrorException(req, errorMessage, WekeoResolver.class, helpURI); }finally{ if(callerScope!=null){ diff --git a/src/main/java/org/gcube/datatransfer/resolver/shub/StorageHubMetadataResponseBuilder.java b/src/main/java/org/gcube/datatransfer/resolver/shub/StorageHubMetadataResponseBuilder.java index c05d2a4..da67910 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/shub/StorageHubMetadataResponseBuilder.java +++ b/src/main/java/org/gcube/datatransfer/resolver/shub/StorageHubMetadataResponseBuilder.java @@ -58,8 +58,10 @@ public class StorageHubMetadataResponseBuilder { responseBuilder.header("Content-Location", contentLocation); //Managing "Content-Type" - if (streamDescriptor.getContentType()!= null && !streamDescriptor.getContentType().isEmpty()) + if (streamDescriptor.getContentType()!= null && !streamDescriptor.getContentType().isEmpty()) { + responseBuilder.header("Content-Type", streamDescriptor.getContentType()); + } //Managing "Content-Lenght" if(streamDescriptor.getContentLenght()>0) { diff --git a/src/main/webapp/WEB-INF/jsp/wekeo.jsp b/src/main/webapp/WEB-INF/jsp/wekeo.jsp new file mode 100644 index 0000000..f8b628f --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/wekeo.jsp @@ -0,0 +1,51 @@ + + + + + + + +
+ +
The Wekeo Resolver
+
Available Operations: + +
+

+ See wiki page at gCube Wiki Wekeo + Resolver +

+
+ + \ No newline at end of file