package org.jboss.seam.ui.graphicImage; import java.io.Serializable; import java.rmi.server.UID; import java.util.HashMap; import java.util.Map; import org.jboss.seam.Component; import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.Install; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.intercept.BypassInterceptors; import org.jboss.seam.core.AbstractMutable; import org.jboss.seam.log.Log; import org.jboss.seam.log.Logging; @Name("org.jboss.seam.ui.graphicImage.graphicImageStore") @Scope(ScopeType.SESSION) @Install(precedence = Install.BUILT_IN) @BypassInterceptors public class GraphicImageStore extends AbstractMutable implements Serializable { private Log log = Logging.getLog(GraphicImageStore.class); public static class ImageWrapper implements Serializable { private byte[] image; private Image.Type contentType; public ImageWrapper(byte[] image, Image.Type contentType) { this.image = image; this.contentType = contentType; } public Image.Type getContentType() { return contentType; } public byte[] getImage() { return image; } } private Map<String, ImageWrapper> store = new HashMap<String, ImageWrapper>(); /** * 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.GraphicImageStore." + new UID().toString().replace(":", "-"); } store.put(key, image); setDirty(); 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); return image; } public ImageWrapper remove(String key) { log.debug("Get image from session with key #0", key); ImageWrapper imageWrapper = store.remove(key); if ( imageWrapper != null ) { setDirty(); } return imageWrapper; } public boolean contains(String key) { return store.containsKey(key); } public static GraphicImageStore instance() { return (GraphicImageStore) Component.getInstance(GraphicImageStore.class); } }