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
Post a Comment