Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 65936 invoked from network); 31 Aug 2004 08:30:06 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 31 Aug 2004 08:30:06 -0000 Received: (qmail 28038 invoked by uid 500); 31 Aug 2004 08:30:05 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 27977 invoked by uid 500); 31 Aug 2004 08:30:04 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 27964 invoked by uid 99); 31 Aug 2004 08:30:04 -0000 X-ASF-Spam-Status: No, hits=-2.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.28) with SMTP; Tue, 31 Aug 2004 01:30:03 -0700 Received: (qmail 65833 invoked by uid 65534); 31 Aug 2004 08:30:00 -0000 Date: 31 Aug 2004 08:30:00 -0000 Message-ID: <20040831083000.65829.qmail@minotaur.apache.org> From: cziegeler@apache.org To: cvs@cocoon.apache.org Subject: svn commit: rev 37245 - in cocoon/branches/BRANCH_2_1_X/src: blocks/portal/java/org/apache/cocoon/portal/coplet blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl blocks/portal/java/org/apache/cocoon/portal/coplet/impl blocks/portal/java/org/apache/cocoon/portal/profile/impl java/org/apache/cocoon/components/treeprocessor X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N Author: cziegeler Date: Tue Aug 31 01:29:58 2004 New Revision: 37245 Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletBaseData.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletData.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletDescription.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/CachingURICopletAdapter.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletdata.xml cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AuthenticationProfileManager.java cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java Log: Fix ClassCastException in redirect Extend role protection for coplets Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletBaseData.java ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletBaseData.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletBaseData.java Tue Aug 31 01:29:58 2004 @@ -24,7 +24,7 @@ * @author Volker Schmitt * @author Björn Lütkemeier * - * @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/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletData.java ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletData.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletData.java Tue Aug 31 01:29:58 2004 @@ -15,12 +15,16 @@ */ package org.apache.cocoon.portal.coplet; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; +import java.util.StringTokenizer; import org.apache.cocoon.portal.factory.impl.AbstractProducible; import org.apache.cocoon.portal.util.DeltaApplicable; +import org.apache.commons.lang.StringUtils; /** * @@ -28,7 +32,7 @@ * @author Volker Schmitt * @author Björn Lütkemeier * - * @version CVS $Id: CopletData.java,v 1.10 2004/03/05 13:02:10 bdelacretaz Exp $ + * @version CVS $Id$ */ public class CopletData extends AbstractProducible @@ -40,6 +44,14 @@ protected Map attributes = new HashMap(); + protected String allowedRoles; + + protected String deniedRoles; + + protected transient List allowedRolesList; + + protected transient List deniedRolesList; + /** * Signals whether a delta has been applied. */ @@ -49,6 +61,7 @@ * Constructor */ public CopletData() { + // Nothing to do } /** @@ -153,4 +166,154 @@ public boolean deltaApplied() { return this.deltaApplied; } + + /** + * @return Returns the allowed roles. + */ + public String getAllowedRoles() { + return this.allowedRoles; + } + /** + * @param roles The allowed roles to set. + */ + 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 getAllowedRolesList() { + if ( StringUtils.isBlank(this.allowedRoles) ) { + return null; + } + if ( this.allowedRolesList == null ) { + this.allowedRolesList = new ArrayList(); + final StringTokenizer tokenizer = new StringTokenizer(this.allowedRoles, ","); + while ( tokenizer.hasMoreElements() ) { + String token = (String)tokenizer.nextElement(); + this.allowedRolesList.add(token); + } + if ( this.allowedRolesList.size() == 0 ) { + this.allowedRoles = null; + this.allowedRolesList = null; + } + } + return this.allowedRolesList; + } + + /** + * 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); + } else { + if ( !l.contains(role) ) { + l.add(role); + } + } + this.buildRolesString(l, true); + } + + public void removeFromAllowedRoles(String role) { + List l = this.getAllowedRolesList(); + if ( l != null && l.contains(role) ) { + l.remove(role); + if ( l.size() == 0 ) { + this.allowedRoles = null; + this.allowedRolesList = null; + } else { + this.buildRolesString(l, true); + } + } + } + + 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(); + while ( i.hasNext() ) { + String role = (String)i.next(); + if ( !first ) { + buffer.append(','); + } + first = false; + buffer.append(role); + } + if ( allow ) { + this.allowedRoles = buffer.toString(); + } else { + this.deniedRoles = buffer.toString(); + } + } } Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletDescription.java ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletDescription.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletDescription.java Tue Aug 31 01:29:58 2004 @@ -20,13 +20,14 @@ /** - * A configured layout + * A configured coplet * * @author Carsten Ziegeler * - * @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/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/CopletInstanceData.java Tue Aug 31 01:29:58 2004 @@ -27,7 +27,7 @@ * @author Volker Schmitt * @author Björn Lütkemeier * - * @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/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/CachingURICopletAdapter.java ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/CachingURICopletAdapter.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/adapter/impl/CachingURICopletAdapter.java Tue Aug 31 01:29:58 2004 @@ -34,7 +34,7 @@ * * @author Gerald Kahrer * - * @version CVS $Id: CachingURICopletAdapter.java,v 1.5 2004/04/25 20:09:34 haul Exp $ + * @version CVS $Id$ */ public class CachingURICopletAdapter extends URICopletAdapter @@ -119,11 +119,11 @@ bi.deserialize(bc.getSAXFragment()); } else { - this.toCache(coplet, bc.getSAXFragment()); + this.toCache(coplet, bc.getSAXFragment()); - this.toSAXFromCache(coplet, contentHandler); + this.toSAXFromCache(coplet, contentHandler); + } } - } } /** Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletdata.xml ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletdata.xml (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/copletdata.xml Tue Aug 31 01:29:58 2004 @@ -49,6 +49,14 @@ + + + + + + + + Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/coplet/impl/DefaultCopletFactory.java Tue Aug 31 01:29:58 2004 @@ -48,7 +48,7 @@ * * @author Carsten Ziegeler * - * @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/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java Tue Aug 31 01:29:58 2004 @@ -15,8 +15,6 @@ */ package org.apache.cocoon.portal.profile.impl; -import java.util.List; - import org.apache.avalon.framework.CascadingRuntimeException; import org.apache.avalon.framework.configuration.Configurable; import org.apache.avalon.framework.configuration.Configuration; @@ -27,7 +25,6 @@ import org.apache.avalon.framework.service.Serviceable; import org.apache.avalon.framework.thread.ThreadSafe; import org.apache.cocoon.portal.PortalService; -import org.apache.cocoon.portal.coplet.CopletData; import org.apache.cocoon.portal.coplet.CopletInstanceData; import org.apache.cocoon.portal.layout.Layout; import org.apache.cocoon.portal.profile.ProfileManager; @@ -37,7 +34,7 @@ * * @author Carsten Ziegeler * - * @version CVS $Id: AbstractProfileManager.java,v 1.7 2004/04/28 13:58:16 cziegeler Exp $ + * @version CVS $Id$ */ public abstract class AbstractProfileManager extends AbstractLogEnabled @@ -55,67 +52,33 @@ } /* (non-Javadoc) - * @see org.apache.cocoon.portal.profile.ProfileManager#getCopletInstanceData(org.apache.cocoon.portal.coplet.CopletData) - */ - public List getCopletInstanceData(CopletData data) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.apache.cocoon.portal.profile.ProfileManager#getCopletInstanceData(java.lang.String) - */ - public CopletInstanceData getCopletInstanceData(String copletID) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) - * @see org.apache.cocoon.portal.profile.ProfileManager#getPortalLayout(java.lang.String, java.lang.String) - */ - public Layout getPortalLayout(String layoutKey, String layoutID) { - // TODO Auto-generated method stub - return null; - } - - /* (non-Javadoc) * @see org.apache.cocoon.portal.profile.ProfileManager#register(org.apache.cocoon.portal.coplet.CopletInstanceData) */ public void register(CopletInstanceData coplet) { - // TODO Auto-generated method stub - } /* (non-Javadoc) * @see org.apache.cocoon.portal.profile.ProfileManager#register(org.apache.cocoon.portal.layout.Layout) */ public void register(Layout layout) { - // TODO Auto-generated method stub - } /* (non-Javadoc) * @see org.apache.cocoon.portal.profile.ProfileManager#saveUserProfiles() */ public void saveUserProfiles() { - // TODO Auto-generated method stub - } /* (non-Javadoc) * @see org.apache.cocoon.portal.profile.ProfileManager#unregister(org.apache.cocoon.portal.coplet.CopletInstanceData) */ public void unregister(CopletInstanceData coplet) { - // TODO Auto-generated method stub - } /* (non-Javadoc) * @see org.apache.cocoon.portal.profile.ProfileManager#unregister(org.apache.cocoon.portal.layout.Layout) */ public void unregister(Layout layout) { - // TODO Auto-generated method stub - } /** @@ -207,6 +170,9 @@ } } + /* (non-Javadoc) + * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration) + */ public void configure(Configuration configuration) throws ConfigurationException { Configuration child = configuration.getChild("default-layout-key"); // get configured default LayoutKey Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AuthenticationProfileManager.java ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AuthenticationProfileManager.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/portal/java/org/apache/cocoon/portal/profile/impl/AuthenticationProfileManager.java Tue Aug 31 01:29:58 2004 @@ -328,7 +328,7 @@ this.attributes.put(key, new Object[] {object, newValidity}); } - return new Object[]{object, Boolean.TRUE}; + return new Object[] {object, Boolean.TRUE}; } catch (ProfileException pe) { this.getLogger().error("Error loading profile: " + pe.getMessage(), pe); throw pe; Modified: cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java ============================================================================== --- cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/java/org/apache/cocoon/components/treeprocessor/ConcreteTreeProcessor.java Tue Aug 31 01:29:58 2004 @@ -46,7 +46,9 @@ * * @version CVS $Id: ConcreteTreeProcessor.java,v 1.1 2004/06/05 08:18:50 sylvain Exp $ */ -public class ConcreteTreeProcessor extends AbstractLogEnabled implements Processor { +public class ConcreteTreeProcessor +extends AbstractLogEnabled +implements Processor, Disposable { /** The processor that wraps us */ private TreeProcessor wrappingProcessor; @@ -297,16 +299,22 @@ } // Process the redirect -// 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 + // 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( false, ((ForwardEnvironmentWrapper)newEnv).getRedirectURL() ); } return result; } + /* (non-Javadoc) + * @see org.apache.avalon.framework.activity.Disposable#dispose() + */ public void dispose() { if (this.disposableNodes != null) { // we must dispose the nodes in reverse order