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 64f3273e48e3e552a5e64538bf02ff268f92b9d2 Author: Roberto Flores <betoflow...@gmail.com> AuthorDate: Sun Aug 4 00:27:11 2019 -0500 Improve HTTP test. Add Spring XML test. --- components/camel-any23/pom.xml | 11 +++++ .../dataformat/any23/Any23DataFormatHTTPTest.java | 12 ++--- ...TTPTest.java => Any23DataFormatSpringTest.java} | 30 +++++++------ .../any23/spring/SpringAny23DataFormatTest.xml | 51 ++++++++++++++++++++++ .../modules/ROOT/pages/any23-dataformat.adoc | 11 +++-- 5 files changed, 93 insertions(+), 22 deletions(-) diff --git a/components/camel-any23/pom.xml b/components/camel-any23/pom.xml index dcc19fc..9e10141 100644 --- a/components/camel-any23/pom.xml +++ b/components/camel-any23/pom.xml @@ -77,5 +77,16 @@ <groupId>org.eclipse.rdf4j</groupId> <artifactId>rdf4j-runtime</artifactId> </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-http</artifactId> + <scope>test</scope> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> + <artifactId>camel-test-spring</artifactId> + <scope>test</scope> + </dependency> </dependencies> </project> diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatHTTPTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatHTTPTest.java index 086ae00..4a39606 100644 --- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatHTTPTest.java +++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatHTTPTest.java @@ -16,7 +16,6 @@ */ package org.apache.camel.dataformat.any23; -import java.io.File; import java.util.List; import org.apache.camel.Exchange; import org.apache.camel.Message; @@ -33,13 +32,12 @@ public class Any23DataFormatHTTPTest extends CamelTestSupport { @Test 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); + template.sendBody("direct:start", "bar"); List<Exchange> list = resultEndpoint.getReceivedExchanges(); for (Exchange exchange : list) { Message in = exchange.getIn(); Model resultingRDF = in.getBody(Model.class); - assertEquals(resultingRDF.size(), 28); + assertEquals(resultingRDF.size(), 1762); } } @@ -47,7 +45,11 @@ public class Any23DataFormatHTTPTest extends CamelTestSupport { protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { public void configure() { - from("http://dbpedia.org/page/Ecuador").unmarshal().any23(BASEURI).to("mock:result"); + from("direct:start") + .to("http://dbpedia.org/page/Ecuador") + .unmarshal() + .any23(BASEURI) + .to("mock:result"); } }; } diff --git a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatHTTPTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatSpringTest.java similarity index 60% copy from components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatHTTPTest.java copy to components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatSpringTest.java index 086ae00..a164a82 100644 --- a/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatHTTPTest.java +++ b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatSpringTest.java @@ -16,40 +16,42 @@ */ 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.camel.test.spring.CamelSpringTestSupport; +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 static org.junit.Assert.assertEquals; import org.junit.Test; +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; -public class Any23DataFormatHTTPTest extends CamelTestSupport { +public class Any23DataFormatSpringTest extends CamelSpringTestSupport { private final String BASEURI = "http://mock.foo/bar"; @Test 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); + template.sendBody("direct:start", "bar"); List<Exchange> list = resultEndpoint.getReceivedExchanges(); for (Exchange exchange : list) { Message in = exchange.getIn(); - Model resultingRDF = in.getBody(Model.class); - assertEquals(resultingRDF.size(), 28); + String resultingRDF = in.getBody(String.class); + InputStream toInputStream = IOUtils.toInputStream(resultingRDF); + Model parse = Rio.parse(toInputStream, BASEURI, RDFFormat.TURTLE); + assertEquals(parse.size(), 1); } } @Override - protected RouteBuilder createRouteBuilder() { - return new RouteBuilder() { - public void configure() { - from("http://dbpedia.org/page/Ecuador").unmarshal().any23(BASEURI).to("mock:result"); - } - }; + protected AbstractApplicationContext createApplicationContext() { + return new ClassPathXmlApplicationContext("org/apache/camel/dataformat/any23/spring/SpringAny23DataFormatTest.xml"); } } diff --git a/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/spring/SpringAny23DataFormatTest.xml b/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/spring/SpringAny23DataFormatTest.xml new file mode 100644 index 0000000..6ef43db --- /dev/null +++ b/components/camel-any23/src/test/resources/org/apache/camel/dataformat/any23/spring/SpringAny23DataFormatTest.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + 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. +--> + +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd + "> + + <!-- START SNIPPET: e1 --> + <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring"> + + <dataFormats> + <any23 id="any23" baseURI ="http://mock.foo/bar" outputFormat="TURTLE" > + <configurations> + <entry> + <key>any23.extraction.metadata.nesting</key> + <value>off</value> + </entry> + </configurations> + <extractors>html-head-title</extractors> + </any23> + </dataFormats> + + <route> + <from uri="direct:start"/> + <to uri="http://microformats.org/2009/08"/> + <unmarshal> + <custom ref="any23"/> + </unmarshal> + <to uri="mock:result"/> + </route> + + </camelContext> + <!-- END SNIPPET: e1 --> + +</beans> \ No newline at end of file diff --git a/docs/components/modules/ROOT/pages/any23-dataformat.adoc b/docs/components/modules/ROOT/pages/any23-dataformat.adoc index 5a8b0ad..7e51ad2 100644 --- a/docs/components/modules/ROOT/pages/any23-dataformat.adoc +++ b/docs/components/modules/ROOT/pages/any23-dataformat.adoc @@ -1,6 +1,11 @@ [[any23-dataformat]] == Any23 DataFormat -== Any23 DataFormat +Camel Any23 is a DataFormat that uses the Apache Anything To Triples (Any23) library to extract structured data in RDF from a variety of documents on the web. +*Available as of Camel version 3.0* + +The main functionality of this DataFormat focuses on its Unmarshal method which extracts RDF triplets from compatible pages, in a wide variety of RDF syntaxes. + + *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. @@ -62,7 +67,7 @@ An example where the consumer provides some HTML [source,java] --------------------------------------------------------------------------- -from("file://site/inbox").unmarshal().tidyMarkup().to("file://site/blogs"); +from("direct:start").unmarshal().any23("http://mock.foo/bar").to("mock:result"); --------------------------------------------------------------------------- ### Spring XML Example @@ -99,4 +104,4 @@ the download page for the latest versions). <artifactId>camel-tagsoup</artifactId> <version>x.x.x</version> </dependency> ----------------------------------------- +---------------------------------------- \ No newline at end of file