001 package com.khubla.pragmatach.framework.controller.impl.stat; 002 003 import java.io.InputStream; 004 005 import com.khubla.pragmatach.framework.annotation.Controller; 006 import com.khubla.pragmatach.framework.annotation.Route; 007 import com.khubla.pragmatach.framework.api.PragmatachException; 008 import com.khubla.pragmatach.framework.api.Response; 009 import com.khubla.pragmatach.framework.controller.impl.AbstractController; 010 011 /** 012 * @author tome 013 */ 014 @Controller(name = "pragmatachStaticResourceController") 015 public class StaticResourceController extends AbstractController { 016 /** 017 * public resource dir 018 */ 019 private static final String PUBLIC_RESOURCE_DIR = "/public"; 020 021 /** 022 * ctor 023 */ 024 public StaticResourceController() { 025 } 026 027 protected InputStream getStaticResourceInputStream(String[] imageResource) throws PragmatachException { 028 try { 029 final String resourceUri = buildWildcardResourceURI(imageResource); 030 return getResource(PUBLIC_RESOURCE_DIR + resourceUri); 031 } catch (final Exception e) { 032 throw new PragmatachException("Exception in getStaticResourceInputStream", e); 033 } 034 } 035 036 @Route(uri = "/public/*") 037 public Response render(String[] imageResource) throws PragmatachException { 038 try { 039 final InputStream is = getStaticResourceInputStream(imageResource); 040 return new StaticResourceResponse(getCacheHeaders(), is); 041 } catch (final Exception e) { 042 throw new PragmatachException("Exception in render", e); 043 } 044 } 045 }