[ https://issues.apache.org/jira/browse/COCOON3-77?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13144971#comment-13144971 ]
Andre Juffer commented on COCOON3-77: ------------------------------------- # This patch file was generated by NetBeans IDE # It uses platform neutral UTF-8 encoding and \n newlines. --- Locally New +++ Locally New @@ -0,0 +1,150 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.cocoon.optional.servlet.components.sax.serializers; + +import org.apache.cocoon.components.serializers.util.TextSerializer; + +import org.apache.cocoon.optional.servlet.components.sax.serializers.util.ConfigurationUtils; +import org.apache.cocoon.sax.SAXPipelineComponent; +import org.apache.cocoon.pipeline.component.Finisher; +import org.apache.cocoon.sax.SAXConsumer; +import org.apache.cocoon.pipeline.component.CachingPipelineComponent; +import org.apache.cocoon.pipeline.caching.CacheKey; +import org.apache.cocoon.pipeline.caching.ParameterCacheKey; +import org.apache.cocoon.pipeline.SetupException; +import org.apache.cocoon.servlet.util.HttpContextHelper; + +import java.util.Map; +import java.io.OutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; + +/** + * <p>Usage in sitemap: + * <pre> + * <map:serialize type='text' /> + * </pre> + * + * @author André Juffer, Triacle Biocomputing + */ +public class EncodingTextSerializer extends TextSerializer + implements SAXPipelineComponent, Finisher, SAXConsumer, CachingPipelineComponent { + + private String encoding; + private int indent = 0; + private String omitXmlDeclaration; + private String docType; + + public EncodingTextSerializer() + throws Exception + { + super(); + } + + @Override + public void setup(java.util.Map<java.lang.String, java.lang.Object> parameters) + { + this.setup(HttpContextHelper.getRequest(parameters)); + } + + @Override + public void setConfiguration(Map<String,? extends Object> configuration) + { + try { + this.encoding = ConfigurationUtils.getEncoding(configuration); + this.setEncoding(this.encoding); + } + catch (UnsupportedEncodingException exception) + { + throw new SetupException(exception); + } + + try { + this.indent = ConfigurationUtils.getIndent(configuration); + this.setIndentPerLevel(this.indent); + } + catch (NumberFormatException exception) + { + throw new SetupException(exception); + } + + this.omitXmlDeclaration = (String) configuration.get("omit-xml-declaration"); + this.docType = (String) configuration.get("doctype-default"); + } + + @Override + public void finish() + { + // Do nothing. + } + + @Override + public String getContentType() + { + return this.getMimeType(); + } + + public CacheKey constructCacheKey() + { + ParameterCacheKey parameterCacheKey = new ParameterCacheKey(); + parameterCacheKey.addParameter("encoding", this.encoding); + parameterCacheKey.addParameter("indent", this.indent); + parameterCacheKey.addParameter("docType", this.docType); + parameterCacheKey.addParameter("omitXmlDeclaration", this.omitXmlDeclaration); + return parameterCacheKey; + } + + @Override + public void setOutputStream(OutputStream outputStream) + { + try + { + super.setOutputStream(outputStream); + } + catch (IOException exception) + { + throw new SetupException(exception); + } + } + + @Override + public String toString() + { + String newline = System.getProperty("line.separator"); + + StringBuilder s = new StringBuilder(this.getClass().getName() + newline); + s.append("charset - ").append(this.charset).append(newline); + s.append("docType - ").append(this.docType).append(newline); + if ( this.doctype != null ) + s.append("doctype - ").append(this.doctype.toString()).append(newline); + s.append("encoding - ").append(this.encoding).append(newline); + s.append("indent - ").append(this.indent).append(newline); + s.append("indentPerLevel - ").append(this.indentPerLevel).append(newline); + if ( this.namespaces != null ) + s.append("namespaces - ").append(this.namespaces.toString()).append(newline); + s.append("omitXmlDeclaration - ").append(this.omitXmlDeclaration).append(newline); + if ( this.request != null ) + s.append("request - ").append(this.request.toString()).append(newline); + s.append("mime-type - ").append(this.getMimeType()).append(newline); + s.append("]").append(newline); + + return s.toString(); + } +} > Text and JSON serializers > ------------------------- > > Key: COCOON3-77 > URL: https://issues.apache.org/jira/browse/COCOON3-77 > Project: Cocoon 3 > Issue Type: Improvement > Components: cocoon-optional > Affects Versions: 3.0.0-alpha-3 > Reporter: Andre Juffer > Priority: Minor > Attachments: EncodingJsonSerializer.java, > EncodingTextSerializer.java, JsonSerializer.java, TextEncoder.java, > TextSerializer.java, pom.xml, tribc-cocoon-3.xml > > > Serveral classes have been created for serializing text and JSON in the > sitemap. The JsonSerializer also checks whether the JSON text actually is > valid. The organization of the classes follows the encoding serializers (such > as the EncodingHTMLSerializer). -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira