Mule 3.7 transformer with annotations for custom Objects -


i have 2 custom classes : person, manager. wrote following transformer transform person manager object. package com.learning.transformers;

import org.mule.api.annotations.containstransformermethods; import org.mule.api.annotations.transformer;  import com.learning.beans.manager; import com.learning.beans.person;  @containstransformermethods public class annotatedtransformer {      @transformer     public manager transformtomanager(@payload person person){         manager manager = new manager();         manager.setperson(person);         manager.setdesignation("manager");         return manager;     }  } 

my configuraiton file follows.

<?xml version="1.0" encoding="utf-8"?>  <mule xmlns:json="http://www.mulesoft.org/schema/mule/json" 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://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd">     <spring:beans>         <spring:bean id="antransformer" name="ant" class="com.learning.transformers.annotatedtransformer"/>     </spring:beans>      <flow name="mule-learning-transformersflow1">         <http:listener config-ref="globalhttpconnector" path="/customtransformation" doc:name="http"/>         <json:json-to-object-transformer returnclass="com.learning.beans.person" doc:name="json object"/>         <!-- <auto-transformer returnclass="com.learning.beans.manager" /> -->         <component class="com.learning.components.managerloggingcomponent" doc:name="java" />     </flow> </mule> 

my managerloggingcomponent looks :

package com.learning.components;  import com.learning.beans.manager; import com.learning.beans.person; import org.mule.api.annotations.param.payload;  public class managerloggingcomponent {     public void logmanager(@payload manager manager){         person person = manager.getperson();         system.out.println("name: "+person.getname());         system.out.println("age: "+person.getage());         system.out.println("designation: "+manager.getdesignation());     } } 

i first send json input flow. converted person object using json-to-object transformer. component placed expects manager object. have registered annotated transformer spring bean. hence expect person object converted manager object before passing component. throwing following exception.

message : failed transform "json" "com.learning.beans.manager" type : org.mule.api.transformer.transformerexception code : mule_error-109 javadoc : http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/transformerexception.html transformer : jsontoobject{this=d61a0b, name='jsontomanager', ignorebadinput=false, returnclass=simpledatatype{type=com.learning.beans.manager, mimetype='/', encoding='null'}, sourcetypes=[simpledatatype{type=java.io.reader, mimetype='/', encoding='null'}, simpledatatype{type=java.net.url, mimetype='/', encoding='null'}, simpledatatype{type=java.io.file, mimetype='/', encoding='null'}, simpledatatype{type=java.lang.string, mimetype='/', encoding='null'}, simpledatatype{type=java.io.inputstream, mimetype='/', encoding='null'}, simpledatatype{type=[b, mimetype='/', encoding='null'}]}

also, while starting server found throwing following error understand un-registering transformtomanager transformer. might reason not picking custom transformer. being observed in mule 3.7. 3.5 working smoothly.

warn 2016-03-27 14:01:06,574 [main] org.mule.config.spring.springregistry: not apply shutdown lifecycle object 'annotatedtransformer.transformtomanager' after being unregistered. org.mule.api.lifecycle.initialisationexception: expression evaluator "payload" not registered mule. make sure have the module expression type on classpath. example, if using xpath expression need have mule xml module on classpath. @ org.mule.expression.transformers.abstractexpressiontransformer.initialise(abstractexpressiontransformer.java:85) ~[mule-core-3.7.3.jar:3.7.3] @ org.mule.config.expression.expressionannotationshelper.gettransformerformethodwithannotations(expressionannotationshelper.java:53) ~[mule-module-annotations-3.7.3.jar:3.7.3] @ org.mule.config.transformer.annotatedtransformerproxy.initialise(annotatedtransformerproxy.java:109) ~[mule-module-annotations-3.7.3.jar:3.7.3] @ sun.reflect.generatedmethodaccessor7.invoke(unknown source) ~[?:?] @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) ~[?:1.8.0_72] @ java.lang.reflect.method.invoke(method.java:498) ~[?:1.8.0_72] @ org.mule.lifecycle.phases.defaultlifecyclephase.applylifecycle(defaultlifecyclephase.java:237) ~[mule-core-3.7.3.jar:3.7.3] @ org.mule.lifecycle.phases.mulecontextinitialisephase.applylifecycle(mulecontextinitialisephase.java:71) ~[mule-core-3.7.3.jar:3.7.3] @ org.mule.lifecycle.registrylifecyclemanager.applyphase(registrylifecyclemanager.java:183) ~[mule-core-3.7.3.jar:3.7.3] @ org.mule.registry.abstractregistry.unregisterobject(abstractregistry.java:163) ~[mule-core-3.7.3.jar:3.7.3] @ org.mule.config.spring.springregistry$configurableregistrationdelegate.doregisterobject(springregistry.java:451) ~[mule-module-spring-config-3.7.3.jar:3.7.3] @ org.mule.config.spring.springregistry$configurableregistrationdelegate.registerobject(springregistry.java:405) ~[mule-module-spring-config-3.7.3.jar:3.7.3] @ org.mule.config.spring.springregistry.registerobject(springregistry.java:253) ~[mule-module-spring-config-3.7.3.jar:3.7.3] @ org.mule.registry.abstractregistrybroker.registerobject(abstractregistrybroker.java:249) ~[mule-core-3.7.3.jar:3.7.3] @ org.mule.registry.abstractregistrybroker.registerobject(abstractregistrybroker.java:262) ~[mule-core-3.7.3.jar:3.7.3] @ org.mule.registry.muleregistryhelper.registerobject(muleregistryhelper.java:816) ~[mule-core-3.7.3.jar:3.7.3] @ org.mule.registry.muleregistryhelper.registertransformer(muleregistryhelper.java:458) ~[mule-core-3.7.3.jar:3.7.3] @ org.mule.config.transformer.annotatedtransformerobjectprocessor.process(annotatedtransformerobjectprocessor.java:76) ~[mule-module-annotations-3.7.3.jar:3.7.3] @ org.mule.config.spring.processors.transformerannotatedbeanprocessor.postprocessbeforeinitialization(transformerannotatedbeanprocessor.java:30) ~[mule-module-spring-config-3.7.3.jar:3.7.3] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.applybeanpostprocessorsbeforeinitialization(abstractautowirecapablebeanfactory.java:408) ~[spring-beans-4.1.6.release.jar:4.1.6.release] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1566) ~[spring-beans-4.1.6.release.jar:4.1.6.release] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:539) ~[spring-beans-4.1.6.release.jar:4.1.6.release] @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:476) ~[spring-beans-4.1.6.release.jar:4.1.6.release] @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:303) ~[spring-beans-4.1.6.release.jar:4.1.6.release] @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:230) ~[spring-beans-4.1.6.release.jar:4.1.6.release] @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:299) ~[spring-beans-4.1.6.release.jar:4.1.6.release] @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:194) ~[spring-beans-4.1.6.release.jar:4.1.6.release] @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:753) ~[mule-module-spring-config-3.7.3.jar:4.1.6.release] @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:757) ~[spring-context-4.1.6.release.jar:4.1.6.release] @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:480) ~[spring-context-4.1.6.release.jar:4.1.6.release] @ org.mule.config.spring.springregistry.doinitialise(springregistry.java:108) ~[mule-module-spring-config-3.7.3.jar:3.7.3] @ org.mule.registry.abstractregistry.initialise(abstractregistry.java:104) ~[mule-core-3.7.3.jar:3.7.3] @ org.mule.config.spring.springxmlconfigurationbuilder.createspringregistry(springxmlconfigurationbuilder.java:172) ~[mule-module-spring-config-3.7.3.jar:3.7.3] @ org.mule.config.spring.springxmlconfigurationbuilder.doconfigure(springxmlconfigurationbuilder.java:95) ~[mule-module-spring-config-3.7.3.jar:3.7.3] @ org.mule.config.builders.abstractconfigurationbuilder.configure(abstractconfigurationbuilder.java:43) ~[mule-core-3.7.3.jar:3.7.3] @ org.mule.config.builders.abstractresourceconfigurationbuilder.configure(abstractresourceconfigurationbuilder.java:69) ~[mule-core-3.7.3.jar:3.7.3] ............ request like

{     "name":"sai",     "age" : "100000" } 

any ideas on happening here?

everything working expected in mule 3.5. problem mule 3.7.

