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/08/02 20:35:57 UTC

svn commit: r428085 - in /cocoon/trunk: blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/ blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/ blocks/cocoon-portal/cocoon-p...

Author: cziegeler
Date: Wed Aug  2 11:35:55 2006
New Revision: 428085

URL: http://svn.apache.org/viewvc?rev=428085&view=rev
Log:
Further refactoring of Layout objects

Added:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/LayoutDescription.java
      - copied, changed from r427626, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutDescription.java
Removed:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/LayoutDescription.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutDescription.java
Modified:
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/FrameEventAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/LinkEventAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/CompositeLayout.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/Layout.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/LayoutFactory.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/LayoutFeatures.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/impl/AbstractRenderer.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/source/LayoutSource.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/persistence/castor/layout.xml
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/xconf/cocoon-portal-sample.xconf
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-anonymous.xml
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-cocoon.xml
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-test.xml
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal.xml
    cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/copletManagement/LayoutActions.java
    cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/RequestProcessor.java

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/FrameEventAspect.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/FrameEventAspect.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/FrameEventAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/FrameEventAspect.java Wed Aug  2 11:35:55 2006
@@ -47,8 +47,8 @@
             publisher.send(e);
         } else {
             this.getLogger().warn(
-                "the configured layout: "
-                    + layout.getName()
+                "The configured layout: "
+                    + layout.getType()
                     + " is not a FrameLayout.");
         }
     }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/LinkEventAspect.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/LinkEventAspect.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/LinkEventAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/event/aspect/impl/LinkEventAspect.java Wed Aug  2 11:35:55 2006
@@ -55,7 +55,7 @@
         } else {
             this.getLogger().warn(
                 "the configured layout: "
-                    + layout.getName()
+                    + layout.getType()
                     + " is not a LinkLayout.");
         }
     }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/impl/PortalManagerImpl.java Wed Aug  2 11:35:55 2006
@@ -167,7 +167,7 @@
                 a.addCDATAAttribute("id", current.getId());
                 XMLUtils.startElement(ch, "coplet", a);
                 final Layout l = LayoutFeatures.searchLayout(service, current.getId(), rootLayout);
-                Renderer portalLayoutRenderer = this.portalService.getRenderer( l.getRendererName());
+                Renderer portalLayoutRenderer = this.portalService.getRenderer( this.portalService.getLayoutFactory().getRendererName(l));
                 portalLayoutRenderer.toSAX(l, this.portalService, ch);
                 XMLUtils.endElement(ch, "coplet");
             }
@@ -202,7 +202,7 @@
                 return;
             }
 
-            Renderer portalLayoutRenderer = this.portalService.getRenderer( portalLayout.getRendererName());
+            Renderer portalLayoutRenderer = this.portalService.getRenderer( this.portalService.getLayoutFactory().getRendererName(portalLayout));
 
             ch.startDocument();
             portalLayoutRenderer.toSAX(portalLayout, this.portalService, ch);

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/CompositeLayout.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/CompositeLayout.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/CompositeLayout.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/CompositeLayout.java Wed Aug  2 11:35:55 2006
@@ -20,7 +20,6 @@
 import java.util.List;
 
 import org.apache.cocoon.portal.layout.impl.CompositeLayoutImpl;
