Author: cziegeler
Date: Tue Aug 31 01:16:38 2004
New Revision: 37244

Modified:
   
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletBaseData.java
   
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletData.java
   
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletDescription.java
   
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java
   
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletdata.xml
   
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java
   
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java
Log:
Fix ClassCastException in redirect
Extend role protection for coplets

Modified: 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletBaseData.java
==============================================================================
--- 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletBaseData.java
     (original)
+++ 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletBaseData.java
     Tue Aug 31 01:16:38 2004
@@ -24,7 +24,7 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a>
  * @author <a href="mailto:[EMAIL PROTECTED]">Bj&ouml;rn L&uuml;tkemeier</a>
  * 
- * @version CVS $Id: CopletBaseData.java,v 1.8 2004/03/05 13:02:10 bdelacretaz 
Exp $
+ * @version CVS $Id$
  */
 public final class CopletBaseData { 
 
@@ -35,6 +35,7 @@
        private String copletAdapterName;
 
        public CopletBaseData() {
+        // Nothing to do
        }
 
        public String getId() {

Modified: 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletData.java
==============================================================================
--- 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletData.java
 (original)
+++ 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletData.java
 Tue Aug 31 01:16:38 2004
@@ -44,9 +44,13 @@
 
     protected Map attributes = new HashMap();
 
-    protected String roles;
+    protected String allowedRoles;
     
-    protected transient List rolesList;
+    protected String deniedRoles;
+    
+    protected transient List allowedRolesList;
+    
+    protected transient List deniedRolesList;
     
        /**
         * Signals whether a delta has been applied.
@@ -57,6 +61,7 @@
      * Constructor
      */
     public CopletData() {
+        // Nothing to do
     }
 
     /**
@@ -163,44 +168,81 @@
        }
     
     /**
-     * @return Returns the roles.
+     * @return Returns the allowed roles.
      */
-    public String getRoles() {
-        return roles;
+    public String getAllowedRoles() {
+        return this.allowedRoles;
     }
     /**
-     * @param roles The roles to set.
+     * @param roles The allowed roles to set.
      */
-    public void setRoles(String roles) {
-        this.roles = roles;
-        this.rolesList = null;
+    public void setAllowedRoles(String roles) {
+        this.allowedRoles = roles;
+        this.allowedRolesList = null;
     }
     
     /**
+     * @return Returns the denied roles.
+     */
+    public String getDeniedRoles() {
+        return this.deniedRoles;
+    }
+    /**
+     * @param roles The allowed roles to set.
+     */
+    public void setDeniedRoles(String roles) {
+        this.deniedRoles = roles;
+        this.deniedRolesList = null;
+    }
+
+    /**
      * Return the list of roles that are allowed to access this coplet
      * @return A list of roles or null if everyone is allowed.
      */
-    public List getAllowedRoles() {
-        if ( StringUtils.isBlank(this.roles) ) {
+    public List getAllowedRolesList() {
+        if ( StringUtils.isBlank(this.allowedRoles) ) {
             return null;
         }
-        if ( this.rolesList == null ) {
-            this.rolesList = new ArrayList();
-            final StringTokenizer tokenizer = new StringTokenizer(this.roles, 
",");
+        if ( this.allowedRolesList == null ) {
+            this.allowedRolesList = new ArrayList();
+            final StringTokenizer tokenizer = new 
StringTokenizer(this.allowedRoles, ",");
             while ( tokenizer.hasMoreElements() ) {
                 String token = (String)tokenizer.nextElement();
-                this.rolesList.add(token);
+                this.allowedRolesList.add(token);
             }
-            if ( this.rolesList.size() == 0 ) {
-                this.roles = null;
-                this.rolesList = null;
+            if ( this.allowedRolesList.size() == 0 ) {
+                this.allowedRoles = null;
+                this.allowedRolesList = null;
             }
         }
-        return this.rolesList;
+        return this.allowedRolesList;
     }
     
-    public void addAllowedRole(String role) {
-        List l = this.getAllowedRoles();
+    /**
+     * Return the list of roles that are denied to access this coplet
+     * @return A list of roles or null if everyone is allowed.
+     */
+    public List getDeniedRolesList() {
+        if ( StringUtils.isBlank(this.deniedRoles) ) {
+            return null;
+        }
+        if ( this.deniedRolesList == null ) {
+            this.deniedRolesList = new ArrayList();
+            final StringTokenizer tokenizer = new 
StringTokenizer(this.deniedRoles, ",");
+            while ( tokenizer.hasMoreElements() ) {
+                String token = (String)tokenizer.nextElement();
+                this.deniedRolesList.add(token);
+            }
+            if ( this.deniedRolesList.size() == 0 ) {
+                this.deniedRoles = null;
+                this.deniedRolesList = null;
+            }
+        }
+        return this.deniedRolesList;
+    }
+
+    public void addToAllowedRoles(String role) {
+        List l = this.getAllowedRolesList();
         if ( l == null ) {
             l = new ArrayList();
             l.add(role);
@@ -209,24 +251,54 @@
                 l.add(role);
             }
         }
-        this.buildRolesString(l);
+        this.buildRolesString(l, true);
     }
     
-    public void removeAllowedRole(String role) {
-        List l = this.getAllowedRoles();
+    public void removeFromAllowedRoles(String role) {
+        List l = this.getAllowedRolesList();
         if ( l != null && l.contains(role) ) {
             l.remove(role);
             if ( l.size() == 0 ) {
-                this.roles = null;
-                this.rolesList = null;
+                this.allowedRoles = null;
+                this.allowedRolesList = null;
             } else {
-                this.buildRolesString(l);
+                this.buildRolesString(l, true);
             }
         }
     }
     
-    protected void buildRolesString(List fromList) {
-        this.rolesList = fromList;
+    public void addToDeniedRoles(String role) {
+        List l = this.getDeniedRolesList();
+        if ( l == null ) {
+            l = new ArrayList();
+            l.add(role);
+        } else {
+            if ( !l.contains(role) ) {
+                l.add(role);
+            }
+        }
+        this.buildRolesString(l, false);
+    }
+    
+    public void removeFromDeniedRoles(String role) {
+        List l = this.getDeniedRolesList();
+        if ( l != null && l.contains(role) ) {
+            l.remove(role);
+            if ( l.size() == 0 ) {
+                this.deniedRoles = null;
+                this.deniedRolesList = null;
+            } else {
+                this.buildRolesString(l, false);
+            }
+        }
+    }
+
+    protected void buildRolesString(List fromList, boolean allow) {
+        if ( allow ) {
+            this.allowedRolesList = fromList;
+        } else {
+            this.deniedRolesList = fromList;
+        }
         StringBuffer buffer = new StringBuffer();
         boolean first = true;
         Iterator i = fromList.iterator();
@@ -238,6 +310,10 @@
             first = false;
             buffer.append(role);
         }
-        this.roles = buffer.toString();
+        if ( allow ) {
+            this.allowedRoles = buffer.toString();
+        } else {
+            this.deniedRoles = buffer.toString();
+        }
     }
 }

Modified: 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletDescription.java
==============================================================================
--- 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletDescription.java
  (original)
+++ 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletDescription.java
  Tue Aug 31 01:16:38 2004
@@ -20,13 +20,14 @@
 
 
 /**
- * A configured layout
+ * A configured coplet
  * 
  * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  * 
- * @version CVS $Id: CopletDescription.java,v 1.2 2004/03/05 13:02:10 
bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public interface CopletDescription
     extends ProducibleDescription  {
 
+    // no additional info for now
 }

Modified: 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java
==============================================================================
--- 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java
 (original)
+++ 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java
 Tue Aug 31 01:16:38 2004
@@ -27,7 +27,7 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">Volker Schmitt</a>
  * @author <a href="mailto:[EMAIL PROTECTED]">Bj&ouml;rn L&uuml;tkemeier</a>
  * 
- * @version CVS $Id: CopletInstanceData.java,v 1.10 2004/03/05 13:02:10 
bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public final class CopletInstanceData 
     extends AbstractProducible {
@@ -43,6 +43,7 @@
         * Constructor
         */
        public CopletInstanceData() {
+        // Nothing to do
        }
 
        /**

Modified: 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletdata.xml
==============================================================================
--- 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletdata.xml
  (original)
+++ 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletdata.xml
  Tue Aug 31 01:16:38 2004
@@ -49,8 +49,12 @@
                        <bind-xml name="title"/>
                </field>
 
-               <field name="roles" type="java.lang.String">
-                       <bind-xml name="roles"/>
+               <field name="allowedRoles" type="java.lang.String">
+                       <bind-xml name="allowed-roles"/>
+               </field>
+
+               <field name="deniedRoles" type="java.lang.String">
+                       <bind-xml name="denied-roles"/>
                </field>
 
                <field name="attributes" 
type="org.exolab.castor.mapping.MapItem" collection="map" 
handler="org.apache.cocoon.portal.util.AttributesFieldHandler">

Modified: 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java
==============================================================================
--- 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java
  (original)
+++ 
cocoon/trunk/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java
  Tue Aug 31 01:16:38 2004
@@ -48,7 +48,7 @@
  * 
  * @author <a href="mailto:[EMAIL PROTECTED]">Carsten Ziegeler</a>
  * 
- * @version CVS $Id: DefaultCopletFactory.java,v 1.9 2004/03/05 13:02:11 
bdelacretaz Exp $
+ * @version CVS $Id$
  */
 public class DefaultCopletFactory  
     extends AbstractLogEnabled 
@@ -62,6 +62,9 @@
     
     protected ServiceSelector storeSelector;
 
+    /* (non-Javadoc)
+     * @see 
org.apache.cocoon.portal.coplet.CopletFactory#prepare(org.apache.cocoon.portal.coplet.CopletData)
+     */
     public void prepare(CopletData copletData)
     throws ProcessingException {
         if ( copletData != null ) {
@@ -83,6 +86,9 @@
         }
     }
     
+    /* (non-Javadoc)
+     * @see 
org.apache.cocoon.portal.coplet.CopletFactory#prepare(org.apache.cocoon.portal.coplet.CopletInstanceData)
+     */
     public void prepare(CopletInstanceData copletInstanceData)
     throws ProcessingException {
         if ( copletInstanceData != null ) {
@@ -105,6 +111,9 @@
     }
 
     
+    /* (non-Javadoc)
+     * @see 
org.apache.cocoon.portal.coplet.CopletFactory#newInstance(org.apache.cocoon.portal.coplet.CopletData)
+     */
     public CopletInstanceData newInstance(CopletData copletData)
     throws ProcessingException {
         String name = copletData.getName();

Modified: 
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java
==============================================================================
--- 
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java
 (original)
+++ 
cocoon/trunk/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java
 Tue Aug 31 01:16:38 2004
@@ -357,10 +357,13 @@
         }
 
         // Process the redirect
-// No more reset since with TreeProcessorRedirector, we need to pop values 
from the redirect location
-//        context.reset();
+        // No more reset since with TreeProcessorRedirector, we need to pop 
values from the redirect location
+        // context.reset();
         // The following is a fix for bug #26854 and #26571
         final boolean result = processor.process(newEnv, context);
+        if ( facade != null ) {
+            newEnv = facade.getDelegate();
+        }
         if ( ((ForwardEnvironmentWrapper)newEnv).getRedirectURL() != null ) {
             environment.redirect( 
((ForwardEnvironmentWrapper)newEnv).getRedirectURL(), false, false);
         }

Reply via email to