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 17ebeaabefea872cf2330038793af4c1b3a72d1f Author: Roberto Flores <betoflow...@gmail.com> AuthorDate: Mon Jul 15 06:55:41 2019 -0500 Improve configurability --- components/camel-any23/pom.xml | 5 + .../src/main/docs/any23-dataformat.adoc | 15 ++- .../camel/dataformat/any23/Any23DataFormat.java | 129 ++++++++------------- .../camel/dataformat/any23/Any23OutputFormat.java | 2 +- .../camel/dataformat/any23/Any23Parameters.java | 36 ------ .../camel/dataformat/any23/utils/Any23Utils.java | 58 +++++++++ ...java => Any23DataFormatConfigurationsTest.java} | 17 ++- ...icTest.java => Any23DataFormatDefaultTest.java} | 10 +- ...est.java => Any23DataFormatExtractorsTest.java} | 21 +++- ...t.java => Any23DataFormatOutputFormatTest.java} | 11 +- .../camel/dataformat/any23/Any23TestSupport.java | 15 ++- .../src/test/resources/log4j2.properties | 2 +- .../camel/dataformat/any23/microformat/vcard.html | 14 +++ .../apache/camel/dataformat/any23/testfile1.html | 38 ------ .../camel/dataformat/any23/testfile2-evilHtml.html | 77 ------------ 15 files changed, 180 insertions(+), 270 deletions(-) diff --git a/components/camel-any23/pom.xml b/components/camel-any23/pom.xml index 14f7b4c..0330ca0 100644 --- a/components/camel-any23/pom.xml +++ b/components/camel-any23/pom.xml @@ -79,5 +79,10 @@ <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> + </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 962f3a4..3155e14 100644 --- a/components/camel-any23/src/main/docs/any23-dataformat.adoc +++ b/components/camel-any23/src/main/docs/any23-dataformat.adoc @@ -32,10 +32,10 @@ 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 | String | -| configurations | | String | -| extractors | | String | -| baseuri | | String | +| outputFormat | MODEL | Any23Type | +| configurations | | Map | +| extractors | | List | +| baseURI | | String | | contentTypeHeader | false | Boolean | Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSon etc. |=== // dataformat options: END @@ -55,19 +55,18 @@ When using Spring Boot make sure to use the following Maven dependency to have s ---- -The component supports 6 options, which are listed below. +The component supports 5 options, which are listed below. [width="100%",cols="2,5,^1,2",options="header"] |=== | Name | Description | Default | Type -| *camel.dataformat.any23.baseuri* | | | String +| *camel.dataformat.any23.base-u-r-i* | | | String | *camel.dataformat.any23.configurations* | | | String | *camel.dataformat.any23.content-type-header* | Whether the data format should set the Content-Type header with the type from the data format if the data format is capable of doing so. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSon etc. | false | Boolean | *camel.dataformat.any23.enabled* | Whether to enable auto configuration of the any23 data format. This is enabled by default. | | Boolean -| *camel.dataformat.any23.extractors* | | | String -| *camel.dataformat.any23.output-format* | | MODEL | String +| *camel.dataformat.any23.extractors* | | | List |=== // spring-boot-auto-configure options: END 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 0d2122c..2400b0a 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 @@ -18,19 +18,18 @@ package org.apache.camel.dataformat.any23; import java.io.InputStream; import java.io.OutputStream; +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.writer.JSONLDWriter; -import org.apache.any23.writer.NQuadsWriter; -import org.apache.any23.writer.NTriplesWriter; -import org.apache.any23.writer.RDFXMLWriter; import org.apache.any23.writer.TripleHandler; -import org.apache.any23.writer.TurtleWriter; import org.apache.camel.Exchange; +import org.apache.camel.dataformat.any23.utils.Any23Utils; import org.apache.camel.spi.DataFormat; import org.apache.camel.spi.DataFormatName; import org.apache.camel.spi.annotations.Dataformat; @@ -52,14 +51,11 @@ public class Any23DataFormat extends ServiceSupport implements DataFormat, DataF private static final Logger LOG = LoggerFactory.getLogger(Any23DataFormat.class); private Any23 any23; - private Any23OutputFormat format = Any23OutputFormat.RDFXML; - private ModifiableConfiguration conf; - private String[] extractorsList; - private String configurations; - private String extractors; - private String outputFormat; - private String documentIRI = "http://mock.foo/bar"; + private Map<String, String> configurations; + private List<String> extractors; + private Any23OutputFormat outputFormat; + private String baseURI; @Override public String getDataFormatName() { @@ -71,30 +67,8 @@ public class Any23DataFormat extends ServiceSupport implements DataFormat, DataF */ 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, documentIRI); - TripleHandler handler; - switch (format) { - case NTRIPLES: - handler = new NTriplesWriter(outputStream); - break; - case TURTLE: - handler = new TurtleWriter(outputStream); - break; - case NQUADS: - handler = new NQuadsWriter(outputStream); - break; - case RDFXML: - handler = new RDFXMLWriter(outputStream); - break; - case JSONLD: - handler = new JSONLDWriter(outputStream); - break; - case MODEL: - handler = new NTriplesWriter(outputStream); - break; - default: - handler = new NTriplesWriter(outputStream); - } + DocumentSource source = new StringDocumentSource(payload, baseURI); + TripleHandler handler = Any23Utils.obtainHandler(outputFormat, outputStream); any23.extract(source, handler); handler.close(); } @@ -104,33 +78,38 @@ public class Any23DataFormat extends ServiceSupport implements DataFormat, DataF */ 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; } @Override protected void doStart() throws Exception { - conf = DefaultConfiguration.copy(); - if (configurations != null) { - String[] newConfigs = configurations.split(";"); - for (String con : newConfigs) { - String[] vals = con.split("="); - conf.setProperty(vals[0], vals[0]); + ModifiableConfiguration conf = null; + String[] extrArray = null; + if (extractors != null && !extractors.isEmpty()) { + extrArray = new String[extractors.size()]; + extrArray = extractors.toArray(extrArray); + } + if (configurations != null && !configurations.isEmpty()) { + conf = DefaultConfiguration.copy(); + for (Entry<String, String> entry : configurations.entrySet()) { + conf.setProperty(entry.getKey(), entry.getValue()); } } - if (extractors != null) { - extractorsList = extractors.split(";"); + if (outputFormat == null) { + //Default output format + outputFormat = Any23OutputFormat.RDFXML; } - if (configurations == null && extractors == null) { + if (conf == null && extrArray == null) { any23 = new Any23(); - } else if (configurations != null && extractors == null) { + } else if (conf != null && extrArray == null) { any23 = new Any23(conf); - } else if (configurations == null && extractors != null) { - any23 = new Any23(extractors); - } else if (configurations != null && extractors != null) { - any23 = new Any23(conf, extractors); - } - if (outputFormat != null) { - format = Any23OutputFormat.valueOf(outputFormat); + } else if (conf == null && extrArray != null) { + any23 = new Any23(extrArray); + } else if (conf != null && extrArray != null) { + any23 = new Any23(conf, extrArray); } } @@ -147,52 +126,36 @@ public class Any23DataFormat extends ServiceSupport implements DataFormat, DataF this.any23 = any23; } - public Any23OutputFormat getFormat() { - return format; - } - - public void setFormat(Any23OutputFormat format) { - this.format = format; - } - - public ModifiableConfiguration getConf() { - return conf; - } - - public void setConf(ModifiableConfiguration conf) { - this.conf = conf; - } - - public String[] getExtractorsList() { - return extractorsList; - } - - public void setExtractorsList(String[] extractorsList) { - this.extractorsList = extractorsList; - } - - public String getConfigurations() { + public Map<String, String> getConfigurations() { return configurations; } - public void setConfigurations(String configurations) { + public void setConfigurations(Map<String, String> configurations) { this.configurations = configurations; } - public String getExtractors() { + public List<String> getExtractors() { return extractors; } - public void setExtractors(String extractors) { + public void setExtractors(List<String> extractors) { this.extractors = extractors; } - public String getOutputFormat() { + public Any23OutputFormat getOutputFormat() { return outputFormat; } - public void setOutputFormat(String outputFormat) { + public void setOutputFormat(Any23OutputFormat outputFormat) { this.outputFormat = outputFormat; } + public String getBaseURI() { + return baseURI; + } + + public void setBaseURI(String baseURI) { + this.baseURI = baseURI; + } + } 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 0ceddc5..3d4d12a 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, MODEL + NTRIPLES, TURTLE, NQUADS, RDFXML, JSONLD, RDFJSON } diff --git a/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23Parameters.java b/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23Parameters.java deleted file mode 100644 index cb9536c..0000000 --- a/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23Parameters.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package org.apache.camel.dataformat.any23; - -import java.io.ByteArrayOutputStream; -import org.apache.any23.writer.NTriplesWriter; -import org.apache.any23.writer.TripleHandler; - -/** - * - * @author joe - */ -public class Any23Parameters { - - private ByteArrayOutputStream OUT; -//public static final TripleHandler TRIPLEHANDLER ; - - private TripleHandler triplehandler; - - public TripleHandler getTripleHandlerOutput() { - return triplehandler; - } - - public void setTripleHandlerOutput(TripleHandler triplehandler) { - this.triplehandler = triplehandler; - } - - public Any23Parameters(ByteArrayOutputStream out) { - this.OUT = out; - this.triplehandler = new NTriplesWriter(out); - } - -} 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 new file mode 100644 index 0000000..6c97a5e --- /dev/null +++ b/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/utils/Any23Utils.java @@ -0,0 +1,58 @@ +/* + * 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.utils; + +import java.io.OutputStream; +import org.apache.any23.writer.JSONLDWriter; +import org.apache.any23.writer.JSONWriter; +import org.apache.any23.writer.NQuadsWriter; +import org.apache.any23.writer.NTriplesWriter; +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; + +public class Any23Utils { + + public static TripleHandler obtainHandler(Any23OutputFormat format, OutputStream outputStream) { + TripleHandler handler; + switch (format) { + case NTRIPLES: + handler = new NTriplesWriter(outputStream); + break; + case TURTLE: + handler = new TurtleWriter(outputStream); + break; + case NQUADS: + handler = new NQuadsWriter(outputStream); + break; + case RDFXML: + handler = new RDFXMLWriter(outputStream); + break; + case JSONLD: + handler = new JSONLDWriter(outputStream); + break; + case RDFJSON: + handler = new JSONWriter(outputStream); + break; + default: + throw new AssertionError(format.name()); + } + return handler; + } + +} diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatConfigurationsTest.java similarity index 77% copy from components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java copy to components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatConfigurationsTest.java index 9f7a465..d7c34dd 100644 --- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java +++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatConfigurationsTest.java @@ -18,11 +18,14 @@ package org.apache.camel.dataformat.any23; import java.io.File; import java.io.InputStream; +import java.util.HashMap; import java.util.List; +import java.util.Map; 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; @@ -30,10 +33,12 @@ import org.eclipse.rdf4j.rio.RDFFormat; import org.eclipse.rdf4j.rio.Rio; import org.junit.Test; -public class Any23DataFormatBasicTest extends CamelTestSupport { +public class Any23DataFormatConfigurationsTest extends CamelTestSupport { + + private final String BASEURI = "http://mock.foo/bar"; @Test - public void testMarshalToRDFXMLFromHTML() throws Exception { + public void test() throws Exception { MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); String contenhtml = Any23TestSupport.loadFileAsString(new File("src/test/resources/org/apache/camel/dataformat/any23/microformat/vcard.html")); template.sendBody("direct:start", contenhtml); @@ -42,8 +47,8 @@ public class Any23DataFormatBasicTest extends CamelTestSupport { Message in = exchange.getIn(); String resultingRDF = in.getBody(String.class); InputStream toInputStream = IOUtils.toInputStream(resultingRDF); - Model parse = Rio.parse(toInputStream, "http://mock.foo/bar", RDFFormat.RDFXML); - assertEquals(parse.size(), 28); + Model parse = Rio.parse(toInputStream, BASEURI, RDFFormat.TURTLE); + assertEquals(parse.size(), 25); } } @@ -51,7 +56,9 @@ public class Any23DataFormatBasicTest extends CamelTestSupport { protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { public void configure() { - from("direct:start").marshal().any23("http://mock.foo/bar").to("mock:result"); + 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"); } }; } diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java similarity index 87% copy from components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java copy to components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java index 9f7a465..244dedd 100644 --- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java +++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatDefaultTest.java @@ -30,10 +30,12 @@ import org.eclipse.rdf4j.rio.RDFFormat; import org.eclipse.rdf4j.rio.Rio; import org.junit.Test; -public class Any23DataFormatBasicTest extends CamelTestSupport { +public class Any23DataFormatDefaultTest extends CamelTestSupport { + + private final String BASEURI = "http://mock.foo/bar"; @Test - public void testMarshalToRDFXMLFromHTML() throws Exception { + public void test() throws Exception { MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); String contenhtml = Any23TestSupport.loadFileAsString(new File("src/test/resources/org/apache/camel/dataformat/any23/microformat/vcard.html")); template.sendBody("direct:start", contenhtml); @@ -42,7 +44,7 @@ public class Any23DataFormatBasicTest extends CamelTestSupport { Message in = exchange.getIn(); String resultingRDF = in.getBody(String.class); InputStream toInputStream = IOUtils.toInputStream(resultingRDF); - Model parse = Rio.parse(toInputStream, "http://mock.foo/bar", RDFFormat.RDFXML); + Model parse = Rio.parse(toInputStream, BASEURI, RDFFormat.RDFXML); assertEquals(parse.size(), 28); } } @@ -51,7 +53,7 @@ public class Any23DataFormatBasicTest extends CamelTestSupport { protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { public void configure() { - from("direct:start").marshal().any23("http://mock.foo/bar").to("mock:result"); + from("direct:start").marshal().any23(BASEURI).to("mock:result"); } }; } diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatExtractorsTest.java similarity index 73% copy from components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java copy to components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatExtractorsTest.java index 9f7a465..1cf88e6 100644 --- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java +++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatExtractorsTest.java @@ -18,11 +18,15 @@ package org.apache.camel.dataformat.any23; import java.io.File; import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; 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; @@ -30,10 +34,12 @@ import org.eclipse.rdf4j.rio.RDFFormat; import org.eclipse.rdf4j.rio.Rio; import org.junit.Test; -public class Any23DataFormatBasicTest extends CamelTestSupport { +public class Any23DataFormatExtractorsTest extends CamelTestSupport { + + private final String BASEURI = "http://mock.foo/bar"; @Test - public void testMarshalToRDFXMLFromHTML() throws Exception { + public void test() throws Exception { MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); String contenhtml = Any23TestSupport.loadFileAsString(new File("src/test/resources/org/apache/camel/dataformat/any23/microformat/vcard.html")); template.sendBody("direct:start", contenhtml); @@ -41,9 +47,10 @@ public class Any23DataFormatBasicTest 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, "http://mock.foo/bar", RDFFormat.RDFXML); - assertEquals(parse.size(), 28); + Model parse = Rio.parse(toInputStream, BASEURI, RDFFormat.TURTLE); + assertEquals(parse.size(), 1); } } @@ -51,7 +58,11 @@ public class Any23DataFormatBasicTest extends CamelTestSupport { protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { public void configure() { - from("direct:start").marshal().any23("http://mock.foo/bar").to("mock:result"); + Map<String, String> conf = new HashMap(); + 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"); } }; } diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatOutputFormatTest.java similarity index 84% rename from components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java rename to components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatOutputFormatTest.java index 9f7a465..d00c196 100644 --- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java +++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatOutputFormatTest.java @@ -23,6 +23,7 @@ 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; @@ -30,10 +31,12 @@ import org.eclipse.rdf4j.rio.RDFFormat; import org.eclipse.rdf4j.rio.Rio; import org.junit.Test; -public class Any23DataFormatBasicTest extends CamelTestSupport { +public class Any23DataFormatOutputFormatTest extends CamelTestSupport { + + private final String BASEURI = "http://mock.foo/bar"; @Test - public void testMarshalToRDFXMLFromHTML() throws Exception { + public void test() throws Exception { MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); String contenhtml = Any23TestSupport.loadFileAsString(new File("src/test/resources/org/apache/camel/dataformat/any23/microformat/vcard.html")); template.sendBody("direct:start", contenhtml); @@ -42,7 +45,7 @@ public class Any23DataFormatBasicTest extends CamelTestSupport { Message in = exchange.getIn(); String resultingRDF = in.getBody(String.class); InputStream toInputStream = IOUtils.toInputStream(resultingRDF); - Model parse = Rio.parse(toInputStream, "http://mock.foo/bar", RDFFormat.RDFXML); + Model parse = Rio.parse(toInputStream, BASEURI, RDFFormat.TURTLE); assertEquals(parse.size(), 28); } } @@ -51,7 +54,7 @@ public class Any23DataFormatBasicTest extends CamelTestSupport { protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { public void configure() { - from("direct:start").marshal().any23("http://mock.foo/bar").to("mock:result"); + from("direct:start").marshal().any23(BASEURI, Any23Type.TURTLE).to("mock:result"); } }; } diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23TestSupport.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23TestSupport.java index 04d4f6a..9f34d74 100644 --- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23TestSupport.java +++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23TestSupport.java @@ -1,11 +1,3 @@ -package org.apache.camel.dataformat.any23; - - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import org.apache.camel.util.IOHelper; - /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -22,6 +14,13 @@ import org.apache.camel.util.IOHelper; * See the License for the specific language governing permissions and * limitations under the License. */ +package org.apache.camel.dataformat.any23; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import org.apache.camel.util.IOHelper; + public final class Any23TestSupport { private Any23TestSupport() { diff --git a/components/camel-any23/src/test/resources/log4j2.properties b/components/camel-any23/src/test/resources/log4j2.properties index 57bb91f..b919809 100644 --- a/components/camel-any23/src/test/resources/log4j2.properties +++ b/components/camel-any23/src/test/resources/log4j2.properties @@ -17,7 +17,7 @@ appender.file.type = File appender.file.name = file -appender.file.fileName = target/camel-atom-test.log +appender.file.fileName = target/camel-any23-test.log appender.file.layout.type = PatternLayout appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n appender.out.type = Console diff --git a/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/microformat/vcard.html b/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/microformat/vcard.html index c09a89b..2b79fb1 100644 --- a/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/microformat/vcard.html +++ b/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/microformat/vcard.html @@ -1,3 +1,17 @@ +<!-- + 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. +--> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> diff --git a/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/testfile1.html b/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/testfile1.html deleted file mode 100644 index b6f4707..0000000 --- a/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/testfile1.html +++ /dev/null @@ -1,38 +0,0 @@ -<!-- - - 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. - ---> -<html> - <head> - <title>FooBar</title> - <meta name=metatag value=foo> - </head> - - <body onload="foo()" > - <p> - Some text - - <p> - Some more Text - <p>TidyMarkupNode - <img src=filename.jpg> - - <font color="red">Some red text - - </body> - -</HTML> \ No newline at end of file diff --git a/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/testfile2-evilHtml.html b/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/testfile2-evilHtml.html deleted file mode 100644 index 35ec6da..0000000 --- a/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/testfile2-evilHtml.html +++ /dev/null @@ -1,77 +0,0 @@ -<!-- - - 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. - ---> -<html> -<META-START> -John Cowan -<TABLE> -<ROW> -<CELL>SOUPE</CELL> -<CELL>BE EVIL!</CELL></ROW> -DE BALISES</TABLE> -<CORR NEW="U" LOC="PI"/> -<G ID="P1"> -Ecritez une balise ouvrante (sans attributs) -</G> -ou fermante HTML ici, s.v.p.</META-START> -<FONT>X Y <p> ABC </FONT> xyz -QRS<sup>TUV<sub>WXY</sup>Z</sub> - -<p>TidyMarkupNode -<script language="javascript"><p></script> -<table><tbody><tr><th>ABC -</table><nr/> -<meta><meta><meta><meta> -<pre xml:space="default">test</pre> -<test xmlns:xml="http://www.example.org/> -</test><hr/> -(add a random HTML tag above) -<r:r:r:test/> - -<b><i></B></I> -<b> - <p>bbb</b></p> - <p>bbb</b></p> - <p>bbb</b></p> -<blink>&grec; -<p xmlns:xqp="http://www.w3.org/1998/XML"> - <span xqp:space="preserve">~~~</span> -</p></blink> -<html:p xmlns:html="http://...."></p> -<@/><!--Apple logo in PUA--> -<!--comment--comment--> -<!--comment--comment> - -<P>]]> -<P id="7" id="8">M</p> -<p xmlns:a="urn" xmlns:b="urn" - a:id="7" b:id="9">~~~</p> -<p id="a" idref="a"/> BE EVIL! -<extreme sID="a" mood="happy"/> -<extreme eID="a" mood="sad"/> -<math><mi>2</mi><msup>3 - </msup></math> <title> -<verse><seg>When,</seg><seg>in</line> -<line>the beginning</line><line>God created -the heaven and the earth.</line></verse> - -<How/><To/><Markup/><Legibly/> -<Name Name="Name">Name</Name> -<list 4 text </p> -<marquee>foo!</marquee> - \ No newline at end of file