I want to use graphicImageDynamic for dynamic images in an application using 
Seam. For testing it, I tried to implement the sandbox GraphicImageDynamicText 
example using Seam and Facelets. This component uses imageRendererClass param 
which must point to ?reference or a fully qualified class name which implements 
org.apache.myfaces.custom.graphicimagedynamic.ImageRenderer?.

I have compiled myfaces svn version (1.1.2) from 29.03.06. All myfaces .jars 
are placed to 
?/jboss/server/default/deploy/jbossweb-tomcat55.sar/jsf-libs/. JBoss version is 
4.0.4RC1.
I have Login, LoggedIn and LoggedInInterceptor components from the old beta1 
booking example.
I have GraphicImageDynamicComponentHandler and sandbox.taglib.xml  from 
facelets wiki. Facelets version is 1.1.5.
The Seam version is CVS20060416.

Also I have:
Test.java:

  | package test.seam;
  | 
  | import java.io.IOException;
  | 
  | import javax.ejb.Local;
  | import javax.faces.context.FacesContext;
  | import javax.faces.context.ResponseStream;
  | 
  | import org.apache.myfaces.custom.dynamicResources.ResourceContext;
  | 
  | @Local
  | public interface Test {
  |     
  |     public void setContext(FacesContext facesContext, ResourceContext 
resourceContext) throws IOException;
  |     public String getText();
  | 
  |     public void setText(String text);
  |     public Class getImageRenderer();
  |     public String getContentType();
  |     public int getContentLength();
  |     public void renderResource(ResponseStream out) throws IOException;
  | }
  | 


TestAction.java:

  | Imports
  | <?>
  | 
  | @Stateless
  | @Name("test")
  | @Interceptors(SeamInterceptor.class)
  | @Intercept(InterceptionType.ALWAYS)
  | @Scope(ScopeType.SESSION)
  | @LoggedIn
  | public class TestAction implements Test, ImageRenderer, Serializable {
  |     
  |     private static final long serialVersionUID = 500L;
  |     
  |     private static final Logger log = Logger.getLogger(Test.class);
  |     private String _text;
  |     
  |     
  |     private byte[] bytes = null;
  |     
  |     public String getText() {
  |             return _text;
  |     }
  | 
  |     public void setText(String text) {
  |             this._text = text;
  |     }       
  | 
  |     @In
  |     private User user;
  |     
  |     public void setContext(FacesContext facesContext, ResourceContext 
resourceContext) throws IOException {
  |             ImageContext imageContext = (ImageContext) resourceContext;
  |         //Object text = imageContext.getParamters().get("text");
  |         Object text = (user== null ? "user=null" : user.getName());
  |         if (text == null) {
  |             text = "_null_";
  |         }
  |         int width = 300;
  |         int height = 30;
  |         Integer widthObj = imageContext.getWidth();
  |         if (widthObj != null) {
  |             width = widthObj.intValue();
  |         }
  |         Integer heightObj = imageContext.getHeight();
  |         if (heightObj != null) {
  |             height = heightObj.intValue();
  |         }
  |         BufferedImage img = new BufferedImage(width, height, 
BufferedImage.TYPE_INT_RGB);
  |         Graphics graphics = img.getGraphics();
  |         try {
  |             graphics.setColor(Color.WHITE);
  |             graphics.fillRect(0, 0, width, height);
  |             graphics.setColor(Color.BLUE);
  |             graphics.drawString(text.toString(), 10, 20);
  |             
  |             ByteArrayOutputStream baout = new ByteArrayOutputStream();
  |             JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(baout);
  |             encoder.encode(img);
  |             baout.flush();
  |             bytes = baout.toByteArray();
  |         }
  |         finally {
  |             graphics.dispose();
  |         }   
  |     }
  | 
  |     public Class getImageRenderer() {
  |         return this.getClass();
  |     }
  | 
  |     public String getContentType() {
  |         return "image/jpeg";
  |     }    
  |     
  |     public int getContentLength() {
  |         return -1;
  |     }
  |     
  |     public void renderResource(ResponseStream out) throws IOException {
  |         out.write( bytes );
  |     }
  | 
  | }
  | 

web.xml:

  | <context-param>
  |   <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  |   <param-value>.xhtml</param-value>
  |  </context-param>
  |  <context-param>
  |   <param-name>facelets.DEVELOPMENT</param-name>
  |   <param-value>true</param-value>
  |  </context-param>
  |  <context-param>
  |   <param-name>facelets.LIBRARIES</param-name>
  |   
