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;
}