[seam-commits] Seam SVN: r15513 - in branches/enterprise/WFK-2_1: jboss-seam-ui/src/main/java/org/jboss/seam/ui/graphicImage and 1 other directories.

seam-commits at lists.jboss.org seam-commits at lists.jboss.org
Mon Jun 3 09:20:28 EDT 2013


Author: manaRH
Date: 2013-06-03 09:20:28 -0400 (Mon, 03 Jun 2013)
New Revision: 15513

Modified:
   branches/enterprise/WFK-2_1/examples/ui/ui-web/src/main/webapp/graphicImage.xhtml
   branches/enterprise/WFK-2_1/jboss-seam-ui/src/main/java/org/jboss/seam/ui/graphicImage/GraphicImageRendererBase.java
   branches/enterprise/WFK-2_1/jboss-seam-ui/src/main/java/org/jboss/seam/ui/graphicImage/UIGraphicImage.java
   branches/enterprise/WFK-2_1/seam-reference-guide/src/docbook/en-US/Controls.xml
Log:
JBSEAM-3033 added cacheble s:graphicImage

Modified: branches/enterprise/WFK-2_1/examples/ui/ui-web/src/main/webapp/graphicImage.xhtml
===================================================================
--- branches/enterprise/WFK-2_1/examples/ui/ui-web/src/main/webapp/graphicImage.xhtml	2013-06-03 13:20:12 UTC (rev 15512)
+++ branches/enterprise/WFK-2_1/examples/ui/ui-web/src/main/webapp/graphicImage.xhtml	2013-06-03 13:20:28 UTC (rev 15513)
@@ -11,7 +11,7 @@
 		<p>Outputs an image</p>
 		<h:panelGrid>
 			<s:fragment>
-				<s:graphicImage value="#{person.picture.data}">
+				<s:graphicImage value="#{person.picture.data}" cache="true" cacheKey="id-0.5">
 					<s:transformImageSize factor="0.5" />
 				</s:graphicImage>
 				<h:outputText value="No image found (upload one)" rendered="#{person.picture.contentType eq null}" />

Modified: branches/enterprise/WFK-2_1/jboss-seam-ui/src/main/java/org/jboss/seam/ui/graphicImage/GraphicImageRendererBase.java
===================================================================
--- branches/enterprise/WFK-2_1/jboss-seam-ui/src/main/java/org/jboss/seam/ui/graphicImage/GraphicImageRendererBase.java	2013-06-03 13:20:12 UTC (rev 15512)
+++ branches/enterprise/WFK-2_1/jboss-seam-ui/src/main/java/org/jboss/seam/ui/graphicImage/GraphicImageRendererBase.java	2013-06-03 13:20:28 UTC (rev 15513)
@@ -6,6 +6,7 @@
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 
+import org.jboss.seam.cache.CacheProvider;
 import org.jboss.seam.ui.graphicImage.GraphicImageStore.ImageWrapper;
 import org.jboss.seam.ui.util.HTML;
 import org.jboss.seam.ui.util.cdk.RendererBase;
