使用自定义连接器时“找不到变换器”Mule Anypoint Studio错误

时间:2015-06-28 23:51:02

标签: mule mule-studio

我正在使用DevKit创建一个Mule Anypoint连接器,以连接到内部开发的API。使用@RestCall注释,我能够在Mule流中成功使用我的连接器,连接器返回以下JSON的字符串:

{
    "name": "Bryan",
    "email": "bryan@myservice.com",
    "uid": "b6fr89dbf6d9156cace5f3c78dc9851d957381ef",
    "email_verified": true
}

我知道我可以在Mule流程中实现“JSON to Object”转换器,但我希望连接器能够返回POJO。话虽这么说,我修改了由@RestCall注释的抽象方法,以返回一个Account对象:

@Processor
@RestCall(
        uri="https://api.myservice.com/v2/account", 
        method=HttpMethod.GET, 
        contentType = "application/json")
public abstract Account getUserInformation() throws IOException;  

仅供参考,以下是我定义帐户的方式:

package org.mule.modules.myservice.model;

import java.io.Serializable;

public class Account implements Serializable {
    private static final long serialVersionUID = -1L;

    private String name;
    private String email;
    private String uid;
    private boolean emailVerified;

    /**
     * removed getters and setters for brevity
     */
}

但是,现在我正在尝试返回Account对象,我收到以下错误:

  

org.mule.api.transformer.TransformerException:找不到将“SimpleDataType {type = java.lang.String,mimeType =' / '}”转换为“SimpleDataType {type”的转换器= org.mule.modules.myservice.model.Account,mimeType =' / '}“。

我看到有一个@Transformer注释,但缺少有关如何在使用JSON和/或在Mule连接器中的@RestCall上下文中工作的实现方法的文档。

有人可以提供有关如何将JSON字符串转换为连接器中的Account对象的建议吗?

2 个答案:

答案 0 :(得分:0)

在某些时候(不是你指向的地方),你试图将String传递给需要Account的操作。为此注册变压器或在操作之前手动变换。

答案 1 :(得分:0)

我在另一个论坛收到了以下回复,并希望将其传递出去:

  

为了将DevKit @RestCall与pojos一起使用,您需要定义从String到POJO的变换器。

     

选中此示例:https://github.com/pablocabrera85/json-place-holder-connector

对于我的具体问题,这是我正在寻找并确实有效的例子。