gpt4 book ai didi

java - Mulesoft Java 转换器

转载 作者:行者123 更新时间:2023-12-01 20:56:48 25 4
gpt4 key购买 nike

我不知道如何在 Mulesoft 中使用 Java Transformer。我基本上想获取一个字符串并将其转换为 URL,但我不知道如何使用 Java 方法或任何东西。

我做错了什么?我怎样才能调用我的方法,或者使我的方法按照我想要的值使用?

错误:

org.mule.module.launcher.DeploymentInitException: IllegalStateException: Cannot convert value of type [transformers.StringTransformer] to required type [org.mule.api.processor.MessageProcessor] for property 'messageProcessors[4]': no matching editors or conversion strategy found

Caused by: org.mule.api.config.ConfigurationException: Error creating bean with name 'streamMigrateAccountToCustomer': Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type [java.util.ArrayList] to required type [java.util.List] for property 'messageProcessors'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [transformers.StringTransformer] to required type [org.mule.api.processor.MessageProcessor] for property 'messageProcessors[4]': no matching editors or conversion strategy found (org.mule.api.lifecycle.InitialisationException) (org.mule.api.config.ConfigurationException)

字符串转换器

@ContainsTransformerMethods
public class StringTransformer
{
public String website;

public String getWebsite() {
return website;
}

public void setWebsite(String website) {
this.website = website;
}

@Transformer
public String stringToURL(String string) throws MalformedURLException
{
return new java.net.URL(string).toString();
}
}

XML

<custom-transformer class="transformers.StringTransformer" doc:name="Java">
<spring:property name="website" value="#[payload.Website]"/>
</custom-transformer>

输入到 JAVA Transformer

%dw 1.0
%output application/java
---
{
Id: payload.Id,
Name: payload.Name,
Active_CMRR__c: payload.Active_CMRR__c,
BillingStreet: payload.BillingStreet,
BillingCity: payload.BillingCity,
BillingState: payload.BillingState,
BillingPostalCode: payload.BillingPostalCode,
BillingCountry: payload.BillingCountry,
OwnerId: payload.OwnerId,
Website: payload.Website,
Contract_End_Date__c: payload.Contract_End_Date__c,
NS_Account_Number__c: payload.NS_Account_Number__c,
Phone: payload.Phone,
Subscription_Start_Date__c: payload.Subscription_Start_Date__c,
NS_Account_Name__c: payload.NS_Account_Name__c,
type: payload.type,
Owner: {
NS_Account_Manager_Id__c: payload.Owner.NS_Account_Manager_Id__c,
Id: payload.Owner.Id,
type: payload.Owner.type,
Name: payload.Owner.Name
}
}

最佳答案

对于简单的字符串操作,我更喜欢使用简单的 MEL 表达式,下面是创建新变量的示例。

<set-variable variableName="website" value="#[new java.net.URL(payload.Website).toString()]" doc:name="Variable"/>

要做java transformations在 MuleMessage 上,我更喜欢扩展 AbstractMessageTransformer 类。

public class ExampleAbstractMessageTransformer extends AbstractMessageTransformer {

@Override
public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
// TODO Auto-generated method stub
HashMap<String, String> payload = new HashMap<String, String>();
String websiteUrl = new String();

//Grab Payload
payload = (HashMap<String, String>) message.getPayload();
try {
websiteUrl = stringToURL(payload.get("Website").toString());
} catch (MalformedURLException e) {
e.printStackTrace();
}


message.setInvocationProperty("websiteUrl", websiteUrl);
return message;
}

public String stringToURL(String string) throws MalformedURLException {
return new java.net.URL(string).toString();
}
}

在 Mulesoft 流程中实现。假设java代码被打包为com.stackoverflow.transformers,使用“custom-transformer”组件。

<custom-transformer class="com.stackoverflow.transformers.ExampleAbstractMessageTransformer" doc:name="Java" />

关于java - Mulesoft Java 转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42233556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com