SlideShare uma empresa Scribd logo
1 de 4
Baixar para ler offline
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

Mais procurados

Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...Dalton Martins
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Eduardo Mendes
 
Integração do Flex com PHP através do AMFPHP
Integração do Flex com PHP através do AMFPHPIntegração do Flex com PHP através do AMFPHP
Integração do Flex com PHP através do AMFPHPelliando dias
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
Android webservice
Android webserviceAndroid webservice
Android webserviceAlan Echer
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Eduardo Mendes
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3David Ruiz
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsEduardo Mendes
 

Mais procurados (14)

PHP e Mysql - INSERT
PHP e Mysql - INSERTPHP e Mysql - INSERT
PHP e Mysql - INSERT
 
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...Aula 09  - Instruções preparadas e otimização de consultas do Mysql - Program...
Aula 09 - Instruções preparadas e otimização de consultas do Mysql - Program...
 
PHP e Mysql - UPDATE
PHP e Mysql - UPDATEPHP e Mysql - UPDATE
PHP e Mysql - UPDATE
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
Integração do Flex com PHP através do AMFPHP
Integração do Flex com PHP através do AMFPHPIntegração do Flex com PHP através do AMFPHP
Integração do Flex com PHP através do AMFPHP
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Android webservice
Android webserviceAndroid webservice
Android webservice
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2
 
Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3Web 2.0 e AJAX - Parte 2 / 3
Web 2.0 e AJAX - Parte 2 / 3
 
PHP Básico - Parte 4
PHP Básico - Parte 4PHP Básico - Parte 4
PHP Básico - Parte 4
 
Alo mundojpa
Alo mundojpaAlo mundojpa
Alo mundojpa
 
Aula de Node
Aula de NodeAula de Node
Aula de Node
 
Doctrine2 Seminário PHP
Doctrine2 Seminário PHPDoctrine2 Seminário PHP
Doctrine2 Seminário PHP
 
Java Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e TaglibsJava Web 5 - JSP, Expression Language e Taglibs
Java Web 5 - JSP, Expression Language e Taglibs
 

Destaque

Compilação de tutoriais blog MulePE
Compilação de tutoriais blog MulePECompilação de tutoriais blog MulePE
Compilação de tutoriais blog MulePEJeison Barros
 
Restful considerada prejudicial - parte 1
Restful considerada prejudicial -  parte 1Restful considerada prejudicial -  parte 1
Restful considerada prejudicial - parte 1Jeison Barros
 
Smuggle Ideas To Real World
Smuggle Ideas To Real WorldSmuggle Ideas To Real World
Smuggle Ideas To Real WorldYSF-2015
 
final indian journal paper 123
final indian journal paper 123final indian journal paper 123
final indian journal paper 123rajvardhan mane
 
IEEE Grant Opportunities for Young Scientists and Students
IEEE Grant Opportunities for Young Scientists and StudentsIEEE Grant Opportunities for Young Scientists and Students
IEEE Grant Opportunities for Young Scientists and StudentsYSF-2015
 
Shipping your logs to elk from mule app/cloudhub part 1
Shipping  your logs to elk from mule app/cloudhub   part 1Shipping  your logs to elk from mule app/cloudhub   part 1
Shipping your logs to elk from mule app/cloudhub part 1Alex Fernandez
 
Mulesoft salesforce connector to update Object.
Mulesoft salesforce connector to update Object.Mulesoft salesforce connector to update Object.
Mulesoft salesforce connector to update Object.Yogesh Chandr
 
Sessió 2. tema i títol
Sessió 2. tema i títolSessió 2. tema i títol
Sessió 2. tema i títolsesgurb
 
Mule concepts
Mule conceptsMule concepts
Mule conceptsSindhu VL
 
Xslt attributes
Xslt attributesXslt attributes
Xslt attributesSindhu VL
 
φαγητα της ρωσιας
φαγητα της ρωσιαςφαγητα της ρωσιας
φαγητα της ρωσιαςChrysa Arabatzoglou
 

Destaque (18)

Compilação de tutoriais blog MulePE
Compilação de tutoriais blog MulePECompilação de tutoriais blog MulePE
Compilação de tutoriais blog MulePE
 
Restful considerada prejudicial - parte 1
Restful considerada prejudicial -  parte 1Restful considerada prejudicial -  parte 1
Restful considerada prejudicial - parte 1
 
My disabled film
My disabled filmMy disabled film
My disabled film
 
Smuggle Ideas To Real World
Smuggle Ideas To Real WorldSmuggle Ideas To Real World
Smuggle Ideas To Real World
 
final indian journal paper 123
final indian journal paper 123final indian journal paper 123
final indian journal paper 123
 
Mule
MuleMule
Mule
 
