1925: Uri-Resolver: resolve gCubeStorage smp uri like http uri
Task-Url: https://support.d4science.org/issues/1925 Added Filter to rewrite public link updated pom version at 1.5.0 git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/data-transfer/uri-resolver@122206 82a268e6-3cf1-43bd-a215-b396298e98cffeature/18038
parent
af3d5aa1ff
commit
b8d2257a12
@ -0,0 +1,78 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.datatransfer.resolver;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
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 org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* Nov 20, 2015
|
||||
*/
|
||||
public class UriResolverRewriteFilter implements Filter{
|
||||
|
||||
protected static final String SMP_ID = "smp-id";
|
||||
protected static final String SERVLET_RESOLVER_BY_ID = "id";
|
||||
protected static final Logger logger = LoggerFactory.getLogger(UriResolverRewriteFilter.class);
|
||||
/* (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 res, FilterChain chain) throws IOException, ServletException {
|
||||
|
||||
HttpServletRequest request = (HttpServletRequest) req;
|
||||
String requestURI = request.getRequestURI();
|
||||
String queryString = request.getQueryString();
|
||||
logger.debug("Request URI: " + requestURI + ", QueryString: " +queryString);
|
||||
if (queryString == null) { // IS A /XXXXX
|
||||
logger.debug("QueryString is null, is It a new SMP public uri by ID?");
|
||||
int lastSlash = requestURI.lastIndexOf("/");
|
||||
if ((lastSlash + 1) == requestURI.length()) {
|
||||
logger.debug("'/' is last index, doFilter Request");
|
||||
// req.getRequestDispatcher("/").forward(req, res);
|
||||
chain.doFilter(req, res);
|
||||
}
|
||||
else {
|
||||
String toStorageID = requestURI.substring(lastSlash + 1, requestURI.length());
|
||||
// String newURI = requestURI.replace(toReplace,
|
||||
// SERVLET_RESOLVER_BY_ID+"?"+SMP_ID+"="+toReplace);
|
||||
String newURI = SERVLET_RESOLVER_BY_ID + "?" + SMP_ID + "=" + toStorageID;
|
||||
logger.debug("forward to: " + requestURI + newURI);
|
||||
req.getRequestDispatcher(newURI).forward(req, res);
|
||||
}
|
||||
}
|
||||
else {
|
||||
logger.debug("is NOT a SMP public uri by ID, doFilter Request");
|
||||
chain.doFilter(req, res);
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
|
||||
*/
|
||||
@Override
|
||||
public void init(FilterConfig arg0) throws ServletException {
|
||||
logger.trace("run init");
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue