Apache camel 从Apache 2.8.3升级到2.12.2会导致JSON剥离

Apache camel 从Apache 2.8.3升级到2.12.2会导致JSON剥离,apache-camel,Apache Camel,将Camel从2.8.3升级到2.12.2已经去掉了我们正在使用的自定义JSON文本。最初在2.8.3中创建的是: {@command:“java类”,“成员ID”:9} 然后创建的是: {“memberId”:9} 从网上的骆驼例子来看,后者似乎是正确的方法。不幸的是,我在工作中使用的代码需要第一个版本。有没有办法让它回到以前的版本。这仅在升级Camel时发生。如果我将其保留在2.8.3,则原始版本可以工作。Camel需要升级以使用RAW正确使用密码,这只是在Camel 2.11中引入的。我正

将Camel从2.8.3升级到2.12.2已经去掉了我们正在使用的自定义JSON文本。最初在2.8.3中创建的是: {@command:“java类”,“成员ID”:9}

然后创建的是: {“memberId”:9}

从网上的骆驼例子来看,后者似乎是正确的方法。不幸的是,我在工作中使用的代码需要第一个版本。有没有办法让它回到以前的版本。这仅在升级Camel时发生。如果我将其保留在2.8.3,则原始版本可以工作。Camel需要升级以使用RAW正确使用密码,这只是在Camel 2.11中引入的。我正在使用Java和Camel来传递消息

如果需要,我可以发布代码。我觉得我缺少了一些需要添加到代码中的内容

package com.sesamecom.messaging.event;
import org.codehaus.jackson.annotate.JsonTypeInfo;
import org.codehaus.jackson.map.annotate.JsonSerialize;

/**
 * Base class for commands that can be marshaled to and from JSON strings.
 */
@JsonSerialize
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY,    property="@command")
public abstract class MarshaledEvent {
}

package com.sesamecom.messaging.event.feature;

/**
 *
 */
final public class ReactivationFeatureStatusChanged extends MemberFeatureStatusChanged {
@SuppressWarnings({"UnusedDeclaration", "deprecation"})
@Deprecated // required for json serialization
public ReactivationFeatureStatusChanged() {
}

public ReactivationFeatureStatusChanged(Integer memberId, Boolean enabled) {
    super(memberId, enabled);
}

@Override
public String toString() {
    return "ReactivationFeatureStatusChanged{" +
            "memberId=" + getMemberId() +
            ", enabled=" + isEnabled() +
            '}';
    }
}



package com.sesamecom.messaging.dispatch;

import com.google.common.collect.ImmutableMap;
import com.sesamecom.messaging.event.MarshaledEvent;
import com.sesamecom.messaging.event.ingest.*;

import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class IngestEventTransformer implements MessageTransformer {
private static Pattern p = Pattern.compile("^\\{\"@command\":\"(com\\.sesamecom\\.messaging\\.event\\.(fact|ingest)\\.\\w+)\",\"");

private static ImmutableMap<String, Class<? extends MarshaledEvent>> eventMap =
    ImmutableMap.<String, Class<? extends MarshaledEvent>>builder()
            .put("com.sesamecom.messaging.event.ingest.AccountIngested", VisitorAccountIngested.class)
            .put("com.sesamecom.messaging.event.ingest.AddressIngested", VisitorAddressIngested.class)
            .put("com.sesamecom.messaging.event.ingest.AppointmentIngested", VisitorAppointmentIngested.class)
            .put("com.sesamecom.messaging.event.ingest.EmailIngested", VisitorEmailIngested.class)
            .put("com.sesamecom.messaging.event.ingest.LedgerIngested", VisitorLedgerIngested.class)
            .put("com.sesamecom.messaging.event.ingest.PhoneIngested", VisitorPhoneIngested.class)
            .put("com.sesamecom.messaging.event.ingest.RecallIngested", VisitorRecallIngested.class)

            .put("com.sesamecom.messaging.event.ingest.ReinitialUploadIngestCompleted", ReinitialIngested.class)
            .put("com.sesamecom.messaging.event.ingest.InitialUploadIngestCompleted", ReinitialIngested.class)
            .put("com.sesamecom.messaging.event.ingest.VisitorTemporalDataIngestEvent", VisitorTemporalDataIngested.class)
            .put("com.sesamecom.messaging.event.ingest.VisitorIngestEvent", VisitorIngested.class)
            .put("com.sesamecom.messaging.event.ingest.AccountIngestEvent", VisitorAccountIngested.class)
            .put("com.sesamecom.messaging.event.ingest.AppointmentIngestEvent", VisitorAppointmentIngested.class)
            .put("com.sesamecom.messaging.event.ingest.LedgerIngestEvent", VisitorLedgerIngested.class)
            .put("com.sesamecom.messaging.event.ingest.MemberReferrerIngestEvent", MemberReferrerIngested.class)
            .put("com.sesamecom.messaging.event.ingest.RecallIngestEvent", VisitorRecallIngested.class)
            .put("com.sesamecom.messaging.event.ingest.ReferrerIngestEvent", ReferrerIngested.class)
            .put("com.sesamecom.messaging.event.fact.PatientResponsibilityChanged", PatientResponsibilityIngested.class)
    .build();

@Override
public String transform(String message) throws IOException {
    Matcher matcher = p.matcher(message);
    if (matcher.find()) {
        String command = matcher.group(1);
        if (eventMap.containsKey(command))
            message = message.replace(command, eventMap.get(command).getCanonicalName());
    }

    return message;
    }
}
package com.sesamecom.messaging.event;
导入org.codehaus.jackson.annotate.JsonTypeInfo;
导入org.codehaus.jackson.map.annotate.JsonSerialize;
/**
*用于可封送至JSON字符串和从JSON字符串封送的命令的基类。
*/
@JsonSerialize
@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS,include=JsonTypeInfo.As.PROPERTY,PROPERTY=“@command”)
公共抽象类MarshaleEvent{
}
包com.sesamecom.messaging.event.feature;
/**
*
*/
最终公共类重新激活FeatureStatusChanged扩展MemberFeatureStatusChanged{
@SuppressWarnings({“UnusedDeclaration”,“deprecation”})
@不推荐//json序列化需要
公共重新激活功能状态已更改(){
}
公共重新激活功能状态已更改(整数成员ID,启用布尔值){
超级(memberId,已启用);
}
@凌驾
公共字符串toString(){
返回“ReactionFeatureStatusChanged{”+
“memberId=“+getMemberId()+
“,enabled=“+isEnabled()+
'}';
}
}
包com.sesamecom.messaging.dispatch;
导入com.google.common.collect.ImmutableMap;
导入com.sesamecom.messaging.event.marshaleEvent;
导入com.sesamecom.messaging.event.ingest.*;
导入java.io.IOException;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类IngestEventTransformer实现MessageTransformer{
私有静态模式p=Pattern.compile(“^\\{\”@command\:\”(com\\.sesamecom\\.messaging\.event\\.(事实摄取)\\.\\w+”,\);

private static ImmutableMap请发布一些代码以及@command来自何处?这里的一些上下文可能会有所帮助!上面的代码没有使用Camel。可能是jackson的升级。您可以尝试使用与以前相同版本的jackson。Claus,这就是解决方案!非常感谢。:)