You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by pi...@apache.org on 2004/09/29 12:08:28 UTC

svn commit: rev 47478 - cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/transformation

Author: pier
Date: Wed Sep 29 03:08:27 2004
New Revision: 47478

Added:
   cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/transformation/ErrorAwareTraxTransformer.java
Log:
A simple test that should improve error messages with xalan (for example, using this transformer the output of <xsl:message terminate="yes"/> becomes the message of the exception)

Added: cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/transformation/ErrorAwareTraxTransformer.java
==============================================================================
--- (empty file)
+++ cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/transformation/ErrorAwareTraxTransformer.java	Wed Sep 29 03:08:27 2004
@@ -0,0 +1,84 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation.
+ * 
+ * Licensed 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.transformation;
+
+import javax.xml.transform.ErrorListener;
+import javax.xml.transform.TransformerException;
+
+import org.apache.cocoon.xml.XMLConsumer;
+
+/**
+ * <p>An error aware TRAX-based transformer.</p>
+ * 
+ * <p>This might be a very stupid extension to the {@link TraxTransformer}, but in
+ * some very specific cases (for example when using Apache Xalan-J 2), the message
+ * output of the stylesheets, and error messages, can be greatly improved by just
+ * using this class instead of the default one.</p>
+ * 
+ * <p>Using this transformer with Apache Xalan-J 2, for example, will allow Cocoon
+ * to capture the output of <code>&lt;xsl:message&#nbsp;terminate="yes"/&gt;</code>
+ * and to serve it up using the standard error handling pipelines.</p>
+ * 
+ * @author <a href="mailto:pier@apache.org">Pierpaolo Fumagalli</a>
+ */
+public class ErrorAwareTraxTransformer extends TraxTransformer
+implements ErrorListener {
+
+    /**
+     * <p>Handle an error notification from the original TRAX transformer.</p>
+     * 
+     * <p>This method simply throws the same exception passed in as a parameter.</p>
+     *
+     * @see ErrorListener#error(TransformerException)
+     */
+    public void error(TransformerException exception)
+    throws TransformerException {
+      if (exception != null) throw(exception);
+    }
+
+    /**
+     * <p>Handle an error notification from the original TRAX transformer.</p>
+     * 
+     * <p>This method simply throws the same exception passed in as a parameter.</p>
+     *
+     * @see ErrorListener#fatalError(TransformerException)
+     */
+    public void fatalError(TransformerException exception)
+    throws TransformerException {
+        if (exception != null) throw(exception);
+    }
+
+    /**
+     * <p>Handle an error notification from the original TRAX transformer.</p>
+     * 
+     * <p>This method simply throws the same exception passed in as a parameter.</p>
+     *
+     * @see ErrorListener#warning(TransformerException)
+     */
+    public void warning(TransformerException exception)
+    throws TransformerException {
+        if (exception != null) throw(exception);
+    }
+
+    /**
+     * Set the <code>XMLConsumer</code> that will receive XML data.
+     */
+    public void setConsumer(XMLConsumer consumer) {
+        super.setConsumer(consumer);
+        super.transformerHandler.getTransformer().setErrorListener(this);
+    }
+}

ErrorAwareTraxTransformer

Posted by Pier Fumagalli <pi...@betaversion.org>.
Guys,
	this one totally looks _so_dull_, but it might be an improvement that  
we want to do the real TraxTransformer instead of extending it, and  
having YetAnotherComponent...

Can you guys check it out and tell me what you think of the messages?

	Pier

On 29 Sep 2004, at 11:08, pier@apache.org wrote:

> Author: pier
> Date: Wed Sep 29 03:08:27 2004
> New Revision: 47478
>
> Added:
>     
> cocoon/trunk/src/blocks/scratchpad/java/org/apache/cocoon/ 
> transformation/ErrorAwareTraxTransformer.java
> Log:
> A simple test that should improve error messages with xalan (for  
> example, using this transformer the output of <xsl:message  
> terminate="yes"/> becomes the message of the exception)