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/12/11 16:55:29 UTC
svn commit: r485729 - in
/cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers:
EncodingSerializer.java HTMLSerializer.java XHTMLSerializer.java
Author: cziegeler
Date: Mon Dec 11 07:55:28 2006
New Revision: 485729
URL: http://svn.apache.org/viewvc?view=rev&rev=485729
Log:
Add the possibility to exclude arbitrary data to the output
Modified:
cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/EncodingSerializer.java
cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/HTMLSerializer.java
cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/XHTMLSerializer.java
Modified: cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/EncodingSerializer.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/EncodingSerializer.java?view=diff&rev=485729&r1=485728&r2=485729
==============================================================================
--- cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/EncodingSerializer.java (original)
+++ cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/EncodingSerializer.java Mon Dec 11 07:55:28 2006
@@ -21,16 +21,23 @@
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
+import java.util.Map;
import org.apache.avalon.excalibur.pool.Recyclable;
import org.apache.avalon.framework.configuration.Configurable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.parameters.Parameters;
+import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.serializers.encoding.Charset;
import org.apache.cocoon.components.serializers.encoding.CharsetFactory;
import org.apache.cocoon.components.serializers.encoding.Encoder;
import org.apache.cocoon.components.serializers.util.Namespaces;
+import org.apache.cocoon.environment.ObjectModelHelper;
+import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.serialization.Serializer;
+import org.apache.cocoon.sitemap.SitemapModelComponent;
import org.apache.commons.lang.SystemUtils;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
@@ -57,9 +64,10 @@
* <p>The value indicated by <i>myindenting</i> will control the indenting
* level for each element.<p>
*
- * @version CVS $Id$
+ * @version $Id$
*/
-public abstract class EncodingSerializer implements Serializer, Locator, Recyclable, Configurable {
+public abstract class EncodingSerializer
+ implements Serializer, SitemapModelComponent, Locator, Recyclable, Configurable {
/** The line separator string */
private static final char S_EOL[] = SystemUtils.LINE_SEPARATOR.toCharArray();
@@ -84,13 +92,13 @@
/* ====================================================================== */
/** Our <code>Encoder</code> instance. */
- private Encoder encoder = null;
+ private final Encoder encoder;
/** Our <code>Locator</code> instance. */
- private Locator locator = null;
+ private Locator locator;
/** Our <code>Writer</code> instance. */
- private OutputStreamWriter out = null;
+ private OutputStreamWriter out;
/** Flag indicating if the document prolog is being processed. */
private boolean prolog = true;
@@ -102,36 +110,53 @@
private int level = 0;
/** Whitespace buffer for indentation */
- private char[] indentBuffer = null;
+ private char[] indentBuffer;
/* ====================================================================== */
/** The <code>Charset</code> associated with the character encoding. */
- protected Charset charset = null;
+ protected Charset charset;
/** The <code>Namespace</code> associated with this instance. */
- protected Namespaces namespaces = new Namespaces();
+ protected Namespaces namespaces;
/** Per level indent spaces */
protected int indentPerLevel = 0;
/* ====================================================================== */
+ protected Request request;
+
+ public static final String CONTENT_MAP_ATTRIBUTE = EncodingSerializer.class.getName() + "/ContentMap";
+
+ public static final String NAMESPACE = "http://apache.org/cocoon/serializers/include";
+
/**
* Create a new instance of this <code>EncodingSerializer</code>
*/
protected EncodingSerializer(Encoder encoder) {
- super();
this.encoder = encoder;
this.recycle();
}
/* ====================================================================== */
+
+ /**
+ * @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver, java.util.Map, java.lang.String, org.apache.avalon.framework.parameters.Parameters)
+ */
+ public void setup(SourceResolver resolver,
+ Map objectModel,
+ String src,
+ Parameters par)
+ throws ProcessingException, SAXException, IOException {
+ this.request = ObjectModelHelper.getRequest(objectModel);
+ }
+
/**
* Test if the component wants to set the content length.
*/
public boolean shouldSetContentLength() {
- return(false);
+ return false;
}
/**
@@ -143,6 +168,7 @@
this.locator = null;
this.out = null;
this.prolog = true;
+ this.request = null;
}
/**
@@ -449,6 +475,19 @@
public void startElement(String nsuri, String local, String qual,
Attributes attributes)
throws SAXException {
+ if (NAMESPACE.equals(nsuri)) {
+ final String contentId = attributes.getValue("portlet");
+
+ String value = null;
+ final Map map = (Map)this.request.getAttribute(CONTENT_MAP_ATTRIBUTE);
+ if ( map != null ) {
+ value = (String)map.get(contentId);
+ }
+ if ( value != null ) {
+ this.write(value);
+ }
+ return;
+ }
if (indentPerLevel > 0) {
this.writeIndent(indentPerLevel*level);
level++;
@@ -490,6 +529,9 @@
*/
public void endElement(String nsuri, String local, String qual)
throws SAXException {
+ if (NAMESPACE.equals(nsuri)) {
+ return;
+ }
if (indentPerLevel > 0) {
level--;
this.writeIndent(indentPerLevel*level);
Modified: cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/HTMLSerializer.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/HTMLSerializer.java?view=diff&rev=485729&r1=485728&r2=485729
==============================================================================
--- cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/HTMLSerializer.java (original)
+++ cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/HTMLSerializer.java Mon Dec 11 07:55:28 2006
@@ -47,7 +47,7 @@
* <dd>The HTML 4.01 Frameset document type.</dd>
* </dl>
*
- * @version CVS $Id$
+ * @version $Id$
*/
public class HTMLSerializer extends XHTMLSerializer {
Modified: cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/XHTMLSerializer.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/XHTMLSerializer.java?view=diff&rev=485729&r1=485728&r2=485729
==============================================================================
--- cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/XHTMLSerializer.java (original)
+++ cocoon/trunk/blocks/cocoon-serializers/cocoon-serializers-impl/src/main/java/org/apache/cocoon/components/serializers/XHTMLSerializer.java Mon Dec 11 07:55:28 2006
@@ -51,7 +51,7 @@
* <dd>The XHTML 1.0 Frameset document type.</dd>
* </dl>
*
- * @version CVS $Id$
+ * @version $Id$
*/
public class XHTMLSerializer extends XMLSerializer {