/** * Checks whether the passed in {@code outboundSignal} is a response or an error. * * @param outboundSignal the OutboundSignal to check. * @return {@code true} if the OutboundSignal is a response or an error, {@code false} otherwise */ private boolean isResponseOrError(final OutboundSignal.WithExternalMessage outboundSignal) { return (outboundSignal.getExternalMessage().isResponse() || outboundSignal.getExternalMessage().isError()); }
@Override public ExternalMessage withHeader(final String key, final String value) { return new UnmodifiableExternalMessageBuilder(this).withAdditionalHeaders(key, value).build(); }
/** * @return the optional value of the Content-Type header */ default Optional<String> findContentType() { return findHeaderIgnoreCase(CONTENT_TYPE_HEADER); }
@Override public Optional<ExternalMessage> apply(final Adaptable adaptable) { final JsonifiableAdaptable jsonifiableAdaptable = ProtocolFactory.wrapAsJsonifiableAdaptable(adaptable); final ExternalMessageBuilder messageBuilder = ExternalMessageFactory.newExternalMessageBuilder( adaptable.getHeaders().orElseGet(adaptable::getDittoHeaders)) .withTopicPath(adaptable.getTopicPath()); messageBuilder.withAdditionalHeaders(ExternalMessage.CONTENT_TYPE_HEADER, DittoConstants.DITTO_PROTOCOL_CONTENT_TYPE); messageBuilder.withText(jsonifiableAdaptable.toJsonString()); return Optional.of(messageBuilder.build()); }
/** * Creates a new ExternalMessageBuilder initialized with the passed {@code headers}. * * @param headers the headers to initialize the builder with. * @return the builder. */ public static ExternalMessageBuilder newExternalMessageBuilder(final Map<String, String> headers) { return new UnmodifiableExternalMessageBuilder(headers); }
@Override public Signal<?> getSource() { return delegate.getSource(); }
@Override public boolean isBytesMessage() { return PayloadType.BYTES.equals(payloadType); }
@Test public void testBuildExternalMessageWithBytePayload() { testBuildExternalMessage(true); }
@Override public ExternalMessage build() { return new UnmodifiableExternalMessage(headers, response, error, payloadType, textPayload, bytePayload, authorizationContext, topicPath, enforcementFilter, headerMapping); }
/** * Creates a OutboundSignal containing a Signal and a Set of Targets where the Signal should be delivered to. * * @param signal the Signal to be delivered. * @param targets the Set of Targets where the Signal should be delivered to. * @return the created OutboundSignal. */ public static OutboundSignal newOutboundSignal(final Signal<?> signal, final Set<Target> targets) { return new UnmappedOutboundSignal(signal, targets); }
@Override public Set<Target> getTargets() { return delegate.getTargets(); }
/** * Creates a OutboundSignal wrapping an existing {@code outboundSignal} which also is aware of the * {@link ExternalMessage} that was mapped from the outbound signal. * * @param outboundSignal the OutboundSignal to wrap. * @param externalMessage the mapped ExternalMessage. * @return the created OutboundSignal which is aware of the ExternalMessage */ public static OutboundSignal.WithExternalMessage newMappedOutboundSignal(final OutboundSignal outboundSignal, final ExternalMessage externalMessage) { return new MappedOutboundSignal(outboundSignal, externalMessage); } }
public static MappedInboundExternalMessage of(final ExternalMessage externalMessage, final TopicPath topicPath, final Signal<?> signal) { return new MappedInboundExternalMessage(externalMessage, topicPath, signal); }
/** * Checks whether the passed in {@code outboundSignal} is a response or an error. * * @param outboundSignal the OutboundSignal to check. * @return {@code true} if the OutboundSignal is a response or an error, {@code false} otherwise */ private boolean isResponseOrError(final OutboundSignal.WithExternalMessage outboundSignal) { return (outboundSignal.getExternalMessage().isResponse() || outboundSignal.getExternalMessage().isError()); }
@Override public ExternalMessage withHeaders(final Map<String, String> additionalHeaders) { return new UnmodifiableExternalMessageBuilder(this) .withAdditionalHeaders(additionalHeaders) .build(); }
/** * Finds the content-type header from the passed ExternalMessage. * * @param externalMessage the ExternalMessage to look for the content-type header in * @return the optional content-type value */ static Optional<String> findContentType(final ExternalMessage externalMessage) { checkNotNull(externalMessage); return externalMessage.findHeaderIgnoreCase(ExternalMessage.CONTENT_TYPE_HEADER); }
/** * Creates a new ExternalMessageBuilder based on the passed existing {@code externalMessage}. * * @param externalMessage the ExternalMessage initialize the builder with. * @return the builder. */ public static ExternalMessageBuilder newExternalMessageBuilder(final ExternalMessage externalMessage) { return new UnmodifiableExternalMessageBuilder(externalMessage); }
@Override public boolean isTextMessage() { return PayloadType.TEXT.equals(payloadType); }
@Test public void testBuildExternalMessageWithTextPayload() { testBuildExternalMessage(false); }
/** * Finds the content-type header from the passed ExternalMessage. * * @param externalMessage the ExternalMessage to look for the content-type header in * @return the optional content-type value */ static Optional<String> findContentType(final ExternalMessage externalMessage) { checkNotNull(externalMessage); return externalMessage.findHeaderIgnoreCase(ExternalMessage.CONTENT_TYPE_HEADER); }