[jboss-cvs] jboss-seam/src/ui/org/jboss/seam/ui/resource ...

Peter Muir peter at bleepbleep.org.uk
Sun Mar 4 16:51:51 EST 2007


  User: pmuir   
  Date: 07/03/04 16:51:51

  Added:       src/ui/org/jboss/seam/ui/resource  
                        DynamicImageResource.java DynamicImageStore.java
  Log:
  JBSEAM-985
  
  Revision  Changes    Path
  1.1      date: 2007/03/04 21:51:51;  author: pmuir;  state: Exp;jboss-seam/src/ui/org/jboss/seam/ui/resource/DynamicImageResource.java
  
  Index: DynamicImageResource.java
  ===================================================================
  package org.jboss.seam.ui.resource;
  
  import static org.jboss.seam.InterceptionType.NEVER;
  import static org.jboss.seam.ScopeType.APPLICATION;
  import static org.jboss.seam.annotations.Install.BUILT_IN;
  
  import java.io.IOException;
  
  import javax.servlet.ServletOutputStream;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  
  import org.jboss.seam.annotations.Install;
  import org.jboss.seam.annotations.Intercept;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Scope;
  import org.jboss.seam.annotations.Startup;
  import org.jboss.seam.servlet.AbstractResource;
  import org.jboss.seam.ui.resource.DynamicImageStore.ImageWrapper;
  
  @Startup
  @Scope(APPLICATION)
  @Name("org.jboss.seam.ui.resource.dynamicImageResource")
  @Install(precedence = BUILT_IN)
  @Intercept(NEVER)
  public class DynamicImageResource extends AbstractResource
  {
  
   public static final String DYNAMIC_IMAGE_RESOURCE_PATH = "/seam/resource/dynamicImage";
     
     private static final String RESOURCE_PATH = "/dynamicImage";
     
     @Override
     protected String getResourcePath()
     {
        return RESOURCE_PATH;
     }
     
     @Override
     public void getResource(HttpServletRequest request, HttpServletResponse response)
        throws IOException
     {
        String pathInfo = request.getPathInfo().substring(getResourcePath().length() + 1, request.getPathInfo().lastIndexOf(".")); 
        
       ImageWrapper image = DynamicImageStore.instance().get(pathInfo);
        if (image != null)
        {
           response.setContentType(image.getContentType().getMimeType());
           response.setStatus(HttpServletResponse.SC_OK);
           response.setContentLength(image.getImage().length);
           ServletOutputStream os = response.getOutputStream();
           os.write(image.getImage());
           os.flush();
        }
        else
        {
           response.sendError(HttpServletResponse.SC_NOT_FOUND);
        }
     }
  
  }
  
  
  
  1.1      date: 2007/03/04 21:51:51;  author: pmuir;  state: Exp;jboss-seam/src/ui/org/jboss/seam/ui/resource/DynamicImageStore.java
  
  Index: DynamicImageStore.java
  ===================================================================
  package org.jboss.seam.ui.resource;
  
  import java.io.Serializable;
  import java.util.HashMap;
  import java.util.Map;
  
  import org.jboss.seam.Component;
  import org.jboss.seam.InterceptionType;
  import org.jboss.seam.ScopeType;
  import org.jboss.seam.annotations.Install;
  import org.jboss.seam.annotations.Intercept;
  import org.jboss.seam.annotations.Name;
  import org.jboss.seam.annotations.Scope;
  import org.jboss.seam.core.Image;
  import org.jboss.seam.log.Log;
  import org.jboss.seam.log.Logging;
  
  @Name("dynamicImageStore")
  @Scope(ScopeType.SESSION)
  @Install(precedence = Install.BUILT_IN)
  @Intercept(InterceptionType.NEVER)
  public class DynamicImageStore implements Serializable
  {
     
     private Log log = Logging.getLog(DynamicImageStore.class);
  
     public static class ImageWrapper implements Serializable
     {
        
        private byte[] image;
  
        private Image.Type contentType;
        
        private int expire = -1;
  
        public ImageWrapper(byte[] image, Image.Type contentType)
        {
           this.image = image;
           this.contentType = contentType;
        }
  
        public Image.Type getContentType()
        {
           return contentType;
        }
  
        public byte[] getImage()
        {
           return image;
        }
        
        protected int getExpire() {
           return expire;
        }
        
        protected void setExpire(int expire)
        {
           this.expire = expire;
        }
     }
  
     private Map<String, ImageWrapper> store = new HashMap<String, ImageWrapper>();
  
     private int index = 0;
  
     /**
      * Put a image into the store
      * @param image
      * @return the key of the image
      */
     public String put(ImageWrapper image)
     {
        return put(image, null);
     }
     
     /**
      * Put an image into the store.
      * @param image
      * @param key The key to use, if null, a key will be generated
      * @return The key of the image
      */
     public String put(ImageWrapper image, String key) 
     {
        if (key == null)
        {
           key = "org.jboss.seam.ui.DynamicImageStore." + index;
           index++;
        }
        /*else 
        {
           image.setExpire(60000);      
        }*/
        store.put(key, image);
        log.debug("Put image into to session with key #0", key);
        return key;
     }
  
     public ImageWrapper get(String key)
     {
        log.debug("Get image into to session with key #0", key);
        ImageWrapper image = store.get(key);
        if (image.getExpire() < 0) 
        {
           store.remove(key);
        }
        return image;
     }
     
     public ImageWrapper remove(String key)
     {
        log.debug("Get image from session with key #0", key);
        return store.remove(key);
     }
     
     public boolean contains(String key) 
     {
        return store.containsKey(key);
     }
  
     public static DynamicImageStore instance()
     {
        return (DynamicImageStore) Component.getInstance(DynamicImageStore.class, true);
     }
  
  }
  
  



More information about the jboss-cvs-commits mailing list