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örn Lü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