update 1 : full log of excetion:

    message               : failed transform "json" "com.learning.beans.manager" type                  : org.mule.api.transformer.transformerexception code                  : mule_error-109 javadoc               : http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/transformerexception.html transformer           : jsontoobject{this=13de431, name='jsontomanager', ignorebadinput=false, returnclass=simpledatatype{type=com.learning.beans.manager, mimetype='*/*', encoding='null'}, sourcetypes=[simpledatatype{type=java.io.reader, mimetype='*/*', encoding='null'}, simpledatatype{type=java.net.url, mimetype='*/*', encoding='null'}, simpledatatype{type=java.io.file, mimetype='*/*', encoding='null'}, simpledatatype{type=java.lang.string, mimetype='*/*', encoding='null'}, simpledatatype{type=java.io.inputstream, mimetype='*/*', encoding='null'}, simpledatatype{type=[b, mimetype='*/*',  encoding='null'}]} ******************************************************************************** exception stack is: 1. null (java.lang.nullpointerexception)   java.io.reader:78 (null) 2. failed transform "json" "com.learning.beans.manager" (org.mule.api.transformer.transformerexception)   org.mule.module.json.transformers.jsontoobject:133 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/transformerexception.html) ******************************************************************************** root exception stack trace: java.lang.nullpointerexception     @ java.io.reader.<init>(reader.java:78)     @ java.io.inputstreamreader.<init>(inputstreamreader.java:97)     @ org.mule.module.json.transformers.jsontoobject.transformmessage(jsontoobject.java:119)     @ org.mule.transformer.abstractmessagetransformer.transform(abstractmessagetransformer.java:141)     @ org.mule.transformer.abstractmessagetransformer.transform(abstractmessagetransformer.java:69)     @ org.mule.defaultmulemessage.getpayload(defaultmulemessage.java:425)     @ org.mule.defaultmulemessage.getpayload(defaultmulemessage.java:373)     @ org.mule.expression.messagepayloadexpressionevaluator.evaluate(messagepayloadexpressionevaluator.java:79)     @ org.mule.expression.defaultexpressionmanager.evaluate(defaultexpressionmanager.java:318)     @ org.mule.expression.transformers.expressionargument.evaluate(expressionargument.java:116)     @ org.mule.expression.transformers.expressiontransformer.transformmessage(expressiontransformer.java:51)     @ org.mule.transformer.abstractmessagetransformer.transform(abstractmessagetransformer.java:141)     @ org.mule.transformer.abstractmessagetransformer.transform(abstractmessagetransformer.java:69)     @ org.mule.transformer.abstracttransformer.transform(abstracttransformer.java:366)     @ org.mule.impl.model.resolvers.annotatedentrypointresolver.getpayloadfrommessagewithannotations(annotatedentrypointresolver.java:175)     @ org.mule.impl.model.resolvers.annotatedentrypointresolver.getpayloadformethod(annotatedentrypointresolver.java:161)     @ org.mule.impl.model.resolvers.annotatedentrypointresolver.invoke(annotatedentrypointresolver.java:130)     @ org.mule.model.resolvers.defaultentrypointresolverset.invoke(defaultentrypointresolverset.java:36)     @ org.mule.component.defaultcomponentlifecycleadapter.invoke(defaultcomponentlifecycleadapter.java:339)     @ org.mule.component.abstractjavacomponent.invokecomponentinstance(abstractjavacomponent.java:82)     @ org.mule.component.abstractjavacomponent.doinvoke(abstractjavacomponent.java:73)     @ org.mule.component.abstractcomponent.invokeinternal(abstractcomponent.java:120)     @ org.mule.component.abstractcomponent.access$000(abstractcomponent.java:55)     @ org.mule.component.abstractcomponent$1$1.process(abstractcomponent.java:236)     @ org.mule.execution.exceptiontomessagingexceptionexecutioninterceptor.execute(exceptiontomessagingexceptionexecutioninterceptor.java:24)     @ org.mule.execution.messageprocessornotificationexecutioninterceptor.execute(messageprocessornotificationexecutioninterceptor.java:107)     @ org.mule.execution.messageprocessorexecutiontemplate.execute(messageprocessorexecutiontemplate.java:44)     @ org.mule.processor.blockingprocessorexecutor.executenext(blockingprocessorexecutor.java:88)     @ org.mule.processor.blockingprocessorexecutor.execute(blockingprocessorexecutor.java:59)     @ org.mule.execution.exceptiontomessagingexceptionexecutioninterceptor.execute(exceptiontomessagingexceptionexecutioninterceptor.java:24)     @ org.mule.execution.messageprocessornotificationexecutioninterceptor.execute(messageprocessornotificationexecutioninterceptor.java:107)     @ org.mule.execution.messageprocessorexecutiontemplate.execute(messageprocessorexecutiontemplate.java:44)     @ org.mule.component.abstractcomponent.process(abstractcomponent.java:154)     @ org.mule.execution.exceptiontomessagingexceptionexecutioninterceptor.execute(exceptiontomessagingexceptionexecutioninterceptor.java:24)     @ org.mule.execution.messageprocessornotificationexecutioninterceptor.execute(messageprocessornotificationexecutioninterceptor.java:107)     @ org.mule.execution.messageprocessorexecutiontemplate.execute(messageprocessorexecutiontemplate.java:44)     @ org.mule.processor.blockingprocessorexecutor.executenext(blockingprocessorexecutor.java:98)     @ org.mule.processor.blockingprocessorexecutor.execute(blockingprocessorexecutor.java:59)     @ org.mule.execution.exceptiontomessagingexceptionexecutioninterceptor.execute(exceptiontomessagingexceptionexecutioninterceptor.java:24)     @ org.mule.execution.messageprocessorexecutiontemplate.execute(messageprocessorexecutiontemplate.java:44)     @ org.mule.processor.blockingprocessorexecutor.executenext(blockingprocessorexecutor.java:98)     @ org.mule.processor.blockingprocessorexecutor.execute(blockingprocessorexecutor.java:59)     @ org.mule.processor.asyncinterceptingmessageprocessor.process(asyncinterceptingmessageprocessor.java:102)     @ org.mule.execution.exceptiontomessagingexceptionexecutioninterceptor.execute(exceptiontomessagingexceptionexecutioninterceptor.java:24)     @ org.mule.execution.messageprocessornotificationexecutioninterceptor.execute(messageprocessornotificationexecutioninterceptor.java:107)     @ org.mule.execution.messageprocessorexecutiontemplate.execute(messageprocessorexecutiontemplate.java:44)     @ org.mule.processor.blockingprocessorexecutor.executenext(blockingprocessorexecutor.java:98)     @ org.mule.processor.blockingprocessorexecutor.e... ******************************************************************************** 

