You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cz...@apache.org on 2006/02/12 13:45:02 UTC
svn commit: r377168 - in
/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile:
./ impl/
Author: cziegeler
Date: Sun Feb 12 04:45:01 2006
New Revision: 377168
URL: http://svn.apache.org/viewcvs?rev=377168&view=rev
Log:
Add profile manager aspects
Added:
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java (with props)
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java (with props)
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/DefaultProfileManagerAspectContext.java (with props)
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/ProfileManagerAspectChain.java (with props)
Modified:
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
Added: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java?rev=377168&view=auto
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java (added)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java Sun Feb 12 04:45:01 2006
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.portal.profile;
+
+import org.apache.cocoon.portal.scratchpad.Profile;
+
+/**
+ * The behaviour of the used profile manager can be extended by assigning one
+ * or more profile manager aspects to the profile manager.
+ *
+ * @since 2.2
+ * @version $Id$
+ */
+public interface ProfileManagerAspect {
+
+ /** The role to lookup an aspect. */
+ String ROLE = ProfileManagerAspect.class.getName();
+
+ void prepare(ProfileManagerAspectContext context,
+ Profile profile);
+}
Propchange: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspect.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java?rev=377168&view=auto
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java (added)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java Sun Feb 12 04:45:01 2006
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.portal.profile;
+
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.portal.PortalService;
+
+/**
+ * The context for a {@link ProfileManagerAspect}
+ *
+ * @since 2.2
+ * @version $Id$
+ */
+public interface ProfileManagerAspectContext {
+
+ /**
+ * Invoke next aspect .
+ */
+ void invokeNext()
+ throws ProcessingException;
+
+ /**
+ * Get the {@link Parameters} of the aspect.
+ */
+ Parameters getAspectParameters();
+
+ /**
+ * Get the object model.
+ */
+ Map getObjectModel();
+
+ /**
+ * Get the portal service.
+ */
+ PortalService getPortalService();
+}
Propchange: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/ProfileManagerAspectContext.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java?rev=377168&r1=377167&r2=377168&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java Sun Feb 12 04:45:01 2006
@@ -19,6 +19,12 @@
import java.util.Iterator;
import java.util.Map;
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.cocoon.portal.PortalService;
import org.apache.cocoon.portal.coplet.CopletInstanceData;
import org.apache.cocoon.portal.coplet.adapter.CopletAdapter;
@@ -34,6 +40,7 @@
import org.apache.cocoon.portal.layout.impl.CopletLayout;
import org.apache.cocoon.portal.profile.PortalUser;
import org.apache.cocoon.portal.profile.ProfileManager;
+import org.apache.cocoon.portal.profile.ProfileManagerAspect;
import org.apache.cocoon.portal.scratchpad.Profile;
/**
@@ -43,10 +50,50 @@
*/
public abstract class AbstractProfileManager
extends AbstractComponent
- implements ProfileManager, Receiver {
+ implements ProfileManager, Receiver, Configurable {
/** Attribute to store the current user. */
public static final String USER_ATTRIBUTE = AbstractProfileManager.class.getName() + "/User";
+
+ /** The configuration. */
+ protected Configuration configuration;
+
+ /** The chain for the configured profile manager aspects. */
+ protected ProfileManagerAspectChain chain;
+
+ /** The service selector for the profile manager aspects. */
+ protected ServiceSelector aspectSelector;
+
+ /**
+ * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
+ */
+ public void service(ServiceManager manager) throws ServiceException {
+ super.service(manager);
+ this.aspectSelector = (ServiceSelector) this.manager.lookup( ProfileManagerAspect.ROLE+"Selector");
+ }
+
+ /**
+ * @see org.apache.avalon.framework.activity.Disposable#dispose()
+ */
+ public void dispose() {
+ if (this.manager != null) {
+ if ( this.chain != null) {
+ this.chain.dispose( this.aspectSelector );
+ }
+ this.manager.release( this.aspectSelector );
+ this.aspectSelector = null;
+ }
+ super.dispose();
+ }
+
+ /**
+ * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
+ */
+ public void configure(Configuration config) throws ConfigurationException {
+ this.configuration = config;
+ this.chain = new ProfileManagerAspectChain();
+ this.chain.configure(this.aspectSelector, config.getChild("aspects"));
+ }
/**
* Receives any user related event and invokes login, logout etc.
Added: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/DefaultProfileManagerAspectContext.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/DefaultProfileManagerAspectContext.java?rev=377168&view=auto
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/DefaultProfileManagerAspectContext.java (added)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/DefaultProfileManagerAspectContext.java Sun Feb 12 04:45:01 2006
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.portal.profile.impl;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.portal.PortalService;
+import org.apache.cocoon.portal.profile.ProfileManagerAspect;
+import org.apache.cocoon.portal.profile.ProfileManagerAspectContext;
+import org.apache.cocoon.portal.scratchpad.Profile;
+
+/**
+ * The aspect context is passed to every aspect.
+ * @since 2.2
+ * @version $Id$
+ */
+public final class DefaultProfileManagerAspectContext
+ implements ProfileManagerAspectContext {
+
+ private final PortalService service;
+ private final Map objectModel;
+ private final Iterator iterator;
+ private final Iterator configIterator;
+ private Parameters config;
+ private final Profile profile;
+
+ public DefaultProfileManagerAspectContext(ProfileManagerAspectChain chain,
+ PortalService service,
+ Map objectModel,
+ Profile profile) {
+ this.service = service;
+ this.objectModel = objectModel;
+ this.iterator = chain.getIterator();
+ this.configIterator = chain.getConfigIterator();
+ this.profile = profile;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.profile.ProfileManagerAspectContext#invokeNext()
+ */
+ public void invokeNext()
+ throws ProcessingException {
+ if (this.iterator.hasNext()) {
+ this.config = (Parameters)this.configIterator.next();
+ final ProfileManagerAspect aspect = (ProfileManagerAspect) iterator.next();
+ aspect.prepare(this, this.profile);
+ }
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.profile.ProfileManagerAspectContext#getAspectParameters()
+ */
+ public Parameters getAspectParameters() {
+ return this.config;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.profile.ProfileManagerAspectContext#getObjectModel()
+ */
+ public Map getObjectModel() {
+ return this.objectModel;
+ }
+
+ /**
+ * @see org.apache.cocoon.portal.profile.ProfileManagerAspectContext#getPortalService()
+ */
+ public PortalService getPortalService() {
+ return this.service;
+ }
+}
Propchange: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/DefaultProfileManagerAspectContext.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/DefaultProfileManagerAspectContext.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java?rev=377168&r1=377167&r2=377168&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/GroupBasedProfileManager.java Sun Feb 12 04:45:01 2006
@@ -24,11 +24,12 @@
import java.util.Map;
import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.context.Context;
import org.apache.avalon.framework.context.ContextException;
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.avalon.framework.service.ServiceManager;
@@ -74,7 +75,7 @@
*/
public class GroupBasedProfileManager
extends AbstractProfileManager
- implements Parameterizable, Contextualizable, Disposable {
+ implements Contextualizable, Disposable {
public static final String CATEGORY_GLOBAL = "global";
public static final String CATEGORY_GROUP = "group";
@@ -116,11 +117,12 @@
}
/**
- * @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
+ * @see org.apache.cocoon.portal.profile.impl.AbstractProfileManager#configure(org.apache.avalon.framework.configuration.Configuration)
*/
- public void parameterize(Parameters params) throws ParameterException {
- this.checkForChanges = params.getParameterAsBoolean("check-for-changes", this.checkForChanges);
- this.parameters = params;
+ public void configure(Configuration config) throws ConfigurationException {
+ super.configure(config);
+ this.parameters = Parameters.fromConfiguration(config);
+ this.checkForChanges = this.parameters.getParameterAsBoolean("check-for-changes", this.checkForChanges);
}
/**
Added: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/ProfileManagerAspectChain.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/ProfileManagerAspectChain.java?rev=377168&view=auto
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/ProfileManagerAspectChain.java (added)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/ProfileManagerAspectChain.java Sun Feb 12 04:45:01 2006
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.cocoon.portal.profile.impl;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.cocoon.portal.profile.ProfileManagerAspect;
+
+/**
+ * This chain holds all configured aspects for a profile manager.
+ * @since 2.2
+ * @version $Id$
+ */
+public final class ProfileManagerAspectChain {
+
+ protected List aspects = new ArrayList(3);
+
+ protected List configs = new ArrayList(3);
+
+ public void configure(ServiceSelector selector,
+ Configuration conf)
+ throws ConfigurationException {
+ if ( conf != null ) {
+ Configuration[] aspects = conf.getChildren("aspect");
+ for(int i=0; i < aspects.length; i++) {
+ final Configuration current = aspects[i];
+ final String role = current.getAttribute("type");
+ try {
+ ProfileManagerAspect rAspect = (ProfileManagerAspect) selector.select(role);
+ this.aspects.add(rAspect);
+ Parameters aspectConfiguration = Parameters.fromConfiguration(current);
+ this.configs.add(aspectConfiguration);
+
+ } catch (ServiceException se) {
+ throw new ConfigurationException("Unable to lookup profile manager aspect: " + role, se);
+ }
+ }
+ } else {
+ throw new ConfigurationException("No aspects configured.");
+ }
+ }
+
+ public Iterator getIterator() {
+ return this.aspects.iterator();
+ }
+
+ public Iterator getConfigIterator() {
+ return this.configs.iterator();
+ }
+
+ public void dispose(ServiceSelector selector) {
+ Iterator i = this.aspects.iterator();
+ while (i.hasNext()) {
+ final Object component = i.next();
+ selector.release(component);
+ }
+ this.aspects.clear();
+ this.configs.clear();
+ }
+}
Propchange: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/ProfileManagerAspectChain.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/ProfileManagerAspectChain.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java?rev=377168&r1=377167&r2=377168&view=diff
==============================================================================
--- cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java (original)
+++ cocoon/trunk/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java Sun Feb 12 04:45:01 2006
@@ -22,7 +22,6 @@
import java.util.List;
import java.util.Map;
-import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.cocoon.portal.coplet.CopletBaseData;
@@ -42,8 +41,7 @@
* @version $Id$
*/
public class StaticProfileManager
-extends AbstractProfileManager
-implements Configurable {
+ extends AbstractProfileManager {
protected String profilesPath;
@@ -296,6 +294,7 @@
*/
public void configure(Configuration configuration)
throws ConfigurationException {
+ super.configure(configuration);
Configuration child = configuration.getChild("profiles-path");
this.profilesPath = child.getValue("cocoon:/profiles");
}