2017-04-05 2 views
0

Ich habe eine einfache Anwendung, die den Kamel-Wetterdienst verwenden. Ich kann das Ergebnis in meiner Konsole protokollieren, aber ich möchte das Ergebnis in einer Variablen wie einem String speichern, damit ich es auf einem JLabel oder etwas zeigen kann.Apache Kamel erhalten Ergebnis als Zeichenfolge

Mein Weg ist:

from("weather:foo?location=Breda,Netherlands&appid=appid") 
    .to("bean:outPutBean?method=printLn") 
    .to("stream:out"); 

Die outputBean tut nichts anderes als eine einfache Rückkehr zu diesem Zeitpunkt. Ich möchte einen JSON-Parser in dieser Funktion erstellen.

public class OutputBean { 
    public String printLn(String msg){ 
     return msg; 
    } 
} 

Wie kann ich das Ergebnis von der Route in einem variabele speichern, so kann ich die Daten zu einem späteren Zeitpunkt verwenden?

EDIT: Mein Code sieht jetzt aus wie:

camelContext.addRoutes(new RouteBuilder() {    
    @Override 
    public void configure() throws Exception { 
     from("weather:foo?location="+ txtCity.getText() + "&mode=xml&units=metric&appid=appid") 
     .setHeader("temperature", XPathBuilder.xpath("//temperature/@value", String.class)) 
     .to("bean:outPutBean?method=printLn") 
     .to("stream:out"); 
    } 
}); 
[HERE] 

public class OutputBean { 
    public String printLn(@Header("temperature")String temperature){ 
     return "Output: " + temperature; 
    } 
} 

Wie kann ich die Temperatur variabele auf dem [HIER] Ort verwenden?

Antwort

0

Ich würde das tun.

  1. Speichern Sie, was Sie wollen, von Ihrer Nachricht in eine Kopfzeile.
from("weather:foo?location=Breda,Netherlands&appid=appid") 
.setHeader("myHeader", "myHeaderValue");  
.to("bean:outPutBean?method=printLn") 
.to("stream:out"); 

Sie können den Wert von entweder dem Eingangskörper erhalten oder irgendwo anders aus.

  1. In Ihrer Bean würde ich diesen Header erhalten und speichern und dann tun, was Sie wollen.
public class OutputBean { 
    public String printLn(@Header("myHeader")String header){ 
     String value = header; 
     return value; 
    } 
+0

Aber wie kann ich das '' wie JOptionPane value' in zu bekommen. showMessageDialog (null, value); '? – NVO

+0

Rufen Sie einfach den Aufruf an, der den Dialog mit dem Wert als Parameter anzeigt. Oder was meinst du? Du hast den Wert nun einfach dorthin übergeben, wo dein Dialogcode sein wird. –

+0

Schön, ich bekomme den Ortsnamen in meiner Bohne. Aber will ich wirklich brauchen, ist dies: 'camelContext.addRoutes (neu RouteBuilder() { \t @Override \t public void configure() throws Exception { \t \t aus ("Wetter: foo location =" + txtCity. getText() + "& mode = xml & Einheiten = IMPERIAL & appid = appid") \t \t .setHeader ("cityname", XPathBuilder.xpath ("// Stadt/@ name", String.class)) \t \t .to ("Bohne : outPutBean? Methode = printLn ") \t \t.zu ("stream: out"); \t \t} \t}); \t \t \t \t JOptionPane.showMessageDialog (null, cityname); ' Deshalb möchte ich die nach der Route cityname verwenden. – NVO

0
  • eine Membervariable der Klasse hinzufügen die Routen einrichten.
  • einen Inline-Prozessor auf die Route
  • Im Prozessor Fügen Sie die Zeichenfolge, die Sie aus einem Header wollen erhalten und speichern sie in der Variablen
Verwandte Themen