update 2 : started getting below exception suddenly. didn't change code. showing below exception times , above exception other times.

    message               : object transformed of type: "simpledatatype{type=java.lang.string, mimetype='*/*', encoding='null'}", expected return type "simpledatatype{type=com.learning.beans.manager, mimetype='application/json', encoding='null'}". current mulemessage null! please report mule-esb@mulesoft.com type                  : org.mule.api.transformer.transformermessagingexception code                  : mule_error--2 javadoc               : http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/transformermessagingexception.html payload               : {nullpayload} ******************************************************************************** exception stack is: 1. object transformed of type: "simpledatatype{type=java.lang.string, mimetype='*/*', encoding='null'}", expected return type "simpledatatype{type=com.learning.beans.manager, mimetype='application/json', encoding='null'}". current mulemessage null! please report mule-esb@mulesoft.com (org.mule.api.transformer.transformermessagingexception)   org.mule.transformer.abstractmessagetransformer:179 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/transformermessagingexception.html) ******************************************************************************** root exception stack trace: org.mule.api.transformer.transformermessagingexception: object transformed of type: "simpledatatype{type=java.lang.string, mimetype='*/*', encoding='null'}", expected return type "simpledatatype{type=com.learning.beans.manager, mimetype='application/json', encoding='null'}". current mulemessage null! please report mule-esb@mulesoft.com     @ org.mule.transformer.abstractmessagetransformer.checkreturnclass(abstractmessagetransformer.java:179)     @ org.mule.transformer.abstractmessagetransformer.transform(abstractmessagetransformer.java:158)     @ org.mule.transformer.abstractmessagetransformer.transform(abstractmessagetransformer.java:69)     @ org.mule.defaultmulemessage.getpayload(defaultmulemessage.java:425)     @ org.mule.defaultmulemessage.getpayload(defaultmulemessage.java:373)     @ org.mule.expression.messagepayloadexpressionevaluator.evaluate(messagepayloadexpressionevaluator.java:79)     @ org.mule.expression.defaultexpressionmanager.evaluate(defaultexpressionmanager.java:318)     @ org.mule.expression.transformers.expressionargument.evaluate(expressionargument.java:116)     @ org.mule.expression.transformers.expressiontransformer.transformmessage(expressiontransformer.java:51)     @ org.mule.transformer.abstractmessagetransformer.transform(abstractmessagetransformer.java:141)     @ org.mule.transformer.abstractmessagetransformer.transform(abstractmessagetransformer.java:69)     @ org.mule.transformer.abstracttransformer.transform(abstracttransformer.java:366)     @ org.mule.impl.model.resolvers.annotatedentrypointresolver.getpayloadfrommessagewithannotations(annotatedentrypointresolver.java:175)     @ org.mule.impl.model.resolvers.annotatedentrypointresolver.getpayloadformethod(annotatedentrypointresolver.java:161)     @ org.mule.impl.model.resolvers.annotatedentrypointresolver.invoke(annotatedentrypointresolver.java:130)     @ org.mule.model.resolvers.defaultentrypointresolverset.invoke(defaultentrypointresolverset.java:36)     @ org.mule.component.defaultcomponentlifecycleadapter.invoke(defaultcomponentlifecycleadapter.java:339)     @ org.mule.component.abstractjavacomponent.invokecomponentinstance(abstractjavacomponent.java:82)     @ org.mule.component.abstractjavacomponent.doinvoke(abstractjavacomponent.java:73)     @ org.mule.component.abstractcomponent.invokeinternal(abstractcomponent.java:120)     @ org.mule.component.abstractcomponent.access$000(abstractcomponent.java:55)     @ org.mule.component.abstractcomponent$1$1.process(abstractcomponent.java:236)     @ org.mule.execution.exceptiontomessagingexceptionexecutioninterceptor.execute(exceptiontomessagingexceptionexecutioninterceptor.java:24)     @ org.mule.execution.messageprocessornotificationexecutioninterceptor.execute(messageprocessornotificationexecutioninterceptor.java:107)     @ org.mule.execution.messageprocessorexecutiontemplate.execute(messageprocessorexecutiontemplate.java:44)     @ org.mule.processor.blockingprocessorexecutor.executenext(blockingprocessorexecutor.java:88)     @ org.mule.processor.blockingprocessorexecutor.execute(blockingprocessorexecutor.java:59)     @ org.mule.execution.exceptiontomessagingexceptionexecutioninterceptor.execute(exceptiontomessagingexceptionexecutioninterceptor.java:24)     @ org.mule.execution.messageprocessornotificationexecutioninterceptor.execute(messageprocessornotificationexecutioninterceptor.java:107)     @ org.mule.execution.messageprocessorexecutiontemplate.execute(messageprocessorexecutiontemplate.java:44)     @ org.mule.component.abstractcomponent.process(abstractcomponent.java:154)     @ org.mule.execution.exceptiontomessagingexceptionexecutioninterceptor.execute(exceptiontomessagingexceptionexecutioninterceptor.java:24)     @ org.mule.execution.messageprocessornotificationexecutioninterceptor.execute(messageprocessornotificationexecutioninterceptor.java:107)     @ org.mule.execution.messageprocessorexecutiontemplate.execute(messageprocessorexecutiontemplate.java:44)     @ org.mule.processor.blockingprocessorexecutor.executenext(blockingprocessorexecutor.java:98)     @ org.mule.processor.blockingprocessorexecutor.execute(blockingprocessorexecutor.java:59)     @ org.mule.execution.exceptiontomessagingexceptionexecutioninterceptor.execute(exceptiontomessagingexceptionexecutioninterceptor.java:24)     @ org.mule.execution.messageprocessorexecutiontemplate.execute(messageprocessorexecutiontemplate.java:44)     @ org.mule.processor.blockingprocessorexecutor.executenext(blockingprocessorexecutor.java:98)     @ org.mule.processor.blockingprocessorexecutor.execute(blockingprocessorexecutor.java:59)     @ org.mule.processor.asyncinterceptingmessageprocessor.process(asyncinterceptingmessageprocessor.java:102)     @ org.mule.execution.exceptiontomessagingexceptionexecutioninterceptor.execute(exceptiontomessagingexceptionexecutioninterceptor.java:24)     @ org.mule.execution.messageprocessornotificationexecutioninterceptor.execute(messageprocessornotificationexecutioninterceptor.java:107)     @ org.m... ******************************************************************************** 


Comments