Java tutorial
/* * Copyright 2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License */ package com.kinglcc.spring.jms.core.converter; import java.io.IOException; import java.lang.reflect.Type; import org.springframework.messaging.Message; import org.springframework.messaging.converter.MappingJackson2MessageConverter; import org.springframework.messaging.converter.MessageConversionException; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.ObjectMapper; /** * Jackson2MessageAdapterConverter * <pre> * Use Jackson2 to convert {@link Message} * </pre> * @see GenericMessageAdapterConverter * * @author liaochaochao * @since 2016128 ?5:49:15 */ public class Jackson2MessageAdapterConverter extends MappingJackson2MessageConverter implements GenericMessageAdapterConverter { @Override public Object fromMessage(Message<?> message, Type targetType, Class<?> contextClass) { ObjectMapper objectMapper = getObjectMapper(); JavaType javaType = objectMapper.getTypeFactory().constructType(targetType, contextClass); try { Object payload = message.getPayload(); if (payload instanceof byte[]) { return objectMapper.readValue((byte[]) payload, javaType); } else { return objectMapper.readValue((String) payload, javaType); } } catch (IOException ex) { throw new MessageConversionException(message, "Could not read JSON: " + ex.getMessage(), ex); } } @Override public Object fromMessage(Message<?> message, Type targetType) { return fromMessage(message, targetType, null); } }