List of usage examples for org.springframework.messaging.converter MessageConversionException MessageConversionException
public MessageConversionException(Message<?> failedMessage, String description)
From source file:org.springframework.cloud.aws.messaging.support.converter.NotificationRequestConverter.java
@Override public Object fromMessage(Message<?> message, Class<?> targetClass) { Assert.notNull(message, "message must not be null"); Assert.notNull(targetClass, "target class must not be null"); JsonNode jsonNode;//from w w w. j a va2 s . co m try { jsonNode = this.jsonMapper.readTree(message.getPayload().toString()); } catch (Exception e) { throw new MessageConversionException("Could not read JSON", e); } if (!jsonNode.has("Type")) { throw new MessageConversionException( "Payload: '" + message.getPayload() + "' does not contain a Type attribute", null); } if (!"Notification".equals(jsonNode.findValue("Type").asText())) { throw new MessageConversionException( "Payload: '" + message.getPayload() + "' is not a valid notification", null); } if (!jsonNode.has("Message")) { throw new MessageConversionException( "Payload: '" + message.getPayload() + "' does not contain a message", null); } String messagePayload = jsonNode.findPath("Message").asText(); GenericMessage<String> genericMessage = new GenericMessage<>(messagePayload, getMessageAttributesAsMessageHeaders(jsonNode.findPath("MessageAttributes"))); return new NotificationRequest(jsonNode.findPath("Subject").asText(), this.payloadConverter.fromMessage(genericMessage, targetClass)); }
From source file:org.springframework.cloud.stream.converter.JsonUnmarshallingConverter.java
@Override protected Object convertFromInternal(Message<?> message, Class<?> targetClass, Object conversionHint) { Object payload = message.getPayload(); try {// w w w .ja v a 2 s . co m return payload instanceof byte[] ? objectMapper.readValue((byte[]) payload, targetClass) : objectMapper.readValue((String) payload, targetClass); } catch (IOException e) { throw new MessageConversionException("Cannot parse payload ", e); } }
From source file:com.kinglcc.spring.jms.core.Jackson2PayloadArgumentResolver.java
private Object convertClassFromMessage(Message<?> message, Class<?> targetClass) { Object payload = this.converter.fromMessage(message, targetClass); if (payload == null) { throw new MessageConversionException(message, "No converter found to convert to " + targetClass + ", message=" + message); }//from w w w. j a v a 2s . c om return payload; }
From source file:ch.rasc.wampspring.method.PayloadArgumentResolver.java
@Override public Object resolveArgument(MethodParameter param, Message<?> message) throws Exception { Payload ann = param.getParameterAnnotation(Payload.class); if (ann != null && StringUtils.hasText(ann.value())) { throw new IllegalStateException("@Payload SpEL expressions not supported by this resolver"); }// w ww . j a va 2 s .c o m Object payload = message.getPayload(); if (isEmptyPayload(payload)) { if (ann == null || ann.required()) { String paramName = getParameterName(param); BindingResult bindingResult = new BeanPropertyBindingResult(payload, paramName); bindingResult.addError(new ObjectError(paramName, "@Payload param is required")); throw new MethodArgumentNotValidException(message, param, bindingResult); } return null; } Class<?> targetClass = param.getParameterType(); if (ClassUtils.isAssignable(targetClass, payload.getClass())) { validate(message, param, payload); return payload; } payload = this.methodParameterConverter.convert(param, message.getPayload()); if (payload == null) { throw new MessageConversionException(message, "No converter found to convert to " + targetClass + ", message=" + message); } validate(message, param, payload); return payload; }
From source file:com.kinglcc.spring.jms.core.Jackson2PayloadArgumentResolver.java
private Object convertJavaTypeFromMessage(Message<?> message, MethodParameter parameter) { Type targetType = parameter.getGenericParameterType(); Class<?> contextClass = parameter.getContainingClass(); Object payload = ((GenericMessageAdapterConverter) converter).fromMessage(message, targetType, contextClass);// ww w . j a v a 2s .c om if (payload == null) { throw new MessageConversionException(message, "No converter found to convert to " + targetType + ", message=" + message); } return payload; }
From source file:dstrelec.nats.listener.adapter.MessagingMessageListenerAdapter.java
/** * Invoke the handler, wrapping any exception to a {@link NatsException} * with a dedicated error message.//from w w w. jav a2s .c o m * @param data the data to process during invocation. * @param message the message to process. * @return the result of invocation. */ protected final Object invokeHandler(Object data, Message<?> message) { try { if (data instanceof List && !this.isConsumerRecordList) { return this.handlerMethod.invoke(message); } else { return this.handlerMethod.invoke(message, data); } } catch (org.springframework.messaging.converter.MessageConversionException ex) { throw new NatsException(createMessagingErrorMessage( "Listener method could not " + "be invoked with the incoming message", message.getPayload()), new MessageConversionException("Cannot handle message", ex)); } catch (MessagingException ex) { throw new NatsException(createMessagingErrorMessage( "Listener method could not " + "be invoked with the incoming message", message.getPayload()), ex); } catch (Exception ex) { throw new NatsException("Listener method '" + this.handlerMethod.getMethodAsString(message.getPayload()) + "' threw exception", ex); } }
From source file:org.springframework.cloud.aws.messaging.support.converter.ObjectMessageConverter.java
@Override public Object convertFromInternal(Message<?> message, Class<?> targetClass) { String messagePayload = message.getPayload().toString(); byte[] rawContent = messagePayload.getBytes(this.encoding); if (!(Base64.isBase64(rawContent))) { throw new MessageConversionException("Error converting payload '" + messagePayload + "' because it is not a valid base64 encoded stream!", null); }//from w w w. ja v a 2 s.co m ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(rawContent); Base64InputStream base64InputStream = new Base64InputStream(byteArrayInputStream); Serializable result = null; ObjectInputStream objectInputStream = null; try { objectInputStream = new ObjectInputStream(base64InputStream); result = (Serializable) objectInputStream.readObject(); } catch (ClassNotFoundException e) { throw new MessageConversionException( "Error loading class from message payload, make sure class is in classpath!", e); } catch (IOException e) { throw new MessageConversionException("Error reading payload from binary representation", e); } finally { if (objectInputStream != null) { try { objectInputStream.close(); } catch (IOException e) { LOGGER.warn("Error closing object output stream while reading message payload", e); } } } return result; }
From source file:org.springframework.cloud.aws.messaging.support.converter.ObjectMessageConverter.java
@Override public Object convertToInternal(Object payload, MessageHeaders headers) { if (!(payload instanceof Serializable)) { throw new IllegalArgumentException("Can't convert payload, it must be of type Serializable"); }//from w w w . ja va2 s . co m ByteArrayOutputStream content = new ByteArrayOutputStream(); Base64OutputStream base64OutputStream = new Base64OutputStream(content, true, 0, null); ObjectOutputStream objectOutputStream = null; try { objectOutputStream = new ObjectOutputStream(base64OutputStream); objectOutputStream.writeObject(payload); objectOutputStream.flush(); } catch (IOException e) { throw new MessageConversionException("Error converting payload into binary representation", e); } finally { if (objectOutputStream != null) { try { objectOutputStream.close(); } catch (IOException e) { LOGGER.warn("Error closing object output stream while writing message payload", e); } } } return new String(content.toByteArray(), 0, content.size(), this.encoding); }
From source file:org.springframework.kafka.listener.adapter.MessagingMessageListenerAdapter.java
/** * Invoke the handler, wrapping any exception to a {@link ListenerExecutionFailedException} * with a dedicated error message./*from w w w.j a v a 2 s . c om*/ * @param data the data to process during invocation. * @param acknowledgment the acknowledgment to use if any. * @param message the message to process. * @return the result of invocation. */ protected final Object invokeHandler(Object data, Acknowledgment acknowledgment, Message<?> message) { try { if (data instanceof List && !this.isConsumerRecordList) { return this.handlerMethod.invoke(message, acknowledgment); } else { return this.handlerMethod.invoke(message, data, acknowledgment); } } catch (org.springframework.messaging.converter.MessageConversionException ex) { throw new ListenerExecutionFailedException(createMessagingErrorMessage( "Listener method could not " + "be invoked with the incoming message", message.getPayload()), new MessageConversionException("Cannot handle message", ex)); } catch (MessagingException ex) { throw new ListenerExecutionFailedException(createMessagingErrorMessage( "Listener method could not " + "be invoked with the incoming message", message.getPayload()), ex); } catch (Exception ex) { throw new ListenerExecutionFailedException("Listener method '" + this.handlerMethod.getMethodAsString(message.getPayload()) + "' threw exception", ex); } }