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 2003/06/14 18:58:02 UTC
cvs commit: cocoon-2.1/src/blocks/portal/conf portal.xconf
cziegeler 2003/06/14 09:58:02
Modified: src/blocks/portal/java/org/apache/cocoon/portal/layout/impl
DefaultLayoutFactory.java
DefaultLayoutDescription.java
src/blocks/portal/java/org/apache/cocoon/portal/layout
AbstractLayout.java LayoutDescription.java
src/blocks/portal/conf portal.xconf
Log:
Several renderers can now be configured for a layout
Revision Changes Path
1.11 +24 -5 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java
Index: DefaultLayoutFactory.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutFactory.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DefaultLayoutFactory.java 6 Jun 2003 11:33:37 -0000 1.10
+++ DefaultLayoutFactory.java 14 Jun 2003 16:58:02 -0000 1.11
@@ -132,8 +132,27 @@
desc.setName(name);
desc.setClassName(layoutsConf[i].getAttribute("class"));
desc.setCreateId(layoutsConf[i].getAttributeAsBoolean("create-id", false));
- desc.setRendererName(layoutsConf[i].getAttribute("renderer"));
+ // the renderers
+ final String defaultRenderer = layoutsConf[i].getChild("renderers").getAttribute("default");
+ desc.setDefaultRendererName(defaultRenderer);
+
+ final Configuration[] rendererConfs = layoutsConf[i].getChild("renderers").getChildren("renderer");
+ if ( rendererConfs != null ) {
+ boolean found = false;
+ for(int m=0; m < rendererConfs.length; m++) {
+ final String rName = rendererConfs[m].getAttribute("name");
+ desc.addRendererName(rName);
+ if ( defaultRenderer.equals(rName) ) {
+ found = true;
+ }
+ }
+ if ( !found ) {
+ throw new ConfigurationException("Default renderer '" + defaultRenderer + "' is not configured for layout '" + name + "'");
+ }
+ } else {
+ throw new ConfigurationException("Default renderer '" + defaultRenderer + "' is not configured for layout '" + name + "'");
+ }
// and now the aspects
final Configuration[] aspectsConf = layoutsConf[i].getChild("aspects").getChildren("aspect");
if (aspectsConf != null) {
@@ -160,12 +179,12 @@
final String layoutName = layout.getName();
if ( layoutName == null ) {
- throw new ProcessingException("Layout "+layout.getId()+" has no associated name.");
+ throw new ProcessingException("Layout '"+layout.getId()+"' has no associated name.");
}
Object[] o = (Object[]) this.layouts.get( layoutName );
if ( o == null ) {
- throw new ProcessingException("LayoutDescription with name " + layoutName + " not found.");
+ throw new ProcessingException("LayoutDescription with name '" + layoutName + "' not found.");
}
DefaultLayoutDescription layoutDescription = (DefaultLayoutDescription)o[0];
@@ -188,7 +207,7 @@
Object[] o = (Object[]) this.layouts.get( layoutName );
if ( o == null ) {
- throw new ProcessingException("LayoutDescription with name " + layoutName + " not found.");
+ throw new ProcessingException("LayoutDescription with name '" + layoutName + "' not found.");
}
DefaultLayoutDescription layoutDescription = (DefaultLayoutDescription)o[0];
1.3 +22 -6 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutDescription.java
Index: DefaultLayoutDescription.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/impl/DefaultLayoutDescription.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DefaultLayoutDescription.java 20 May 2003 14:06:42 -0000 1.2
+++ DefaultLayoutDescription.java 14 Jun 2003 16:58:02 -0000 1.3
@@ -50,6 +50,10 @@
*/
package org.apache.cocoon.portal.layout.impl;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
import org.apache.cocoon.portal.factory.impl.AbstractProducibleDescription;
import org.apache.cocoon.portal.layout.LayoutDescription;
@@ -65,20 +69,32 @@
extends AbstractProducibleDescription
implements LayoutDescription {
- protected String rendererName;
+ protected String defaultRendererName;
+
+ protected List rendererNames = new ArrayList(2);
/**
* @return
*/
- public String getRendererName() {
- return rendererName;
+ public String getDefaultRendererName() {
+ return defaultRendererName;
}
/**
* @param string
*/
- public void setRendererName(String string) {
- rendererName = string;
+ public void setDefaultRendererName(String string) {
+ defaultRendererName = string;
}
+ /**
+ * @return the names of all allowed renderers
+ */
+ public Iterator getRendererNames() {
+ return this.rendererNames.iterator();
+ }
+
+ public void addRendererName(String name) {
+ this.rendererNames.add( name );
+ }
}
1.9 +2 -2 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java
Index: AbstractLayout.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/AbstractLayout.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- AbstractLayout.java 22 May 2003 06:55:15 -0000 1.8
+++ AbstractLayout.java 14 Jun 2003 16:58:02 -0000 1.9
@@ -88,7 +88,7 @@
*/
public String getRendererName() {
if ( this.rendererName == null ) {
- return ((LayoutDescription)this.description).getRendererName();
+ return ((LayoutDescription)this.description).getDefaultRendererName();
}
return this.rendererName;
}
1.3 +10 -3 cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/LayoutDescription.java
Index: LayoutDescription.java
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/java/org/apache/cocoon/portal/layout/LayoutDescription.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- LayoutDescription.java 20 May 2003 14:06:43 -0000 1.2
+++ LayoutDescription.java 14 Jun 2003 16:58:02 -0000 1.3
@@ -50,6 +50,8 @@
*/
package org.apache.cocoon.portal.layout;
+import java.util.Iterator;
+
import org.apache.cocoon.portal.factory.ProducibleDescription;
@@ -65,7 +67,12 @@
extends ProducibleDescription {
/**
- * @return
+ * @return the default renderer name
+ */
+ String getDefaultRendererName();
+
+ /**
+ * @return the names of all allowed renderers
*/
- String getRendererName();
+ Iterator getRendererNames();
}
1.16 +20 -10 cocoon-2.1/src/blocks/portal/conf/portal.xconf
Index: portal.xconf
===================================================================
RCS file: /home/cvs/cocoon-2.1/src/blocks/portal/conf/portal.xconf,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- portal.xconf 10 Jun 2003 19:38:54 -0000 1.15
+++ portal.xconf 14 Jun 2003 16:58:02 -0000 1.16
@@ -136,31 +136,41 @@
role="org.apache.cocoon.portal.layout.LayoutFactory">
<layouts>
<layout name="column"
- class="org.apache.cocoon.portal.layout.impl.CompositeLayout"
- renderer="column">
+ class="org.apache.cocoon.portal.layout.impl.CompositeLayout">
+ <renderers default="column">
+ <renderer name="column"/>
+ </renderers>
</layout>
<layout name="row"
- class="org.apache.cocoon.portal.layout.impl.CompositeLayout"
- renderer="row">
+ class="org.apache.cocoon.portal.layout.impl.CompositeLayout">
+ <renderers default="row">
+ <renderer name="row"/>
+ </renderers>
</layout>
<layout name="tab"
- class="org.apache.cocoon.portal.layout.impl.CompositeLayout"
- renderer="tab">
+ class="org.apache.cocoon.portal.layout.impl.CompositeLayout">
+ <renderers default="tab">
+ <renderer name="tab"/>
+ </renderers>
<aspects>
<aspect name="tab" class="java.lang.Integer" store="session" auto-create="true"/>
</aspects>
</layout>
<layout name="frame"
- class="org.apache.cocoon.portal.layout.impl.FrameLayout"
- renderer="frame"
+ class="org.apache.cocoon.portal.layout.impl.FrameLayout"
create-id="true">
+ <renderers default="frame">
+ <renderer name="frame"/>
+ </renderers>
<aspects>
<aspect name="frame" class="java.lang.String" store="request" auto-create="false"/>
</aspects>
</layout>
<layout name="coplet"
- class="org.apache.cocoon.portal.layout.impl.CopletLayout"
- renderer="window">
+ class="org.apache.cocoon.portal.layout.impl.CopletLayout">
+ <renderers default="window">
+ <renderer name="window"/>
+ </renderers>
</layout>
</layouts>
</component>