SlideShare uma empresa Scribd logo
Usando seu codigo Java no Mule – Part 2
Message Transformer
Vamos configurar a nossa classe de transformação que irá devolver o POJO
"Animal" . Neste caso , temos que se estendem "
org.mule.transformer.AbstractMessageTransformer " , utilizando a operação
transformMessage que recebe o MuleMessage como um parâmetro .
No exemplo abaixo temos o nome de uma variável de fluxo e retornar um novo
animal com este nome :
public class AnimalTransformer extends AbstractMessageTransformer{
public Object transformMessage(MuleMessage message, String outputEncoding) throws
TransformerException {
String flowVarName = message.getProperty("flowVarName", PropertyScope.INVOCA
Animal animal=new Animal(flowVarName);
return animal;
}
}
Vamos fazê-lo funcionar ! usando o <custom-transformer> nos podemos
especificar quais tipos de objetos que irá receber e a classe que irá lidar com a
transformação.
<flow name="usingTransformer">
<http:listener config-ref="HTTP_Listener_Configuration" path="/transformer" allowedMeth
doc:name="HTTP"/>
<set-variable variableName="flowVarName" value="#['Max the Mule']" doc:name="Variab
<custom-transformer returnClass="model.Animal" class="javacall.AnimalTransformer"
doc:name="Java"/>
<object-to-string-transformer doc:name="Object to String"/>
</flow>
Transforming via Annotation
Temos a opção de usar Anotações ao implementar nossa solução de
transformação. Para atingir este objetivo , primeiro anotar a classe com
@ContainsTransformerMethods ( "
org.mule.api.annotations.ContainsTransformerMethods ") que marca a classe
como um recipiente de um transformador Mule . O método deve ser anotado
com @Transformer ( " org.mule.api.annotations.Transformer " ) , o que significa
que serão disponibilizados na mula Container.
No exemplo abaixo , estamos usando o @Payload anotação ( "
org.mule.api.annotations.param.Payload " ) para injetar nossa carga útil em
nosso parâmetro String nome e devolver um animal com este nome.
@ContainsTransformerMethods
public class AnimalTransformerAnnotation {
@Transformer
public Animal returnAnimal(@Payload String name){
return new Animal(name);
}
}
Nosso teste do fluxo Mule:
<flow name="usingTransformerAnnotation">
<http:listener config-ref="HTTP_Listener_Configuration" path="/transformerAnnotation"
doc:name="HTTP" allowedMethods="GET"/>
<set-payload value="#['Annotated Max!']" doc:name="Set Payload"/>
<component class="javacall.AnimalTransformerAnnotation" doc:name="Java"/>
<object-to-string-transformer doc:name="Object to String"/>
</flow>
Importando livrarias Java no Dataweave e MEL
Por último, mas não menos importante, vamos definir uma função global que
importa diferentes bibliotecas e pode ser usado via DataWeave , isso não é
legal!
Primeiro de tudo, precisamos definir nossa função global. Neste exemplo ,
vamos calcular o número de dias de um mês previsto como um parâmetro.
Vamos fazer uso do Calendário e SimpleDateFormat bibliotecas.
<configuration doc:name="Configuration">
<expression-language>
<global-functions>
def dayOfTheMonth(date){
import java.util.Calendar;
import java.text.SimpleDateFormat;
cal = Calendar.getInstance();
sdf = new SimpleDateFormat('yyyyMMdd');
cal.setTime(sdf.parse(date));
return cal.getActualMaximum(Calendar.DAY_OF_MONTH).toString();
}
</global-functions>
</expression-language>
</configuration>
Nossa nova função está pronto para ser usado! Podemos agora usar uma
expressão MEL ou incluir nossa função no Dataweave !
MEL: #[dayOfTheMonth(‘20151027’)]
DataWeave: day: dayOfTheMonth(‘20140302’)
Espero que estas várias opções de ajudar a melhorar a sua flexibilidade
durante a utilização da mula !

Mais conteúdo relacionado

PDF
Usando seu codigo java no mule part 1
Jeison Barros
 
PDF
Substituindo o request message no mule
Jeison Barros
 
PDF
Exemplo caso de uso(Mulesoft)
Guilherme Baccas
 
PDF
Java Web 2 - Ferramentas e configuração
Eduardo Mendes
 
PDF
Novas APIs do Java EE 7: JMS e Web Services
Helder da Rocha
 
PDF
De Web Services RESTful a Aplicações Mashup
Wagner Roberto dos Santos
 
PDF
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
lucashungaro
 
Usando seu codigo java no mule part 1
Jeison Barros
 
Substituindo o request message no mule
Jeison Barros
 
Exemplo caso de uso(Mulesoft)
Guilherme Baccas
 
Java Web 2 - Ferramentas e configuração
Eduardo Mendes
 
Novas APIs do Java EE 7: JMS e Web Services
Helder da Rocha
 
De Web Services RESTful a Aplicações Mashup
Wagner Roberto dos Santos
 
Coisas que aprendi e quero passar adiante - RubyConf Brasil 2010
lucashungaro
 

Mais procurados (14)

PDF
PHP e Mysql - INSERT
Marco Pinheiro
 
ODP
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
Dalton Martins
 
PDF
PHP e Mysql - UPDATE
Marco Pinheiro
 
PDF
Java Web 3 - Servlets e JSP 1
Eduardo Mendes
 
PDF
Integração do Flex com PHP através do AMFPHP
elliando dias
 
PDF
Java web 6 JSP Expression Language Taglib parte 2
Eduardo Mendes
 
PPTX
Android webservice
Alan Echer
 
PDF
Java Web 4 - Servlets e JSP 2
Eduardo Mendes
 
PDF
Web 2.0 e AJAX - Parte 2 / 3
David Ruiz
 
PPT
PHP Básico - Parte 4
Marcus Camargo
 
PDF
Alo mundojpa
Sonia Góes
 
PPTX
Aula de Node
Alexandre Oliveira
 
PDF
Doctrine2 Seminário PHP
Guilherme Blanco
 
PDF
Java Web 5 - JSP, Expression Language e Taglibs
Eduardo Mendes
 
PHP e Mysql - INSERT
Marco Pinheiro
 
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
Dalton Martins
 
PHP e Mysql - UPDATE
Marco Pinheiro
 
Java Web 3 - Servlets e JSP 1
Eduardo Mendes
 
Integração do Flex com PHP através do AMFPHP
elliando dias
 
Java web 6 JSP Expression Language Taglib parte 2
Eduardo Mendes
 
Android webservice
Alan Echer
 
Java Web 4 - Servlets e JSP 2
Eduardo Mendes
 
Web 2.0 e AJAX - Parte 2 / 3
David Ruiz
 
PHP Básico - Parte 4
Marcus Camargo
 
Alo mundojpa
Sonia Góes
 
Aula de Node
Alexandre Oliveira
 
Doctrine2 Seminário PHP
Guilherme Blanco
 
Java Web 5 - JSP, Expression Language e Taglibs
Eduardo Mendes
 
Anúncio

Destaque (18)

PDF
Compilação de tutoriais blog MulePE
Jeison Barros
 
PDF
Restful considerada prejudicial - parte 1
Jeison Barros
 
PPTX
My disabled film
CallumFraser
 
PDF
Smuggle Ideas To Real World
YSF-2015
 
PDF
final indian journal paper 123
rajvardhan mane
 
PPTX
Mule
AbdulImrankhan7
 
PPT
IEEE Grant Opportunities for Young Scientists and Students
YSF-2015
 
PPTX
Shipping your logs to elk from mule app/cloudhub part 1
Alex Fernandez
 
PPTX
Mulesoft salesforce connector to update Object.
Yogesh Chandr
 
PDF
Novedades en el tratamiento no farmacológico
Sociedad Española de Cardiología
 
PPTX
Sessió 2. tema i títol
sesgurb
 
PPTX
Αβορίγινες
tapaidiatonkaision
 
PPTX
ινδια
Chrysa Arabatzoglou
 
PPTX
Mule concepts
Sindhu VL
 
PPTX
Xslt attributes
Sindhu VL
 
PPTX
φαγητα της ρωσιας
Chrysa Arabatzoglou
 
PPTX
Transform Message
Francesca Della Corte
 
PPTX
Mule parsing with json
Anirban Sen Chowdhary
 
Compilação de tutoriais blog MulePE
Jeison Barros
 
Restful considerada prejudicial - parte 1
Jeison Barros
 
My disabled film
CallumFraser
 
Smuggle Ideas To Real World
YSF-2015
 
final indian journal paper 123
rajvardhan mane
 
IEEE Grant Opportunities for Young Scientists and Students
YSF-2015
 
Shipping your logs to elk from mule app/cloudhub part 1
Alex Fernandez
 
Mulesoft salesforce connector to update Object.
Yogesh Chandr
 
Novedades en el tratamiento no farmacológico
Sociedad Española de Cardiología
 
Sessió 2. tema i títol
sesgurb
 
Αβορίγινες
tapaidiatonkaision
 
Mule concepts
Sindhu VL
 
Xslt attributes
Sindhu VL
 
φαγητα της ρωσιας
Chrysa Arabatzoglou
 
Transform Message
Francesca Della Corte
 
Mule parsing with json
Anirban Sen Chowdhary
 
Anúncio

Mais de Jeison Barros (20)

PDF
Pdfteste
Jeison Barros
 
PDF
Introdução a RAML - parte 1
Jeison Barros
 
PDF
O básico do uso de rest vs soap
Jeison Barros
 
PDF
Restful considerada prejudicial parte 2
Jeison Barros
 
PDF
Estratégia api e design
Jeison Barros
 
PDF
Transformando eficientemente resultados de uma consulta jdbc para json
Jeison Barros
 
PDF
Como criar um http proxy dinamico com mule parte 3
Jeison Barros
 
PDF
Como criar um http proxy dinamico com mule parte 1
Jeison Barros
 
PDF
Rest api vs SOAP
Jeison Barros
 
PDF
Conectando seu banco de dados usando jdbc
Jeison Barros
 
PDF
Habilidades necessárias para integrar aplicativos e dados
Jeison Barros
 
PDF
Qual integration framework você deve usar parte 2
Jeison Barros
 
PDF
Qual integration framework você deve usar parte 1
Jeison Barros
 
PDF
Consumindo soap wsdl
Jeison Barros
 
PDF
Trabalhando com anexos soap usando módulo cxf do mule
Jeison Barros
 
PDF
Começando com mulesoft e maven
Jeison Barros
 
PDF
Estudo de caso: Mule como um transporte JMS Comum
Jeison Barros
 
PDF
Mule esb com framework cucumber part 1
Jeison Barros
 
PDF
Mule esb com framework cucumber part 2
Jeison Barros
 
PDF
Explorando mule esb sftp adapter
Jeison Barros
 
Pdfteste
Jeison Barros
 
Introdução a RAML - parte 1
Jeison Barros
 
O básico do uso de rest vs soap
Jeison Barros
 
Restful considerada prejudicial parte 2
Jeison Barros
 
Estratégia api e design
Jeison Barros
 
Transformando eficientemente resultados de uma consulta jdbc para json
Jeison Barros
 
Como criar um http proxy dinamico com mule parte 3
Jeison Barros
 
Como criar um http proxy dinamico com mule parte 1
Jeison Barros
 
Rest api vs SOAP
Jeison Barros
 
Conectando seu banco de dados usando jdbc
Jeison Barros
 
Habilidades necessárias para integrar aplicativos e dados
Jeison Barros
 
Qual integration framework você deve usar parte 2
Jeison Barros
 
Qual integration framework você deve usar parte 1
Jeison Barros
 
Consumindo soap wsdl
Jeison Barros
 
Trabalhando com anexos soap usando módulo cxf do mule
Jeison Barros
 
Começando com mulesoft e maven
Jeison Barros
 
Estudo de caso: Mule como um transporte JMS Comum
Jeison Barros
 
Mule esb com framework cucumber part 1
Jeison Barros
 
Mule esb com framework cucumber part 2
Jeison Barros
 
Explorando mule esb sftp adapter
Jeison Barros
 

Usando seu codigo java no mule part 2

  • 1. Usando seu codigo Java no Mule – Part 2 Message Transformer Vamos configurar a nossa classe de transformação que irá devolver o POJO "Animal" . Neste caso , temos que se estendem " org.mule.transformer.AbstractMessageTransformer " , utilizando a operação transformMessage que recebe o MuleMessage como um parâmetro . No exemplo abaixo temos o nome de uma variável de fluxo e retornar um novo animal com este nome : public class AnimalTransformer extends AbstractMessageTransformer{ public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException { String flowVarName = message.getProperty("flowVarName", PropertyScope.INVOCA Animal animal=new Animal(flowVarName); return animal; } } Vamos fazê-lo funcionar ! usando o <custom-transformer> nos podemos especificar quais tipos de objetos que irá receber e a classe que irá lidar com a transformação. <flow name="usingTransformer"> <http:listener config-ref="HTTP_Listener_Configuration" path="/transformer" allowedMeth doc:name="HTTP"/> <set-variable variableName="flowVarName" value="#['Max the Mule']" doc:name="Variab <custom-transformer returnClass="model.Animal" class="javacall.AnimalTransformer" doc:name="Java"/>
  • 2. <object-to-string-transformer doc:name="Object to String"/> </flow> Transforming via Annotation Temos a opção de usar Anotações ao implementar nossa solução de transformação. Para atingir este objetivo , primeiro anotar a classe com @ContainsTransformerMethods ( " org.mule.api.annotations.ContainsTransformerMethods ") que marca a classe como um recipiente de um transformador Mule . O método deve ser anotado com @Transformer ( " org.mule.api.annotations.Transformer " ) , o que significa que serão disponibilizados na mula Container. No exemplo abaixo , estamos usando o @Payload anotação ( " org.mule.api.annotations.param.Payload " ) para injetar nossa carga útil em nosso parâmetro String nome e devolver um animal com este nome. @ContainsTransformerMethods public class AnimalTransformerAnnotation { @Transformer public Animal returnAnimal(@Payload String name){ return new Animal(name); } } Nosso teste do fluxo Mule: <flow name="usingTransformerAnnotation"> <http:listener config-ref="HTTP_Listener_Configuration" path="/transformerAnnotation" doc:name="HTTP" allowedMethods="GET"/> <set-payload value="#['Annotated Max!']" doc:name="Set Payload"/>
  • 3. <component class="javacall.AnimalTransformerAnnotation" doc:name="Java"/> <object-to-string-transformer doc:name="Object to String"/> </flow> Importando livrarias Java no Dataweave e MEL Por último, mas não menos importante, vamos definir uma função global que importa diferentes bibliotecas e pode ser usado via DataWeave , isso não é legal! Primeiro de tudo, precisamos definir nossa função global. Neste exemplo , vamos calcular o número de dias de um mês previsto como um parâmetro. Vamos fazer uso do Calendário e SimpleDateFormat bibliotecas. <configuration doc:name="Configuration"> <expression-language> <global-functions> def dayOfTheMonth(date){ import java.util.Calendar; import java.text.SimpleDateFormat; cal = Calendar.getInstance(); sdf = new SimpleDateFormat('yyyyMMdd'); cal.setTime(sdf.parse(date)); return cal.getActualMaximum(Calendar.DAY_OF_MONTH).toString();
  • 4. } </global-functions> </expression-language> </configuration> Nossa nova função está pronto para ser usado! Podemos agora usar uma expressão MEL ou incluir nossa função no Dataweave ! MEL: #[dayOfTheMonth(‘20151027’)] DataWeave: day: dayOfTheMonth(‘20140302’) Espero que estas várias opções de ajudar a melhorar a sua flexibilidade durante a utilização da mula !