[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