Fixes messaging

This commit is contained in:
Marcin Grzejszczak
2022-11-18 20:11:10 +01:00
parent 65a6c5e95c
commit a5b97e6175
29 changed files with 144 additions and 118 deletions

View File

@@ -1,31 +0,0 @@
/*
* Copyright 2013-2020 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
*
* https://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 org.springframework.cloud.contract.verifier.messaging;
/**
* Core interface that allows you to build, send and receive messages.
*
* Destination is relevant to the underlying implementation. Might be a channel, queue,
* topic etc.
*
* @param <M> message type
* @author Marcin Grzejszczak
* @since 1.0.0
*/
public interface MessageVerifier<M> extends MessageVerifierSender<M>, MessageVerifierReceiver<M> {
}

View File

@@ -29,14 +29,15 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cloud.contract.verifier.converter.YamlContract;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender;
import org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessageMetadata;
import org.springframework.util.StringUtils;
/**
* @author Marcin Grzejszczak
*/
public class CamelStubMessages implements MessageVerifier<Message> {
public class CamelStubMessages implements MessageVerifierSender<Message>, MessageVerifierReceiver<Message> {
private static final Logger log = LoggerFactory.getLogger(CamelStubMessages.class);

View File

@@ -50,7 +50,8 @@ public class ContractVerifierIntegrationConfiguration {
@ConditionalOnMissingBean(MessageVerifierSender.class)
public MessageVerifierSender<Message<?>> integrationContractVerifierMessageSender(
ApplicationContext applicationContext) {
SpringIntegrationStubMessages springIntegrationStubMessages = new SpringIntegrationStubMessages(applicationContext);
SpringIntegrationStubMessages springIntegrationStubMessages = new SpringIntegrationStubMessages(
applicationContext);
return new MessageVerifierSender<>() {
@Override
public void send(Message<?> message, String destination, @Nullable YamlContract contract) {
@@ -58,7 +59,8 @@ public class ContractVerifierIntegrationConfiguration {
}
@Override
public <T> void send(T payload, Map<String, Object> headers, String destination, @Nullable YamlContract contract) {
public <T> void send(T payload, Map<String, Object> headers, String destination,
@Nullable YamlContract contract) {
springIntegrationStubMessages.send(payload, headers, destination, contract);
}
};
@@ -68,10 +70,12 @@ public class ContractVerifierIntegrationConfiguration {
@ConditionalOnMissingBean(MessageVerifierReceiver.class)
public MessageVerifierReceiver<Message<?>> integrationContractVerifierMessageReceiver(
ApplicationContext applicationContext) {
SpringIntegrationStubMessages springIntegrationStubMessages = new SpringIntegrationStubMessages(applicationContext);
SpringIntegrationStubMessages springIntegrationStubMessages = new SpringIntegrationStubMessages(
applicationContext);
return new MessageVerifierReceiver<>() {
@Override
public Message<?> receive(String destination, long timeout, TimeUnit timeUnit, @Nullable YamlContract contract) {
public Message<?> receive(String destination, long timeout, TimeUnit timeUnit,
@Nullable YamlContract contract) {
return springIntegrationStubMessages.receive(destination, timeout, timeUnit, contract);
}

View File

@@ -23,7 +23,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.cloud.contract.verifier.converter.YamlContract;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
import org.springframework.context.ApplicationContext;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
@@ -32,7 +31,9 @@ import org.springframework.messaging.PollableChannel;
/**
* @author Marcin Grzejszczak
*/
public class SpringIntegrationStubMessages implements MessageVerifier<Message<?>> {
public class SpringIntegrationStubMessages
implements org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender<Message<?>>,
org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver<Message<?>> {
private static final Log log = LogFactory.getLog(SpringIntegrationStubMessages.class);

View File

@@ -24,14 +24,13 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.cloud.contract.verifier.converter.YamlContract;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender;
/**
* Wrapper around messaging. Abstracts all message related operations like sending,
* converting and receiving. Delegates the actual work to an implementation of a
* {@link MessageVerifier}.
* {@link MessageVerifierSender} and {@link MessageVerifierReceiver}.
*
* @param <M> message type
* @author Dave Syer

View File

@@ -67,7 +67,8 @@ public class ContractVerifierJmsConfiguration {
}
@Override
public <T> void send(T payload, Map<String, Object> headers, String destination, @Nullable YamlContract contract) {
public <T> void send(T payload, Map<String, Object> headers, String destination,
@Nullable YamlContract contract) {
jmsStubMessages.send(payload, headers, destination, contract);
}
};
@@ -81,7 +82,8 @@ public class ContractVerifierJmsConfiguration {
JmsStubMessages jmsStubMessages = new JmsStubMessages(jmsTemplate);
return new MessageVerifierReceiver<>() {
@Override
public Message receive(String destination, long timeout, TimeUnit timeUnit, @Nullable YamlContract contract) {
public Message receive(String destination, long timeout, TimeUnit timeUnit,
@Nullable YamlContract contract) {
return jmsStubMessages.receive(destination, timeout, timeUnit, contract);
}

View File

@@ -27,11 +27,11 @@ import jakarta.jms.Message;
import jakarta.jms.Session;
import org.springframework.cloud.contract.verifier.converter.YamlContract;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessagePostProcessor;
class JmsStubMessages implements MessageVerifier<Message> {
class JmsStubMessages implements org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender<Message>,
org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver<Message> {
private final JmsTemplate jmsTemplate;

View File

@@ -55,7 +55,8 @@ public class NoOpContractVerifierAutoConfiguration {
}
@Override
public <T> void send(T payload, Map<String, Object> headers, String destination, @Nullable YamlContract contract) {
public <T> void send(T payload, Map<String, Object> headers, String destination,
@Nullable YamlContract contract) {
noOpStubMessages.send(payload, headers, destination, contract);
}
};
@@ -68,7 +69,8 @@ public class NoOpContractVerifierAutoConfiguration {
return new MessageVerifierReceiver<>() {
@Override
public Object receive(String destination, long timeout, TimeUnit timeUnit, @Nullable YamlContract contract) {
public Object receive(String destination, long timeout, TimeUnit timeUnit,
@Nullable YamlContract contract) {
return noOpStubMessages.receive(destination, timeout, timeUnit, contract);
}

View File

@@ -20,12 +20,13 @@ import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.springframework.cloud.contract.verifier.converter.YamlContract;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
/**
* @author Marcin Grzejszczak
*/
public class NoOpStubMessages<U> implements MessageVerifier<U> {
public class NoOpStubMessages<U>
implements org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender<U>,
org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver<U> {
@Override
public void send(U message, String destination, YamlContract contract) {

View File

@@ -72,7 +72,8 @@ public class ContractVerifierStreamAutoConfiguration {
}
@Override
public <T> void send(T payload, Map<String, Object> headers, String destination, @Nullable YamlContract contract) {
public <T> void send(T payload, Map<String, Object> headers, String destination,
@Nullable YamlContract contract) {
stubMessages.send(payload, headers, destination, contract);
}
};
@@ -86,7 +87,8 @@ public class ContractVerifierStreamAutoConfiguration {
new StreamOutputDestinationMessageReceiver(context));
return new MessageVerifierReceiver<>() {
@Override
public Message<?> receive(String destination, long timeout, TimeUnit timeUnit, @Nullable YamlContract contract) {
public Message<?> receive(String destination, long timeout, TimeUnit timeUnit,
@Nullable YamlContract contract) {
return stubMessages.receive(destination, timeout, timeUnit, contract);
}

View File

@@ -20,7 +20,6 @@ import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.springframework.cloud.contract.verifier.converter.YamlContract;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifier;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierReceiver;
import org.springframework.cloud.contract.verifier.messaging.MessageVerifierSender;
import org.springframework.messaging.Message;
@@ -28,7 +27,7 @@ import org.springframework.messaging.Message;
/**
* @author Marcin Grzejszczak
*/
public class StreamStubMessages implements MessageVerifier<Message<?>> {
public class StreamStubMessages implements MessageVerifierSender<Message<?>>, MessageVerifierReceiver<Message<?>> {
private final MessageVerifierSender<Message<?>> sender;