
com.consol.citrus.generate.javadsl.MessagingJavaTestGenerator Maven / Gradle / Ivy
The newest version!
/*
* Copyright 2006-2018 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.consol.citrus.generate.javadsl;
import java.util.List;
import java.util.Optional;
import com.consol.citrus.actions.ReceiveMessageAction;
import com.consol.citrus.actions.SendMessageAction;
import com.consol.citrus.generate.provider.CodeProvider;
import com.consol.citrus.generate.provider.ReceiveCodeProvider;
import com.consol.citrus.generate.provider.SendCodeProvider;
import com.consol.citrus.generate.provider.http.ReceiveHttpRequestCodeProvider;
import com.consol.citrus.generate.provider.http.ReceiveHttpResponseCodeProvider;
import com.consol.citrus.generate.provider.http.SendHttpRequestCodeProvider;
import com.consol.citrus.generate.provider.http.SendHttpResponseCodeProvider;
import com.consol.citrus.http.message.HttpMessage;
import com.consol.citrus.message.Message;
import com.consol.citrus.ws.message.SoapMessage;
import com.squareup.javapoet.CodeBlock;
import com.squareup.javapoet.JavaFile;
import com.squareup.javapoet.TypeSpec;
/**
* @author Christoph Deppisch
* @since 2.7.4
*/
public class MessagingJavaTestGenerator> extends JavaDslTestGenerator {
/** Endpoint name to use */
private String endpoint;
/** Sample request */
private Message request;
/** Sample response */
private Message response;
@Override
protected JavaFile.Builder createJavaFileBuilder(TypeSpec.Builder testTypeBuilder) {
return super.createJavaFileBuilder(testTypeBuilder)
.addStaticImport(SendMessageAction.Builder.class, "send")
.addStaticImport(ReceiveMessageAction.Builder.class, "receive");
}
@Override
protected List getActions() {
List codeBlocks = super.getActions();
if (getMode().equals(GeneratorMode.CLIENT)) {
codeBlocks.add(getSendRequestCodeProvider(request).getCode(Optional.ofNullable(endpoint).orElse(getMode().name().toLowerCase()), generateOutboundMessage(request)));
if (response != null) {
codeBlocks.add(getReceiveResponseCodeProvider(response).getCode(Optional.ofNullable(endpoint).orElse(getMode().name().toLowerCase()), generateInboundMessage(response)));
}
} else if (getMode().equals(GeneratorMode.SERVER)) {
codeBlocks.add(getReceiveRequestCodeProvider(request).getCode(Optional.ofNullable(endpoint).orElse(getMode().name().toLowerCase()), generateInboundMessage(request)));
if (response != null) {
codeBlocks.add(getSendResponseCodeProvider(response).getCode(Optional.ofNullable(endpoint).orElse(getMode().name().toLowerCase()), generateOutboundMessage(response)));
}
}
return codeBlocks;
}
/**
* Inbound message generation hook for subclasses.
* @param message
* @return
*/
protected Message generateInboundMessage(Message message) {
return message;
}
/**
* Outbound message generation hook for subclasses.
* @param message
* @return
*/
protected Message generateOutboundMessage(Message message) {
return message;
}
protected CodeProvider getSendRequestCodeProvider(M message) {
if (message instanceof HttpMessage) {
return (CodeProvider) new SendHttpRequestCodeProvider();
} else if (message instanceof SoapMessage) {
return (CodeProvider) new SendCodeProvider();
} else {
return (CodeProvider) new SendCodeProvider();
}
}
protected CodeProvider getReceiveResponseCodeProvider(M message) {
if (message instanceof HttpMessage) {
return (CodeProvider) new ReceiveHttpResponseCodeProvider();
} else if (message instanceof SoapMessage) {
return (CodeProvider) new ReceiveCodeProvider();
} else {
return (CodeProvider) new ReceiveCodeProvider();
}
}
protected CodeProvider getSendResponseCodeProvider(M message) {
if (message instanceof HttpMessage) {
return (CodeProvider) new SendHttpResponseCodeProvider();
} else if (message instanceof SoapMessage) {
return (CodeProvider) new SendCodeProvider();
} else {
return (CodeProvider) new SendCodeProvider();
}
}
protected CodeProvider getReceiveRequestCodeProvider(M message) {
if (message instanceof HttpMessage) {
return (CodeProvider) new ReceiveHttpRequestCodeProvider();
} else if (message instanceof SoapMessage) {
return (CodeProvider) new ReceiveCodeProvider();
} else {
return (CodeProvider) new ReceiveCodeProvider();
}
}
/**
* Set the endpoint to use.
* @param endpoint
* @return
*/
public T withEndpoint(String endpoint) {
this.endpoint = endpoint;
return self;
}
/**
* Set the request to use.
* @param request
* @return
*/
public T withRequest(Message request) {
this.request = request;
return self;
}
/**
* Set the response to use.
* @param response
* @return
*/
public T withResponse(Message response) {
this.response = response;
return self;
}
/**
* Adds a request header to use.
* @param name
* @param value
* @return
*/
public T addRequestHeader(String name , Object value) {
this.request.setHeader(name, value);
return self;
}
/**
* Adds a response header to use.
* @param name
* @param value
* @return
*/
public T addResponseHeader(String name, Object value) {
this.request.setHeader(name, value);
return self;
}
/**
* Sets the endpoint.
*
* @param endpoint
*/
public void setEndpoint(String endpoint) {
this.endpoint = endpoint;
}
/**
* Gets the endpoint.
*
* @return
*/
public String getEndpoint() {
return endpoint;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy