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 2005/06/05 21:21:26 UTC

svn commit: r180133 - in /cocoon: blocks/portal/trunk/WEB-INF/xconf/ blocks/portal/trunk/java/org/apache/cocoon/portal/acting/ blocks/portal/trunk/java/org/apache/cocoon/portal/event/ blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/ blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/ blocks/portal/trunk/samples/ blocks/portal/trunk/samples/coplets/basket/ trunk/src/java/org/apache/cocoon/acting/

Author: cziegeler
Date: Sun Jun  5 12:21:25 2005
New Revision: 180133

URL: http://svn.apache.org/viewcvs?rev=180133&view=rev
Log:
Add handy SetterAction
Start using new event mechanism
Deprecated ObjectModelAction

Added:
    cocoon/trunk/src/java/org/apache/cocoon/acting/SetterAction.java   (with props)
Modified:
    cocoon/blocks/portal/trunk/WEB-INF/xconf/cocoon-portal.xconf
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/ObjectModelAction.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/PreparePortalAction.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/SaveAction.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ActionEvent.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ComparableEvent.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ConvertableEvent.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/CopletDataEvent.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/CopletInstanceEvent.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/LayoutEvent.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/RequestEvent.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/CopletStatusEvent.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/DefaultEventManager.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/FullScreenCopletEvent.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaulCopletDataEventSubscriber.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaultChangeAspectDataEventSubscriber.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaultJXPathEventSubscriber.java
    cocoon/blocks/portal/trunk/samples/coplets/basket/sitemap.xmap
    cocoon/blocks/portal/trunk/samples/sitemap.xmap

Modified: cocoon/blocks/portal/trunk/WEB-INF/xconf/cocoon-portal.xconf
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/WEB-INF/xconf/cocoon-portal.xconf?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/WEB-INF/xconf/cocoon-portal.xconf (original)
+++ cocoon/blocks/portal/trunk/WEB-INF/xconf/cocoon-portal.xconf Sun Jun  5 12:21:25 2005
@@ -76,14 +76,25 @@
     </event-aspects>
     <!-- add a new instance of each class as a subscriber: -->
     <subscriber-classes>
-        <class name="org.apache.cocoon.portal.event.subscriber.impl.DefaultChangeAspectDataEventSubscriber"/>
-        <class name="org.apache.cocoon.portal.event.subscriber.impl.DefaultJXPathEventSubscriber"/>
-        <class name="org.apache.cocoon.portal.event.subscriber.impl.DefaulCopletDataEventSubscriber"/>
+      <!-- class name="CLASSNAME"/> -->
     </subscriber-classes>
     <!-- add each component as a subscriber (the component should be thread safe): -->
     <subscriber-roles>
         <!-- <role name="AVALON-ROLE"/> -->
     </subscriber-roles>