-import org.apache.cocoon.util.ClassUtils;
 
 /**
  * A composite layout is a layout that contains other layouts.
@@ -93,28 +92,6 @@
     public final void removeItem(Item item) {
         this.items.remove(item);
         item.setParent(null);
-    }
-
-    /**
-     * Create a new item.
-     * This item is not added to the composite layout
-     */
-    public Item createNewItem() {
-        if ( this.description.getItemClassName() == null ) {
-            return new Item();
-        }
-        try {
-            return (Item)ClassUtils.newInstance(this.description.getItemClassName());
-        } catch (Exception ignore) {
-            return new Item();
-        }
-    }
-
-    /**
-     * @return Returns the item class name.
-     */
-    public String getItemClassName() {
-        return this.description.getItemClassName();
     }
 
     /**

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/Layout.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/Layout.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/Layout.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/Layout.java Wed Aug  2 11:35:55 2006
@@ -19,7 +19,6 @@
 import java.lang.reflect.InvocationTargetException;
 import java.util.Map;
 
-import org.apache.cocoon.portal.PortalRuntimeException;
 import org.apache.cocoon.portal.util.PortalUtils;
 import org.apache.commons.collections.map.LinkedMap;
 
@@ -43,38 +42,36 @@
  */
 public abstract class Layout extends AbstractParameters {
 
-    /** The renderer to render this layout if this layout object wants to use a different
-     * render than the default renderer.
+    /**
+     * The renderer to render this layout if this layout object wants to
+     * use a different render than the default renderer.
      */
     protected String rendererName;
 
     /** The parent item of this layout or null if this is a layout root. */
     protected Item parent;
 
-    /** The name of the layout. */
-    protected final String name;
+    /** The type of the layout. */
+    protected final String type;
 
     /** The unique identifier of this layout object or null. */
     protected final String id;
 
-    /** The corresponding layout descripton. */
-    transient protected LayoutDescription description;
-
     /** The temporary attributes. */
     transient protected Map temporaryAttributes = new LinkedMap();
 
     /** Is this layout object static? */
-    protected Boolean isStatic;
+    protected boolean isStatic;
 
     /**
      * Create a new layout object.
      * Never create a layout object directly. Use the
      * {@link LayoutFactory} instead.
      * @param id The unique identifier of the layout object or null.
-     * @param name The name of the layout.
+     * @param name The type of the layout.
      * @see PortalUtils#testId(String)
      */
-    public Layout(String id, String name) {
+    public Layout(String id, String type) {
         // check id, null for id is allowed!
         if ( id != null ) {
             final String idErrorMsg = PortalUtils.testId(id);
@@ -83,14 +80,14 @@
             }
         }
         this.id = id;
-        this.name = name;
+        this.type = type;
     }
 
     /**
-     * The name given from the factory.
+     * The type given from the factory.
      */
-    public String getName() {
-        return this.name;
+    public String getType() {
+        return this.type;
     }
 
     /**
@@ -102,19 +99,6 @@
     }
 
     /**
-     * Set the layout description.
-     */
-    public void setDescription(LayoutDescription description) {
-        if ( this.description != null ) {
-            throw new PortalRuntimeException("The layout has already a layout description.");
-        }
-        this.description = description;
-        if ( this.isStatic == null ) {
-            this.isStatic = Boolean.valueOf(this.description.defaultIsStatic());
-        }
-    }
-
-    /**
      * Get the temporary attributes map.
      * This method never returns null.
      * @return A map with key value pairs.
@@ -150,24 +134,11 @@
         return this.temporaryAttributes.remove(key);
     }
 
-    /**
-     * Get the name of the {@link org.apache.cocoon.portal.layout.renderer.Renderer} to draw this layout.
-     * If this layout has an own renderer {@link #getLayoutRendererName()}
-     * return this, otherwise the default renderer is returned.
-     * @return String The role name
-     */
-    public String getRendererName() {
-        if ( this.rendererName == null ) {
-            return this.description.getDefaultRendererName();
-        }
-        return this.rendererName;        
-    }
-
     /** 
      * Get the name of a custom {@link org.apache.cocoon.portal.layout.renderer.Renderer} for this layout.
      * @return String The role name
      */
-    public String getLayoutRendererName() {
+    public String getRendererName() {
         return this.rendererName;
     }
 
@@ -190,15 +161,15 @@
      * If a layout is static, it is not removed when another layout
      * is max paged.
      */
-    public Boolean isStatic() {
+    public boolean isStatic() {
         return this.isStatic;
     }
 
-    public void setLayoutRendererName(String value) {
+    public void setRendererName(String value) {
         this.rendererName = value;
     }
 
-    public void setIsStatic(Boolean value) {
+    public void setIsStatic(boolean value) {
         this.isStatic = value;
     }
 
@@ -220,7 +191,7 @@
      */
     public String toString() {
         return "Layout (" + this.getClass() + '.' + this.hashCode() +
-               "), name=" + this.name + ", id=" + (this.getId() == null ? "" : this.getId());
+               "), type=" + this.type + ", id=" + (this.getId() == null ? "" : this.getId());
     }
 
     /**
@@ -231,14 +202,13 @@
         Constructor c;
         try {
             c = this.getClass().getConstructor(new Class[] {String.class, String.class});
-            final Layout clone = (Layout)c.newInstance(new Object[] {this.id, this.name}); 
+            final Layout clone = (Layout)c.newInstance(new Object[] {this.id, this.type}); 
 
             // clone fields from AbstractParameters
             clone.parameters = new LinkedMap(this.parameters);
             
             // we don't clone the parent; we just set it to null
             clone.parent = null;
-            clone.description = this.description;
             clone.rendererName = this.rendererName;
             clone.isStatic = this.isStatic;
             clone.temporaryAttributes = new LinkedMap(this.temporaryAttributes);

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/LayoutFactory.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/LayoutFactory.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/LayoutFactory.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/LayoutFactory.java Wed Aug  2 11:35:55 2006
@@ -15,6 +15,8 @@
  */
 package org.apache.cocoon.portal.layout;
 
+import java.util.Collection;
+
 /**
  * This factory is for creating and managing layout objects.
  *
@@ -25,23 +27,32 @@
     String ROLE = LayoutFactory.class.getName();
 
     /**
-     * This method is invoked for a newly loaded profile
+     * Return all available types.
      */
-    void prepareLayout(Layout layout)
-    throws LayoutException;
+    Collection getLayoutTypes();
+
+    /**
+     * Return all available renderer names for a type.
+     */
+    Collection getRendererNames(String type);
+
+    /**
+     * Return the renderer name for the layout.
+     */
+    String getRendererName(Layout layout);
 
     /**
      * Create a new layout instance.
      * The instance is also registered at the profile manager.
      */
-    Layout newInstance(String name)
+    Layout newInstance(String type)
     throws LayoutException;
 
     /**
      * Create a new layout instance.
      * The instance is also registered at the profile manager.
      */
-    Layout newInstance(String name, String id)
+    Layout newInstance(String type, String id)
     throws LayoutException;
 
     /**
@@ -50,4 +61,10 @@
      * the profile manager.
      */
     void remove(Layout layout);
+
+    /**
+     * Create a new item for the layout.
+     * This item is *not* added to the layout.
+     */
+    Item createItem(Layout layout) throws LayoutException;
 }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/LayoutFeatures.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/LayoutFeatures.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/LayoutFeatures.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/LayoutFeatures.java Wed Aug  2 11:35:55 2006
@@ -78,7 +78,7 @@
 
 	public static Item searchItemForMaximizedCoplet(CopletLayout layout) {
 		Item item = layout.getParent();
-		while ( item != null && !item.getParent().isStatic().booleanValue() ) {
+		while ( item != null && !item.getParent().isStatic() ) {
 			if ( item.getParent() == null ) {
 				item = null;
 			} else {

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java Wed Aug  2 11:35:55 2006
@@ -16,8 +16,9 @@
 package org.apache.cocoon.portal.layout.impl;
 
 import java.lang.reflect.Constructor;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.avalon.framework.configuration.Configurable;
@@ -59,8 +60,8 @@
  *   <td><code>null</code></td>
  *  </tr>
  * <tr>
- *   <th>layouts/layout/attribute::name</th>
- *   <td>Unique layout name.</td>
+ *   <th>layouts/layout/attribute::type</th>
+ *   <td>Unique layout type.</td>
  *   <td>req</td>
  *   <td>String</td>
  *   <td><code>null</code></td>
@@ -119,14 +120,14 @@
      */
     protected void configureLayout(Configuration layoutConf) 
     throws ConfigurationException {
-        DefaultLayoutDescription desc = new DefaultLayoutDescription();
-        final String name = layoutConf.getAttribute("name");
+        LayoutDescription desc = new LayoutDescription();
+        final String type = layoutConf.getAttribute("type");
    
         // unique test
-        if ( this.layouts.get(name) != null) {
-            throw new ConfigurationException("Layout name must be unique. Double definition for " + name);
+        if ( this.layouts.get(type) != null) {
+            throw new ConfigurationException("Layout type must be unique. Double definition for " + type);
         }
-        desc.setName(name);
+        desc.setType(type);
         desc.setClassName(layoutConf.getAttribute("class"));        
         desc.setCreateId(layoutConf.getAttributeAsBoolean("create-id", false));
         desc.setItemClassName(layoutConf.getAttribute("item-class", null));
@@ -147,13 +148,13 @@
                 }
             }
             if ( !found ) {
-                throw new ConfigurationException("Default renderer '" + defaultRenderer + "' is not configured for layout '" + name + "'");
+                throw new ConfigurationException("Default renderer '" + defaultRenderer + "' is not configured for layout '" + type + "'");
             }
         } else {
-            throw new ConfigurationException("Default renderer '" + defaultRenderer + "' is not configured for layout '" + name + "'");
+            throw new ConfigurationException("Default renderer '" + defaultRenderer + "' is not configured for layout '" + type + "'");
         }
 
-        this.layouts.put(desc.getName(), desc);
+        this.layouts.put(desc.getType(), desc);
     }
 
     /**
@@ -184,63 +185,30 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.layout.LayoutFactory#prepareLayout(org.apache.cocoon.portal.layout.Layout)
-     */
-    public void prepareLayout(Layout layout)
-    throws LayoutException {
-        if ( layout != null ) {
-
-            this.init();
-
-            final String layoutName = layout.getName();
-            if ( layoutName == null ) {
-                throw new LayoutException("Layout '"+layout.getId()+"' has no associated name.");
-            }
-            DefaultLayoutDescription layoutDescription = (DefaultLayoutDescription)this.layouts.get( layoutName );
-
-            if ( layoutDescription == null ) {
-                throw new LayoutException("LayoutDescription with name '" + layoutName + "' not found.");
-            }
-
-            layout.setDescription( layoutDescription );
-
-            // recursive
-            if ( layout instanceof CompositeLayout ) {
-                CompositeLayout composite = (CompositeLayout)layout;
-
-                Iterator items = composite.getItems().iterator();
-                while ( items.hasNext() ) {
-                    this.prepareLayout( ((Item)items.next()).getLayout() );
-                }
-            }
-        }
-    }
-
-    /**
      * @see org.apache.cocoon.portal.layout.LayoutFactory#newInstance(java.lang.String)
      */
-    public Layout newInstance(String layoutName) 
+    public Layout newInstance(String layoutType) 
     throws LayoutException {
-        return this.newInstance(layoutName, null);
+        return this.newInstance(layoutType, null);
     }
 
     /**
      * @see org.apache.cocoon.portal.layout.LayoutFactory#newInstance(java.lang.String, java.lang.String)
      */
-    public Layout newInstance(String layoutName, String id) 
+    public Layout newInstance(String layoutType, String id) 
     throws LayoutException {
         this.init();
 
-        DefaultLayoutDescription layoutDescription = (DefaultLayoutDescription)this.layouts.get( layoutName );
+        LayoutDescription layoutDescription = (LayoutDescription)this.layouts.get( layoutType );
 
         if ( layoutDescription == null ) {
-            throw new LayoutException("LayoutDescription with name '" + layoutName + "' not found.");
+            throw new LayoutException("LayoutDescription for type '" + layoutType + "' not found.");
         }
 
         String layoutId = id;
         if ( layoutDescription.createId() && layoutId == null ) {
             synchronized (this) {
-                layoutId = layoutName + '_' + idCounter;
+                layoutId = layoutType + '_' + idCounter;
                 idCounter += 1;
             }
         }
@@ -248,12 +216,12 @@
         try {
             Class clazz = ClassUtils.loadClass( layoutDescription.getClassName() );
             Constructor constructor = clazz.getConstructor(new Class[] {String.class, String.class});
-            layout = (Layout)constructor.newInstance(new Object[] {layoutId, layoutName});
+            layout = (Layout)constructor.newInstance(new Object[] {layoutId, layoutType});
         } catch (Exception e) {
             throw new LayoutException("Unable to create new layout instance for: " + layoutDescription , e );
         }
 
-        layout.setDescription( layoutDescription );
+        layout.setIsStatic( layoutDescription.defaultIsStatic() );
 
         this.portalService.getEventManager().send(new LayoutAddedEvent(layout));
 
@@ -297,6 +265,57 @@
             }
 
             this.portalService.getEventManager().send(new LayoutRemovedEvent(layout));
+        }
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.layout.LayoutFactory#getRendererName(org.apache.cocoon.portal.layout.Layout)
+     */
+    public String getRendererName(Layout layout) {
+        if ( layout != null ) {
+            if ( layout.getRendererName() != null ) {
+                return layout.getRendererName();
+            }
+            LayoutDescription description = (LayoutDescription) this.layouts.get(layout.getType());
+            return description.getDefaultRendererName();
+        }
+        return null;
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.layout.LayoutFactory#getLayoutTypes()
+     */
+    public Collection getLayoutTypes() {
+        return this.layouts.keySet();
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.layout.LayoutFactory#getRendererNames(java.lang.String)
+     */
+    public Collection getRendererNames(String type) {
+        LayoutDescription desc = (LayoutDescription) this.layouts.get(type);
+        if ( desc == null ) {
+            return Collections.EMPTY_LIST;
+        }
+        return desc.getRendererNames();
+    }
+
+    /**
+     * @see org.apache.cocoon.portal.layout.LayoutFactory#createItem(org.apache.cocoon.portal.layout.Layout)
+     */
+    public Item createItem(Layout layout)
+    throws LayoutException {
+        LayoutDescription desc = (LayoutDescription) this.layouts.get(layout.getType());
+        if ( desc == null ) {
+            throw new LayoutException("Description not found for layout " + layout);
+        }
+        if ( desc.getItemClassName() == null ) {
+            return new Item();
+        }
+        try {
+            return (Item) ClassUtils.newInstance(desc.getItemClassName());
+        } catch (Exception e ) {
+            throw new LayoutException("Unable to create new item for layout " + layout, e);
         }
     }
 }

Copied: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/LayoutDescription.java (from r427626, cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutDescription.java)
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/LayoutDescription.java?p2=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/LayoutDescription.java&p1=cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutDescription.java&r1=427626&r2=428085&rev=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutDescription.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/impl/LayoutDescription.java Wed Aug  2 11:35:55 2006
@@ -16,23 +16,27 @@
 package org.apache.cocoon.portal.layout.impl;
 
 import java.util.ArrayList;
-import java.util.Iterator;
+import java.util.Collection;
 import java.util.List;
 
-import org.apache.cocoon.portal.layout.LayoutDescription;
+import org.apache.cocoon.portal.layout.LayoutFactory;
 
 
 /**
  * A configured layout.
+ * This description is used to instantiate new layout objects by the {@link LayoutFactory}.
+ * A layout has an associated class and an associated type. The type is used to differentiate
+ * layout objects having the same class but providing different features. For example
+ * a composite layout can either be a row or a column - both use the same implementation class
+ * but have different types.
  *
  * @version $Id$
  */
-public class DefaultLayoutDescription
-    implements LayoutDescription  {
+public class LayoutDescription {
 
     protected String className;
 
-    protected String name;
+    protected String type;
 
     protected boolean createId = true;
 
@@ -44,6 +48,10 @@
 
     protected boolean defaultIsStatic = false;
 
+    /**
+     * This is the name of the renderer used by default to render this layout object.
+     * @return the default renderer name
+     */
     public String getDefaultRendererName() {
         return defaultRendererName;
     }
@@ -56,10 +64,11 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.layout.LayoutDescription#getRendererNames()
+     * Each layout can have several associated renderers.
+     * @return the names of all allowed renderers.
      */
-    public Iterator getRendererNames() {
-        return this.rendererNames.iterator();
+    public Collection getRendererNames() {
+        return this.rendererNames;
     }
 
     public void addRendererName(String rendererName) {
@@ -67,7 +76,9 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.layout.LayoutDescription#getItemClassName()
+     * Each composite layout object can contain items. This is the class name
+     * of the item implementation.
+     * @return The class name of the item.
      */
     public String getItemClassName() {
         return this.itemClassName;
@@ -81,17 +92,19 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.layout.LayoutDescription#getClassName()
+     * The name of the implementation class for this layout object.
+     * @return The class name.
      */
     public String getClassName() {
         return className;
     }
 
     /**
-     * @see org.apache.cocoon.portal.layout.LayoutDescription#getName()
+     * The associated type for this layout object.
+     * @return The configured type.
      */
-    public String getName() {
-        return name;
+    public String getType() {
+        return type;
     }
 
     /**
@@ -104,12 +117,12 @@
     /**
      * @param string
      */
-    public void setName(String string) {
-        name = string;
+    public void setType(String string) {
+        type = string;
     }
 
     /**
-     * @see org.apache.cocoon.portal.layout.LayoutDescription#createId()
+     * Should the layout factory create a unique id for objects of this type?
      */
     public boolean createId() {
         return this.createId;
@@ -120,7 +133,7 @@
     }
 
     /**
-     * @see org.apache.cocoon.portal.layout.LayoutDescription#defaultIsStatic()
+     * Default setting for static.
      */
     public boolean defaultIsStatic() {
         return this.defaultIsStatic;

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/aspect/impl/AbstractCompositeAspect.java Wed Aug  2 11:35:55 2006
@@ -61,7 +61,7 @@
 	                Item item = (Item) iter.next();
 	                if ( item.equals(maximizedInfo.item) ) {
 	                    this.processMaximizedItem(rendererContext, item, maximizedInfo.layout, handler, service);
-	                } else if ( item.getLayout().isStatic().booleanValue() ) {
+	                } else if ( item.getLayout().isStatic() ) {
 	                    this.processItem(rendererContext, item, handler, service);	                	
 	                }
 	            }            	
@@ -109,7 +109,7 @@
      */
     protected void processLayout(Layout layout, PortalService service, ContentHandler handler) throws SAXException {
         if ( layout != null ) {
-            final String rendererName = layout.getRendererName();
+            final String rendererName = service.getLayoutFactory().getRendererName(layout);
             final Renderer renderer = service.getRenderer(rendererName);
             renderer.toSAX(layout, service, handler);
         }

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/impl/AbstractRenderer.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/impl/AbstractRenderer.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/impl/AbstractRenderer.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/layout/renderer/impl/AbstractRenderer.java Wed Aug  2 11:35:55 2006
@@ -113,7 +113,7 @@
      * Process a Layout
      */
     protected void processLayout(Layout layout, PortalService service, ContentHandler handler) throws SAXException {
-        final String rendererName = layout.getRendererName();
+        final String rendererName = service.getLayoutFactory().getRendererName(layout);
         Renderer renderer = null;
         renderer = service.getRenderer(rendererName);
         renderer.toSAX(layout, service, handler);

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/AbstractProfileManager.java Wed Aug  2 11:35:55 2006
@@ -177,9 +177,6 @@
             }
             if (object instanceof Layout) {
                 preparableObject = this.checkAvailability((Layout)object);
-                if ( preparableObject != null ) {
-                    this.portalService.getLayoutFactory().prepareLayout((Layout)preparableObject);
-                }
             } else if (object instanceof Collection) {
                 final Iterator iterator = ((Collection)preparableObject).iterator();
                 while (iterator.hasNext()) {

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/profile/impl/StaticProfileManager.java Wed Aug  2 11:35:55 2006
@@ -113,9 +113,6 @@
             layouts.put(null, layout); //save root with null as key
             cacheLayouts(layouts, layout);
 
-            LayoutFactory factory = this.portalService.getLayoutFactory();
-            factory.prepareLayout(layout);
-
             // store the new values in the service
             if (newValidity != null) {
                 objects = new Object[] { layouts, newValidity };

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/source/LayoutSource.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/source/LayoutSource.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/source/LayoutSource.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/java/org/apache/cocoon/portal/source/LayoutSource.java Wed Aug  2 11:35:55 2006
@@ -142,7 +142,7 @@
 	 */
 	public void toSAX(ContentHandler handler) 
     throws SAXException {
-        Renderer portalLayoutRenderer = this.portalService.getRenderer( this.layout.getRendererName());
+        Renderer portalLayoutRenderer = this.portalService.getRenderer( this.portalService.getLayoutFactory().getRendererName(this.layout));
 
         handler.startDocument();
         portalLayoutRenderer.toSAX(this.layout, this.portalService, handler);

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/persistence/castor/layout.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/persistence/castor/layout.xml?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/persistence/castor/layout.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-impl/src/main/resources/org/apache/cocoon/portal/persistence/castor/layout.xml Wed Aug  2 11:35:55 2006
@@ -31,8 +31,8 @@
          extends="org.apache.cocoon.portal.layout.AbstractParameters"
          verify-constructable="false">
 
-    <field name="layoutRendererName" type="java.lang.String">
-      <bind-xml name="layout-renderer-name" node="attribute"/>
+    <field name="rendererName" type="java.lang.String">
+      <bind-xml name="renderer" node="attribute"/>
     </field>
 
     <field name="static" type="java.lang.Boolean" set-method="setIsStatic" get-method="isStatic">
@@ -49,8 +49,8 @@
       <bind-xml name="id" node="attribute" />
     </field>
 
-    <field name="name" type="java.lang.String" set-method="%2" get-method="getName">
-      <bind-xml name="name" node="attribute"/>
+    <field name="type" type="java.lang.String" set-method="%2" get-method="getType">
+      <bind-xml name="type" node="attribute"/>
     </field>
 
     <field name="layoutKey" type="java.lang.String">
@@ -70,8 +70,8 @@
       <bind-xml name="id" node="attribute" />
     </field>
 
-    <field name="name" type="java.lang.String" set-method="%2" get-method="getName">
-      <bind-xml name="name" node="attribute"/>
+    <field name="type" type="java.lang.String" set-method="%2" get-method="getType">
+      <bind-xml name="type" node="attribute"/>
     </field>
 
     <field name="items" type="org.apache.cocoon.portal.layout.Item"
@@ -90,8 +90,8 @@
       <bind-xml name="id" node="attribute" />
     </field>
 
-    <field name="name" type="java.lang.String" set-method="%2" get-method="getName">
-      <bind-xml name="name" node="attribute"/>
+    <field name="type" type="java.lang.String" set-method="%2" get-method="getType">
+      <bind-xml name="type" node="attribute"/>
     </field>
 
     <field name="copletInstanceId"
@@ -109,8 +109,8 @@
       <bind-xml name="id" node="attribute" />
     </field>
 
-    <field name="name" type="java.lang.String" set-method="%2" get-method="getName">
-      <bind-xml name="name" node="attribute"/>
+    <field name="type" type="java.lang.String" set-method="%2" get-method="getType">
+      <bind-xml name="type" node="attribute"/>
     </field>
 
     <field name="source" type="java.lang.String"/>

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-portlet-impl/src/main/java/org/apache/cocoon/portal/pluto/TestProfileManager.java Wed Aug  2 11:35:55 2006
@@ -95,7 +95,6 @@
                     if ( portletNames.size() == 0 || portletNames.contains(cd.getId())) {
                         final CopletLayout copletLayout = new CopletLayout(null, "coplet");
                         copletLayout.setCopletInstanceId(cid.getId());
-                        copletLayout.setLayoutRendererName("portlet-window");
                         final Item item = new Item();
                         item.setLayout(copletLayout);
                         rootLayout.addItem(item);
@@ -146,7 +145,6 @@
                         if ( portletNames.contains(cid.getCopletDefinition().getId())) {
                             final CopletLayout copletLayout = new CopletLayout(null, "coplet");
                             copletLayout.setCopletInstanceId(cid.getId());
-                            copletLayout.setLayoutRendererName("portlet-window");
                             final Item item = new Item();
                             item.setLayout(copletLayout);
                             rootLayout.addItem(item);

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/xconf/cocoon-portal-sample.xconf
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/xconf/cocoon-portal-sample.xconf?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/xconf/cocoon-portal-sample.xconf (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/config/xconf/cocoon-portal-sample.xconf Wed Aug  2 11:35:55 2006
@@ -309,19 +309,19 @@
   <!-- Layout factory configuration -->
   <portal-layout-factory>
     <layouts>
-      <layout name="column" 
+      <layout type="column" 
               class="org.apache.cocoon.portal.layout.impl.CompositeLayoutImpl">
         <renderers default="column">
           <renderer name="column"/>
         </renderers>
       </layout>
-      <layout name="row" 
+      <layout type="row" 
               class="org.apache.cocoon.portal.layout.impl.CompositeLayoutImpl">
         <renderers default="row">
           <renderer name="row"/>
         </renderers>
       </layout>
-      <layout name="tab" 
+      <layout type="tab" 
               class="org.apache.cocoon.portal.layout.impl.CompositeLayoutImpl"
               item-class="org.apache.cocoon.portal.layout.NamedItem"
               default-is-static="true">
@@ -329,14 +329,14 @@
           <renderer name="tab"/>
         </renderers>
       </layout>
-      <layout name="rawtab" 
+      <layout type="rawtab" 
               class="org.apache.cocoon.portal.layout.impl.CompositeLayoutImpl"
               item-class="org.apache.cocoon.portal.layout.NamedItem">
         <renderers default="rawtab">
           <renderer name="rawtab"/>
         </renderers>
       </layout>
-      <layout name="linktab"
+      <layout type="linktab"
               class="org.apache.cocoon.portal.layout.impl.CompositeLayoutImpl"
               item-class="org.apache.cocoon.portal.layout.NamedItem"
               default-is-static="true">
@@ -344,21 +344,22 @@
           <renderer name="linktab"/>
         </renderers>
       </layout>
-      <layout name="frame" 
+      <layout type="frame" 
               class="org.apache.cocoon.portal.layout.impl.FrameLayout"
               create-id="true">
         <renderers default="frame">
           <renderer name="frame"/>
         </renderers>
       </layout>
-      <layout name="coplet" 
+      <layout type="coplet" 
               class="org.apache.cocoon.portal.layout.impl.CopletLayout">
         <renderers default="window">
           <renderer name="window"/>
           <renderer name="nowindow"/>
+          <renderer name="borderless-window"/>
         </renderers>
       </layout>
-      <layout name="link"
+      <layout type="link"
               class="org.apache.cocoon.portal.layout.impl.LinkLayout"
               create-id="true">
         <renderers default="link">

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-anonymous.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-anonymous.xml?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-anonymous.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-anonymous.xml Wed Aug  2 11:35:55 2006
@@ -14,19 +14,19 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<!-- SVN $Id$ -->
-<composite-layout name="row">
+<!-- @version $Id$ -->
+<composite-layout type="row">
   <item>
-    <composite-layout name="column">
+    <composite-layout type="column">
       <item>
         <parameter name="width" value="60%"/>
-        <coplet-layout name="coplet" layout-renderer-name="borderless-window">
+        <coplet-layout type="coplet" renderer="borderless-window">
           <coplet-instance>PortalIntro_1</coplet-instance>
         </coplet-layout>
       </item>
       <item>
         <parameter name="width" value="40%"/>
-        <coplet-layout name="coplet" layout-renderer-name="nowindow">
+        <coplet-layout type="coplet" renderer="nowindow">
           <coplet-instance>Login_1</coplet-instance>
         </coplet-layout>
       </item>
@@ -34,16 +34,16 @@
   </item>
   <item>
     <parameter name="height" value="500"/>
-    <composite-layout name="column">
+    <composite-layout type="column">
       <item>
         <parameter name="width" value="25%"/>
-        <coplet-layout name="coplet" layout-renderer-name="borderless-window">
+        <coplet-layout type="coplet" renderer="borderless-window">
           <coplet-instance>PortalLeft_1</coplet-instance>
         </coplet-layout>
       </item>
       <item>
         <parameter name="width" value="75%"/>
-        <coplet-layout name="coplet" layout-renderer-name="borderless-window">
+        <coplet-layout type="coplet" renderer="borderless-window">
           <coplet-instance>PortalRight_1</coplet-instance>
         </coplet-layout>
       </item>
@@ -51,7 +51,7 @@
   </item>
   <item>
     <parameter name="height" value="500"/>
-    <coplet-layout name="coplet" layout-renderer-name="borderless-window">
+    <coplet-layout type="coplet" renderer="borderless-window">
       <coplet-instance>PortalBottom_1</coplet-instance>
     </coplet-layout>
   </item>

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-cocoon.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-cocoon.xml?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-cocoon.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-cocoon.xml Wed Aug  2 11:35:55 2006
@@ -15,23 +15,23 @@
   limitations under the License.
 -->
 <!-- SVN $Id$ -->
-<composite-layout name="tab" id="maintab">
+<composite-layout type="tab" id="maintab">
 
   <named-item name="Main">
-    <coplet-layout name="coplet">
+    <coplet-layout type="coplet">
       <coplet-instance>PortalDemo_1</coplet-instance>
     </coplet-layout>
   </named-item>
 
   <named-item name="Gallery">
-    <composite-layout name="column">
+    <composite-layout type="column">
       <item>
-        <coplet-layout name="coplet">
+        <coplet-layout type="coplet">
           <coplet-instance>GalleryPetstore_1</coplet-instance>
         </coplet-layout>
       </item>
       <item>
-        <coplet-layout name="coplet">
+        <coplet-layout type="coplet">
           <coplet-instance>GalleryViewer_1</coplet-instance>
         </coplet-layout>
       </item>
@@ -40,26 +40,26 @@
 <!-- 
 
   <named-item name="JSR-168">
-    <composite-layout name="row">
+    <composite-layout type="row">
       <item>
-        <coplet-layout name="coplet" layout-renderer-name="portlet-window">
+        <coplet-layout type="coplet">
           <coplet-instance>TestPortlet_1</coplet-instance>
         </coplet-layout>
       </item>
       <item>
-        <coplet-layout name="coplet" layout-renderer-name="portlet-window">
+        <coplet-layout type="coplet">
           <coplet-instance>CocoonPortlet</coplet-instance>
         </coplet-layout>
       </item>
       <item>
-        <composite-layout name="column">
+        <composite-layout type="column">
           <item>
-            <coplet-layout name="coplet" layout-renderer-name="portlet-window">
+            <coplet-layout type="coplet">
               <coplet-instance>Portlet_1</coplet-instance>
             </coplet-layout>
           </item>
           <item>
-            <coplet-layout name="coplet" layout-renderer-name="portlet-window">
+            <coplet-layout type="coplet">
               <coplet-instance>Portlet_2</coplet-instance>
             </coplet-layout>
           </item>
@@ -69,20 +69,20 @@
   </named-item>
 
   <named-item name="Portals Bridges">
-    <coplet-layout name="coplet" layout-renderer-name="portlet-window">
+    <coplet-layout type="coplet">
       <coplet-instance>Petstore_1</coplet-instance>
     </coplet-layout>
   </named-item>
 
   <named-item name="WSRP">
-    <composite-layout name="column">
+    <composite-layout type="column">
       <item>
-        <coplet-layout name="coplet" layout-renderer-name="wsrp-window">
+        <coplet-layout type="coplet">
           <coplet-instance>WSRP_Calc_1</coplet-instance>
       </coplet-layout>
       </item>
       <item>
-        <coplet-layout name="coplet" layout-renderer-name="wsrp-window">
+        <coplet-layout type="coplet">
           <coplet-instance>WSRP_Test_1</coplet-instance>
       </coplet-layout>
       </item>
@@ -91,34 +91,34 @@
  -->
 
   <named-item name="Apps">
-    <composite-layout name="row">
+    <composite-layout type="row">
       <item>
-        <composite-layout name="column">
+        <composite-layout type="column">
           <item>
             <parameter name="width" value="50%" />
-            <coplet-layout name="coplet" >
+            <coplet-layout type="coplet" >
               <coplet-instance>app_test_1</coplet-instance>
             </coplet-layout>
           </item>
           <item>
             <parameter name="width" value="50%" />
-            <coplet-layout name="coplet" >
+            <coplet-layout type="coplet" >
               <coplet-instance>app_test_2</coplet-instance>
             </coplet-layout>
           </item>
         </composite-layout>
       </item>
       <item>
-        <composite-layout name="column">
+        <composite-layout type="column">
           <item>
             <parameter name="width" value="50%" />
-            <coplet-layout name="coplet" >
+            <coplet-layout type="coplet" >
               <coplet-instance>app_test_3</coplet-instance>
             </coplet-layout>
           </item>
           <item>
             <parameter name="width" value="50%" />
-            <coplet-layout name="coplet" >
+            <coplet-layout type="coplet" >
               <coplet-instance>app_test_4</coplet-instance>
             </coplet-layout>
           </item>
@@ -128,7 +128,7 @@
   </named-item>
 
   <named-item name="AppCoplet">
-    <coplet-layout name="coplet">
+    <coplet-layout type="coplet">
       <coplet-instance>Google_1</coplet-instance>
     </coplet-layout>
   </named-item>

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-test.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-test.xml?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-test.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal-user-test.xml Wed Aug  2 11:35:55 2006
@@ -15,38 +15,38 @@
   limitations under the License.
 -->
 <!-- SVN $Id$ -->
-<composite-layout name="tab" id="maintab">
+<composite-layout type="tab" id="maintab">
 
   <named-item name="Sample One">
-    <composite-layout name="column" static="true">
+    <composite-layout type="column" static="true">
       <item>
-        <coplet-layout name="coplet" static="true">
+        <coplet-layout type="coplet" static="true">
           <coplet-instance>static_sample_1</coplet-instance>
         </coplet-layout>
       </item>
       <item>
-        <composite-layout name="row">
+        <composite-layout type="row">
           <item>
-            <coplet-layout name="coplet">
+            <coplet-layout type="coplet">
               <coplet-instance>GalleryPetstore_1</coplet-instance>
             </coplet-layout>
           </item>
           <item>
-            <coplet-layout name="coplet">
+            <coplet-layout type="coplet">
               <coplet-instance>GalleryViewer_1</coplet-instance>
             </coplet-layout>
           </item>
         </composite-layout>
       </item>
       <item>
-        <composite-layout name="row">
+        <composite-layout type="row">
           <item>
-            <coplet-layout name="coplet" layout-renderer-name="portlet-window">
+            <coplet-layout type="coplet">
               <coplet-instance>TestPortlet_1</coplet-instance>
             </coplet-layout>
           </item>
           <item>
-            <coplet-layout name="coplet" layout-renderer-name="portlet-window">
+            <coplet-layout type="coplet">
               <coplet-instance>CocoonPortlet</coplet-instance>
             </coplet-layout>
           </item>
@@ -56,19 +56,19 @@
   </named-item>
 
   <named-item name="Sample Two">
-    <composite-layout name="column" static="true">
+    <composite-layout type="column" static="true">
       <item>
-        <coplet-layout name="coplet" static="true">
+        <coplet-layout type="coplet" static="true">
           <coplet-instance>static_sample_1</coplet-instance>
         </coplet-layout>
       </item>
       <item>
-        <coplet-layout name="coplet" >
+        <coplet-layout type="coplet" >
           <coplet-instance>app_test_1</coplet-instance>
         </coplet-layout>
       </item>
       <item>
-        <coplet-layout name="coplet" >
+        <coplet-layout type="coplet" >
           <coplet-instance>app_test_2</coplet-instance>
         </coplet-layout>
       </item>

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal.xml
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal.xml?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal.xml (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-sample/src/main/resources/COB-INF/profiles/layout/portal.xml Wed Aug  2 11:35:55 2006
@@ -15,32 +15,32 @@
   limitations under the License.
 -->
 <!-- SVN $Id$ -->
-<composite-layout name="tab" id="maintab">
+<composite-layout type="tab" id="maintab">
 
   <named-item name="Main">
-    <coplet-layout name="coplet">
+    <coplet-layout type="coplet">
       <coplet-instance>PortalDemo_1</coplet-instance>
     </coplet-layout>
   </named-item>
 
   <named-item name="News">
-    <composite-layout name="column">
+    <composite-layout type="column">
       <parameter name="border" value="0" />
       <parameter name="border-color" value="#225599" />
       <item>
         <parameter name="width" value="50%" />
-        <composite-layout name="row">
+        <composite-layout type="row">
           <parameter name="border" value="0" />
           <parameter name="border-color" value="#AACCFF" />
           <item>
-            <coplet-layout name="coplet">
+            <coplet-layout type="coplet">
               <parameter name="border" value="0" />
               <parameter name="border-color" value="#AA0000" />
               <coplet-instance>Newsweek_1</coplet-instance>
             </coplet-layout>
           </item>
           <item>
-            <coplet-layout name="coplet">
+            <coplet-layout type="coplet">
               <parameter name="border" value="0"/>
               <parameter name="border-color" value="#AA0000" />
               <coplet-instance>NYTBusiness_1</coplet-instance>
@@ -50,25 +50,25 @@
       </item>
       <item>
         <parameter name="width" value="25%" />
-        <composite-layout name="row">
+        <composite-layout type="row">
           <parameter name="border" value="0" />
           <parameter name="border-color" value="#AACCFF" />
           <item>
-            <coplet-layout name="coplet">
+            <coplet-layout type="coplet">
               <parameter name="border" value="0" />
               <parameter name="border-color" value="#AA0000" />
               <coplet-instance>BBCNews_1</coplet-instance>
             </coplet-layout>
           </item>
           <item>
-            <composite-layout name="column">
+            <composite-layout type="column">
               <item>
-                <frame-layout name="frame" id="a">
+                <frame-layout type="frame" id="a">
                   <source>cocoon:/coplets/news/nyt_sport.rss</source>
                 </frame-layout>
               </item>
               <item>
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <parameter name="border" value="0" />
                   <parameter name="border-color" value="#AA0000" />
                   <coplet-instance>CNETNews_1</coplet-instance>
@@ -80,19 +80,19 @@
       </item>
       <item>
         <parameter name="width" value="25%" />
-        <composite-layout name="row">
+        <composite-layout type="row">
           <parameter name="border" value="0" />
           <parameter name="border-color" value="#AACCFF" />
           <item>
             <parameter name="bgcolor" value="#CCCCCC" />
-            <coplet-layout name="coplet">
+            <coplet-layout type="coplet">
               <parameter name="border" value="0" />
               <parameter name="border-color" value="#AA0000" />
               <coplet-instance>CSTNews_1</coplet-instance>
             </coplet-layout>
           </item>
           <item>
-            <coplet-layout name="coplet">
+            <coplet-layout type="coplet">
               <parameter name="border" value="0" />
               <parameter name="border-color" value="#AA0000" />
               <coplet-instance>CNNEurope_1</coplet-instance>
@@ -104,21 +104,21 @@
   </named-item>
 
   <named-item name="Weblogs">
-    <composite-layout name="column">
+    <composite-layout type="column">
       <item>
-        <composite-layout name="row">
+        <composite-layout type="row">
           <item>
             <parameter name="width" value="20%" />
-            <coplet-layout name="coplet">
+            <coplet-layout type="coplet">
               <coplet-instance>CZWeblog_1</coplet-instance>
             </coplet-layout>
           </item>
         </composite-layout>
       </item>
       <item>
-        <composite-layout name="row">
+        <composite-layout type="row">
           <item>
-            <coplet-layout name="coplet">
+            <coplet-layout type="coplet">
               <coplet-instance>Weblog_1</coplet-instance>
             </coplet-layout>
           </item>
@@ -128,14 +128,14 @@
   </named-item>
 
   <named-item name="TabDemo1">
-    <composite-layout name="tab">
+    <composite-layout type="tab">
       <named-item name="One">
-        <coplet-layout name="coplet">
+        <coplet-layout type="coplet">
           <coplet-instance>CZWeblog_1</coplet-instance>
         </coplet-layout>
       </named-item>
       <named-item name="Two">
-        <coplet-layout name="coplet">
+        <coplet-layout type="coplet">
           <coplet-instance>Weblog_1</coplet-instance>
         </coplet-layout>
       </named-item>
@@ -143,14 +143,14 @@
   </named-item>
 
   <named-item name="TabDemo2">
-    <composite-layout name="linktab">
+    <composite-layout type="linktab">
       <named-item name="One">
-        <coplet-layout name="coplet">
+        <coplet-layout type="coplet">
           <coplet-instance>CZWeblog_1</coplet-instance>
         </coplet-layout>
       </named-item>
       <named-item name="Two">
-        <coplet-layout name="coplet">
+        <coplet-layout type="coplet">
           <coplet-instance>Weblog_1</coplet-instance>
         </coplet-layout>
       </named-item>
@@ -158,28 +158,28 @@
   </named-item>
 
   <named-item name="TabDemo3">
-    <composite-layout name="linktab">
+    <composite-layout type="linktab">
       <named-item name="One">
-        <coplet-layout name="coplet">
+        <coplet-layout type="coplet">
           <coplet-instance>CZWeblog_1</coplet-instance>
         </coplet-layout>
       </named-item>
       <named-item name="Two">
-        <composite-layout name="tab">
+        <composite-layout type="tab">
           <named-item name="Weblog">
-             <coplet-layout name="coplet">
+             <coplet-layout type="coplet">
           <coplet-instance>Weblog_1</coplet-instance>
         </coplet-layout>
           </named-item>
           <named-item name="Gallery">
-            <composite-layout name="column">
+            <composite-layout type="column">
               <item>
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>GalleryPetstore_1</coplet-instance>
                </coplet-layout>
               </item>
               <item>
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>GalleryViewer_1</coplet-instance>
                 </coplet-layout>
               </item>
@@ -194,13 +194,13 @@
     <!-- This is the basket demo. Usually you would only have the user
     tab for users and the admin tab for the admin and not both at
     the same time (But this is a demo...) -->
-    <composite-layout name="tab" id="baskettab">
+    <composite-layout type="tab" id="baskettab">
       <named-item name="List">
-        <composite-layout name="row">
+        <composite-layout type="row">
           <item>
-            <composite-layout name="column">
+            <composite-layout type="column">
               <item>
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket_sample_8</coplet-instance>
                 </coplet-layout>
               </item>
@@ -209,44 +209,44 @@
         </composite-layout>
       </named-item>
       <named-item name="Input">
-        <composite-layout name="row">
+        <composite-layout type="row">
           <item>
-            <composite-layout name="column">
+            <composite-layout type="column">
               <item>
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket_sample_1</coplet-instance>
                 </coplet-layout>
               </item>
               <item>
-                <coplet-layout name="coplet" >
+                <coplet-layout type="coplet" >
                   <coplet-instance>basket_sample_2</coplet-instance>
                 </coplet-layout>
               </item>
             </composite-layout>
           </item>
           <item>
-            <composite-layout name="column">
+            <composite-layout type="column">
               <item>
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket_sample_3</coplet-instance>
                 </coplet-layout>
               </item>
               <item>
-                <coplet-layout name="coplet" >
+                <coplet-layout type="coplet" >
                   <coplet-instance>basket_sample_4</coplet-instance>
                 </coplet-layout>
               </item>
             </composite-layout>
           </item>
           <item>
-            <composite-layout name="column">
+            <composite-layout type="column">
               <item>
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket_sample_5</coplet-instance>
                 </coplet-layout>
               </item>
               <item>
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket_sample_6</coplet-instance>
                 </coplet-layout>
               </item>
@@ -255,50 +255,50 @@
         </composite-layout>
       </named-item>
       <named-item name="Content">
-        <composite-layout name="row">
+        <composite-layout type="row">
           <item>
-            <composite-layout name="tab">
+            <composite-layout type="tab">
               <named-item name="All">
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket</coplet-instance>
                 </coplet-layout>
               </named-item>
               <named-item name="Document">
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket_document</coplet-instance>
                 </coplet-layout>
               </named-item>
               <named-item name="Request">
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket_request</coplet-instance>
                 </coplet-layout>
               </named-item>
               <named-item name="Result">
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket_result</coplet-instance>
                 </coplet-layout>
               </named-item>
               <named-item name="Notepad">
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket_notepad</coplet-instance>
                 </coplet-layout>
               </named-item>
               <named-item name="Folder">
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket_folder</coplet-instance>
                 </coplet-layout>
               </named-item>
             </composite-layout>
           </item>
           <item>
-            <composite-layout name="column">
+            <composite-layout type="column">
               <item>
-                <coplet-layout name="coplet" id="basket-content">
+                <coplet-layout type="coplet" id="basket-content">
                   <coplet-instance>basketcontent</coplet-instance>
                 </coplet-layout>
               </item>
               <item>
-                <coplet-layout name="coplet">
+                <coplet-layout type="coplet">
                   <coplet-instance>basket_sample_7</coplet-instance>
                 </coplet-layout>
               </item>         
@@ -307,19 +307,19 @@
         </composite-layout>
       </named-item>
       <named-item name="Admin">
-        <composite-layout name="column">
+        <composite-layout type="column">
           <item>
-            <coplet-layout name="coplet" >
+            <coplet-layout type="coplet" >
               <coplet-instance>BasketAdmin</coplet-instance>
             </coplet-layout>
           </item>
           <item>
-            <coplet-layout name="coplet">
+            <coplet-layout type="coplet">
               <coplet-instance>Basket_admin</coplet-instance>
             </coplet-layout>
           </item>
           <item>
-            <coplet-layout name="coplet" id="basket-content-admin">
+            <coplet-layout type="coplet" id="basket-content-admin">
               <coplet-instance>basket_content</coplet-instance>
             </coplet-layout>
           </item>

Modified: cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/copletManagement/LayoutActions.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/copletManagement/LayoutActions.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/copletManagement/LayoutActions.java (original)
+++ cocoon/trunk/blocks/cocoon-portal/cocoon-portal-tools-impl/src/main/java/org/apache/cocoon/portal/tools/copletManagement/LayoutActions.java Wed Aug  2 11:35:55 2006
@@ -198,7 +198,7 @@
 			lay = (Layout) layoutObj;
 
 		// add tab:
-		if(lay != null && lay.getName().equals("tab")) {
+		if(lay != null && lay.getType().equals("tab")) {
 			NamedItem tab = new NamedItem();
 			tab.setName(name);
 			((CompositeLayout) lay).addItem(tab);

Modified: cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/RequestProcessor.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/RequestProcessor.java?rev=428085&r1=428084&r2=428085&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/RequestProcessor.java (original)
+++ cocoon/trunk/core/cocoon-core/src/main/java/org/apache/cocoon/servlet/RequestProcessor.java Wed Aug  2 11:35:55 2006
@@ -16,6 +16,7 @@
 package org.apache.cocoon.servlet;
 
 import java.io.IOException;
+import java.util.Enumeration;
 import java.util.HashMap;
 
 import javax.servlet.ServletContext;