2017-02-16 5 views
0

Erste org.mule.api.expression.ExpressionRuntimeException auf unter Schnipsel in Mule läuftErste org.mule.api.expression.ExpressionRuntimeException

Ich habe Wert in var1 und var2 als [message.inboundProperties gespeichert.‘ http.query.params'.value1] bzw. [message.inboundProperties.'http.query.params'.value2].

Ich versuche die Summe der übergebenen Parameter zurückzugeben.

import java.lang.Integer; 

int firstValue = Integer.pareseint(flowVars.var1); 
int secondValue =Integer.pareseint(flowVars.var2); 
int result = firstValue + secondValue; 
payload = result 

UPDATE: Ich habe den Fehler behoben, aber jetzt ist es verketten die Eingänge nicht sie hinzufügen. Andere Operatoren wie *, /, - usw. funktionieren gut.

Antwort

0

Sie können mit Mule Expression als versuchen: # [2 + 4]

0

Sie können es in der folgenden Art und Weise versuchen, Java-Transformator-Komponente. Es funktioniert für mich.

Unten ist die Haupt-mule XML-Konfigurationsdatei

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
    xmlns:spring="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd"> 
    <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> 
    <flow name="tryoutFlow"> 
     <http:listener config-ref="HTTP_Listener_Configuration" path="/bill" allowedMethods="GET" doc:name="HTTP"/> 
     <set-variable variableName="var1" value="#[message.inboundProperties.'http.query.params'.value1]" doc:name="var1"/> 
     <set-variable variableName="var2" value="#[message.inboundProperties.'http.query.params'.value2]" doc:name="var2"/> 
     <custom-transformer class="org.mule.transformar.Addition" returnClass="java.lang.Integer doc:name="Java"> 
     </custom-transformer> 
    </flow> 
</mule> 

Und unten sind die Java-Klasse die java Übertragerkomponente Verwendung Ihrer Nachricht zu transformieren. Denken Sie daran, setzen Sie die Java-Klasse unter src/main/java Ordner.

org.mule.transformar.Addition

package org.mule.transformar; 

import org.mule.api.MuleMessage; 
import org.mule.api.transformer.TransformerException; 
import org.mule.api.transport.PropertyScope; 
import org.mule.transformer.AbstractMessageTransformer; 

public class Addition extends AbstractMessageTransformer{ 

    @Override 
    public Integer transformMessage(MuleMessage message, String outputEncoding) throws TransformerException { 
     // TODO Auto-generated method stub 

     Integer i1 = Integer.parseInt(message.getProperty("var1", PropertyScope.INVOCATION)); 

     Integer i2 = Integer.parseInt(message.getProperty("var2", PropertyScope.INVOCATION)); 

     Integer returnVal = i1 + i2; 

     return returnVal; 
    } 
} 
0

Sie haben alles richtig gemacht, aber nur wenige Syntaxfehler wie Integer.pareseint statt Integer.parseInt ...

Bitte beachten Sie die folgende Strömung zu machen arbeitet in einer einfachen Art und Weise: -

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> 
    <flow name="testFlow"> 
     <http:listener config-ref="HTTP_Listener_Configuration" path="/test" doc:name="HTTP"/> 
     <set-variable doc:name="Variable" value="#[message.inboundProperties.'http.query.params'.value1]" variableName="var1"/> 
     <set-variable doc:name="Variable" value="#[message.inboundProperties.'http.query.params'.value2]" variableName="var2"/> 
     <expression-component doc:name="Expression"><![CDATA[ 
import java.lang.Integer; 

int firstValue = Integer.parseInt(flowVars.var1); 
int secondValue = Integer.parseInt(flowVars.var2); 
int result = firstValue + secondValue; 
payload = result]]></expression-component> 
     <object-to-string-transformer doc:name="Object to String"/> 
     <logger message="#['Total '+message.payload]" level="INFO" doc:name="Logger"/> 
    </flow> 

Die uRL zum Test: - http://localhost:8081/test/?value1=12&value2=100