Reputation: 6452
EDIT: Solved. At the time of asking this question, the Magento Cloud Connector is/was too old to work with Magento 1.7.
I'm trying to do a product update using the magento cloud connector. My xml looks as follows:
<magento:update-product config-ref="testConfig" doc:name="Update Product" productSku="#[header:OUTBOUND:ProductId]">
<magento:catalog-product-entity name="#[header:outbound:Name]">
</magento:catalog-product-entity>
<magento:additional-attributes>
<magento:additional-attribute key="isbn" value-ref="#[header:OUTBOUND:ISBN]" />
<magento:additional-attribute key="subject" value-ref="#[header:OUTBOUND:Subject]" />
</magento:additional-attributes>
</magento:update-product>
Trying to do the update always results in the following exception:
Root Exception stack trace:
org.mule.api.transformer.TransformerException: Could not find a transformer to transform "SimpleDataType{type=java.lang.String, mimeType='*/*'}" to "SimpleDataType{type=com.magento.api.AssociativeEntity, mimeType='*/*'}".
Full stacktrace:
ERROR 2013-05-02 09:28:37,056 [[asdasd].httpConnector.receiver.05] org.mule.exception.CatchMessagingExceptionStrategy:
********************************************************************************
Message : Could not find a transformer to transform "SimpleDataType{type=java.lang.String, mimeType='*/*'}" to "SimpleDataType{type=com.magento.api.AssociativeEntity, mimeType='*/*'}".
Type : org.mule.api.transformer.TransformerException
Code : MULE_ERROR-236
JavaDoc : http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html
********************************************************************************
Exception stack is:
1. Could not find a transformer to transform "SimpleDataType{type=java.lang.String, mimeType='*/*'}" to "SimpleDataType{type=com.magento.api.AssociativeEntity, mimeType='*/*'}". (org.mule.api.transformer.TransformerException)
org.mule.registry.MuleRegistryHelper:252 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html)
********************************************************************************
Root Exception stack trace:
org.mule.api.transformer.TransformerException: Could not find a transformer to transform "SimpleDataType{type=java.lang.String, mimeType='*/*'}" to "SimpleDataType{type=com.magento.api.AssociativeEntity, mimeType='*/*'}".
at org.mule.registry.MuleRegistryHelper.lookupTransformer(MuleRegistryHelper.java:252)
at org.mule.module.magento.processors.AbstractExpressionEvaluator.transform(AbstractExpressionEvaluator.java:329)
at org.mule.module.magento.processors.AbstractExpressionEvaluator.evaluateAndTransform(AbstractExpressionEvaluator.java:202)
at org.mule.module.magento.processors.AbstractExpressionEvaluator.evaluateAndTransform(AbstractExpressionEvaluator.java:169)
at org.mule.module.magento.processors.UpdateProductMessageProcessor.process(UpdateProductMessageProcessor.java:171)
at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
at org.mule.processor.AsyncInterceptingMessageProcessor.process(AsyncInterceptingMessageProcessor.java:101)
at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
at org.mule.interceptor.AbstractEnvelopeInterceptor.process(AbstractEnvelopeInterceptor.java:55)
at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
at org.mule.processor.AbstractFilteringMessageProcessor.process(AbstractFilteringMessageProcessor.java:44)
at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
at org.mule.construct.AbstractPipeline$1.process(AbstractPipeline.java:112)
at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
at org.mule.execution.ExceptionToMessagingExceptionExecutionInterceptor.execute(ExceptionToMessagingExceptionExecutionInterceptor.java:27)
at org.mule.execution.MessageProcessorNotificationExecutionInterceptor.execute(MessageProcessorNotificationExecutionInterceptor.java:61)
at org.mule.execution.MessageProcessorExecutionTemplate.execute(MessageProcessorExecutionTemplate.java:47)
at org.mule.construct.Flow$1.process(Flow.java:74)
at org.mule.construct.Flow$1.process(Flow.java:69)
at org.mule.execution.ExecuteCallbackInterceptor.execute(ExecuteCallbackInterceptor.java:20)
at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:34)
at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:18)
at org.mule.execution.BeginAndResolveTransactionInterceptor.execute(BeginAndResolveTransactionInterceptor.java:58)
at org.mule.execution.SuspendXaTransactionInterceptor.execute(SuspendXaTransactionInterceptor.java:54)
at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:32)
at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:17)
at org.mule.execution.ErrorHandlingExecutionTemplate.execute(ErrorHandlingExecutionTemplate.java:63)
at org.mule.execution.ErrorHandlingExecutionTemplate.execute(ErrorHandlingExecutionTemplate.java:3...
********************************************************************************
And the xml:
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns:magento="http://www.mulesoft.org/schema/mule/magento" 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" version="EE-3.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/magento http://www.mulesoft.org/schema/mule/magento/1.1/mule-magento.xsd
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/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd">
<magento:config name="testConfig" username="username" password="password" address="wsdllocation" doc:name="Magento"/>
<flow name="push-products-to-magentoFlow1" doc:name="push-products-to-magentoFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="20008" doc:name="HTTP" path="productsToMagento"/>
<logger level="INFO" message="'#[header:OUTBOUND:ProductId]'" doc:name="Logger"/>
<logger level="INFO" message="'#[header:OUTBOUND:Name]'" doc:name="Logger"/>
<magento:get-product config-ref="testConfig" doc:name="Get Product" productSku="#[header:OUTBOUND:ProductId]">
<magento:attributes-names>
<magento:attributes-name>sku</magento:attributes-name>
</magento:attributes-names>
</magento:get-product>
<logger message="******************* AFTER GET PRODUCT *********************" level="INFO" doc:name="Logger"/>
<magento:update-product config-ref="testConfig" doc:name="Update Product" productSku="#[header:OUTBOUND:ProductId]">
<magento:catalog-product-entity name="#[header:outbound:Name]" price="#[header:OUTBOUND:Price]">
</magento:catalog-product-entity>
<magento:additional-attributes><!-- value-ref causes transformer exception? -->
<magento:additional-attribute key="isbn" value-ref="#[header:OUTBOUND:ISBN]" />
<magento:additional-attribute key="subject" value-ref="#[header:OUTBOUND:Subject]" />
</magento:additional-attributes>
</magento:update-product>
<logger message="************** PRODUCT UPDATE SUCCESFULL ************" level="INFO" doc:name="Logger"/>
<object-to-string-transformer doc:name="Object to String"/>
<echo-component doc:name="Echo"/>
</flow>
</mule>
As noted in the comments, I think the problem is around the additional attributes block where it tries to convert a value from string to AssociativeEntity, but fails. I am not quite sure about what the correct syntax for defining additional attributes is, as the api sample does not have additional attributes defined.
edit: Changing from value-ref to value solved the transformer problem, but not the underlying problem I had. The connector uses too old wsdl as Masse pointed out below.
Upvotes: 2
Views: 613
Reputation: 4344
It seems as if in this situation value-ref isn't the correct attribute to use, instead value is ok. This doesn't however solve the situation as the wsdl used in magento-connector is outdated.
The current magento-connector wsdl is magento 1.5 compliant. The wsdl was generated in May 2011, whereas magento modified their wsdl October 2011 by adding single_data field.
So the answer to the real question behind this is that as it is, it can't be done. The magento-connector plugin needs to be updated, magento downgraded or WS-I compliance mode enabled, which has its own drawbacks
Upvotes: 2