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/10/25 21:44:31 UTC

svn commit: r328461 - in /cocoon/blocks/portal/trunk: ./ java/org/apache/cocoon/portal/coplet/adapter/impl/ java/org/apache/cocoon/portal/event/aspect/impl/ java/org/apache/cocoon/portal/event/impl/ java/org/apache/cocoon/portal/event/layout/ java/org/...

Author: cziegeler
Date: Tue Oct 25 12:44:00 2005
New Revision: 328461

URL: http://svn.apache.org/viewcvs?rev=328461&view=rev
Log:
Add temporary parameters to Layout objects

Modified:
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/aspect/impl/FrameEventAspect.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/aspect/impl/LinkEventAspect.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/InternalEventReceiver.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/layout/LayoutChangeParameterEvent.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PageLabelManager.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/AbstractLayout.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/Layout.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/FrameAspect.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/HistoryAspect.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/TabContentAspect.java
    cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/impl/DefaultLinkRenderer.java
    cocoon/blocks/portal/trunk/status.xml

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/coplet/adapter/impl/ApplicationCopletAdapter.java Tue Oct 25 12:44:00 2005
@@ -182,7 +182,7 @@
      * @return String the name of the new item
      */
     private String getNewInstanceTabName(CompositeLayout layout) {
-        Integer data = Integer.valueOf(layout.getParameter("tab"));
+        Integer data = Integer.valueOf(layout.getTemporaryParameter("tab"));
         Item selectedItem = (NamedItem) layout.getItem(data.intValue());
 
         if (selectedItem instanceof NamedItem) {

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/aspect/impl/FrameEventAspect.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/aspect/impl/FrameEventAspect.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/aspect/impl/FrameEventAspect.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/aspect/impl/FrameEventAspect.java Tue Oct 25 12:44:00 2005
@@ -43,7 +43,7 @@
                            Layout layout,
                            String[] values) {
         if (layout instanceof FrameLayout) {
-            final Event e = new LayoutChangeParameterEvent(layout, "frame", values[2]);
+            final Event e = new LayoutChangeParameterEvent(layout, "frame", values[2], true);
             publisher.send(e);
         } else {
             this.getLogger().warn(

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/aspect/impl/LinkEventAspect.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/aspect/impl/LinkEventAspect.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/aspect/impl/LinkEventAspect.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/aspect/impl/LinkEventAspect.java Tue Oct 25 12:44:00 2005
@@ -46,11 +46,11 @@
             LinkLayout linkLayout = (LinkLayout) layout;
             Event e = new LayoutChangeParameterEvent(linkLayout,
                                                 "link-layout-key",
-                                                values[2]);
+                                                values[2], true);
             publisher.send(e);
             e = new LayoutChangeParameterEvent(linkLayout,
                                           "link-layout-id",
-                                          values[3]);
+                                          values[3], true);
             publisher.send(e);
         } else {
             this.getLogger().warn(

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/InternalEventReceiver.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/InternalEventReceiver.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/InternalEventReceiver.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/impl/InternalEventReceiver.java Tue Oct 25 12:44:00 2005
@@ -111,6 +111,10 @@
      */
     public void inform(LayoutChangeParameterEvent e, PortalService service) {
         final Layout l = (Layout)e.getTarget();
-        l.setParameter(e.getParameterName(), e.getValue());
+        if ( e.isTemporary() ) {
+            l.setTemporaryParameter(e.getParameterName(), e.getValue());
+        } else {
+            l.setParameter(e.getParameterName(), e.getValue());
+        }
     }
 }

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/layout/LayoutChangeParameterEvent.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/layout/LayoutChangeParameterEvent.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/layout/LayoutChangeParameterEvent.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/event/layout/LayoutChangeParameterEvent.java Tue Oct 25 12:44:00 2005
@@ -33,6 +33,7 @@
 
     protected String parameterName;
     protected String value;
+    protected boolean temporary;
 
     public LayoutChangeParameterEvent(PortalService service, String eventData) {
         super(null);
@@ -44,8 +45,12 @@
         if ( pos2 == -1 ) {
             throw new IllegalArgumentException("Corrupt event data: " + eventData);
         }
+        if ( eventData.charAt(pos+1) != 'T' && eventData.charAt(pos+1) != 'P') {
+            throw new IllegalArgumentException("Corrupt event data: " + eventData);            
+        }
         final String layoutId = eventData.substring(0, pos);
-        this.parameterName = eventData.substring(pos+1, pos2);
+        this.temporary = (eventData.charAt(pos+1) == 'T');
+        this.parameterName = eventData.substring(pos+2, pos2);
         this.value= eventData.substring(pos2+1);
         this.target = service.getComponentManager().getProfileManager().getPortalLayout(null, layoutId);
     }
@@ -53,10 +58,20 @@
     /**
      * @param target
      */
-    public LayoutChangeParameterEvent(Layout target, String parameterName, String value) {
+    public LayoutChangeParameterEvent(Layout target,
+                                      String parameterName,
+                                      String value) {
+        this(target, parameterName, value, false);
+    }
+
+    public LayoutChangeParameterEvent(Layout target,
+                                      String parameterName,
+                                      String value,
+                                      boolean temporary) {
         super(target);
         this.parameterName = parameterName;
         this.value = value;
+        this.temporary = temporary;
     }
 
     public String getParameterName() {
@@ -67,13 +82,19 @@
         return this.value;
     }
 
+    public boolean isTemporary() {
+        return this.temporary;
+    }
+
     /**
      * @see org.apache.cocoon.portal.event.ComparableEvent#equalsEvent(org.apache.cocoon.portal.event.ComparableEvent)
      */
     public boolean equalsEvent(ComparableEvent event) {
         if ( event instanceof LayoutChangeParameterEvent ) {
-            return ObjectUtils.equals(this.getTarget(), ((LayoutChangeParameterEvent)event).getTarget())
-                   && ObjectUtils.equals(this.getParameterName(), ((LayoutChangeParameterEvent)event).getParameterName());
+            LayoutChangeParameterEvent e = (LayoutChangeParameterEvent)event;
+            return this.temporary == e.temporary
+                   && ObjectUtils.equals(this.getTarget(), e.getTarget())
+                   && ObjectUtils.equals(this.getParameterName(), e.getParameterName());
         }
         return false;
     }
@@ -86,7 +107,7 @@
         if ( l.getId() == null ) {
             return null;
         }
-        return l.getId() + ':' + this.parameterName + ':' + this.value;
+        return l.getId() + ':' + (this.temporary ? 'T' : 'P') + this.parameterName + ':' + this.value;
     }
 
 }

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PageLabelManager.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PageLabelManager.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PageLabelManager.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/impl/PageLabelManager.java Tue Oct 25 12:44:00 2005
@@ -252,7 +252,7 @@
         for (int j = 0; j < layout.getSize(); j++) {
             Item tab = layout.getItem(j);
             LayoutChangeParameterEvent event =
-                new LayoutChangeParameterEvent(layout, this.aspectName, String.valueOf(j));
+                new LayoutChangeParameterEvent(layout, this.aspectName, String.valueOf(j), true);
             StringBuffer label = new StringBuffer(name);
             if (label.length() > 0) {
                 label.append(".");

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/AbstractLayout.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/AbstractLayout.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/AbstractLayout.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/AbstractLayout.java Tue Oct 25 12:44:00 2005
@@ -15,6 +15,8 @@
  */
 package org.apache.cocoon.portal.layout;
 
+import java.util.Map;
+
 import org.apache.commons.collections.map.LinkedMap;
 
 /**
@@ -34,8 +36,12 @@
 
     protected String id;
 
+    /** TODO we should remove the description from here. */
     transient protected LayoutDescription description;
 
+    /** The temporary parameters. */
+    protected Map temporaryParameters = new LinkedMap();
+
     /**
      * @return The configured name
      */
@@ -108,6 +114,27 @@
      */
     public String getLayoutRendererName() {
         return this.rendererName;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.layout.Layout#getTemporaryParameter(java.lang.String)
+     */
+    public String getTemporaryParameter(String key) {
+        return (String)this.temporaryParameters.get(key);
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.layout.Layout#getTemporaryParameters()
+     */
+    public Map getTemporaryParameters() {
+        return this.temporaryParameters;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.layout.Layout#setTemporaryParameter(java.lang.String, java.lang.String)
+     */
+    public void setTemporaryParameter(String key, String value) {
+        this.temporaryParameters.put(key, value);
     }
 
     /**

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/Layout.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/Layout.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/Layout.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/Layout.java Tue Oct 25 12:44:00 2005
@@ -19,8 +19,11 @@
 
 /**
  * 
- * Parameters:
- * A parameter is a key-value pair consisting of strings for both key and value.
+ * Parameters and temporary parameters:
+ * A parameter is a key-value pair consisting of strings for
+ * both key and value. While the parameters are persisted,
+ * the temporary parameters have only the life-time of a
+ * session.
  *
  * @version $Id$
  */
@@ -68,6 +71,27 @@
      * @param value The value.
      */
     void setParameter(String key, String value);
+
+    /**
+     * Get the temporary parameters map.
+     * This method never returns null.
+     * @return A map with key value pairs.
+     */
+    Map getTemporaryParameters();
+
+    /**
+     * Return the temporary parameter value for the given key.
+     * @param key The name of the parameter.
+     * @return The value of the parameter or null.
+     */
+    String getTemporaryParameter(String key);
+
+    /**
+     * Set the temporary parameter to a value.
+     * @param key The name of the parameter.
+     * @param value The value.
+     */
+    void setTemporaryParameter(String key, String value);
 
     /**
      * Get the name of the {@link org.apache.cocoon.portal.layout.renderer.Renderer} to draw this layout.

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/FrameAspect.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/FrameAspect.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/FrameAspect.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/FrameAspect.java Tue Oct 25 12:44:00 2005
@@ -58,7 +58,7 @@
             throw new SAXException("Wrong layout type, FrameLayout expected: " + layout.getClass().getName());
         }
 
-        String source = layout.getParameter(config.aspectName);
+        String source = layout.getTemporaryParameter(config.aspectName);
         if (source == null) {
             source = ((FrameLayout) layout).getSource();
         }

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/HistoryAspect.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/HistoryAspect.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/HistoryAspect.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/HistoryAspect.java Tue Oct 25 12:44:00 2005
@@ -107,6 +107,7 @@
                 }
 
                 this.addValues(layout.getId(), state, layout.getParameters(), "parameters/", false);
+                this.addValues(layout.getId(), state, layout.getTemporaryParameters(), "temporaryParameters/", false);
 
                 // are we a coplet layout
                 if ( layout instanceof CopletLayout ) {

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/TabContentAspect.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/TabContentAspect.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/TabContentAspect.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/TabContentAspect.java Tue Oct 25 12:44:00 2005
@@ -126,7 +126,7 @@
             CompositeLayout tabLayout = (CompositeLayout) layout;
 
             // selected tab
-            String data = layout.getParameter(config.aspectName);
+            String data = layout.getTemporaryParameter(config.aspectName);
             int selected = 0;
             if ( data != null ) {
                 selected = Integer.valueOf(data).intValue();
@@ -145,7 +145,7 @@
                 if (j == selected) {
                     attributes.addCDATAAttribute("selected", "true");
                 }
-                event = new LayoutChangeParameterEvent(tabLayout, config.aspectName, String.valueOf(j));
+                event = new LayoutChangeParameterEvent(tabLayout, config.aspectName, String.valueOf(j), true);
                 attributes.addCDATAAttribute("parameter", service.getComponentManager().getLinkService().getLinkURI(event)); 
 
                 // add parameters
@@ -240,7 +240,7 @@
                     attributes.addCDATAAttribute("name",
                         String.valueOf(((NamedItem) tab).getName()));
                     LayoutChangeParameterEvent event = new LayoutChangeParameterEvent(tabLayout,
-                        config.aspectName, String.valueOf(j));
+                        config.aspectName, String.valueOf(j), true);
                     List events = new ArrayList(parentEvents);
                     events.add(event);
 

Modified: cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/impl/DefaultLinkRenderer.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/impl/DefaultLinkRenderer.java?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/impl/DefaultLinkRenderer.java (original)
+++ cocoon/blocks/portal/trunk/java/org/apache/cocoon/portal/layout/renderer/impl/DefaultLinkRenderer.java Tue Oct 25 12:44:00 2005
@@ -36,8 +36,8 @@
     public void process(Layout layout, PortalService service, ContentHandler handler)
     throws SAXException {
         if (layout instanceof LinkLayout) {
-            String layoutKey = layout.getParameter("link-layout-key");
-			String layoutId = layout.getParameter("link-layout-id");
+            String layoutKey = layout.getTemporaryParameter("link-layout-key");
+			String layoutId = layout.getTemporaryParameter("link-layout-id");
             if ( layoutKey == null && layoutId == null){
 				// get default values
 				layoutKey = ((LinkLayout)layout).getLayoutKey();

Modified: cocoon/blocks/portal/trunk/status.xml
URL: http://svn.apache.org/viewcvs/cocoon/blocks/portal/trunk/status.xml?rev=328461&r1=328460&r2=328461&view=diff
==============================================================================
--- cocoon/blocks/portal/trunk/status.xml (original)
+++ cocoon/blocks/portal/trunk/status.xml Tue Oct 25 12:44:00 2005
@@ -65,6 +65,9 @@
  <!-- The following list contains the changes since the latest 2.1.x version. -->
  <changes>
   <release version="@version@" date="@date@">
+    <action dev="CZ" type="add">
+      Add temporary attributes to Layout objects.
+    </action>
     <action dev="CZ" type="update">
       Move Castor support into own package and support roles files for Castor. This makes
       including/excluding the Castor support easier.