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 <[email protected]> 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 }
