2016-08-29 2 views
1

Ich benutze Camel mit Spring Boot. Während einer Dienstwegimplementierung, die im Grunde den Nachrichtentext protokolliert, habe ich einen Fehler gesehen, der wie folgt ist.Camel complex type to string typeconverter Fehler

No converter found capable of converting from type [com.example.Book] to type [java.lang.String] 

Mein Weg ist:

from(REST_ENDPOINT_URI) 
    .log("${headers}") 
    .log("${body}") 

und ich bekomme Fehler in Protokollkörperlinie.

Meine Frage ist das erwartete Verhalten? Warum ruft Camel nicht einfach die toString Methode des Book Objekts an. Und wenn das das erwartete Verhalten ist, dann brauche ich einen Stringkonverter für jeden neuen komplexen Typ?

+0

hast du versucht, .log ("$ {body.toString}")? Angenommen, ein toString() ist definiert. –

Antwort

0

Können Sie ein ausführbares Beispiel erstellen, das das Problem reproduziert? Dies ist definitiv ein Szenario, das Camel durch Aufruf von toString behandelt.

Zum Beispiel können Sie es mit Test:

@Component 
public class DemoRouteBuilder extends RouteBuilder { 


    @Override 
    public void configure() throws Exception { 
    from("timer:sender?delay=5s&period=3s") 
     .setBody(constant(new Book("Lord of the Rings", "J.R.R. Tolkien"))) 
     .log("${body}!"); 
    } 

    public static class Book { 
    private final String title; 
    private final String author; 

    public Book(String title, String author) { 
     this.title = title; 
     this.author = author; 
    } 

    @Override 
    public String toString() { 
     return "Book{" + 
      "title='" + title + '\'' + 
      ", author='" + author + '\'' + 
      '}'; 
    } 
    } 
} 

Dieses in der folgenden Ausgabe führt:

2016-08-30 11: 57: 49,802 INFO 8778 --- [Timer : // Absender] route1: Buch {title = 'Herr der Ringe', Autor = 'JRR Tolkien!}

2016-08-30 11: 57: 52.792 INFO 8778 --- [timer: // sender] route1: Buch {title = 'Herr der Ringe', Autor = 'J.R.R. Tolkien!}

2016-08-30 11: 57: 55.795 INFO 8778 --- [timer: // sender] route1: Buch {title = 'Herr der Ringe', Autor = 'J.R.R. Tolkien!}