/** * */ package org.gcube.datatransfer.resolver.services; 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.Produces; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import org.gcube.datatransfer.resolver.services.error.ExceptionManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * Oct 22, 2018 */ @Path("docs") public class UriResolverDocs { private static Logger logger = LoggerFactory.getLogger(UriResolverDocs.class); @GET @Produces({MediaType.TEXT_HTML}) @Path("") public InputStream index(@Context HttpServletRequest req) throws WebApplicationException{ logger.info(UriResolverDocs.class.getSimpleName() +" called"); String requestURI = req.getRequestURI(); try{ if(requestURI == null) requestURI = "/index.html"; String pathInfo = req.getPathInfo(); logger.info("pathInfo {}",pathInfo); logger.info("request URI {}", requestURI); String realPath = req.getServletContext().getRealPath("/docs/"+requestURI); return new FileInputStream(new File(realPath)); }catch (Exception e) { if(!(e instanceof WebApplicationException)){ //UNEXPECTED EXCEPTION managing it as WebApplicationException String error = requestURI+" 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; } } }