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:00 UTC
[camel] 05/20: basic marshal implementation any23
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 <be...@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:joesega7@gmail.com'>joesega7@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");
}