Author: janstey
Date: Thu Dec 11 17:35:13 2008
New Revision: 725883

URL: http://svn.apache.org/viewvc?rev=725883&view=rev
Log:
CAMEL-1184 - Minor fixes to tidyMarkup data format.

Thanks to Ramon for the patch!


Modified:
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
    
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java
    
activemq/camel/trunk/components/camel-tagsoup/src/main/java/org/apache/camel/dataformat/tagsoup/TidyMarkupDataFormat.java

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java?rev=725883&r1=725882&r2=725883&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
 Thu Dec 11 17:35:13 2008
@@ -18,6 +18,8 @@
 
 import java.util.zip.Deflater;
 
+import org.w3c.dom.Node;
+
 import org.apache.camel.model.ProcessorType;
 import org.apache.camel.model.dataformat.ArtixDSContentType;
 import org.apache.camel.model.dataformat.ArtixDSDataFormat;
@@ -171,11 +173,11 @@
     }
 
     /**
-     * Return TidyMarkup  HTML DataFormat (an XML Document) either 
+     * Return TidyMarkup in the default format 
      *  as {...@link org.w3c.dom.Node}
      */
     public T tidyMarkup() {
-        return dataFormat(new TidyMarkupDataFormat(String.class));
+        return dataFormat(new TidyMarkupDataFormat(Node.class));
     }
 
     

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java?rev=725883&r1=725882&r2=725883&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
 Thu Dec 11 17:35:13 2008
