From 26d370457518c62623e2368192085393dac3f6c6 Mon Sep 17 00:00:00 2001 From: Francesco Mangiacrapa Date: Wed, 7 Nov 2018 11:00:28 +0000 Subject: [PATCH] added index.jsp git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-transfer/uri-resolver@174036 82a268e6-3cf1-43bd-a215-b396298e98cf --- pom.xml | 10 +- .../datatransfer/resolver/UriResolver.java | 5 +- .../resolver/UriResolverRewriteFilter.java | 237 ------------------ .../resolver/services/UriResolverIndex.java | 70 ++++-- src/main/webapp/WEB-INF/gcube-app.xml | 2 +- src/main/webapp/WEB-INF/jsp/index.jsp | 55 ++-- src/main/webapp/WEB-INF/web.xml | 8 +- src/main/webapp/index.jsp | 22 -- 8 files changed, 95 insertions(+), 314 deletions(-) delete mode 100644 src/main/java/org/gcube/datatransfer/resolver/UriResolverRewriteFilter.java delete mode 100644 src/main/webapp/index.jsp diff --git a/pom.xml b/pom.xml index f57913a..6f21a29 100644 --- a/pom.xml +++ b/pom.xml @@ -103,11 +103,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 21d3ad1..bf9bea2 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/UriResolver.java +++ b/src/main/java/org/gcube/datatransfer/resolver/UriResolver.java @@ -3,7 +3,6 @@ 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 { @@ -11,8 +10,8 @@ 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); +// register(JspMvcFeature.class); +// property(MvcFeature.TEMPLATE_BASE_PATH, "/WEB-INF/jsp"); } } diff --git a/src/main/java/org/gcube/datatransfer/resolver/UriResolverRewriteFilter.java b/src/main/java/org/gcube/datatransfer/resolver/UriResolverRewriteFilter.java deleted file mode 100644 index 397eac4..0000000 --- a/src/main/java/org/gcube/datatransfer/resolver/UriResolverRewriteFilter.java +++ /dev/null @@ -1,237 +0,0 @@ -///** -// * -// */ -//package org.gcube.datatransfer.resolver; -// -//import java.io.IOException; -//import java.util.HashSet; -//import java.util.Set; -// -//import javax.servlet.Filter; -//import javax.servlet.FilterChain; -//import javax.servlet.FilterConfig; -//import javax.servlet.ServletException; -//import javax.servlet.ServletRequest; -//import javax.servlet.ServletResponse; -//import javax.servlet.http.HttpServletRequest; -//import javax.servlet.http.HttpServletResponse; -// -//import org.gcube.datatransfer.resolver.catalogue.CatalogueRequestParameter; -//import org.gcube.datatransfer.resolver.catalogue.UrlEncoderUtil; -//import org.slf4j.Logger; -//import org.slf4j.LoggerFactory; -// -// -// -///** -// * The Class UriResolverRewriteFilter. -// * -// * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it -// * Dec 5, 2016 -// */ -//public class UriResolverRewriteFilter implements Filter{ -// -// /** -// * -// */ -// public static final String SERVLET_URI_RESOLVER = "/uri-resolver"; -// -// private static final String PATH_SEPARATOR = "/"; -// public static final String SERVLET_GEONETWORK = "/geonetwork"; -// public static final String REQUEST_PARAMETER_SEPARATOR = "#"; -// -// public static final String PARAMETER_SMP_ID = "smp-id"; -// public static final String SERVLET_STORAGE_ID = "id"; -// -// public static final String PARAMETER_ENC_CATALOGUE_LINK = "cl"; -// public static final String PARAMETER_DIRECT_CATALOGUE_LINK = "dl"; -// public static final String SERVLET_CATALOGUE = "/catalogue"; -// -// protected static final Logger logger = LoggerFactory.getLogger(UriResolverRewriteFilter.class); -// private FilterConfig config; -// -// private static final Set resourceCataloguesCodes = new HashSet(ResourceCatalogueCodes.codes()); -// -// //private ApplicationProfileReaderForCatalogueResolver appPrfCatResolver = new ApplicationProfileReaderForCatalogueResolver(scope, useRootScope) -// -// /** -// * Gets the config. -// * -// * @return the config -// */ -// public FilterConfig getConfig() { -// -// return config; -// } -// -// /* (non-Javadoc) -// * @see javax.servlet.Filter#destroy() -// */ -// @Override -// public void destroy() { -// logger.trace("run destroy"); -// } -// -// -// /* (non-Javadoc) -// * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) -// */ -// @Override -// public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException { -// /* wrap the request in order to read the inputstream multiple times */ -// MultiReadHttpServletRequest multiReadRequest = new MultiReadHttpServletRequest((HttpServletRequest) req); -// String requestURI = multiReadRequest.getRequestURI(); -// String queryString = multiReadRequest.getQueryString(); -// String servletPath = multiReadRequest.getServletPath(); -// logger.debug("Request URI: " + requestURI + ", QueryString: " +queryString+ ", Servlet path: "+servletPath); -// -// try{ -// //IS A REQUEST FOR GEONETWORK AUTHENTICATION? (CKAN HARVESTING?) -// if(servletPath.startsWith(SERVLET_GEONETWORK) || servletPath.startsWith(SERVLET_URI_RESOLVER+SERVLET_GEONETWORK)){ -// logger.debug("It is a request to geonetwork"); -// GeonetworkRequestDecoder grd = new GeonetworkRequestDecoder(servletPath, queryString); -// logger.debug("forward to: "+grd.getGeonetworkResolverURIRequest()); -// multiReadRequest.getRequestDispatcher(grd.getGeonetworkResolverURIRequest()).forward(multiReadRequest, response); -// -// }else{ -// logger.debug("checking if it is a request to catologue..."); -// boolean isCatalogueServletReference = servletPath.startsWith(SERVLET_CATALOGUE); -// -// String idCodeCatalogue = null; -// boolean isIdCodeCatalogue = false; -// String splittedServletPath[] = servletPath.split(PATH_SEPARATOR); -// if(!isCatalogueServletReference){ -// idCodeCatalogue = splittedServletPath[1]; -// logger.trace("checking if the code: "+idCodeCatalogue+" belongs to a catalogue code"); -// isIdCodeCatalogue = resourceCataloguesCodes.contains(idCodeCatalogue); -// logger.debug("\tIs it a catalogue code? "+isIdCodeCatalogue); -// } -// -// if(isCatalogueServletReference || isIdCodeCatalogue){ -// -// //int startIndex = requestURI.indexOf(SERVLET_CATALOGUE))+SERVLET_CATALOGUE.length(); -// //String vreName = requestURI.substring(beginIndex) -// HttpServletRequest request = (HttpServletRequest) req; -// logger.trace("method is: "+request.getMethod()); -// -// if(request.getMethod().compareToIgnoreCase("POST")==0){ -// logger.debug("Managing as Catalogue POST request.."); -// logger.debug("forward to: " + SERVLET_CATALOGUE); -// multiReadRequest.getRequestDispatcher(SERVLET_CATALOGUE).forward(multiReadRequest, response); -// }else{ -// logger.debug("Managing as Catalogue GET request.."); -// String newURI = SERVLET_CATALOGUE; -// //String[] pathSplit = newServletPath.split(PATH_SEPARATOR); -// if(isIdCodeCatalogue){ -// //TO BUILD A COMPLETE URL -// // logger.debug("is a catalogue code, rebuilding complete url..."); -// // ResourceCatalogueCodes rcc = ResourceCatalogueCodes.valueOfId(idCodeCatalogue); -// // newServletPath = SERVLET_CATALOGUE+splittedServletPath[2]+PATH_SEPARATOR+rcc.getValue()+PATH_SEPARATOR+splittedServletPath[3]; -// // logger.debug("rebuilded complete url: "+newServletPath); -// logger.debug("is a catalogue code, resolving a short url in clear ..."); -// ResourceCatalogueCodes rcc = ResourceCatalogueCodes.valueOfCodeId(idCodeCatalogue); -// logger.debug("found VRE name: "+splittedServletPath[2]); -// String gcubeScope = CatalogueRequestParameter.GCUBE_SCOPE.getKey() +"="+splittedServletPath[2]; -// String eC = CatalogueRequestParameter.ENTITY_CONTEXT.getKey() +"="+rcc.getValue(); -// logger.debug("found id code: "+idCodeCatalogue+", resolving it with context name: "+eC); -// String eN = CatalogueRequestParameter.ENTITY_NAME.getKey() +"="+splittedServletPath[3]; -// logger.debug("found entity name: "+eN); -// String encodedQuery = UrlEncoderUtil.encodeQuery(gcubeScope,eC,eN); -// newURI+= "?" + PARAMETER_DIRECT_CATALOGUE_LINK + "=" + encodedQuery; -// }else -// if(splittedServletPath.length==5){ -// logger.info("resolving a complete URL in clear..."); -// logger.debug("found VRE name: "+splittedServletPath[2]); -// String gcubeScope = CatalogueRequestParameter.GCUBE_SCOPE.getKey() +"="+splittedServletPath[2]; -// String eC = CatalogueRequestParameter.ENTITY_CONTEXT.getKey() +"="+splittedServletPath[3]; -// logger.debug("found context name: "+eC); -// String eN = CatalogueRequestParameter.ENTITY_NAME.getKey() +"="+splittedServletPath[4]; -// logger.debug("found entity name: "+eN); -// String encodedQuery = UrlEncoderUtil.encodeQuery(gcubeScope,eC,eN); -// newURI+= "?" + PARAMETER_DIRECT_CATALOGUE_LINK + "=" + encodedQuery; -// }else{ -// -// logger.info("Resolving an encrypted URL to catalogue..."); -// int lastSlash = requestURI.lastIndexOf(PATH_SEPARATOR); -// String toCatalogueLink = requestURI.substring(lastSlash + 1, requestURI.length()); -// newURI+= "?" + PARAMETER_ENC_CATALOGUE_LINK + "=" + toCatalogueLink; -// } -// -// logger.debug("forward to: " + newURI); -// multiReadRequest.getRequestDispatcher(newURI).forward(multiReadRequest, response); -// } -// -// //chain.doFilter(multiReadRequest, response); -// }else{ -// logger.debug("It is a request to workspace/storage"); -// //LAST CASE, IS WORKSPACE REQUEST? -// if (queryString == null) { // IS A /XXXXX -// logger.debug("QueryString is null, is It a new SMP public uri by ID?"); -// int lastSlash = requestURI.lastIndexOf(PATH_SEPARATOR); -// if (lastSlash + 1 == requestURI.length()) { -// logger.debug("'/' is last index, doFilter Request"); -// // req.getRequestDispatcher("/").forward(req, res); -// chain.doFilter(multiReadRequest, response); -// } -// else { -// String toStorageID = requestURI.substring(lastSlash + 1, requestURI.length()); -// // String newURI = requestURI.replace(toReplace, -// // SERVLET_RESOLVER_BY_ID+"?"+SMP_ID+"="+toReplace); -// String newURI = SERVLET_STORAGE_ID + "?" + PARAMETER_SMP_ID + "=" + toStorageID; -// logger.debug("forward to: " + newURI); -// multiReadRequest.getRequestDispatcher(newURI).forward(multiReadRequest, response); -// } -// } -// else { -// logger.debug("It is NOT a SMP public uri by ID, doFilter Request"); -// chain.doFilter(multiReadRequest, response); -// } -// } -// -// } -// }catch(BadRequestException bre){ -// if (response instanceof HttpServletResponse){ -// HttpServletResponse httpResponse = (HttpServletResponse) response; -// httpResponse.sendError(HttpServletResponse.SC_BAD_REQUEST, bre.getMessage()); -// } -// } -// } -// -// -// /** -// * Gets the scope. -// * -// * @param scope the scope -// * @return the scope -// */ -// private static String getScope(String scope){ -// logger.debug("Read scope path: "+scope); -//// String scope = servletPath.substring(servletPath.indexOf("/"), servletPath.length()); -// return PATH_SEPARATOR+scope.replaceAll("_", PATH_SEPARATOR); -// } -// -// /* (non-Javadoc) -// * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) -// */ -// @Override -// public void init(FilterConfig config) throws ServletException { -// logger.trace("run init"); -// this.config = config; -// } -// -// /*public static void main(String[] args) { -// -// String split = "/catalogue/NextNext/dataset/sarda-sarda"; -// -// String[] array = split.split("/"); -// -// System.out.println(array.length); -// -// for (int i = 0; i < array.length; i++) { -// System.out.println(i+" "+array[i]); -// } -// -// System.out.println(array[2]); -// -// }*/ -//} diff --git a/src/main/java/org/gcube/datatransfer/resolver/services/UriResolverIndex.java b/src/main/java/org/gcube/datatransfer/resolver/services/UriResolverIndex.java index adff9be..bff0918 100644 --- a/src/main/java/org/gcube/datatransfer/resolver/services/UriResolverIndex.java +++ b/src/main/java/org/gcube/datatransfer/resolver/services/UriResolverIndex.java @@ -3,29 +3,49 @@ */ package org.gcube.datatransfer.resolver.services; -///** -// * -// * @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); -// } -// -// } -//} +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; + +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.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("{toInfo:(index|info)?") + public InputStream index(@Context HttpServletRequest req, @PathParam("toInfo") String info){ + + String indexFile = "/WEB-INF/jsp/index.jsp"; + + try{ + logger.info("UriResolverIndex called"); + String realPath = req.getServletContext().getRealPath(indexFile); + return new FileInputStream(new File(realPath)); + }catch(Exception e){ + logger.error("Error on getting "+indexFile, e); + throw new InternalServerException(req, Status.NOT_FOUND, "Index.jsp not found", UriResolverIndex.class, null); + } + + } +} diff --git a/src/main/webapp/WEB-INF/gcube-app.xml b/src/main/webapp/WEB-INF/gcube-app.xml index 094b2d5..6098a2a 100644 --- a/src/main/webapp/WEB-INF/gcube-app.xml +++ b/src/main/webapp/WEB-INF/gcube-app.xml @@ -2,6 +2,6 @@ URIResolver DataTransfer 1.0.0-SNAPSHOT - Storage Hub webapp + URIResolver RESTful /* \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/index.jsp b/src/main/webapp/WEB-INF/jsp/index.jsp index 945c231..afcfdb4 100644 --- a/src/main/webapp/WEB-INF/jsp/index.jsp +++ b/src/main/webapp/WEB-INF/jsp/index.jsp @@ -1,22 +1,43 @@ - - - - - - - - - - - + + + + -

The URI resolver

-

- See wiki page: URI - Resolver gCube Wiki -

+
+ +
The URI Resolver
+

+ See wiki page at gCube Wiki URI + Resolver +

+
\ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index e137d44..92883b1 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -3,18 +3,18 @@ root-app-token - e22a46ac-418c-49f2-ad3f-99a5b9689825-98187548 + e22a46ac-418c-49f2-ad3f-99a5b9689825-98187548 + root-scope /gcube - root-scope - + org.gcube.datatransfer.resolver.UriResolver - + org.gcube.datatransfer.resolver.UriResolver /* diff --git a/src/main/webapp/index.jsp b/src/main/webapp/index.jsp deleted file mode 100644 index 945c231..0000000 --- a/src/main/webapp/index.jsp +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - -

The URI resolver

-

- See wiki page: URI - Resolver gCube Wiki -

- - \ No newline at end of file