You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2011/04/20 00:41:38 UTC

svn commit: r1095230 - in /myfaces/extensions/cdi/trunk/jee-modules/jsf-module: api/src/main/java/org/apache/myfaces/extensions/cdi/jsf/api/config/ impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/

Author: gpetracek
Date: Tue Apr 19 22:41:37 2011
New Revision: 1095230

URL: http://svn.apache.org/viewvc?rev=1095230&view=rev
Log:
EXTCDI-169 unified config implementation

Removed:
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/DefaultClientConfig.java
Modified:
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/api/src/main/java/org/apache/myfaces/extensions/cdi/jsf/api/config/ClientConfig.java

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/api/src/main/java/org/apache/myfaces/extensions/cdi/jsf/api/config/ClientConfig.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/api/src/main/java/org/apache/myfaces/extensions/cdi/jsf/api/config/ClientConfig.java?rev=1095230&r1=1095229&r2=1095230&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/api/src/main/java/org/apache/myfaces/extensions/cdi/jsf/api/config/ClientConfig.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/api/src/main/java/org/apache/myfaces/extensions/cdi/jsf/api/config/ClientConfig.java Tue Apr 19 22:41:37 2011
@@ -18,7 +18,13 @@
  */
 package org.apache.myfaces.extensions.cdi.jsf.api.config;
 
+import org.apache.myfaces.extensions.cdi.core.api.projectstage.ProjectStage;
+import org.apache.myfaces.extensions.cdi.core.api.util.ClassUtils;
+
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Inject;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.Serializable;
 
 /**
@@ -30,8 +36,18 @@ import java.io.Serializable;
  * This allows the 'customisation' of this html file to e.g.
  * adopt the background colour to avoid screen flickering.
  */
-public interface ClientConfig extends Serializable
+@SessionScoped
+public class ClientConfig implements Serializable
 {
+    private static final long serialVersionUID = 581351549574404793L;
+
+    private boolean javaScriptEnabled = true;
+
+    protected String windowHandlerHtml;
+
+    @Inject
+    private ProjectStage projectStage;
+
     /**
      * The location of the default windowhandler resource
      */
@@ -41,7 +57,10 @@ public interface ClientConfig extends Se
      * Defaults to <code>true</code>.
      * @return if the user has JavaScript enabled
      */
-    boolean isJavaScriptEnabled();
+    public boolean isJavaScriptEnabled()
+    {
+        return this.javaScriptEnabled;
+    }
 
     /**
      * Set it to <code>false</code> if you don't like to use the
@@ -49,7 +68,10 @@ public interface ClientConfig extends Se
      * the request will be returned directly.
      * @param javaScriptEnabled
      */
-    void setJavaScriptEnabled(boolean javaScriptEnabled);
+    public void setJavaScriptEnabled(boolean javaScriptEnabled)
+    {
+        this.javaScriptEnabled = javaScriptEnabled;
+    }
 
     /**
      * For branding the windowhandler page - e.g. change the backgroundcolour
@@ -58,7 +80,10 @@ public interface ClientConfig extends Se
      * @return the location of the <i>windowhandler.html</i> resource
      *         which should be sent to the users browser.
      */
-    String getWindowHandlerResourceLocation();
+    public String getWindowHandlerResourceLocation()
+    {
+        return DEFAULT_WINDOW_HANDLER_HTML_FILE;
+    }
 
     /**
      * This might return different windowhandlers based on user settings like
@@ -66,5 +91,32 @@ public interface ClientConfig extends Se
      * @return a String containing the whole windowhandler.html file.
      * @throws IOException
      */
-    String getWindowHandlerHtml() throws IOException;
+    public String getWindowHandlerHtml() throws IOException
+    {
+        if (projectStage != ProjectStage.Development && windowHandlerHtml != null)
+        {
+            // use cached windowHandlerHtml except in Development
+            return windowHandlerHtml;
+        }
+
+        InputStream is = ClassUtils.getClassLoader(null).getResourceAsStream(getWindowHandlerResourceLocation());
+        StringBuffer sb = new StringBuffer();
+        try
+        {
+            byte[] buf = new byte[32 * 1024];
+            int bytesRead;
+            while ((bytesRead = is.read(buf)) != -1)
+            {
+                String sbuf = new String(buf);
+                sb.append(sbuf);
+            }
+        }
+        finally
+        {
+            is.close();
+        }
+
+        windowHandlerHtml = sb.toString();
+        return windowHandlerHtml;
+    }
 }