diff --git a/pom.xml b/pom.xml index 4ce0e66..69ff262 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,4 @@ - 4.0.0 @@ -99,6 +98,11 @@ + + org.glassfish.jersey.ext + jersey-mvc-jsp + 2.13 + javax.ws.rs javax.ws.rs-api diff --git a/src/main/java/org/gcube/datatransfer/resolver/UriResolver.java b/src/main/java/org/gcube/datatransfer/resolver/UriResolver.java index 4531b7e..21d3ad1 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/UriResolver.java +++ b/src/main/java/org/gcube/datatransfer/resolver/UriResolver.java @@ -3,6 +3,7 @@ package org.gcube.datatransfer.resolver; import javax.ws.rs.Path; import org.glassfish.jersey.server.ResourceConfig; +import org.glassfish.jersey.server.mvc.jsp.JspMvcFeature; @Path("uri-resolver") public class UriResolver extends ResourceConfig { @@ -10,7 +11,9 @@ public class UriResolver extends ResourceConfig { public UriResolver() { // Register all resources present under the package. packages("org.gcube.datatransfer.resolver.services","org.gcube.datatransfer.resolver.requesthandler"); - + property(JspMvcFeature.TEMPLATES_BASE_PATH, "/WEB-INF/jsp"); + register(JspMvcFeature.class); + } } diff --git a/src/main/java/org/gcube/datatransfer/resolver/services/StorageIDResolver.java b/src/main/java/org/gcube/datatransfer/resolver/services/StorageIDResolver.java index 981bd7e..d24efa5 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/services/StorageIDResolver.java +++ b/src/main/java/org/gcube/datatransfer/resolver/services/StorageIDResolver.java @@ -61,8 +61,8 @@ public class StorageIDResolver { * @return the storage id */ @GET - //@Path("{storage-id:(?!index.jsp)[^/?$]*}") - @Path("{storage-id}") + @Path("{storage-id:(?!index)[^/?$]*}") + //@Path("{storage-id}") public Response getStorageId(@Context HttpServletRequest httpRequest, @PathParam(STORAGE_ID) String storageId, @QueryParam(ConstantsResolver.FILE_NAME) String fileName, @QueryParam(ConstantsResolver.CONTENT_TYPE) String contentType, @QueryParam(ConstantsResolver.VALIDATION) Boolean validation) { logger.info("resolve Storage-Id called"); //Checking mandatory parameter storageId diff --git a/src/main/java/org/gcube/datatransfer/resolver/services/UriResolverIndex.java b/src/main/java/org/gcube/datatransfer/resolver/services/UriResolverIndex.java new file mode 100644 index 0000000..f581146 --- /dev/null +++ b/src/main/java/org/gcube/datatransfer/resolver/services/UriResolverIndex.java @@ -0,0 +1,43 @@ +/** + * + */ +package org.gcube.datatransfer.resolver.services; + +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response.Status; + +import org.gcube.datatransfer.resolver.services.exceptions.InternalServerException; +import org.glassfish.jersey.server.mvc.Viewable; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +/** + * + * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it + * Oct 22, 2018 + */ +@Path("/") +public class UriResolverIndex { + + private static Logger logger = LoggerFactory.getLogger(UriResolverIndex.class); + + @GET + @Produces(MediaType.TEXT_HTML) + @Path("index") + public Viewable index(@Context HttpServletRequest req, @PathParam("index") String info){ + + try{ + logger.info("UriResolverIndex called"); + return new Viewable("/index"); + }catch(Exception e){ + logger.error("Error on getting index.jsp", e); + throw new InternalServerException(req, Status.NOT_FOUND, "Index.jsp not found", UriResolverIndex.class, null); + } + + } +} diff --git a/src/main/java/org/gcube/datatransfer/resolver/services/UriResolverInfo.java b/src/main/java/org/gcube/datatransfer/resolver/services/UriResolverInfo.java deleted file mode 100644 index f78b060..0000000 --- a/src/main/java/org/gcube/datatransfer/resolver/services/UriResolverInfo.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * - */ -package org.gcube.datatransfer.resolver.services; - -import java.net.URI; -import java.net.URISyntaxException; - -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Response; - - -/** - * - * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it - * Oct 22, 2018 - */ -@Path("/") -public class UriResolverInfo { - - @GET - @Path("info") - public Response getInfo(){ - try{ - return Response.seeOther(new URI("index.jsp")).build(); - }catch(URISyntaxException e){ - throw new WebApplicationException("Impossible to get URI Resolver Info"); - } - } -} diff --git a/src/main/java/org/gcube/datatransfer/resolver/services/error/ErrorReport.java b/src/main/java/org/gcube/datatransfer/resolver/services/error/ErrorReport.java index 355e97d..a088083 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/services/error/ErrorReport.java +++ b/src/main/java/org/gcube/datatransfer/resolver/services/error/ErrorReport.java @@ -6,6 +6,7 @@ package org.gcube.datatransfer.resolver.services.error; import java.io.Serializable; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; import lombok.AllArgsConstructor; import lombok.Getter; @@ -20,6 +21,7 @@ import lombok.experimental.Builder; @Getter @Setter @Builder +@XmlType (propOrder={"name","httpErrorCode","message","reportedBy"}) public class ErrorReport implements Serializable{ /** diff --git a/src/main/java/org/gcube/datatransfer/resolver/services/error/ExceptionReport.java b/src/main/java/org/gcube/datatransfer/resolver/services/error/ExceptionReport.java index 36479e4..0f4088d 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/services/error/ExceptionReport.java +++ b/src/main/java/org/gcube/datatransfer/resolver/services/error/ExceptionReport.java @@ -7,6 +7,7 @@ import java.io.Serializable; import java.net.URI; import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; import lombok.AllArgsConstructor; import lombok.Getter; @@ -26,6 +27,7 @@ import lombok.experimental.Builder; @Getter @Setter @Builder +@XmlType (propOrder={"request","method","success","error", "help"}) public class ExceptionReport implements Serializable{ /** diff --git a/src/main/webapp/WEB-INF/jsp/index.jsp b/src/main/webapp/WEB-INF/jsp/index.jsp new file mode 100644 index 0000000..945c231 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/index.jsp @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + +

The URI resolver

+

+ See wiki page: URI + Resolver gCube Wiki +

+ + \ No newline at end of file