Example usage for org.springframework.integration.support MessageBuilder copyHeaders

List of usage examples for org.springframework.integration.support MessageBuilder copyHeaders

Introduction

In this page you can find the example usage for org.springframework.integration.support MessageBuilder copyHeaders.

Prototype

@Override
public MessageBuilder<T> copyHeaders(@Nullable Map<String, ?> headersToCopy) 

Source Link

Document

Copy the name-value pairs from the provided Map.

Usage

From source file:apiserver.services.images.services.ImageInfoService.java

public Object execute(Message<?> message) throws IOException {

    FileInfoJob props = (FileInfoJob) message.getPayload();

    Map result = new HashMap();
    result.put(ApiServerConstants.WIDTH, props.getBufferedImage().getWidth());
    result.put(ApiServerConstants.HEIGHT, props.getBufferedImage().getHeight());

    // return results
    MessageBuilder mb = MessageBuilder.withPayload(result);
    mb.copyHeaders(message.getHeaders());
    return mb.build();
}

From source file:nz.co.senanque.messaging.OrderEndpoint.java

public Message<Order> issueResponseFor(Message<Order> order) {
    if (order.getPayload().getOrderName().equals("fatal error")) {
        throw new RuntimeException("fatal error");
    }/*  ww w  .  ja v a 2 s  .c o m*/
    if (order.getPayload().getOrderName().equals("recoverable error")) {
        throw new RuntimeException("recoverable error");
    }
    Order ret = new ObjectFactory().createOrder();
    OrderItem orderItem = new ObjectFactory().createOrderItem();
    orderItem.setItemName("#1");
    ret.setRejected(false);
    ret.setOrderName("whatever");
    ret.getOrderItems().add(orderItem);
    log.debug("processed order: correlationId {}",
            order.getHeaders().get(IntegrationMessageHeaderAccessor.CORRELATION_ID, Long.class));
    MessageBuilder<Order> messageBuilder = MessageBuilder.withPayload(ret);
    messageBuilder.copyHeaders(order.getHeaders());
    return messageBuilder.build();
}

From source file:com.consol.citrus.samples.flightbooking.BookingSplitter.java

@Splitter
@Transactional//from   w w  w. j  av  a2s .  co  m
public Object splitMessage(Message<?> message) {
    List<Message<FlightBookingRequestMessage>> flightRequests = new ArrayList<Message<FlightBookingRequestMessage>>();

    if (!(message.getPayload() instanceof TravelBookingRequestMessage)) {
        throw new IllegalStateException("Unsupported message type: " + message.getPayload().getClass());
    }

    TravelBookingRequestMessage request = ((TravelBookingRequestMessage) message.getPayload());

    //Save customer if not already present
    if (customerDao.find(request.getCustomer().getId()) == null) {
        customerDao.persist(request.getCustomer());
    }

    for (Flight flight : request.getFlights().getFlights()) {
        //Save flight if necessary
        if (flightDao.find(flight.getFlightId()) == null) {
            flightDao.persist(flight);
        }

        FlightBookingRequestMessage flightRequest = new FlightBookingRequestMessage();
        flightRequest.setFlight(flight);
        flightRequest.setCorrelationId(request.getCorrelationId());
        flightRequest.setCustomer(request.getCustomer());
        flightRequest.setBookingId("Bx" + bookingIndex.incrementAndGet());

        MessageBuilder<FlightBookingRequestMessage> messageBuilder = MessageBuilder.withPayload(flightRequest);
        messageBuilder.copyHeaders(message.getHeaders());

        flightRequests.add(messageBuilder.build());
    }

    return flightRequests;
}

From source file:poc.telnet.AuthenticationInterceptor.java

@Override
public boolean onMessage(Message<?> message) {
    String payload = new String((byte[]) message.getPayload());
    if (payload.startsWith("login")) {
        String[] items = payload.split("[:;]");
        if (items.length == 3) {
            String userName = items[1];
            String password = items[2];
            boolean authenticated = this.authentication.authenticate(userName, password);
            String msg = null;/*w  w w . ja v  a2 s .c o m*/
            if (authenticated) {
                this.authenticated = authenticated;
                this.userName = userName;
                msg = "logined";
            } else {
                msg = "wrong user name or password";
            }
            try {
                super.send(MessageBuilder.withPayload(msg).build());
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    } else if (payload.startsWith("logout")) {
        super.close();
    } else {
        if (authenticated) {
            MessageBuilder<String> builder = MessageBuilder.withPayload(payload);
            builder.copyHeaders(message.getHeaders()).setHeader("userName", this.userName);
            return super.onMessage(builder.build());

        } else {
            try {
                super.send(new GenericMessage<String>(
                        "Have not login yet. please login with login:username:password"));
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }
    return true;

}

From source file:org.springframework.integration.gateway.GatewayMethodInboundMessageMapper.java

private Message<?> mapArgumentsToMessage(Object[] arguments) {
    Object messageOrPayload = null;
    boolean foundPayloadAnnotation = false;
    Map<String, Object> headers = new HashMap<String, Object>();
    EvaluationContext methodInvocationEvaluationContext = createMethodInvocationEvaluationContext(arguments);
    if (this.payloadExpression != null) {
        messageOrPayload = this.payloadExpression.getValue(methodInvocationEvaluationContext);
    }//from ww w  .j  av  a 2  s. co m
    for (int i = 0; i < this.parameterList.size(); i++) {
        Object argumentValue = arguments[i];
        MethodParameter methodParameter = this.parameterList.get(i);
        Annotation annotation = this.findMappingAnnotation(methodParameter.getParameterAnnotations());
        if (annotation != null) {
            if (annotation.annotationType().equals(Payload.class)) {
                if (messageOrPayload != null) {
                    this.throwExceptionForMultipleMessageOrPayloadParameters(methodParameter);
                }
                String expression = ((Payload) annotation).value();
                if (!StringUtils.hasText(expression)) {
                    messageOrPayload = argumentValue;
                } else {
                    messageOrPayload = this.evaluatePayloadExpression(expression, argumentValue);
                }
                foundPayloadAnnotation = true;
            } else if (annotation.annotationType().equals(Header.class)) {
                Header headerAnnotation = (Header) annotation;
                String headerName = this.determineHeaderName(headerAnnotation, methodParameter);
                if (headerAnnotation.required() && argumentValue == null) {
                    throw new IllegalArgumentException(
                            "Received null argument value for required header: '" + headerName + "'");
                }
                headers.put(headerName, argumentValue);
            } else if (annotation.annotationType().equals(Headers.class)) {
                if (argumentValue != null) {
                    if (!(argumentValue instanceof Map)) {
                        throw new IllegalArgumentException(
                                "@Headers annotation is only valid for Map-typed parameters");
                    }
                    for (Object key : ((Map<?, ?>) argumentValue).keySet()) {
                        Assert.isInstanceOf(String.class, key,
                                "Invalid header name [" + key + "], name type must be String.");
                        Object value = ((Map<?, ?>) argumentValue).get(key);
                        headers.put((String) key, value);
                    }
                }
            }
        } else if (messageOrPayload == null) {
            messageOrPayload = argumentValue;
        } else if (Map.class.isAssignableFrom(methodParameter.getParameterType())) {
            if (messageOrPayload instanceof Map && !foundPayloadAnnotation) {
                if (payloadExpression == null) {
                    throw new MessagingException("Ambiguous method parameters; found more than one "
                            + "Map-typed parameter and neither one contains a @Payload annotation");
                }
            }
            this.copyHeaders((Map<?, ?>) argumentValue, headers);
        } else if (this.payloadExpression == null) {
            this.throwExceptionForMultipleMessageOrPayloadParameters(methodParameter);
        }
    }
    Assert.isTrue(messageOrPayload != null,
            "unable to determine a Message or payload parameter on method [" + method + "]");
    MessageBuilder<?> builder = (messageOrPayload instanceof Message)
            ? MessageBuilder.fromMessage((Message<?>) messageOrPayload)
            : MessageBuilder.withPayload(messageOrPayload);
    builder.copyHeadersIfAbsent(headers);
    if (!CollectionUtils.isEmpty(this.headerExpressions)) {
        Map<String, Object> evaluatedHeaders = new HashMap<String, Object>();
        for (Map.Entry<String, Expression> entry : this.headerExpressions.entrySet()) {
            Object value = entry.getValue().getValue(methodInvocationEvaluationContext);
            if (value != null) {
                evaluatedHeaders.put(entry.getKey(), value);
            }
        }
        builder.copyHeaders(evaluatedHeaders);
    }
    return builder.build();
}

From source file:org.springframework.integration.mail.transformer.AbstractMailMessageTransformer.java

public Message<?> transform(Message<?> message) {
    Object payload = message.getPayload();
    if (!(payload instanceof javax.mail.Message)) {
        throw new MessageTransformationException(message,
                this.getClass().getSimpleName() + " requires a javax.mail.Message payload");
    }//  ww w.  j a  v a 2 s .c o  m
    javax.mail.Message mailMessage = (javax.mail.Message) payload;
    MessageBuilder<T> builder = null;
    try {
        builder = this.doTransform(mailMessage);
    } catch (Exception e) {
        throw new MessageTransformationException(message, "failed to transform mail message", e);
    }
    if (builder == null) {
        throw new MessageTransformationException(message, "failed to transform mail message");
    }
    builder.copyHeaders(this.extractHeaderMapFromMailMessage(mailMessage));
    return builder.build();
}