@@ -31,26 +32,46 @@
    protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException
    {
       UIGraphicImage graphicImage = (UIGraphicImage) component;
-      
+
+      CacheProvider cacheProvider = CacheProvider.instance();
+
       String key = graphicImage.getFileName();
       String extension = null;
 
+      ImageWrapper wrapper = null;
+      
       Image image = Image.instance();
-      image.setInput(graphicImage.getValue());
-      
-      // Do transforms
-      
-      for (UIComponent cmp : graphicImage.getChildren()) 
+
+      if (graphicImage.isInvalidate())
+         cacheProvider.remove(graphicImage.getCacheKey());
+
+      if (graphicImage.isCache() && cacheProvider.get(graphicImage.getCacheKey()) != null)
       {
-         if (cmp instanceof ImageTransform)
+         wrapper = (ImageWrapper) cacheProvider.get(graphicImage.getCacheKey());
+      }
+      else
+      {
+
+         image.setInput(graphicImage.getValue());
+
+         // Do transforms
+
+         for (UIComponent cmp : graphicImage.getChildren())
          {
-            ImageTransform imageTransform = (ImageTransform) cmp;
-            imageTransform.applyTransform(image);
+            if (cmp instanceof ImageTransform)
+            {
+               ImageTransform imageTransform = (ImageTransform) cmp;
+               imageTransform.applyTransform(image);
+            }
          }
+
+         wrapper = new ImageWrapper(image.getImage(), image.getContentType());
+         
+         if(graphicImage.isCache())
+            cacheProvider.put(graphicImage.getCacheKey(), wrapper);
       }
 
-      key = GraphicImageStore.instance().put(new ImageWrapper(image.getImage(), image.getContentType()),
-               key);
+      key = GraphicImageStore.instance().put(wrapper, key);
       extension = image.getContentType().getExtension();
 
       writer.startElement(HTML.IMG_ELEM, graphicImage);
@@ -58,9 +79,8 @@
       {
          writer.writeAttribute(HTML.ID_ATTR, graphicImage.getClientId(context), HTML.ID_ATTR);
       }
-      
-      String url = context.getExternalContext().getRequestContextPath()
-               + GraphicImageResource.GRAPHIC_IMAGE_RESOURCE_PATH + "/" + key + extension;
+
+      String url = context.getExternalContext().getRequestContextPath() + GraphicImageResource.GRAPHIC_IMAGE_RESOURCE_PATH + "/" + key + extension;
       writer.writeAttribute(HTML.SRC_ATTR, url, HTML.SRC_ATTR);
       HTML.renderHTMLAttributes(writer, component, HTML.IMG_PASSTHROUGH_ATTRIBUTES);
       writer.endElement(HTML.IMG_ELEM);

Modified: branches/enterprise/WFK-2_1/jboss-seam-ui/src/main/java/org/jboss/seam/ui/graphicImage/UIGraphicImage.java
===================================================================
--- branches/enterprise/WFK-2_1/jboss-seam-ui/src/main/java/org/jboss/seam/ui/graphicImage/UIGraphicImage.java	2013-06-03 13:20:12 UTC (rev 15512)
+++ branches/enterprise/WFK-2_1/jboss-seam-ui/src/main/java/org/jboss/seam/ui/graphicImage/UIGraphicImage.java	2013-06-03 13:20:28 UTC (rev 15513)
@@ -31,4 +31,13 @@
    
    @Attribute
    public abstract Object getValue();
+   
+   @Attribute(description = @Description("True if this image should be cached"))
+   public abstract boolean isCache();
+   
+   @Attribute(description = @Description("Unique string for a cached image"))
+   public abstract String getCacheKey();
+   
+   @Attribute(description = @Description("if property resolves to true, current cached key will be removed"))
+   public abstract boolean isInvalidate();
 }

Modified: branches/enterprise/WFK-2_1/seam-reference-guide/src/docbook/en-US/Controls.xml
===================================================================
--- branches/enterprise/WFK-2_1/seam-reference-guide/src/docbook/en-US/Controls.xml	2013-06-03 13:20:12 UTC (rev 15512)
+++ branches/enterprise/WFK-2_1/seam-reference-guide/src/docbook/en-US/Controls.xml	2013-06-03 13:20:28 UTC (rev 15513)
@@ -1346,6 +1346,21 @@
                      should be unique
                   </para>
                </listitem>
+			   <listitem>
+                  <para>
+                     <literal>cache</literal> &#8212; specify if this image should be cached. Boolean value.
+                  </para>
+               </listitem>
+			   <listitem>
+                  <para>
+                     <literal>invalidate</literal> &#8212; specify if this image cache should be invalidated. Boolean value.
+                  </para>
+               </listitem>               
+			   <listitem>
+                  <para>
+                     <literal>cacheKey</literal> &#8212; specify unique string for a cached image.
+                  </para>
+               </listitem>
             </itemizedlist>
             
             <para><emphasis>Transformations</emphasis></para>



More information about the seam-commits mailing list