You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by cr...@apache.org on 2005/01/09 01:02:38 UTC

svn commit: r124690 - in struts/sandbox/trunk/struts-shale/src/java/org/apache/shale: component renderer util

Author: craigmcc
Date: Sat Jan  8 16:02:36 2005
New Revision: 124690

URL: http://svn.apache.org/viewcvs?view=rev&rev=124690
Log:
Correct bugs in the transaction token component (and its associated support
classes).  This feature is now ready for use.

Modified:
   struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/component/Token.java
   struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/renderer/TokenRenderer.java
   struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/util/TokenProcessor.java

Modified: struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/component/Token.java
Url: http://svn.apache.org/viewcvs/struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/component/Token.java?view=diff&rev=124690&p1=struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/component/Token.java&r1=124689&p2=struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/component/Token.java&r2=124690
==============================================================================
--- struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/component/Token.java	(original)
+++ struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/component/Token.java	Sat Jan  8 16:02:36 2005
@@ -20,6 +20,8 @@
 import javax.faces.application.FacesMessage;
 import javax.faces.component.UIInput;
 import javax.faces.context.FacesContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.shale.faces.ShaleConstants;
 import org.apache.shale.util.Messages;
 import org.apache.shale.util.TokenProcessor;
@@ -37,6 +39,12 @@
 
 
     /**
+     * <p>Log instance for this class.</p>
+     */
+    private static final Log log = LogFactory.getLog(Token.class);
+
+
+    /**
      * <p>Message resources for this class
      */
     private static Messages messages =
@@ -61,7 +69,7 @@
     /**
      * <p>Return the component family for this component.</p>
      */
-    public String getFamiy() {
+    public String getFamily() {
         return "org.apache.shale.Token";
     }
 
@@ -78,28 +86,42 @@
     public void validate(FacesContext context) {
 
         super.validate(context);
-        String token = (String) getSubmittedValue();
+        String token = (String) getValue();
+        if (log.isDebugEnabled()) {
+            log.debug("Validating token '" + token + "'");
+        }
         TokenProcessor tp = getTokenProcessor(context);
         if (!tp.verify(context, token)) {
+            if (log.isDebugEnabled()) {
+                log.debug("  Validation failed!");
+            }
             setValid(false);
             String summary = messages.getMessage("token.invalid");
             FacesMessage message = new FacesMessage(summary);
             message.setSeverity(FacesMessage.SEVERITY_ERROR);
+            context.addMessage(getClientId(context), message);
         }
 
     }
 
 
+    // ---------------------------------------------------------- Public Methods
+
+
     /**
      * <p>Return the transaction token value to be rendered for this occcurrence
      * of this component.  As a side effect, the transaction token value will
      * be saved for verification on a subsequent submit.</p>
      */
-    public Object getValue() {
+    public String getToken() {
 
         FacesContext context = FacesContext.getCurrentInstance();
         TokenProcessor tp = getTokenProcessor(context);
-        return tp.generate(context);
+        String token = tp.generate(context);
+        if (log.isDebugEnabled()) {
+            log.debug("Generating token '" + token + "'");
+        }
+        return token;
 
     }
 

Modified: struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/renderer/TokenRenderer.java
Url: http://svn.apache.org/viewcvs/struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/renderer/TokenRenderer.java?view=diff&rev=124690&p1=struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/renderer/TokenRenderer.java&r1=124689&p2=struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/renderer/TokenRenderer.java&r2=124690
==============================================================================
--- struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/renderer/TokenRenderer.java	(original)
+++ struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/renderer/TokenRenderer.java	Sat Jan  8 16:02:36 2005
@@ -81,7 +81,8 @@
             String clientId = token.getClientId(context);
             writer.writeAttribute("id", clientId, "id");
             writer.writeAttribute("name", clientId, "id");
-            writer.writeAttribute("value", token.getValue(), "value");
+            writer.writeAttribute("type", "hidden", null);
+            writer.writeAttribute("value", token.getToken(), null);
         }
 
     }

Modified: struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/util/TokenProcessor.java
Url: http://svn.apache.org/viewcvs/struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/util/TokenProcessor.java?view=diff&rev=124690&p1=struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/util/TokenProcessor.java&r1=124689&p2=struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/util/TokenProcessor.java&r2=124690
==============================================================================
--- struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/util/TokenProcessor.java	(original)
+++ struts/sandbox/trunk/struts-shale/src/java/org/apache/shale/util/TokenProcessor.java	Sat Jan  8 16:02:36 2005
@@ -22,7 +22,7 @@
 import java.util.Set;
 import javax.faces.FacesException;
 import javax.faces.context.FacesContext;
-import javax.faces.el.ValueBinding;
+import javax.faces.el.PropertyResolver;
 import org.apache.shale.faces.ShaleConstants;
 
 /**
@@ -55,9 +55,10 @@
     public synchronized String generate(FacesContext context) {
 
         // Acquire the session identifier for this request
-        ValueBinding vb =
-          context.getApplication().createValueBinding("#{facesContext.session.id}");
-        byte id[] = ((String) vb.getValue(context)).getBytes();
+        // (creating the session if necessary)
+        Object session = context.getExternalContext().getSession(true);
+        PropertyResolver pr = context.getApplication().getPropertyResolver();
+        byte id[] = ((String) pr.getValue(session, "id")).getBytes();
 
         // Acquire the timestamp we will use for this request
         long current = System.currentTimeMillis();

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
For additional commands, e-mail: dev-help@struts.apache.org