+    <!-- add a new instance of each class as a receiver: -->
+    <receiver-classes>
+        <class name="org.apache.cocoon.portal.event.subscriber.impl.DefaulCopletDataEventSubscriber"
+               event-class="org.apache.cocoon.portal.event.CopletDataEvent"/>
+        <class name="org.apache.cocoon.portal.event.subscriber.impl.DefaultChangeAspectDataEventSubscriber"
+               event-class="org.apache.cocoon.portal.event.impl.ChangeAspectDataEvent"/>
+        <class name="org.apache.cocoon.portal.event.subscriber.impl.DefaultJXPathEventSubscriber"
+               event-class="org.apache.cocoon.portal.event.impl.JXPathEvent"/>
+    </receiver-classes>
+    <!-- add each component as a receiver (the component should be thread safe): -->
+    <receiver-roles>
+        <!-- <role name="AVALON-ROLE"/> -->
+    </receiver-roles>
  </component>
  
  <!-- Event Factory configuration -->

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/ObjectModelAction.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/ObjectModelAction.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/ObjectModelAction.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/ObjectModelAction.java Sun Jun  5 12:21:25 2005
@@ -25,8 +25,9 @@
 /**
  * Stores all parameters in the object model adding prefix "cocoon-portal-".
  *
+ * @deprecated Use the {@link org.apache.cocoon.acting.SetterAction} instead.
  * @author <a href="mailto:bluetkemeier@s-und-n.de">Bj&ouml;rn L&uuml;tkemeier</a>
- * @version CVS $Id: ObjectModelAction.java,v 1.5 2004/03/15 18:18:19 cziegeler Exp $
+ * @version CVS $Id$
  */
 public class ObjectModelAction 
 extends AbstractAction {

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/PreparePortalAction.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/PreparePortalAction.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/PreparePortalAction.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/PreparePortalAction.java Sun Jun  5 12:21:25 2005
@@ -27,12 +27,12 @@
 import org.apache.cocoon.portal.PortalService;
 
 /**
- * Prepare the portal by setting the portal name
+ * Prepare the portal by setting the portal name.
  *
  * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
  * @version CVS $Id: PreparePortalAction.java,v 1.1 2005/01/07 10:21:45 cziegeler Exp $
  */
-public class PreparePortalAction 
+public class PreparePortalAction
 extends ServiceableAction {
 
 	/* (non-Javadoc)
@@ -51,7 +51,7 @@
                 portalService.setPortalName(portalName);
             }
             return EMPTY_MAP;
-        
+
         } catch (ServiceException e) {
             throw new ProcessingException("Unable to lookup portal service.", e);
         } finally {

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/SaveAction.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/SaveAction.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/SaveAction.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/acting/SaveAction.java Sun Jun  5 12:21:25 2005
@@ -27,7 +27,7 @@
 import org.apache.cocoon.portal.PortalService;
 
 /**
- * This action saves the profile
+ * This action saves the profile.
  *
  * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
  * @version CVS $Id$

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ActionEvent.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ActionEvent.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ActionEvent.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ActionEvent.java Sun Jun  5 12:21:25 2005
@@ -16,15 +16,15 @@
 package org.apache.cocoon.portal.event;
 
 /**
- * This event is performed "on" a target
+ * This event is performed "on" a target.
  * 
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
- * 
- * @version CVS $Id: ActionEvent.java,v 1.3 2004/03/05 13:02:11 bdelacretaz Exp $
+ *
+ * @version CVS $Id$
  */
 public interface ActionEvent extends Event {
 
     Object getTarget();
-    
+
 }

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ComparableEvent.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ComparableEvent.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ComparableEvent.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ComparableEvent.java Sun Jun  5 12:21:25 2005
@@ -16,15 +16,15 @@
 package org.apache.cocoon.portal.event;
 
 /**
- * Marker interface for portal event that is comparable
+ * Marker interface for portal event that is comparable.
  *
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
- * 
- * @version CVS $Id: ComparableEvent.java,v 1.2 2004/03/05 13:02:11 bdelacretaz Exp $
+ *
+ * @version CVS $Id$
  */
-public interface ComparableEvent 
+public interface ComparableEvent
     extends Event {
-    
+
     boolean equalsEvent(ComparableEvent event);
 }

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ConvertableEvent.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ConvertableEvent.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ConvertableEvent.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/ConvertableEvent.java Sun Jun  5 12:21:25 2005
@@ -16,10 +16,10 @@
 package org.apache.cocoon.portal.event;
 
 /**
- * Marker interface for portal event 
+ * Marker interface for portal event .
  *
  * @author <a href="mailto:rgoers@apache.org">Ralph Goers/a>
- * 
+ *
  * @version SVN $Id: $
  */
 public interface ConvertableEvent extends Event {

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/CopletDataEvent.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/CopletDataEvent.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/CopletDataEvent.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/CopletDataEvent.java Sun Jun  5 12:21:25 2005
@@ -21,7 +21,7 @@
  * for all coplet instance datas).
  *
  * @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
- * 
+ *
  * @version CVS $Id$
  */
 public interface CopletDataEvent 

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/CopletInstanceEvent.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/CopletInstanceEvent.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/CopletInstanceEvent.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/CopletInstanceEvent.java Sun Jun  5 12:21:25 2005
@@ -20,11 +20,11 @@
  * This interface marks an event as an event for a coplet instance.
  *
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
- * 
+ *
  * @version CVS $Id$
  */
-public interface CopletInstanceEvent 
+public interface CopletInstanceEvent
     extends ActionEvent {
-        
+
     // just a marker interface
 }

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/LayoutEvent.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/LayoutEvent.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/LayoutEvent.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/LayoutEvent.java Sun Jun  5 12:21:25 2005
@@ -16,15 +16,15 @@
 package org.apache.cocoon.portal.event;
 
 /**
- * This interface marks an {@link ActionEvent} as targetted at a 
- * {@link org.apache.cocoon.portal.layout.Layout} object
- * 
+ * This interface marks an {@link ActionEvent} as targetted at a
+ * {@link org.apache.cocoon.portal.layout.Layout} object.
+ *
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
- * 
+ *
  * @version CVS $Id$
  */
 public interface LayoutEvent extends ActionEvent {
-    
+
     // just a marker interface
 }

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/RequestEvent.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/RequestEvent.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/RequestEvent.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/RequestEvent.java Sun Jun  5 12:21:25 2005
@@ -16,12 +16,12 @@
 package org.apache.cocoon.portal.event;
 
 /**
- * Marker interface for portal event 
+ * Marker interface for portal event.
  *
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
- * 
- * @version CVS $Id: RequestEvent.java,v 1.2 2004/03/05 13:02:11 bdelacretaz Exp $
+ *
+ * @version CVS $Id$
  */
 public interface RequestEvent 
     extends Event {

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/CopletStatusEvent.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/CopletStatusEvent.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/CopletStatusEvent.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/CopletStatusEvent.java Sun Jun  5 12:21:25 2005
@@ -24,22 +24,22 @@
  *
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
- * 
- * @version CVS $Id: CopletStatusEvent.java,v 1.3 2004/03/05 13:02:12 bdelacretaz Exp $
+ *
+ * @version CVS $Id$
  */
-public abstract class CopletStatusEvent 
+public abstract class CopletStatusEvent
     implements Event, ComparableEvent {
 
     protected CopletInstanceData coplet;
-    
+
     public CopletInstanceData getCopletInstanceData() {
         return this.coplet;
     }
-    
+
     public void setCopletInstanceData(CopletInstanceData data) {
         this.coplet = data;
     }
-    
+
     public boolean equalsEvent(ComparableEvent event) {
         if (event instanceof CopletStatusEvent) {
             return ((CopletStatusEvent)event).getCopletInstanceData().getId().equals( this.coplet.getId() );

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/DefaultEventManager.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/DefaultEventManager.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/DefaultEventManager.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/DefaultEventManager.java Sun Jun  5 12:21:25 2005
@@ -181,12 +181,51 @@
                     
                     Subscriber subscriber = (Subscriber) ClassUtils.newInstance(name);
                     ContainerUtil.enableLogging(subscriber, this.getLogger());
+                    ContainerUtil.contextualize(subscriber, this.context);
                     ContainerUtil.service(subscriber, this.manager );
                     ContainerUtil.initialize(subscriber);
                     this.subscribe(subscriber);
                 }
             }
         }
+        // subscribe all configured receiver roles
+        roles = this.configuration.getChild("receiver-roles", false);
+        if ( roles != null ) {
+            Configuration[] rolesConf = roles.getChildren("role");
+            if ( rolesConf != null ) {
+                for(int i=0; i<rolesConf.length;i++) {
+                    final Configuration current = rolesConf[i];
+                    final String name = current.getAttribute("name");
+                    
+                    Receiver receiver = null;
+                    try {
+                        receiver = (Receiver) this.manager.lookup(name);
+                        this.subscribe(ClassUtils.loadClass(current.getAttribute("event-class")), receiver);
+                    } finally {
+                        this.manager.release(receiver);
+                    }
+                }
+            }
+        }
+        // subscribe all configured receiver classes
+        classes = this.configuration.getChild("receiver-classes", false);
+        if ( classes != null ) {
+            Configuration[] classesConf = classes.getChildren("class");
+            if ( classesConf != null ) {
+                for(int i=0; i<classesConf.length;i++) {
+                    final Configuration current = classesConf[i];
+                    final String name = current.getAttribute("name");
+                    
+                    Receiver receiver = (Receiver)ClassUtils.newInstance(name);
+                    ContainerUtil.enableLogging(receiver, this.getLogger());
+                    ContainerUtil.contextualize(receiver, this.context);
+                    ContainerUtil.service(receiver, this.manager );
+                    ContainerUtil.initialize(receiver);
+                    this.subscribe(ClassUtils.loadClass(current.getAttribute("event-class")), receiver);
+                }
+            }
+        }
+
     }
 
     /* (non-Javadoc)

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/FullScreenCopletEvent.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/FullScreenCopletEvent.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/FullScreenCopletEvent.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/FullScreenCopletEvent.java Sun Jun  5 12:21:25 2005
@@ -26,17 +26,17 @@
  *
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
  * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
- * 
+ *
  * @version CVS $Id$
  */
-public class FullScreenCopletEvent 
-    extends CopletStatusEvent 
+public class FullScreenCopletEvent
+    extends CopletStatusEvent
     implements RequestEvent, ConvertableEvent {
 
     public static final String REQUEST_PARAMETER_NAME = "cocoon-portal-fs";
-    
+
     protected Layout layout;
-    
+
     public FullScreenCopletEvent(CopletInstanceData data, Layout layout) {
         this.coplet = data;
         this.layout = layout;
@@ -67,7 +67,7 @@
     public String getRequestParameterName() {
         return REQUEST_PARAMETER_NAME;
     }
-    
+
     public Layout getLayout() {
         return this.layout;
     }

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaulCopletDataEventSubscriber.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaulCopletDataEventSubscriber.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaulCopletDataEventSubscriber.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaulCopletDataEventSubscriber.java Sun Jun  5 12:21:25 2005
@@ -18,18 +18,13 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
 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.event.CopletDataEvent;
 import org.apache.cocoon.portal.event.Event;
 import org.apache.cocoon.portal.event.EventManager;
-import org.apache.cocoon.portal.event.Filter;
-import org.apache.cocoon.portal.event.Publisher;
-import org.apache.cocoon.portal.event.Subscriber;
+import org.apache.cocoon.portal.event.Receiver;
 import org.apache.cocoon.portal.event.impl.ChangeCopletsJXPathEvent;
 import org.apache.cocoon.portal.event.impl.CopletJXPathEvent;
 import org.apache.cocoon.portal.profile.ProfileManager;
@@ -41,11 +36,8 @@
  * @version CVS $Id$
  */
 public final class DefaulCopletDataEventSubscriber 
-implements Subscriber, Serviceable {
+implements Receiver {
 
-    /** The service manager */
-    protected ServiceManager manager;
-    
     /**
      * Constructor
      */
@@ -53,67 +45,26 @@
         // nothing to do 
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.cocoon.portal.event.Subscriber#getEventType()
-     */
-    public Class getEventType() {
-        return CopletDataEvent.class;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.cocoon.portal.event.Subscriber#getFilter()
-     */
-    public Filter getFilter() {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.cocoon.portal.event.Subscriber#inform(org.apache.cocoon.portal.event.Event)
+    /**
+     * @see Receiver#inform(Event, PortalService)
      */
-    public void inform(Event e) {
+    public void inform(Event e, PortalService service) {
         CopletData data = (CopletData) ((CopletDataEvent)e).getTarget();
-        PortalService service = null;
         List instances = null;
-        try {
-            service = (PortalService) this.manager.lookup(PortalService.ROLE);
-            ProfileManager profileManager = service.getComponentManager().getProfileManager();
-            instances = profileManager.getCopletInstanceData(data);
-        } catch (Exception ignore) {
-            // ignore exception
-        } finally {
-            this.manager.release(service);
-        }
-        if ( instances != null ) {
-            Publisher publisher = null;
-            EventManager eventManager = null;
-            try {
-                eventManager = (EventManager) this.manager.lookup(EventManager.ROLE);
-                publisher = eventManager.getPublisher();
-            } catch (Exception ignore) {
-                // ignore exception
-            } finally {
-                this.manager.release(eventManager);
-            }
 
-            if ( publisher != null ) {
-                if ( e instanceof ChangeCopletsJXPathEvent ) {
-                    final String path = ((ChangeCopletsJXPathEvent)e).getPath();
-                    final Object value = ((ChangeCopletsJXPathEvent)e).getValue();
+        ProfileManager profileManager = service.getComponentManager().getProfileManager();
+        instances = profileManager.getCopletInstanceData(data);
+
+        if ( instances != null && e instanceof ChangeCopletsJXPathEvent ) {
+            EventManager eventManager = service.getComponentManager().getEventManager();
+            final String path = ((ChangeCopletsJXPathEvent)e).getPath();
+            final Object value = ((ChangeCopletsJXPathEvent)e).getValue();
                     
-                    Iterator i = instances.iterator();
-                    while ( i.hasNext() ) {
-                        CopletInstanceData current = (CopletInstanceData) i.next();
-                        Event event = new CopletJXPathEvent(current, path, value);
-                        publisher.publish(event);
-                    }
-                }
+            Iterator i = instances.iterator();
+            while ( i.hasNext() ) {
+                CopletInstanceData current = (CopletInstanceData) i.next();
+                Event event = new CopletJXPathEvent(current, path, value);
+                eventManager.send(event);
             }
         }
     }

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaultChangeAspectDataEventSubscriber.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaultChangeAspectDataEventSubscriber.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaultChangeAspectDataEventSubscriber.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaultChangeAspectDataEventSubscriber.java Sun Jun  5 12:21:25 2005
@@ -15,10 +15,10 @@
  */
 package org.apache.cocoon.portal.event.subscriber.impl;
 
+import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.aspect.Aspectalizable;
 import org.apache.cocoon.portal.event.Event;
-import org.apache.cocoon.portal.event.Filter;
-import org.apache.cocoon.portal.event.Subscriber;
+import org.apache.cocoon.portal.event.Receiver;
 import org.apache.cocoon.portal.event.impl.ChangeAspectDataEvent;
 
 /**
@@ -28,30 +28,16 @@
  * @version CVS $Id$
  */
 public final class DefaultChangeAspectDataEventSubscriber 
-    implements Subscriber {
+    implements Receiver {
 
     public DefaultChangeAspectDataEventSubscriber() {
         // nothing to do 
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.cocoon.portal.event.Subscriber#getEventType()
+    /**
+     * @see Receiver#inform(Event, PortalService)
      */
-    public Class getEventType() {
-        return ChangeAspectDataEvent.class;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.cocoon.portal.event.Subscriber#getFilter()
-     */
-    public Filter getFilter() {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.cocoon.portal.event.Subscriber#inform(org.apache.cocoon.portal.event.Event)
-     */
-    public void inform(Event e) {
+    public void inform(Event e, PortalService service) {
         final ChangeAspectDataEvent event = (ChangeAspectDataEvent)e;
         final Aspectalizable target = event.getAspectalizable();
         target.setAspectData(event.getAspectName(), event.getData());

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaultJXPathEventSubscriber.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaultJXPathEventSubscriber.java?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaultJXPathEventSubscriber.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/subscriber/impl/DefaultJXPathEventSubscriber.java Sun Jun  5 12:21:25 2005
@@ -15,43 +15,29 @@
  */
 package org.apache.cocoon.portal.event.subscriber.impl;
 
+import org.apache.cocoon.portal.PortalService;
 import org.apache.cocoon.portal.event.Event;
-import org.apache.cocoon.portal.event.Filter;
-import org.apache.cocoon.portal.event.Subscriber;
+import org.apache.cocoon.portal.event.Receiver;
 import org.apache.cocoon.portal.event.impl.JXPathEvent;
 import org.apache.commons.jxpath.JXPathContext;
 
 /**
- * This subscriber processes JXPath events
+ * This subscriber processes JXPath events.
  * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
- * 
+ *
  * @version CVS $Id$
  */
 public final class DefaultJXPathEventSubscriber 
-    implements Subscriber {
+    implements Receiver {
 
     public DefaultJXPathEventSubscriber() {
         // nothing to do         
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.cocoon.portal.event.Subscriber#getEventType()
+    /**
+     * @see Receiver#inform(Event, PortalService)
      */
-    public Class getEventType() {
-        return JXPathEvent.class;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.cocoon.portal.event.Subscriber#getFilter()
-     */
-    public Filter getFilter() {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.apache.cocoon.portal.event.Subscriber#inform(org.apache.cocoon.portal.event.Event)
-     */
-    public void inform(Event e) {
+    public void inform(Event e, PortalService service) {
         final JXPathEvent event = (JXPathEvent)e;
         final Object target = event.getTarget();
         if ( target != null ) {

Modified: cocoon/blocks/portal/trunk/samples/coplets/basket/sitemap.xmap
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/samples/coplets/basket/sitemap.xmap?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/samples/coplets/basket/sitemap.xmap (original)
+++ cocoon/blocks/portal/trunk/samples/coplets/basket/sitemap.xmap Sun Jun  5 12:21:25 2005
@@ -56,9 +56,9 @@
       </map:match>
 
       <map:match pattern="*.*.flow">
-        <map:act type="portal-object-model">
-          <map:parameter name="copletId" value="{request-param:copletid}"/>
-          <map:parameter name="portalName" value="portal"/>
+        <map:act type="portal-set-object-model">
+          <map:parameter name="cocoon-portal-copletId" value="{request-param:copletid}"/>
+          <map:parameter name="cocoon-portal-portalName" value="portal"/>
         </map:act>
         <map:call function="{2}">
           <map:parameter name="id" value="{request-param:copletid}"/>

Modified: cocoon/blocks/portal/trunk/samples/sitemap.xmap
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/samples/sitemap.xmap?rev=180133&r1=180132&r2=180133&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/samples/sitemap.xmap (original)
+++ cocoon/blocks/portal/trunk/samples/sitemap.xmap Sun Jun  5 12:21:25 2005
@@ -63,8 +63,8 @@
                   src="org.apache.cocoon.portal.acting.LoginAction"/>
       <map:action name="portal-logout"
                   src="org.apache.cocoon.portal.acting.LogoutAction"/>
-      <map:action name="portal-object-model"
-                  src="org.apache.cocoon.portal.acting.ObjectModelAction"/>
+      <map:action name="portal-set-object-model"
+                  src="org.apache.cocoon.acting.SetterAction"/>
       <map:action name="portal-set-data"
                   src="org.apache.cocoon.portal.acting.CopletSetDataAction"/>
       <map:action name="portal-save-profile"

Added: cocoon/trunk/src/java/org/apache/cocoon/acting/SetterAction.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/acting/SetterAction.java?rev=180133&view=auto
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/acting/SetterAction.java (added)
+++ cocoon/trunk/src/java/org/apache/cocoon/acting/SetterAction.java Sun Jun  5 12:21:25 2005
@@ -0,0 +1,92 @@
+/*
+ * 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.acting;
+
+import java.util.Map;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Redirector;
+import org.apache.cocoon.environment.SourceResolver;
+
+/**
+ * This action can be used to set information in either the object model,
+ * the request or the session.
+ * All parameters set for this action are set in the according location
+ * whereas the parameter name is the key and the value of the parameter
+ * will be set as a string value for this key.
+ *
+ * @version SVN $Id:$
+ */
+public class SetterAction
+    extends AbstractAction
+    implements Parameterizable {
+
+    public static final int MODE_OBJECT_MODEL = 1;
+    public static final int MODE_REQUEST_ATTR = 2;
+    public static final int MODE_SESSION_ATTR = 3;
+    
+    public static final String MODEDEF_OBJECT_MODEL = "object-model";
+    public static final String MODEDEF_REQUEST_ATTR = "request-attribute";
+    public static final String MODEDEF_SESSION_ATTR = "session-attribute";
+
+    protected int mode = MODE_OBJECT_MODEL;
+
+    /**
+     * @see Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
+     * @throws ParameterException
+     */
+    public void parameterize(Parameters params) 
+    throws ParameterException {
+        String modeDef = params.getParameter("mode", null);
+        if ( modeDef != null ) {
+            if ( MODEDEF_OBJECT_MODEL.equals(modeDef) ) {
+                this.mode = MODE_OBJECT_MODEL;
+            } else if ( MODEDEF_REQUEST_ATTR.equals(modeDef) ) {
+                this.mode = MODE_REQUEST_ATTR;
+            } else if ( MODEDEF_SESSION_ATTR.equals(modeDef) ) {
+                this.mode = MODE_SESSION_ATTR;
+            } else {
+                throw new ParameterException("Unknown mode: " + mode);
+            }
+        }
+    }
+
+    /**
+     * @see org.apache.cocoon.acting.Action#act(org.apache.cocoon.environment.Redirector, org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
+     */
+    public Map act(Redirector redirector,
+                   SourceResolver resolver,
+                   Map objectModel,
+                   String source,
+                   Parameters parameters)
+    throws Exception {
+        final String[] names = parameters.getNames();
+        for(int i = 0; i < names.length; i++) {
+            final String name = names[i];
+            if ( this.mode == MODE_OBJECT_MODEL ) {
+                objectModel.put(name, parameters.getParameter(name));                
+            } else if ( this.mode == MODE_REQUEST_ATTR ) {
+                ObjectModelHelper.getRequest(objectModel).setAttribute(name, parameters.getParameter(name));                
+            } else if ( this.mode == MODE_REQUEST_ATTR ) {
+                ObjectModelHelper.getRequest(objectModel).getSession().setAttribute(name, parameters.getParameter(name));                
+            }
+        }
+        return EMPTY_MAP;
+    }
+}

Propchange: cocoon/trunk/src/java/org/apache/cocoon/acting/SetterAction.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/trunk/src/java/org/apache/cocoon/acting/SetterAction.java
------------------------------------------------------------------------------
    svn:keywords = Id