IEEE Grant Opportunities for Young Scientists and Students
IEEE Grant Opportunities for Young Scientists and StudentsIEEE Grant Opportunities for Young Scientists and Students
IEEE Grant Opportunities for Young Scientists and Students
 
Shipping your logs to elk from mule app/cloudhub part 1
Shipping  your logs to elk from mule app/cloudhub   part 1Shipping  your logs to elk from mule app/cloudhub   part 1
Shipping your logs to elk from mule app/cloudhub part 1
 
Mulesoft salesforce connector to update Object.
Mulesoft salesforce connector to update Object.Mulesoft salesforce connector to update Object.
Mulesoft salesforce connector to update Object.
 
Novedades en el tratamiento no farmacológico
Novedades en el tratamiento no farmacológicoNovedades en el tratamiento no farmacológico
Novedades en el tratamiento no farmacológico
 
Sessió 2. tema i títol
Sessió 2. tema i títolSessió 2. tema i títol
Sessió 2. tema i títol
 
Αβορίγινες
ΑβορίγινεςΑβορίγινες
Αβορίγινες
 
ινδια
ινδιαινδια
ινδια
 
Mule concepts
Mule conceptsMule concepts
Mule concepts
 
Xslt attributes
Xslt attributesXslt attributes
Xslt attributes
 
φαγητα της ρωσιας
φαγητα της ρωσιαςφαγητα της ρωσιας
φαγητα της ρωσιας
 
Transform Message
Transform MessageTransform Message
Transform Message
 
Mule parsing with json
Mule parsing with jsonMule parsing with json
Mule parsing with json
 

Mais de Jeison Barros

Introdução a RAML - parte 1
Introdução a RAML -  parte 1Introdução a RAML -  parte 1
Introdução a RAML - parte 1Jeison Barros
 
O básico do uso de rest vs soap
O básico do uso de rest vs soapO básico do uso de rest vs soap
O básico do uso de rest vs soapJeison Barros
 
Restful considerada prejudicial parte 2
Restful considerada prejudicial   parte 2Restful considerada prejudicial   parte 2
Restful considerada prejudicial parte 2Jeison Barros
 
Estratégia api e design
Estratégia api e designEstratégia api e design
Estratégia api e designJeison Barros
 
Transformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonTransformando eficientemente resultados de uma consulta jdbc para json
Transformando eficientemente resultados de uma consulta jdbc para jsonJeison Barros
 
Como criar um http proxy dinamico com mule parte 3
Como criar um http proxy dinamico com mule   parte 3Como criar um http proxy dinamico com mule   parte 3
Como criar um http proxy dinamico com mule parte 3Jeison Barros
 
Como criar um http proxy dinamico com mule parte 1
Como criar um http proxy dinamico com mule   parte 1Como criar um http proxy dinamico com mule   parte 1
Como criar um http proxy dinamico com mule parte 1Jeison Barros
 
Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcJeison Barros
 
Habilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosHabilidades necessárias para integrar aplicativos e dados
Habilidades necessárias para integrar aplicativos e dadosJeison Barros
 
Qual integration framework você deve usar parte 2
Qual integration framework você deve usar parte 2Qual integration framework você deve usar parte 2
Qual integration framework você deve usar parte 2Jeison Barros
 
Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Qual integration framework você deve usar parte 1
Qual integration framework você deve usar parte 1Jeison Barros
 
Consumindo soap wsdl
Consumindo soap wsdlConsumindo soap wsdl
Consumindo soap wsdlJeison Barros
 
Trabalhando com anexos soap usando módulo cxf do mule
Trabalhando com anexos soap usando módulo cxf do muleTrabalhando com anexos soap usando módulo cxf do mule
Trabalhando com anexos soap usando módulo cxf do muleJeison Barros
 
Começando com mulesoft e maven
Começando com mulesoft e mavenComeçando com mulesoft e maven
Começando com mulesoft e mavenJeison Barros
 
Estudo de caso: Mule como um transporte JMS Comum
Estudo de caso: Mule como um transporte JMS ComumEstudo de caso: Mule como um transporte JMS Comum
Estudo de caso: Mule como um transporte JMS ComumJeison Barros
 
Mule esb com framework cucumber part 1
Mule esb com framework cucumber part 1Mule esb com framework cucumber part 1
Mule esb com framework cucumber part 1Jeison Barros
 
Mule esb com framework cucumber part 2
Mule esb com framework cucumber part 2Mule esb com framework cucumber part 2
Mule esb com framework cucumber part 2Jeison Barros
 
Explorando mule esb sftp adapter
Explorando mule esb sftp adapterExplorando mule esb sftp adapter
Explorando mule esb sftp adapterJeison Barros
 

Mais de Jeison Barros (20)

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

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 !