public InputStream getResourceStream(WebletRequest request, String mimeType) throws WebletException { Weblet weblet = (Weblet) _weblets.get(request.getWebletName()); if (weblet == null) return null; try { return weblet.serviceStream(request.getPathInfo(), mimeType); } catch (IOException ex) { return null; } }
public void service(WebletRequest request, WebletResponse response) throws IOException { String resourcePath = _resourceRoot + request.getPathInfo(); // this might fail on some containers overriding the HttpServlet // but for demo purposes this is ok HttpServletRequest httpRequest = (HttpServletRequest) request.getExternalRequest(); /*we now have the resource handling decoupled from the mimetypes*/ CopyStrategy copyProvider = new CopyStrategyImpl(); if (resourcePath.indexOf("WEB-INF/") != -1 || resourcePath.indexOf("WEB-INF\\") != -1) { // security breach nothing in WEB-INF is allowed to be accessed return; } if (resourcePath.indexOf("META-INF/") != -1 || resourcePath.indexOf("META-INF\\") != -1) { // security breach nothing in WEB-INF is allowed to be accessed return; } URL url = httpRequest.getSession().getServletContext().getResource("/" + resourcePath); WebletResourceloadingUtils.getInstance().loadFromUrl(getWebletConfig(), request, response, url, copyProvider); }
/** * new since 1.1 we now can get the weblet also * as local stream for furhter external processing * if we have our weblet request. * <p/> * We can add a dummy request * * @param request * @return an input stream on our current weblet resource * @throws WebletException * @throws IOException */ public InputStream serviceStream(WebletRequest request, String mimetype) throws WebletException, IOException { Weblet weblet = getWeblet(request); return weblet.serviceStream(request.getPathInfo(), mimetype); }
public Weblet getWeblet(WebletRequest request) { String webletName = request.getWebletName(); return getWeblet(webletName); }
private Map getResourceURLCache(WebletRequest request) { HttpSession session = ((HttpServletRequest) request.getExternalRequest()).getSession(); // session Map cache = (Map) session.getAttribute(CACHE_KEY); if (cache == null) { cache = Collections.synchronizedMap(new HashMap(CACHED_URLS)); session.setAttribute(CACHE_KEY, cache); } if (cache.size() >= CACHED_URLS) { cache.clear(); } return cache; };
long requestCacheState = request.getIfModifiedSince(); long requestCacheState = request.getIfModifiedSince(); resourceLastmodified = fixTimeValue(resourceLastmodified); long utcResourceModifiedState = (resourceLastmodified - TimeZone.getDefault().getOffset(resourceLastmodified)); prepareVersionedResponse(config, response, resourceLastmodified, request.getIfModifiedSince() + getTimeout(config));
/** * new since 1.1 we now can get the weblet also * as local stream for furhter external processing * if we have our weblet request. * <p/> * We can add a dummy request * * @param request * @return an input stream on our current weblet resource * @throws WebletException * @throws IOException */ public InputStream serviceStream(WebletRequest request, String mimetype) throws WebletException, IOException { Weblet weblet = getWeblet(request); return weblet.serviceStream(request.getPathInfo(), mimetype); }
public Weblet getWeblet(WebletRequest request) { String webletName = request.getWebletName(); return getWeblet(webletName); }
public InputStream getResourceStream(WebletRequest request, String mimeType) throws WebletException { Weblet weblet = (Weblet) _weblets.get(request.getWebletName()); if (weblet == null) return null; try { return weblet.serviceStream(request.getPathInfo(), mimeType); } catch (IOException ex) { return null; } }
public void service(WebletRequest request, WebletResponse response) throws IOException { String resourcePath = _resourceRoot + request.getPathInfo(); CopyStrategy copyProvider = new CopyStrategyImpl(); URL url = new URL(resourcePath); WebletResourceloadingUtils.getInstance().loadFromUrl(getWebletConfig(), request, response, url, copyProvider); }
/** * loads the resource from a given input stream note, this api is under construction we have caching not enabled yet * * @param config * the weblet config to load the resource * @param request * the weblet request * @param response * the weblet response * @param copyProvider * the processing copy provider * @param in * the resource serving input stream * @throws IOException */ public void loadResourceFromStream(WebletConfig config, WebletRequest request, WebletResponse response, CopyStrategy copyProvider, InputStream in) throws IOException { OutputStream out = response.getOutputStream(); String finalMimetype = config.getMimeType(request.getPathInfo()); copyProvider.copy(request.getWebletName(), finalMimetype, in, out); }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { WebletRequest webRequest = null; if (request instanceof HttpServletRequest) { HttpServletRequest httpRequest = (HttpServletRequest) request; String contextPath = httpRequest.getContextPath(); String requestURI = getCanonicalPath(httpRequest.getServletPath()); long ifModifiedSince = httpRequest.getDateHeader("If-Modified-Since"); try { String[] parsed = _webletContainer.parseWebletRequest(contextPath, requestURI, ifModifiedSince); if (parsed != null) { String webletName = parsed[0]; String webletPath = parsed[1]; String webletPathInfo = parsed[2]; webRequest = new WebletRequestImpl(webletName, webletPath, contextPath, webletPathInfo, ifModifiedSince, httpRequest); HttpServletResponse httpResponse = (HttpServletResponse) response; httpRequest.setCharacterEncoding("UTF-8"); String contentName = webRequest.getPathInfo(); String contentTypeDefault = _servletContext.getMimeType(contentName); WebletResponse webResponse = new WebletResponseImpl(contentTypeDefault, httpResponse); _webletContainer.service(webRequest, webResponse); } } catch (WebletException e) { throw new ServletException(e); } } if (webRequest == null) chain.doFilter(request, response); }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { WebletRequest webRequest = null; if (request instanceof HttpServletRequest) { HttpServletRequest httpRequest = (HttpServletRequest) request; String contextPath = httpRequest.getContextPath(); String requestURI = getCanonicalPath(httpRequest.getServletPath()); long ifModifiedSince = httpRequest.getDateHeader("If-Modified-Since"); try { String[] parsed = _webletContainer.parseWebletRequest(contextPath, requestURI, ifModifiedSince); if (parsed != null) { String webletName = parsed[0]; String webletPath = parsed[1]; String webletPathInfo = parsed[2]; webRequest = new WebletRequestImpl(webletName, webletPath, contextPath, webletPathInfo, ifModifiedSince, httpRequest); HttpServletResponse httpResponse = (HttpServletResponse) response; httpRequest.setCharacterEncoding("UTF-8"); String contentName = webRequest.getPathInfo(); String contentTypeDefault = _servletContext.getMimeType(contentName); WebletResponse webResponse = new WebletResponseImpl(contentTypeDefault, httpResponse); _webletContainer.service(webRequest, webResponse); } } catch (WebletException e) { throw new ServletException(e); } } if (webRequest == null) chain.doFilter(request, response); }
protected void doGet(HttpServletRequest httpRequest, HttpServletResponse httpResponse) throws IOException, ServletException { String contextPath = httpRequest.getContextPath(); String requestURI = getCanonicalPath(httpRequest.getPathInfo()); long ifModifiedSince = httpRequest.getDateHeader("If-Modified-Since"); try { String[] parsed = _webletContainer.parseWebletRequest(contextPath, requestURI, ifModifiedSince); if (parsed != null) { String webletName = parsed[0]; String webletPath = parsed[1]; String webletPathInfo = parsed[2]; WebletRequest webRequest = new WebletRequestImpl(webletName, webletPath, contextPath, webletPathInfo, ifModifiedSince, httpRequest); ServletContext servletContext = getServletContext(); String contentName = webRequest.getPathInfo(); String contentTypeDefault = getServletContext().getMimeType(contentName); WebletResponse webResponse = new WebletResponseImpl(contentTypeDefault, httpResponse); _webletContainer.service(webRequest, webResponse); } } catch (WebletException e) { throw new ServletException(e); } }
protected void doGet(HttpServletRequest httpRequest, HttpServletResponse httpResponse) throws IOException, ServletException { String contextPath = httpRequest.getContextPath(); String requestURI = getCanonicalPath(httpRequest.getPathInfo()); long ifModifiedSince = httpRequest.getDateHeader("If-Modified-Since"); try { String[] parsed = _webletContainer.parseWebletRequest(contextPath, requestURI, ifModifiedSince); if (parsed != null) { String webletName = parsed[0]; String webletPath = parsed[1]; String webletPathInfo = parsed[2]; WebletRequest webRequest = new WebletRequestImpl(webletName, webletPath, contextPath, webletPathInfo, ifModifiedSince, httpRequest); ServletContext servletContext = getServletContext(); String contentName = webRequest.getPathInfo(); String contentTypeDefault = getServletContext().getMimeType(contentName); WebletResponse webResponse = new WebletResponseImpl(contentTypeDefault, httpResponse); _webletContainer.service(webRequest, webResponse); } } catch (WebletException e) { throw new ServletException(e); } }
public void service(WebletRequest request, WebletResponse response) throws IOException { String resourcePath = _resourceRoot + request.getPathInfo(); // lets build up our filter chain which in our case is a binary filter for standard // processing and our text processing filter for text resources with included // weblet: functions CopyStrategyImpl copyProvider = new CopyStrategyImpl(); URL url = WebletResourceloadingUtils.getInstance().getResourceUrl(request, resourcePath); WebletResourceloadingUtils.getInstance().loadFromUrl(getWebletConfig(), request, response, url, copyProvider); }
String webletPathInfo = parsed[2]; WebletRequest webRequest = new WebletRequestImpl(webletName, webletPath, contextPath, webletPathInfo, ifModifiedSince, httpRequest); String contentName = webRequest.getPathInfo(); String contentTypeDefault = servletContext.getMimeType(contentName); WebletResponse webResponse = new WebletResponseImpl(contentTypeDefault, httpResponse);
String webletPathInfo = parsed[2]; WebletRequest webRequest = new WebletRequestImpl(webletName, webletPath, contextPath, webletPathInfo, ifModifiedSince, httpRequest); String contentName = webRequest.getPathInfo(); String contentTypeDefault = servletContext.getMimeType(contentName); WebletResponse webResponse = new WebletResponseImpl(contentTypeDefault, httpResponse);
public void service( WebletRequest request, WebletResponse response) throws IOException, WebletException { Weblet weblet = getWeblet(request); String pathInfo = request.getPathInfo(); //enhanced security check if (pathInfo != null && SandboxGuard.isJailBreak(pathInfo)) { throw new WebletException("Security Exception, the " + pathInfo + " breaks out of the resource jail, no resource is served!"); } WebletConfig webConfig = weblet.getWebletConfig(); String mimeType = null; if(!StringUtils.isBlank(pathInfo)) { mimeType = webConfig.getMimeType(pathInfo); } if(mimeType == null) { mimeType = response.getDefaultContentType(); } response.setContentType(mimeType); Set allowedResources = webConfig.getAllowedResources(); if (allowedResources != null) { String filetype = StringUtils.getExtension(pathInfo); if (!allowedResources.contains(filetype.toLowerCase())) { throw new WebletException("Security Exception, the " + pathInfo + " resource cannot be served!"); /* not allowed no content delivered */ } } weblet.service(request, response); }
Weblet weblet = getWeblet(request); String pathInfo = request.getPathInfo(); if (response.getDefaultContentType() == null) {