You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2019/08/21 07:58:07 UTC
[camel] 12/20: Restructure marshal/unmarshal Implement unmarshal
Add karaf feature and test
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit f5d494f506daf66e17433131b573179408cfa3d0
Author: Roberto Flores <be...@gmail.com>
AuthorDate: Mon Jul 22 00:53:09 2019 -0500
Restructure marshal/unmarshal
Implement unmarshal
Add karaf feature and test
---
components/camel-any23/pom.xml | 9 +--
.../src/main/docs/any23-dataformat.adoc | 27 ++-----
.../camel/dataformat/any23/Any23DataFormat.java | 85 +++++++++++++++++-----
.../camel/dataformat/any23/Any23OutputFormat.java | 2 +-
.../camel/dataformat/any23/utils/Any23Utils.java | 5 ++
.../dataformat/any23/writer/RDF4JModelWriter.java | 68 +++++++++++++++++
.../any23/Any23DataFormatConfigurationsTest.java | 2 +-
.../any23/Any23DataFormatDefaultTest.java | 8 +-
.../any23/Any23DataFormatExtractorsTest.java | 3 +-
...ltTest.java => Any23DataFormatMarshalTest.java} | 17 ++---
...aultTest.java => Any23DataFormatModelTest.java} | 15 ++--
.../any23/Any23DataFormatOutputFormatTest.java | 2 +-
.../camel/model/dataformat/Any23DataFormat.java | 2 +-
.../apache/camel/model/dataformat/Any23Type.java | 2 +-
.../reifier/dataformat/Any23DataFormatReifier.java | 5 ++
.../modules/ROOT/pages/any23-dataformat.adoc | 27 ++-----
parent/pom.xml | 16 ++++
.../karaf/features/src/main/resources/features.xml | 4 +
.../components-starter/camel-any23-starter/pom.xml | 16 ++++
.../camel-spring-boot-dependencies/pom.xml | 10 +++
.../apache/camel/itest/karaf/CamelAny23Test.java | 23 +++---
21 files changed, 235 insertions(+), 113 deletions(-)
diff --git a/components/camel-any23/pom.xml b/components/camel-any23/pom.xml
index 0330ca0..dcc19fc 100644
--- a/components/camel-any23/pom.xml
+++ b/components/camel-any23/pom.xml
@@ -72,17 +72,10 @@
<dependency>
<groupId>org.apache.any23</groupId>
<artifactId>apache-any23-core</artifactId>
- <version>2.3</version>
</dependency>
<dependency>
<groupId>org.eclipse.rdf4j</groupId>
- <artifactId>rdf4j-rio-rdfxml</artifactId>
- <version>3.0.0-M1</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.rdf4j</groupId>
- <artifactId>rdf4j-rio-turtle</artifactId>
- <version>3.0.0-M1</version>
+ <artifactId>rdf4j-runtime</artifactId>
</dependency>
</dependencies>
</project>
diff --git a/components/camel-any23/src/main/docs/any23-dataformat.adoc b/components/camel-any23/src/main/docs/any23-dataformat.adoc
index 3155e14..5a8b0ad 100644
--- a/components/camel-any23/src/main/docs/any23-dataformat.adoc
+++ b/components/camel-any23/src/main/docs/any23-dataformat.adoc
@@ -1,28 +1,11 @@
[[any23-dataformat]]
== Any23 DataFormat
-== TidyMarkup DataFormat
-*Available as of Camel version 1.0*
-
-
-*Available as of Camel version 1.0*
-
-TidyMarkup is a Data Format that uses the
-http://www.ccil.org/~cowan/XML/tagsoup/[TagSoup] to tidy up HTML. It can
-be used to parse ugly HTML and return it as pretty wellformed HTML.
-
-*Camel eats our own -dog food- soap*
-
-We had some issues in our pdf Manual where we had some
-strange symbols. So http://janstey.blogspot.com/[Jonathan] used this
-data format to tidy up the wiki html pages that are used as base for
-rendering the pdf manuals. And then the mysterious symbols vanished.
-
-TidyMarkup only supports the *unmarshal* operation
-as we really don't want to turn well formed HTML into ugly HTML.
-
-### TidyMarkup Options
+== Any23 DataFormat
+*Available as of Camel version 3.0*
+Any23 is a Data Format that is intended to convert HTML from a site (or file) into rdf.
+### Any23 Options
// dataformat options: START
The Any23 dataformat supports 5 options, which are listed below.
@@ -32,7 +15,7 @@ The Any23 dataformat supports 5 options, which are listed below.
[width="100%",cols="2s,1m,1m,6",options="header"]
|===
| Name | Default | Java Type | Description
-| outputFormat | MODEL | Any23Type |
+| outputFormat | RDF4JMODEL | Any23Type |
| configurations | | Map |
| extractors | | List |
| baseURI | | String |
diff --git a/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23DataFormat.java b/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23DataFormat.java
index 2400b0a..5f2abdc 100644
--- a/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23DataFormat.java
+++ b/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23DataFormat.java
@@ -16,25 +16,30 @@
*/
package org.apache.camel.dataformat.any23;
+import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.OutputStreamWriter;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.any23.Any23;
import org.apache.any23.configuration.DefaultConfiguration;
import org.apache.any23.configuration.ModifiableConfiguration;
-import org.apache.any23.source.DocumentSource;
-import org.apache.any23.source.StringDocumentSource;
+import org.apache.any23.source.ByteArrayDocumentSource;
import org.apache.any23.writer.TripleHandler;
import org.apache.camel.Exchange;
import org.apache.camel.dataformat.any23.utils.Any23Utils;
+import org.apache.camel.dataformat.any23.writer.RDF4JModelWriter;
import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.DataFormatName;
import org.apache.camel.spi.annotations.Dataformat;
-import org.apache.camel.support.ExchangeHelper;
import org.apache.camel.support.service.ServiceSupport;
+import org.apache.commons.io.IOUtils;
+import org.eclipse.rdf4j.model.Model;
+import org.eclipse.rdf4j.rio.RDFFormat;
+import org.eclipse.rdf4j.rio.Rio;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -57,6 +62,31 @@ public class Any23DataFormat extends ServiceSupport implements DataFormat, DataF
private Any23OutputFormat outputFormat;
private String baseURI;
+ public Any23DataFormat() {
+ }
+
+ public Any23DataFormat(String baseURI) {
+ this.baseURI = baseURI;
+ }
+
+ public Any23DataFormat(Any23OutputFormat outputFormat, String baseURI) {
+ this.outputFormat = outputFormat;
+ this.baseURI = baseURI;
+ }
+
+ public Any23DataFormat(Map<String, String> configurations, Any23OutputFormat outputFormat, String baseURI) {
+ this.configurations = configurations;
+ this.outputFormat = outputFormat;
+ this.baseURI = baseURI;
+ }
+
+ public Any23DataFormat(Map<String, String> configurations, List<String> extractors, Any23OutputFormat outputFormat, String baseURI) {
+ this.configurations = configurations;
+ this.extractors = extractors;
+ this.outputFormat = outputFormat;
+ this.baseURI = baseURI;
+ }
+
@Override
public String getDataFormatName() {
return "any23";
@@ -66,22 +96,34 @@ public class Any23DataFormat extends ServiceSupport implements DataFormat, DataF
* Marshal data. Generate RDF.
*/
public void marshal(Exchange exchange, Object object, OutputStream outputStream) throws Exception {
- final String payload = ExchangeHelper.convertToMandatoryType(exchange, String.class, object);
- DocumentSource source = new StringDocumentSource(payload, baseURI);
- TripleHandler handler = Any23Utils.obtainHandler(outputFormat, outputStream);
- any23.extract(source, handler);
- handler.close();
+ OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
+ outputStreamWriter.write("<html><script type=\"application/ld+json\">\n");
+ outputStreamWriter.flush();
+ Model mdl = (Model) object;
+ Rio.write(mdl, outputStream, RDFFormat.JSONLD);
+ outputStreamWriter.write("\n</script></html>");
+ outputStreamWriter.flush();
+ outputStreamWriter.close();
+ outputStream.close();
}
/**
* Unmarshal the data
*/
public Object unmarshal(Exchange exchange, InputStream inputStream) throws Exception {
- //TODO
- //Under construction
- //Looking for libraries which could perform RDF -> HTML
- //Candidate: https://github.com/rhizomik/redefer-rdf2html
- return null;
+ ByteArrayDocumentSource source = new ByteArrayDocumentSource(inputStream, this.baseURI, null);
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ TripleHandler handler = Any23Utils.obtainHandler(outputFormat, out);
+ any23.extract(source, handler);
+ handler.close();
+ Object respon;
+ if (outputFormat == Any23OutputFormat.RDF4JMODEL) {
+ respon = ((RDF4JModelWriter) handler).getModel();
+ } else {
+ respon = IOUtils.toString(out.toByteArray());
+ }
+ return respon;
+
}
@Override
@@ -100,7 +142,7 @@ public class Any23DataFormat extends ServiceSupport implements DataFormat, DataF
}
if (outputFormat == null) {
//Default output format
- outputFormat = Any23OutputFormat.RDFXML;
+ outputFormat = Any23OutputFormat.RDF4JMODEL;
}
if (conf == null && extrArray == null) {
any23 = new Any23();
@@ -122,40 +164,45 @@ public class Any23DataFormat extends ServiceSupport implements DataFormat, DataF
return any23;
}
- public void setAny23(Any23 any23) {
+ public Any23DataFormat setAny23(Any23 any23) {
this.any23 = any23;
+ return this;
}
public Map<String, String> getConfigurations() {
return configurations;
}
- public void setConfigurations(Map<String, String> configurations) {
+ public Any23DataFormat setConfigurations(Map<String, String> configurations) {
this.configurations = configurations;
+ return this;
}
public List<String> getExtractors() {
return extractors;
}
- public void setExtractors(List<String> extractors) {
+ public Any23DataFormat setExtractors(List<String> extractors) {
this.extractors = extractors;
+ return this;
}
public Any23OutputFormat getOutputFormat() {
return outputFormat;
}
- public void setOutputFormat(Any23OutputFormat outputFormat) {
+ public Any23DataFormat setOutputFormat(Any23OutputFormat outputFormat) {
this.outputFormat = outputFormat;
+ return this;
}
public String getBaseURI() {
return baseURI;
}
- public void setBaseURI(String baseURI) {
+ public Any23DataFormat setBaseURI(String baseURI) {
this.baseURI = baseURI;
+ return this;
}
}
diff --git a/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23OutputFormat.java b/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23OutputFormat.java
index 3d4d12a..fa643ca 100644
--- a/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23OutputFormat.java
+++ b/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23OutputFormat.java
@@ -17,5 +17,5 @@
package org.apache.camel.dataformat.any23;
public enum Any23OutputFormat {
- NTRIPLES, TURTLE, NQUADS, RDFXML, JSONLD, RDFJSON
+ NTRIPLES, TURTLE, NQUADS, RDFXML, JSONLD, RDFJSON, RDF4JMODEL
}
diff --git a/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/utils/Any23Utils.java b/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/utils/Any23Utils.java
index 6c97a5e..09537d9 100644
--- a/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/utils/Any23Utils.java
+++ b/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/utils/Any23Utils.java
@@ -25,6 +25,8 @@ import org.apache.any23.writer.RDFXMLWriter;
import org.apache.any23.writer.TripleHandler;
import org.apache.any23.writer.TurtleWriter;
import org.apache.camel.dataformat.any23.Any23OutputFormat;
+import org.apache.camel.dataformat.any23.writer.RDF4JModelWriter;
+import org.eclipse.rdf4j.model.impl.LinkedHashModel;
public class Any23Utils {
@@ -49,6 +51,9 @@ public class Any23Utils {
case RDFJSON:
handler = new JSONWriter(outputStream);
break;
+ case RDF4JMODEL:
+ handler = new RDF4JModelWriter(new LinkedHashModel());
+ break;
default:
throw new AssertionError(format.name());
}
diff --git a/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/writer/RDF4JModelWriter.java b/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/writer/RDF4JModelWriter.java
new file mode 100644
index 0000000..5e60f00
--- /dev/null
+++ b/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/writer/RDF4JModelWriter.java
@@ -0,0 +1,68 @@
+/*
+ * 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.camel.dataformat.any23.writer;
+
+import org.apache.any23.writer.FormatWriter;
+import org.apache.any23.writer.TripleHandlerException;
+import org.apache.any23.writer.TripleWriterHandler;
+import org.eclipse.rdf4j.model.IRI;
+import org.eclipse.rdf4j.model.Model;
+import org.eclipse.rdf4j.model.Resource;
+import org.eclipse.rdf4j.model.Value;
+
+public class RDF4JModelWriter extends TripleWriterHandler implements FormatWriter {
+
+ private Model model;
+
+ public RDF4JModelWriter(Model model) {
+ this.model = model;
+ }
+
+ @Override
+ public void close() throws TripleHandlerException {
+ //noop
+ }
+
+ @Override
+ public void writeTriple(Resource s, IRI p, Value o, Resource g) throws TripleHandlerException {
+ model.add(s, p, o, g);
+ }
+
+ @Override
+ public void writeNamespace(String prefix, String uri) throws TripleHandlerException {
+ //noop
+ }
+
+ @Override
+ public boolean isAnnotated() {
+ return false;
+ }
+
+ @Override
+ public void setAnnotated(boolean f) {
+ //noop
+ }
+
+ public Model getModel() {
+ return model;
+ }
+
+ public void setModel(Model model) {
+ this.model = model;
+ }
+
+}
diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatConfigurationsTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatConfigurationsTest.java
index d7c34dd..c18eebc 100644
--- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatConfigurationsTest.java
+++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatConfigurationsTest.java
@@ -58,7 +58,7 @@ public class Any23DataFormatConfigurationsTest extends CamelTestSupport {
public void configure() {
Map<String, String> conf = new HashMap();
conf.put("any23.extraction.metadata.nesting", "off");
- from("direct:start").marshal().any23(BASEURI, Any23Type.TURTLE, conf).to("mock:result");
+ from("direct:start").unmarshal().any23(BASEURI, Any23Type.TURTLE, conf).to("mock:result");
}
};
}
diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java
index 244dedd..fee62a5 100644
--- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java
+++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java
@@ -42,10 +42,8 @@ public class Any23DataFormatDefaultTest extends CamelTestSupport {
List<Exchange> list = resultEndpoint.getReceivedExchanges();
for (Exchange exchange : list) {
Message in = exchange.getIn();
- String resultingRDF = in.getBody(String.class);
- InputStream toInputStream = IOUtils.toInputStream(resultingRDF);
- Model parse = Rio.parse(toInputStream, BASEURI, RDFFormat.RDFXML);
- assertEquals(parse.size(), 28);
+ Model resultingRDF = in.getBody(Model.class);
+ assertEquals(resultingRDF.size(), 28);
}
}
@@ -53,7 +51,7 @@ public class Any23DataFormatDefaultTest extends CamelTestSupport {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- from("direct:start").marshal().any23(BASEURI).to("mock:result");
+ from("direct:start").unmarshal().any23(BASEURI).to("mock:result");
}
};
}
diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatExtractorsTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatExtractorsTest.java
index 1cf88e6..533c7e1 100644
--- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatExtractorsTest.java
+++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatExtractorsTest.java
@@ -47,7 +47,6 @@ public class Any23DataFormatExtractorsTest extends CamelTestSupport {
for (Exchange exchange : list) {
Message in = exchange.getIn();
String resultingRDF = in.getBody(String.class);
- System.out.println(resultingRDF);
InputStream toInputStream = IOUtils.toInputStream(resultingRDF);
Model parse = Rio.parse(toInputStream, BASEURI, RDFFormat.TURTLE);
assertEquals(parse.size(), 1);
@@ -62,7 +61,7 @@ public class Any23DataFormatExtractorsTest extends CamelTestSupport {
conf.put("any23.extraction.metadata.nesting", "off");
List<String> extc = new ArrayList();
extc.add("html-head-title");
- from("direct:start").marshal().any23(BASEURI, Any23Type.TURTLE, conf, extc).to("mock:result");
+ from("direct:start").unmarshal().any23(BASEURI, Any23Type.TURTLE, conf, extc).to("mock:result");
}
};
}
diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatMarshalTest.java
similarity index 78%
copy from components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java
copy to components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatMarshalTest.java
index 244dedd..e5c55e1 100644
--- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java
+++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatMarshalTest.java
@@ -17,20 +17,16 @@
package org.apache.camel.dataformat.any23;
import java.io.File;
-import java.io.InputStream;
import java.util.List;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
-import org.apache.commons.io.IOUtils;
import org.eclipse.rdf4j.model.Model;
-import org.eclipse.rdf4j.rio.RDFFormat;
-import org.eclipse.rdf4j.rio.Rio;
import org.junit.Test;
-public class Any23DataFormatDefaultTest extends CamelTestSupport {
+public class Any23DataFormatMarshalTest extends CamelTestSupport {
private final String BASEURI = "http://mock.foo/bar";
@@ -42,10 +38,8 @@ public class Any23DataFormatDefaultTest extends CamelTestSupport {
List<Exchange> list = resultEndpoint.getReceivedExchanges();
for (Exchange exchange : list) {
Message in = exchange.getIn();
- String resultingRDF = in.getBody(String.class);
- InputStream toInputStream = IOUtils.toInputStream(resultingRDF);
- Model parse = Rio.parse(toInputStream, BASEURI, RDFFormat.RDFXML);
- assertEquals(parse.size(), 28);
+ Model resultingRDF = in.getBody(Model.class);
+ assertEquals(resultingRDF.size(), 28);
}
}
@@ -53,7 +47,10 @@ public class Any23DataFormatDefaultTest extends CamelTestSupport {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- from("direct:start").marshal().any23(BASEURI).to("mock:result");
+ Any23DataFormat df = new Any23DataFormat().setBaseURI(BASEURI).setOutputFormat(Any23OutputFormat.RDF4JMODEL);
+ from("direct:start").unmarshal(df).to("direct:r1");
+ from("direct:r1").marshal(df).to("direct:r2");
+ from("direct:r2").unmarshal(df).to("mock:result");
}
};
}
diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatModelTest.java
similarity index 78%
copy from components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java
copy to components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatModelTest.java
index 244dedd..14ead31 100644
--- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java
+++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatModelTest.java
@@ -17,20 +17,17 @@
package org.apache.camel.dataformat.any23;
import java.io.File;
-import java.io.InputStream;
import java.util.List;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.model.dataformat.Any23Type;
import org.apache.camel.test.junit4.CamelTestSupport;
-import org.apache.commons.io.IOUtils;
import org.eclipse.rdf4j.model.Model;
-import org.eclipse.rdf4j.rio.RDFFormat;
-import org.eclipse.rdf4j.rio.Rio;
import org.junit.Test;
-public class Any23DataFormatDefaultTest extends CamelTestSupport {
+public class Any23DataFormatModelTest extends CamelTestSupport {
private final String BASEURI = "http://mock.foo/bar";
@@ -42,10 +39,8 @@ public class Any23DataFormatDefaultTest extends CamelTestSupport {
List<Exchange> list = resultEndpoint.getReceivedExchanges();
for (Exchange exchange : list) {
Message in = exchange.getIn();
- String resultingRDF = in.getBody(String.class);
- InputStream toInputStream = IOUtils.toInputStream(resultingRDF);
- Model parse = Rio.parse(toInputStream, BASEURI, RDFFormat.RDFXML);
- assertEquals(parse.size(), 28);
+ Model resultingRDF = in.getBody(Model.class);
+ assertEquals(resultingRDF.size(), 28);
}
}
@@ -53,7 +48,7 @@ public class Any23DataFormatDefaultTest extends CamelTestSupport {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- from("direct:start").marshal().any23(BASEURI).to("mock:result");
+ from("direct:start").unmarshal().any23(BASEURI, Any23Type.RDF4JMODEL).to("mock:result");
}
};
}
diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatOutputFormatTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatOutputFormatTest.java
index d00c196..ecdd9b2 100644
--- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatOutputFormatTest.java
+++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatOutputFormatTest.java
@@ -54,7 +54,7 @@ public class Any23DataFormatOutputFormatTest extends CamelTestSupport {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- from("direct:start").marshal().any23(BASEURI, Any23Type.TURTLE).to("mock:result");
+ from("direct:start").unmarshal().any23(BASEURI, Any23Type.TURTLE).to("mock:result");
}
};
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/Any23DataFormat.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/Any23DataFormat.java
index 2b9180e..0560836 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/Any23DataFormat.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/Any23DataFormat.java
@@ -35,7 +35,7 @@ import org.apache.camel.spi.Metadata;
public class Any23DataFormat extends DataFormatDefinition {
@XmlAttribute
- @Metadata(defaultValue = "RDFXML")
+ @Metadata(defaultValue = "RDF4JMODEL")
private Any23Type outputFormat;
@XmlElement
private Map<String, String> configurations;
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/Any23Type.java b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/Any23Type.java
index bdd0a59..1eb81b2 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/Any23Type.java
+++ b/core/camel-core/src/main/java/org/apache/camel/model/dataformat/Any23Type.java
@@ -26,5 +26,5 @@ import javax.xml.bind.annotation.XmlType;
@XmlEnum
public enum Any23Type {
- NTRIPLES, TURTLE, NQUADS, RDFXML, JSONLD, RDFJSON
+ NTRIPLES, TURTLE, NQUADS, RDFXML, JSONLD, RDFJSON, RDF4JMODEL
}
diff --git a/core/camel-core/src/main/java/org/apache/camel/reifier/dataformat/Any23DataFormatReifier.java b/core/camel-core/src/main/java/org/apache/camel/reifier/dataformat/Any23DataFormatReifier.java
index 8f33e6a..f752ce9 100644
--- a/core/camel-core/src/main/java/org/apache/camel/reifier/dataformat/Any23DataFormatReifier.java
+++ b/core/camel-core/src/main/java/org/apache/camel/reifier/dataformat/Any23DataFormatReifier.java
@@ -28,6 +28,11 @@ public class Any23DataFormatReifier extends DataFormatReifier<Any23DataFormat> {
}
@Override
+ protected DataFormat doCreateDataFormat(CamelContext camelContext) {
+ return super.doCreateDataFormat(camelContext);
+ }
+
+ @Override
protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) {
if (definition.getOutputFormat() != null) {
setProperty(camelContext, dataFormat, "outputFormat", definition.getOutputFormat());
diff --git a/docs/components/modules/ROOT/pages/any23-dataformat.adoc b/docs/components/modules/ROOT/pages/any23-dataformat.adoc
index 3155e14..5a8b0ad 100644
--- a/docs/components/modules/ROOT/pages/any23-dataformat.adoc
+++ b/docs/components/modules/ROOT/pages/any23-dataformat.adoc
@@ -1,28 +1,11 @@
[[any23-dataformat]]
== Any23 DataFormat
-== TidyMarkup DataFormat
-*Available as of Camel version 1.0*
-
-
-*Available as of Camel version 1.0*
-
-TidyMarkup is a Data Format that uses the
-http://www.ccil.org/~cowan/XML/tagsoup/[TagSoup] to tidy up HTML. It can
-be used to parse ugly HTML and return it as pretty wellformed HTML.
-
-*Camel eats our own -dog food- soap*
-
-We had some issues in our pdf Manual where we had some
-strange symbols. So http://janstey.blogspot.com/[Jonathan] used this
-data format to tidy up the wiki html pages that are used as base for
-rendering the pdf manuals. And then the mysterious symbols vanished.
-
-TidyMarkup only supports the *unmarshal* operation
-as we really don't want to turn well formed HTML into ugly HTML.
-
-### TidyMarkup Options
+== Any23 DataFormat
+*Available as of Camel version 3.0*
+Any23 is a Data Format that is intended to convert HTML from a site (or file) into rdf.
+### Any23 Options
// dataformat options: START
The Any23 dataformat supports 5 options, which are listed below.
@@ -32,7 +15,7 @@ The Any23 dataformat supports 5 options, which are listed below.
[width="100%",cols="2s,1m,1m,6",options="header"]
|===
| Name | Default | Java Type | Description
-| outputFormat | MODEL | Any23Type |
+| outputFormat | RDF4JMODEL | Any23Type |
| configurations | | Map |
| extractors | | List |
| baseURI | | String |
diff --git a/parent/pom.xml b/parent/pom.xml
index 445abf9..a91078f 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -50,6 +50,7 @@
<antlr-bundle-version>3.5.2_1</antlr-bundle-version>
<antlr-runtime-bundle-version>3.5.2_1</antlr-runtime-bundle-version>
<apacheds-version>2.0.0-M24</apacheds-version>
+ <apache-any23-version>2.3</apache-any23-version>
<apache-drill-version>1.16.0</apache-drill-version>
<apache-gora-version>0.9</apache-gora-version>
<apache-mime4j-version>0.8.3</apache-mime4j-version>
@@ -528,6 +529,7 @@
<quartz-version>2.3.1</quartz-version>
<quickfixj-version>2.1.1</quickfixj-version>
<rabbitmq-amqp-client-version>5.7.3</rabbitmq-amqp-client-version>
+ <rdf4j-version>3.0.0-M1</rdf4j-version>
<reactive-streams-version>1.0.2</reactive-streams-version>
<reactor-version>3.2.11.RELEASE</reactor-version>
<reflections-bundle-version>0.9.11_1</reflections-bundle-version>
@@ -4892,6 +4894,20 @@
<artifactId>tagsoup</artifactId>
<version>${tagsoup-version}</version>
</dependency>
+
+ <!-- optional Any23 -->
+ <dependency>
+ <groupId>org.apache.any23</groupId>
+ <artifactId>apache-any23-core</artifactId>
+ <version>${apache-any23-version}</version>
+ </dependency>
+
+ <!-- optional RDF4J -->
+ <dependency>
+ <groupId>org.eclipse.rdf4j</groupId>
+ <artifactId>rdf4j-runtime</artifactId>
+ <version>${rdf4j-version}</version>
+ </dependency>
<!-- optional Axiom -->
<dependency>
diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml
index 9188304..adcebd3 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -170,6 +170,10 @@
<bundle dependency='true'>mvn:io.netty/netty-transport-native-unix-common/${netty-version}</bundle>
<bundle>mvn:org.apache.camel/camel-amqp/${project.version}</bundle>
</feature>
+ <feature name='camel-any23' version='${project.version}' start-level='50'>
+ <feature version='${project.version}'>camel-core</feature>
+ <bundle>mvn:org.apache.camel/camel-any23/${project.version}</bundle>
+ </feature>
<feature name='camel-apns' version='${project.version}' start-level='50'>
<feature version='${project.version}'>camel-core</feature>
<bundle dependency='true'>mvn:org.apache.mina/mina-core/${mina-version}</bundle>
diff --git a/platforms/spring-boot/components-starter/camel-any23-starter/pom.xml b/platforms/spring-boot/components-starter/camel-any23-starter/pom.xml
index 3bb59a6..801bc39 100644
--- a/platforms/spring-boot/components-starter/camel-any23-starter/pom.xml
+++ b/platforms/spring-boot/components-starter/camel-any23-starter/pom.xml
@@ -38,6 +38,22 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-any23</artifactId>
<version>${project.version}</version>
+ <!--START OF GENERATED CODE-->
+ <exclusions>
+ <exclusion>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ <!--END OF GENERATED CODE-->
</dependency>
<!--START OF GENERATED CODE-->
<dependency>
diff --git a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
index 3764ce2..3f1bc85 100644
--- a/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/camel-spring-boot-dependencies/pom.xml
@@ -226,6 +226,11 @@
<version>1.1.3</version>
</dependency>
<dependency>
+ <groupId>org.apache.any23</groupId>
+ <artifactId>apache-any23-core</artifactId>
+ <version>2.3</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>1.8.2</version>
@@ -3761,6 +3766,11 @@
</exclusions>
</dependency>
<dependency>
+ <groupId>org.eclipse.rdf4j</groupId>
+ <artifactId>rdf4j-runtime</artifactId>
+ <version>3.0.0-M1</version>
+ </dependency>
+ <dependency>
<groupId>org.hamcrest</groupId>
<artifactId>java-hamcrest</artifactId>
<version>2.0.0.0</version>
diff --git a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/Any23Type.java b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelAny23Test.java
similarity index 67%
copy from core/camel-core/src/main/java/org/apache/camel/model/dataformat/Any23Type.java
copy to tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelAny23Test.java
index bdd0a59..0415345 100644
--- a/core/camel-core/src/main/java/org/apache/camel/model/dataformat/Any23Type.java
+++ b/tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelAny23Test.java
@@ -14,17 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.model.dataformat;
+package org.apache.camel.itest.karaf;
-import javax.xml.bind.annotation.XmlEnum;
-import javax.xml.bind.annotation.XmlType;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.junit.PaxExam;
-/**
- * Represents the different types of bindy data formats.
- */
-@XmlType
-@XmlEnum
-public enum Any23Type {
+@RunWith(PaxExam.class)
+public class CamelAny23Test extends BaseKarafTest {
+
+ public static final String COMPONENT = extractName(CamelAny23Test.class);
+
+ @Test
+ public void test() throws Exception {
+ testDataFormat(COMPONENT, "any23");
+ }
- NTRIPLES, TURTLE, NQUADS, RDFXML, JSONLD, RDFJSON
}