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 d48be9dd3e1e548dc797f1001f85ccabdb6d98f0 Author: Roberto Flores <betoflow...@gmail.com> AuthorDate: Sun Jun 16 23:42:31 2019 -0500 basic marshal implementation any23 --- components/camel-any23/pom.xml | 5 ++ .../camel/dataformat/any23/Any23DataFormat.java | 77 ++++++++++++++++++++-- .../camel/dataformat/any23/Any23Parameters.java | 36 ++++++++++ .../dataformat/any23/Any23DataFormatBasicTest.java | 53 ++++++++++++--- 4 files changed, 157 insertions(+), 14 deletions(-) diff --git a/components/camel-any23/pom.xml b/components/camel-any23/pom.xml index 534cbae..23cb7f0 100644 --- a/components/camel-any23/pom.xml +++ b/components/camel-any23/pom.xml @@ -69,5 +69,10 @@ <artifactId>junit</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.apache.any23</groupId> + <artifactId>apache-any23-core</artifactId> + <version>2.3</version> + </dependency> </dependencies> </project> 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 9f97c98..12cd8dc 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,14 +16,28 @@ */ package org.apache.camel.dataformat.any23; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import org.apache.any23.Any23; +import org.apache.any23.extractor.ExtractionException; +import org.apache.any23.http.HTTPClient; +import org.apache.any23.source.DocumentSource; +import org.apache.any23.source.HTTPDocumentSource; +import org.apache.any23.source.StringDocumentSource; +import org.apache.any23.writer.NTriplesWriter; +import org.apache.any23.writer.TripleHandler; +import org.apache.any23.writer.TripleHandlerException; import org.apache.camel.CamelException; import org.apache.camel.Exchange; +import org.apache.camel.NoTypeConversionAvailableException; +import org.apache.camel.TypeConversionException; 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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,7 +54,7 @@ public class Any23DataFormat extends ServiceSupport implements DataFormat, DataF */ private static final Logger LOG = LoggerFactory.getLogger(Any23DataFormat.class); - + private Any23Parameters parameters ; /** * String or Node to return @@ -56,20 +70,75 @@ public class Any23DataFormat extends ServiceSupport implements DataFormat, DataF public String getDataFormatName() { return "any23"; } + + + /*protected final void setDefaultParameters () { + parameters = new Any23Parameters (); + + }*/ + + /*public Any23DataFormat (){ + this.setDefaultParameters(); + }*/ /** * Marshal data. Generate RDF. */ public void marshal(Exchange exchange, Object object, OutputStream outputStream) throws Exception { - throw new CamelException("Under construction"); + /*final String payload = ExchangeHelper.convertToMandatoryType(exchange, String.class, object); + System.out.print ("payload"); + System.out.print (payload); + + Any23 runner = new Any23();*/ + anytordf( exchange, object, outputStream); + // return n3; + // throw new CamelException("Under construction"); } /** * Unmarshal the data */ public Object unmarshal(Exchange exchange, InputStream inputStream) throws Exception { - - throw new CamelException("Under construction"); + Any23 runner = new Any23(); + runner.setHTTPUserAgent("test-user-agent"); + HTTPClient httpClient = runner.getHTTPClient(); + DocumentSource source = new HTTPDocumentSource( + httpClient, + "http://dbpedia.org/page/Ecuador"); + // System.out.print("#######"); + // System.out.print(source.getContentType()); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + TripleHandler handler = new NTriplesWriter(out); + + runner.extract(source, handler); + + + handler.close(); + + + String n3 = out.toString("UTF-8"); + + // System.out.print (n3); + return n3; + //throw new CamelException("Under construction"); + } + + private void anytordf (final Exchange exchange, Object object, OutputStream outputStream) throws IOException, ExtractionException, TypeConversionException, NoTypeConversionAvailableException, TripleHandlerException{ + final String payload = ExchangeHelper.convertToMandatoryType(exchange, String.class, object); + System.out.println ("PAYLOAD"); + System.out.println (payload); + DocumentSource source = new StringDocumentSource(payload, "http://host.com/service"); + Any23 runner = new Any23(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + this.parameters = new Any23Parameters (out); + runner.extract(source, this.parameters.getTripleHandlerOutput()); + this.parameters.getTripleHandlerOutput().close(); + // out.toString("UTF-8").get + // out.toString("UTF-8"); + System.out.println("SALIDA"); + System.out.println(out.toString("UTF-8")); + outputStream.write(out.toByteArray()); + } @Override 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 new file mode 100644 index 0000000..d15705a --- /dev/null +++ b/components/camel-any23/src/main/java/org/apache/camel/dataformat/any23/Any23Parameters.java @@ -0,0 +1,36 @@ +/* + * 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/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java b/components/camel-any23/src/test/java/org/apache/camel/dataformat/any23/Any23DataFormatBasicTest.java index c65f9e5..fe83fc1 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/Any23DataFormatBasicTest.java @@ -34,37 +34,70 @@ public class Any23DataFormatBasicTest extends CamelTestSupport { @Test public void testUnMarshalToStringOfXml() throws Exception { MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class); - resultEndpoint.expectedMessageCount(2); + //resultEndpoint.expectedMessageCount(2); // String badHtml = TidyMarkupTestSupport.loadFileAsString(new File( // "src/test/resources/org/apache/camel/dataformat/any23/testfile1.html")); // String evilHtml = TidyMarkupTestSupport.loadFileAsString(new File( // "src/test/resources/org/apache/camel/dataformat/any23/testfile2-evilHtml.html")); + + String contenhtml = "<div id='hcard-JOSE-LUIS-SEGARRA-FLORES' class='vcard'> " + +" <a class='url fn n' href='https://www.youtube.com/watch?v=kg1BljLu9YY'> <span class='given-name'>JOSE</span> " + +" <span class='additional-name'>LUIS</span> " + +" <span class='family-name'>SEGARRA FLORES</span> " + +"</a> " + +" <div class='org'>TransExpress</div> " + +" <a class='email' href='mailto:joese...@gmail.com'>joese...@gmail.com</a> " + +" <div class='adr'> " + +" <div class='street-address'>7801 NW 37th Street Doral, FL 33195-6503</div> " + +" <span class='locality'>Doral</span> " + +", " + +" <span class='region'>Florida</span> " + +", " + +" <span class='postal-code'>33195-6503</span> " + +" " + +" <span class='country-name'>Estados Unidos</span> " + +" " + +" </div> " + +" <div class='tel'>3055920839</div> " + +"<p style='font-size:smaller;'>This <a href='http://microformats.org/wiki/hcard'>hCard</a> created with the <a href='http://microformats.org/code/hcard/creator'>hCard creator</a>.</p> " + +"</div>"; + + final String content = "<span class='vcard'> " + +" <span class='fn'>L'Amourita Pizza</span> " + +" Located at " + +" <span class='adr'> " + +" <span class='street-address'>123 Main St</span>, " + +" <span class='locality'>Albequerque</span>, " + +" <span class='region'>NM</span>. " + +" </span> " + +" <a href='http://pizza.example.com' class='url'>http://pizza.example.com</a> " + +"</span> "; - template.sendBody("direct:start", ""); + template.sendBody("direct:start", contenhtml); // template.sendBody("direct:start", evilHtml); - resultEndpoint.assertIsSatisfied(); + //resultEndpoint.assertIsSatisfied(); List<Exchange> list = resultEndpoint.getReceivedExchanges(); + System.out.print(list.size()); for (Exchange exchange : list) { - try { + Message in = exchange.getIn(); // Node tidyMarkup = in.getBody(Node.class); - - // log.debug("Received " + tidyMarkup); + System.out.print(in.getBody(String.class)); + log.info("Received " + in.getBody(String.class)); // assertNotNull("Should be able to convert received body to a string", tidyMarkup); - } catch (Exception e) { - fail("Failed to convert the resulting String to XML: " + e.getLocalizedMessage()); - } + } } @Override protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { - public void configure() { + public void configure() { from("direct:start").marshal().any23().to("mock:result"); + //from("direct:start").unmarshal().any23().to("mock:result"); // from("direct:start").marshal().tidyMarkup(); // from("direct:start").unmarshal().tidyMarkup().to("mock:result"); }