On 18/05/2010, at 01:59, Thorsten Scherler wrote: > > On 17/05/2010, at 23:24, Tim Williams wrote: > >> Hi Thorsten, is this working for you locally? I noticed the >> Forrestbot failure just now and I'm also failing locally (with a NPE) >> on a dispatcher sample site. Was thinking it might be related but >> don't see anything obvious in here... > > Hmm, really weird. I did a quick debug and it seems the problem is in > <xsl:include href="cocoon://prepare.contract.html.helper-render-image" /> > If you comment this line then it will work again. > > I ATM not sure what happens and am flying out in a couple of hours, I will > try to have a look again tomorrow but if you want you can revert the commit > or comment the contract in the structurer.
The problem seems to be <xsl:include href="cocoon://prepare.contract.html.element"></xsl:include> However I am not sure, need to go to bed now. salu2 > > salu2 > >> >> --tim >> >> On Mon, May 17, 2010 at 1:42 PM, <thors...@apache.org> wrote: >>> Author: thorsten >>> Date: Mon May 17 17:42:05 2010 >>> New Revision: 945269 >>> >>> URL: http://svn.apache.org/viewvc?rev=945269&view=rev >>> Log: >>> FOR-1194 Fixing utf-8 compability by forcing to use UTF-8 in every step >>> >>> Modified: >>> >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/cocoon-2.2-block/src/main/resources/COB-INF/sitemap.xmap >>> >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/cocoon-2.2-block/src/main/resources/META-INF/cocoon/avalon/dispatcher-sitemapcomponents.xconf >>> >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/XSLContract.java >>> >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/XSLContractHelper.java >>> >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java >>> >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherWrapperTransformer.java >>> >>> Modified: >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/cocoon-2.2-block/src/main/resources/COB-INF/sitemap.xmap >>> URL: >>> http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/cocoon-2.2-block/src/main/resources/COB-INF/sitemap.xmap?rev=945269&r1=945268&r2=945269&view=diff >>> ============================================================================== >>> --- >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/cocoon-2.2-block/src/main/resources/COB-INF/sitemap.xmap >>> (original) >>> +++ >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/cocoon-2.2-block/src/main/resources/COB-INF/sitemap.xmap >>> Mon May 17 17:42:05 2010 >>> @@ -22,7 +22,7 @@ xmlns:map="http://apache.org/cocoon/site >>> <map:pipeline id="lm"> >>> <map:match pattern="locationmap.xml"> >>> <map:generate src="locationmap.xml" /> >>> - <map:serialize type="xml" /> >>> + <map:serialize/> >>> </map:match> >>> </map:pipeline> >>> <map:pipeline id="dispatcher"> >>> @@ -61,7 +61,7 @@ xmlns:map="http://apache.org/cocoon/site >>> </map:transform> >>> <map:transform src="lm://hooks-to-fo.xsl" /> >>> <map:transform src="lm://strip-dispatcher-remains-fo.xsl" /> >>> - <map:serialize type="xml" /> >>> + <map:serialize/> >>> </map:match> >>> <map:match pattern="**.prepare.dispatcher.css"> >>> <map:generate src="lm://resolve.structurer.{1}" type="jx"> >>> @@ -93,11 +93,11 @@ xmlns:map="http://apache.org/cocoon/site >>> <map:act type="locale"> >>> <map:match pattern="resolve.structurer.**"> >>> <map:generate src="lm://resolve.structurer.{1}" /> >>> - <map:serialize type="xml" /> >>> + <map:serialize/> >>> </map:match> >>> <map:match pattern="resolve.contract.*.**"> >>> <map:generate src="{lm:resolve.contract.{1}.{2}}" /> >>> - <map:serialize type="xml" /> >>> + <map:serialize/> >>> </map:match> >>> <map:match pattern="prepare.contract.*.**"> >>> <map:generate src="{lm:resolve.contract.{1}.{2}}" /> >>> @@ -105,7 +105,7 @@ xmlns:map="http://apache.org/cocoon/site >>> <map:transform type="i18n"> >>> <map:parameter name="locale" value="{../locale}" /> >>> </map:transform> >>> - <map:serialize type="xml" /> >>> + <map:serialize/> >>> </map:match> >>> </map:act> >>> </map:pipeline> >>> @@ -116,7 +116,7 @@ xmlns:map="http://apache.org/cocoon/site >>> <map:match pattern="prepare.panels.**"> >>> <map:generate src="{lm:resolve.panels.{1}}" /> >>> <map:transform src="{lm:root-strip.xsl}" /> >>> - <map:serialize type="xml" /> >>> + <map:serialize/> >>> </map:match> >>> </map:pipeline> >>> <map:pipeline> >>> @@ -126,7 +126,7 @@ xmlns:map="http://apache.org/cocoon/site >>> <map:parameter name="path" value="{1}.html" /> >>> <map:parameter name="theme" value="{global:dispatcher.theme}" /> >>> </map:transform> >>> - <map:serialize type="xml" /> >>> + <map:serialize/> >>> </map:match> >>> </map:pipeline> >>> <map:pipeline id="resources"> >>> >>> Modified: >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/cocoon-2.2-block/src/main/resources/META-INF/cocoon/avalon/dispatcher-sitemapcomponents.xconf >>> URL: >>> http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/cocoon-2.2-block/src/main/resources/META-INF/cocoon/avalon/dispatcher-sitemapcomponents.xconf?rev=945269&r1=945268&r2=945269&view=diff >>> ============================================================================== >>> --- >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/cocoon-2.2-block/src/main/resources/META-INF/cocoon/avalon/dispatcher-sitemapcomponents.xconf >>> (original) >>> +++ >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/cocoon-2.2-block/src/main/resources/META-INF/cocoon/avalon/dispatcher-sitemapcomponents.xconf >>> Mon May 17 17:42:05 2010 >>> @@ -28,7 +28,7 @@ limitations under the License. >>> <cache-at-startup>true</cache-at-startup> >>> </map:transformer> >>> </map:transformers> >>> - <map:serializers default="xhtml"> >>> + <map:serializers default="xml-utf8"> >>> <map:serializer logger="sitemap.serializer.xhtml" >>> mime-type="text/html; charset=UTF-8" name="xhtml" ppool-max="64" >>> src="org.apache.cocoon.serialization.XMLSerializer"> >>> @@ -57,5 +57,9 @@ limitations under the License. >>> <encoding>UTF-8</encoding> >>> <indent>true</indent> >>> </map:serializer> >>> - </map:serializers> >>> + <map:serializer name="xml-utf8" mime-type="text/xml" >>> + src="org.apache.cocoon.serialization.XMLSerializer"> >>> + <encoding>UTF-8</encoding> >>> + </map:serializer> >>> + </map:serializers> >>> </map:components> >>> >>> Modified: >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/XSLContract.java >>> URL: >>> http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/XSLContract.java?rev=945269&r1=945268&r2=945269&view=diff >>> ============================================================================== >>> --- >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/XSLContract.java >>> (original) >>> +++ >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/XSLContract.java >>> Mon May 17 17:42:05 2010 >>> @@ -21,6 +21,8 @@ import java.io.BufferedOutputStream; >>> import java.io.ByteArrayInputStream; >>> import java.io.ByteArrayOutputStream; >>> import java.io.InputStream; >>> +import java.io.OutputStreamWriter; >>> +import java.io.UnsupportedEncodingException; >>> import java.util.Map; >>> >>> import javax.xml.stream.XMLStreamException; >>> @@ -105,17 +107,23 @@ public class XSLContract extends Loggabl >>> } >>> } >>> ByteArrayOutputStream out = new ByteArrayOutputStream(); >>> + byte[] bytes = null; >>> + String utf8 = ""; >>> // create a StreamResult and use it for the transformation >>> - Result streamResult = new StreamResult(new BufferedOutputStream(out)); >>> try { >>> - helper.transform(dataStream,streamResult); >>> + OutputStreamWriter writer = new OutputStreamWriter(out,"UTF-8"); >>> + Result streamResult = new StreamResult(writer); >>> + helper.transform(dataStream,streamResult); >>> + utf8 = out.toString("UTF-8"); >>> + log.debug(utf8); >>> + bytes = utf8.getBytes("utf-8"); >>> } catch (Exception e) { >>> String message = "Could not invoke the transformation for " >>> + "the contract \""+name+"\". "+"\n"+ e; >>> throw new ContractException(message); >>> } >>> - log.debug(out.toString()); >>> - return new BufferedInputStream(new >>> ByteArrayInputStream(out.toByteArray())); >>> + >>> + return new BufferedInputStream(new ByteArrayInputStream(bytes)); >>> } >>> >>> /* (non-Javadoc) >>> >>> Modified: >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/XSLContractHelper.java >>> URL: >>> http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/XSLContractHelper.java?rev=945269&r1=945268&r2=945269&view=diff >>> ============================================================================== >>> --- >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/XSLContractHelper.java >>> (original) >>> +++ >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/impl/helper/XSLContractHelper.java >>> Mon May 17 17:42:05 2010 >>> @@ -20,6 +20,7 @@ import java.io.BufferedInputStream; >>> import java.io.ByteArrayInputStream; >>> import java.io.IOException; >>> import java.io.InputStream; >>> +import java.io.InputStreamReader; >>> import java.io.PrintWriter; >>> import java.util.Iterator; >>> import java.util.Map; >>> @@ -124,6 +125,7 @@ public class XSLContractHelper extends L >>> SAXException, IOException { >>> // prepare transformation >>> transformer = transFact.newTransformer(xslSource); >>> + transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); >>> transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); >>> transformer.setOutputProperty(OutputKeys.INDENT, "yes"); >>> transformer.setOutputProperty(OutputKeys.METHOD, "xml"); >>> @@ -220,8 +222,8 @@ public class XSLContractHelper extends L >>> } >>> // Setting the necessary attributes of the contract >>> // xsl >>> - contract.setXslSource(new StreamSource(new ByteArrayInputStream(handler >>> - .getBytes()))); >>> + byte[] bytes = handler.getBytes(); >>> + contract.setXslSource(new StreamSource(new >>> ByteArrayInputStream(bytes))); >>> /* DEBUG_CODE: >>> * The following is useful to see what is going on >>> * >>> @@ -254,7 +256,9 @@ public class XSLContractHelper extends L >>> throws ContractException { >>> //Source dataSource = new StreamSource(dataStream); >>> try { >>> - SAXSource saxSource = new SAXSource(xmlReader,new >>> InputSource(dataStream)); >>> + InputSource inputSource = new InputSource(new >>> InputStreamReader(dataStream, "UTF-8")); >>> + inputSource.setEncoding("UTF-8"); >>> + SAXSource saxSource = new SAXSource(xmlReader,inputSource); >>> transformer.transform(saxSource, streamResult); >>> } catch (Exception e) { >>> String message = "The xsl transformation has thrown an exception. for " >>> >>> Modified: >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java >>> URL: >>> http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java?rev=945269&r1=945268&r2=945269&view=diff >>> ============================================================================== >>> --- >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java >>> (original) >>> +++ >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherTransformer.java >>> Mon May 17 17:42:05 2010 >>> @@ -20,6 +20,7 @@ import java.io.BufferedInputStream; >>> import java.io.File; >>> import java.io.IOException; >>> import java.io.InputStream; >>> +import java.io.InputStreamReader; >>> import java.io.Serializable; >>> import java.io.StringReader; >>> import java.util.HashMap; >>> @@ -490,7 +491,7 @@ public class DispatcherTransformer exten >>> throw new SAXException(e); >>> } >>> if (null != property) { >>> - localParams.put(currentProperty, property.getBytes()); >>> + localParams.put(currentProperty, property.getBytes("UTF-8")); >>> } >>> } >>> } >>> @@ -695,7 +696,7 @@ public class DispatcherTransformer exten >>> root.serialize(out); >>> } >>> >>> - InputSource is = new InputSource(new StringReader(out.toString())); >>> + InputSource is = new InputSource(new >>> StringReader(out.toString("UTF-8"))); >>> // adding the result to the consumer >>> parser.parse(is, super.xmlConsumer); >>> } catch (Exception e) { >>> @@ -1099,8 +1100,9 @@ public class DispatcherTransformer exten >>> */ >>> private static InputSource getInputSource(final Source source) >>> throws IOException, SourceException { >>> - final InputSource newObject = new InputSource(source.getInputStream()); >>> - newObject.setSystemId(source.getURI()); >>> - return newObject; >>> + final InputSource inputSource = new InputSource(new >>> InputStreamReader(source.getInputStream(), "UTF-8")); >>> + inputSource.setEncoding("UTF-8"); >>> + inputSource.setSystemId(source.getURI()); >>> + return inputSource; >>> } >>> } >>> >>> Modified: >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherWrapperTransformer.java >>> URL: >>> http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherWrapperTransformer.java?rev=945269&r1=945268&r2=945269&view=diff >>> ============================================================================== >>> --- >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherWrapperTransformer.java >>> (original) >>> +++ >>> forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/java/org/apache/forrest/dispatcher/transformation/DispatcherWrapperTransformer.java >>> Mon May 17 17:42:05 2010 >>> @@ -374,7 +374,7 @@ public class DispatcherWrapperTransforme >>> } >>> // get the result of the structurer as stream >>> InputStream result = structurer.execute(new BufferedInputStream( >>> - new ByteArrayInputStream(document.getBytes())), requestedFormat); >>> + new ByteArrayInputStream(document.getBytes("UTF-8"))), >>> requestedFormat); >>> // requesting a parser >>> parser = (SAXParser) manager.lookup(SAXParser.ROLE); >>> // adding the result to the consumer >>> >>> >>> > > Thorsten Scherler <thorsten.at.apache.org> > Open Source Java <consulting, training and solutions> > Thorsten Scherler <thorsten.at.apache.org> Open Source Java <consulting, training and solutions>