2017-11-23 2 views
0

Ich möchte Datei ändern, mit groovy mit:Apache Camel und <groovy></groovy>

<from uri="file:/data/inbox?delete=true" /> 
    <transform> 
    <groovy> 
     body = body[1..3] 
    </groovy> 
    </transform> 
<to uri="file:/data/outbox"/> 

Ich erhalte eine Fehlermeldung:

groovy.lang.MissingMethodException: No signature of method: org.apache.camel.component.file.GenericFile.getAt() is applicable for argument types: (groovy.lang.IntRange) values: [1..3]

Was mache ich falsch?

+0

Die Körpervariable, die Sie empfangen, ist eine GenericFile, die eine getAt Methode nicht enthält. Was versuchst du zu machen? – Namphibian

+1

Was möchten Sie mit diesem 'body = body [1..3]' machen? In diesem Fall ist der ursprüngliche 'body' eine' GenericFile'-Instanz, aber das groovige Skript 'body [1..3]' versucht, seine 'getAt()' -Methode mit einem nicht unterstützten 'IntRange'-Argument aufzurufen. –

Antwort

1

Ja, die Eingabe ist dateibasiert und Sie versuchen eine groovige Funktion zu verwenden, die auf einer Liste funktioniert, um die ersten bis dritten Elemente zu erfassen. Das kannst du nicht tun. Wenn Sie nur die ersten drei Zeilen einer Datei erfassen möchten, müssen Sie die Nachricht zuerst in eine Liste usw. konvertieren oder den Splitter eip verwenden, um die Datei Zeile für Zeile aufzuteilen und sie dann in einer Liste zusammenzufassen, die Sie dann verwenden können Danach tun Sie das groovy Skript