<param-value>/WEB-INF/tomahawk.taglib.xml;/WEB-INF/sandbox.taglib.xml</param-value>
  |  </context-param>
  |  <context-param>  
  |   <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  |   <param-value>client</param-value>
  |  </context-param>
  |  <context-param>  
  |   <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
  |   <param-value>true</param-value>
  |  </context-param>
  |  <context-param>
  |   <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
  |   <param-value>false</param-value>
  |  </context-param>
  |  <context-param>  
  |   <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
  |   <param-value>true</param-value>
  |  </context-param>
  |  <context-param>
  |   <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
  |   <param-value>true</param-value>
  |  </context-param>
  |  <context-param>
  |   <param-name>org.jboss.seam.core.init.jndiPattern</param-name>
  |   <param-value>test/#{ejbName}/local</param-value>
  |  </context-param>
  | 
  |  <filter>
  |   <filter-name>extensionsFilter</filter-name>
  |   
<filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
  | </filter>
  | 
  |  <filter>
  |   <filter-name>SeamRedirectFilter</filter-name>
  |   <filter-class>org.jboss.seam.servlet.SeamRedirectFilter</filter-class>
  |  </filter>
  | 
  |  <filter>
  |   <filter-name>SeamServletFilter</filter-name>
  |   <filter-class>org.jboss.seam.servlet.SeamServletFilter</filter-class>
  |  </filter>
  | 
  |  <filter-mapping>
  |   <filter-name>extensionsFilter</filter-name>
  |   <url-pattern>*.jsf</url-pattern>
  |  </filter-mapping>
  | 
  |  <filter-mapping>
  |   <filter-name>extensionsFilter</filter-name>
  |   <url-pattern>/faces/*</url-pattern>
  |  </filter-mapping>
  | 
  |  <filter-mapping>
  |   <filter-name>SeamRedirectFilter</filter-name>
  |   <url-pattern>*.jsf</url-pattern>
  |  </filter-mapping>
  | 
  |  <filter-mapping>
  |   <filter-name>SeamServletFilter</filter-name>
  |   <url-pattern>/faces/*</url-pattern>
  |  </filter-mapping> 
  | 
  | <listener>
  |   <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
  |  </listener>
  |  <listener>
  |   
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
  |  </listener>
  | 
  |  <servlet>
  |   <servlet-name>Faces Servlet</servlet-name>
  |   <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  |   <load-on-startup>1</load-on-startup>
  |  </servlet> 
  |  <servlet-mapping>
  |   <servlet-name>Faces Servlet</servlet-name>
  |   <url-pattern>*.jsf</url-pattern>
  |  </servlet-mapping>
  | </web-app>
  | 

faces-config.xml:

  | <faces-config>
  | <navigation-rule>
  |   <navigation-case>
  |    <from-outcome>test</from-outcome>
  |    <to-view-id>/test.xhtml</to-view-id>
  |     <redirect />
  |   </navigation-case>
  | </navigation-rule>
  | 
  | <application>
  |   <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
  |  </application>
  |  <lifecycle>
  |   <phase-listener>org.jboss.seam.jsf.SeamPhaseListener</phase-listener>
  |  </lifecycle>
  | </faces-config>
  | 

Test.xhml:

  | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
  | <html xmlns="http://www.w3.org/1999/xhtml";
  |       xmlns:ui="http://java.sun.com/jsf/facelets";
  |       xmlns:h="http://java.sun.com/jsf/html";
  |       xmlns:f="http://java.sun.com/jsf/core";
  |       xmlns:t="http://myfaces.apache.org/tomahawk";
  |       xmlns:s="http://myfaces.apache.org/sandbox";>
  | <head>
  | <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=UTF-8" />
  | </head>
  | <body>
  |             <h:form enctype="multipart/form-data">
  |       
  |       <br/>                                         
  |     <h:inputText maxlength="20" value="#{test.text}"/>
  |     <br/>
  |     <s:graphicImageDynamic id="imageDisplay3" width="300" height="22"
  |             imageRendererClass="#{test.imageRenderer}">
  |             <f:param name="text" value="#{test.text}" />
  |     </s:graphicImageDynamic>
  | 
  |                     <br/>
  |                     <t:messages showDetail="true"/>
  |                     <h:commandButton value="Update"/>
  |             </h:form>
  | </body>
  | </html>
  | 

When I use ?Object text = imageContext.getParamters().get("text");? the text is 
rendered properly.

When I try to render User name, it is null, but in debug.xhml (taken from the 
examples), I see the User component in the session context. The same thing 
happens when I try to use [EMAIL PROTECTED]    private Context sessionContext;?.

Why the injection components are null?

Is it possible to use graphicImageDynamic and Seam? And if not, in what way can 
I use SeamServletFilter in pure servlet to interacts with Seam component? 
Unfortunately, there are no examples of using SeamServletFilter.

Thanks.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3937615#3937615

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3937615


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
JBoss-user mailing list
JBoss-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to