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:
+
+ - getToken at <%=request.getRequestURL()%>/gettoken
+
+
+
+
+ See wiki page at gCube Wiki Wekeo
+ Resolver
+
+
+
+
\ No newline at end of file