@@ -41,6 +41,7 @@
     @XmlElements({
         @XmlElement(required = false, name = "artixDS", type = 
ArtixDSDataFormat.class),
         @XmlElement(required = false, name = "csv", type = 
CsvDataFormat.class),
+        @XmlElement(required = false, name = "tidyMarkup", type = 
TidyMarkupDataFormat.class),
         @XmlElement(required = false, name = "flatpack", type = 
FlatpackDataFormat.class),
         @XmlElement(required = false, name = "hl7", type = 
HL7DataFormat.class),
         @XmlElement(required = false, name = "jaxb", type = 
JaxbDataFormat.class),

Modified: 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java?rev=725883&r1=725882&r2=725883&view=diff
==============================================================================
--- 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java
 (original)
+++ 
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/TidyMarkupDataFormat.java
 Thu Dec 11 17:35:13 2008
@@ -44,8 +44,9 @@
 
     public TidyMarkupDataFormat(Class<?> dataObjectType) {
         this();
-        assert dataObjectType.isAssignableFrom(String.class) || 
dataObjectType.isAssignableFrom(Node.class) 
-            : "TidyMarkupDataFormat only supports returning a String or a 
org.w3c.dom.Node object";
+        if (!dataObjectType.isAssignableFrom(String.class) && 
!dataObjectType.isAssignableFrom(Node.class)) {
+            throw new IllegalArgumentException("TidyMarkupDataFormat only 
supports returning a String or a org.w3c.dom.Node object");
+        }
         this.setDataObjectType(dataObjectType);
     }
 

Modified: 
activemq/camel/trunk/components/camel-tagsoup/src/main/java/org/apache/camel/dataformat/tagsoup/TidyMarkupDataFormat.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-tagsoup/src/main/java/org/apache/camel/dataformat/tagsoup/TidyMarkupDataFormat.java?rev=725883&r1=725882&r2=725883&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-tagsoup/src/main/java/org/apache/camel/dataformat/tagsoup/TidyMarkupDataFormat.java
 (original)
+++ 
activemq/camel/trunk/components/camel-tagsoup/src/main/java/org/apache/camel/dataformat/tagsoup/TidyMarkupDataFormat.java
 Thu Dec 11 17:35:13 2008
@@ -32,9 +32,13 @@
 import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
 import org.xml.sax.XMLReader;
+
 import org.apache.camel.CamelException;
 import org.apache.camel.Exchange;
 import org.apache.camel.spi.DataFormat;
+import org.apache.camel.util.ObjectHelper;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.ccil.cowan.tagsoup.HTMLSchema;
 import org.ccil.cowan.tagsoup.Parser;
 import org.ccil.cowan.tagsoup.Schema;
@@ -49,6 +53,11 @@
  */
 public class TidyMarkupDataFormat implements DataFormat {
 
+    /*
+     * Our Logger
+     */
+    private static final transient Log LOG = 
LogFactory.getLog(TidyMarkupDataFormat.class);
+
     private static final String NO = "no";
 
     private static final String YES = "yes";
@@ -94,24 +103,29 @@
     private Map<String, Object> parserPropeties;
 
     /**
-     * Unsupported operation
+     * Unsupported operation. We cannot create ugly HTML.
      */
     public void marshal(Exchange exchange, Object object, OutputStream 
outputStream) throws Exception {
         throw new CamelException("Marshalling from Well Formed HTML to ugly 
HTML is not supported."
-                + " Only use <unmarshal><wellFormedHtml/><unmarshal>");
+                + " Only unmarshal is supported");
     }
 
     /**
      * Unmarshal the data
+     * 
+     * @throws Exception
      */
     public Object unmarshal(Exchange exchange, InputStream inputStream) throws 
Exception {
 
-        if (dataObjectType.isAssignableFrom(String.class)) {
-            return asStringTidyMarkup(inputStream);
-        } else if (dataObjectType.isAssignableFrom(Node.class)) {
+        ObjectHelper.notNull(dataObjectType, "dataObjectType", this);
+
+        if (dataObjectType.isAssignableFrom(Node.class)) {
             return asNodeTidyMarkup(inputStream);
+        } else if (dataObjectType.isAssignableFrom(String.class)) {
+            return asStringTidyMarkup(inputStream);
         } else {
-            throw new CamelException("The return type [" + 
dataObjectType.getCanonicalName() + "] is unsupported");
+            throw new IllegalArgumentException("The return type [" + 
dataObjectType.getCanonicalName()
+                    + "] is unsupported");
         }
     }
 
@@ -121,7 +135,6 @@
      * @param inputStream
      * @return String of XML
      * @throws CamelException
-     * @throws Exception
      */
     private String asStringTidyMarkup(InputStream inputStream) throws 
CamelException {
 
@@ -134,16 +147,24 @@
             return w.toString();
 
         } catch (Exception e) {
-            throw new CamelException("Failed to turn the HTML into tidy 
Markup", e);
+            throw new CamelException("Failed to convert the HTML to tidy 
Markup", e);
         } finally {
             try {
                 inputStream.close();
             } catch (Exception e) {
-                throw new CamelException("Failed to close the inputStream", e);
+                LOG.warn("Failed to close the inputStream");
             }
         }
     }
 
+    /**
+     * Return the HTML Markup as an {...@link org.w3c.dom.Node}
+     * 
+     * @param inputStream
+     *            The input Stream to convert
+     * @return org.w3c.dom.Node The HTML Markup as a DOM Node
+     * @throws CamelException
+     */
     private Node asNodeTidyMarkup(InputStream inputStream) throws 
CamelException {
         XMLReader parser = createTagSoupParser();
         StringWriter w = new StringWriter();
@@ -155,7 +176,7 @@
             transformer.transform(new SAXSource(parser, new 
InputSource(inputStream)), result);
             return result.getNode();
         } catch (Exception e) {
-            throw new CamelException("Failed to convert the HTML to tidy 
Markup (returning as a DOM Node)");
+            throw new CamelException("Failed to convert the HTML to tidy 
Markup", e);
         }
     }
 
@@ -202,7 +223,7 @@
             }
 
         } catch (Exception e) {
-            throw new CamelException("Problem setting the parser feature", e);
+            throw new IllegalArgumentException("Problem configuring the 
parser", e);
         }
         return reader;
     }


Reply via email to