"Could not find a transformer" 使用自定义连接器时出现骡子任意点工作室错误



我正在使用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对象提供建议吗?

在某个时刻(不是您指向的位置),您正试图将String传递给需要Account的操作。为此注册转换器,或在操作之前手动进行转换。

我在另一个论坛上收到了以下回复,并想把它传递出去:

为了在pojos中使用DevKit@RestCall,您需要定义从String到POJO的转换器。

检查此示例:https://github.com/pablocabrera85/json-place-holder-connector

对于我的具体问题,这就是我正在寻找的例子,而且确实奏效了。

最新更新