1. Usando seu codigo Java no Mule – Part 1
Mule oferece um conjunto incrível de ferramentas prontas para usar que torna a
sua experiência no desenvolvimento de tão suave quanto possível. Enquanto
na maioria dos cenários, você terá mais do que suficiente, o que acontece se
você precisa dar um passo específico e você quiser personalizá-lo? Sou capaz
de adicionar o meu próprio código Java em meu fluxo mule? Enquanto ele é
altamente recomendável usar os componentes fornecidos pelo Mule
(componentes já testados), você é livre para incorporar suas operações Java /
POJOs / bibliotecas em mule! Abaixo descrevo uma lista de abordagens que eu
espero responder a maioria das suas perguntas! Para estes exemplos que
vamos usar uma classe POJO "Animal”.
public class Animal {
private String name;
public Animal(){
name="maxMule";
}
public Animal(String name){
this.name=name;
}
public String getName() {
2. return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Animal [name=" + name + "]";
}
}
Implementing Callable Interface
Uma abordagem comum é fazer com que a nossa classe Java implementa a
interface org.mule.api.lifecycle.Callable . Nós apenas precisamos de substituir
as OnCall método que recebe como parâmetro o MuleEventContext . Usando
thisMuleEventContext objeto podemos acessar os nossos componentes de
mula . Por exemplo, " eventContext.getMessage ()" irá retornar a mensagem da
aplicação Mule .
No exemplo abaixo, estamos adicionando uma nova propriedade de sessão e
retornar um objeto "Animal" no Payload :
public class OnCallClass implements Callable {
3. @Override
public Object onCall(MuleEventContext eventContext) throws Exception {
eventContext.getMessage().setProperty("surname", "Martinez", PropertyScop
System.out.println("Session Variable updated n");
System.out.println("Returning Animal Object in the payload");
return new Animal();
}
}
view rawOnCallClass.java hosted with by GitHub
Agora vamos usar o <component class=””> para chamar nossa nova class no
mule app:
<flow name="usingCallable">
<http:listener config-ref="HTTP_Listener_Configuration" path="/onCall" doc:na
allowedMethods="GET" />
<component class="javacall.OnCallClass" doc:name="Java" />
<object-to-string-transformer doc:name="Object to String" />
</flow>
Usando uma Custom Message Processor
Podemos descrever um aplicativo Mule como uma mensagem de Mula,
desencadeada por qualquer forma, que passa por diferentes processadores
(passos).
A segunda abordagem define uma dessas etapas usando Java!
4. A nossa nova classe deve implementar
org.mule.api.processor.MessageProcessor . Essa classe tem o processo de
operação que recebe o MuleEvent semelhante à nossa primeira abordagem .
No exemplo abaixo , vamos receber este evento, definir uma carga diferente e
retornar o evento com o nosso novo Payload .
public class MessageProcessorCall implements MessageProcessor{
@Override
public MuleEvent process(MuleEvent event) throws MuleException {
System.out.println("n-------Process Executing, updating payload-------");
event.getMessage().setPayload("Payload Modified from Message processor")
System.out.println("n-------Process executed, payload updated-------");
return event;
}
}
Agora, vamos adicionar no nosso mule app usando <custom-processor
class=””> component:
<flow name="usingCustomMessageProcessor">
<http:listener config-ref="HTTP_Listener_Configuration" path="/customMessage" doc:nam
allowedMethods="GET"/>
<custom-processor class="javacall.MessageProcessorCall" doc:name="Custom Process
<object-to-string-transformer doc:name="Object to String"/>
</flow>