Skip to content

Commit bc1a818

Browse files
committed
chore(citrus-spring): review and code cleanup
pr: #1224 `citrus-spring` module.
1 parent 800d702 commit bc1a818

17 files changed

+154
-176
lines changed

Diff for: core/citrus-spring/src/main/java/org/citrusframework/config/ComponentLifecycleProcessor.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) thro
4848

4949
if (bean instanceof InitializingPhase) {
5050
if (logger.isDebugEnabled()) {
51-
logger.debug(String.format("Initializing component '%s'", beanName));
51+
logger.debug("Initializing component '{}'", beanName);
5252
}
5353
((InitializingPhase) bean).initialize();
5454
}
@@ -60,7 +60,7 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) thro
6060
public void postProcessBeforeDestruction(Object bean, String beanName) throws BeansException {
6161
if (requiresDestruction(bean)) {
6262
if (logger.isDebugEnabled()) {
63-
logger.debug(String.format("Destroying component '%s'", beanName));
63+
logger.debug("Destroying component '{}'", beanName);
6464
}
6565
((ShutdownPhase) bean).destroy();
6666
}

Diff for: core/citrus-spring/src/main/java/org/citrusframework/config/TestCaseFactory.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616

1717
package org.citrusframework.config;
1818

19-
import java.util.List;
20-
2119
import org.citrusframework.TestAction;
2220
import org.citrusframework.TestCase;
2321
import org.springframework.beans.factory.FactoryBean;
2422

23+
import java.util.List;
24+
2525
/**
2626
* Test case factory bean constructs test cases with test actions and test finally block.
2727
*
@@ -37,13 +37,13 @@ public class TestCaseFactory implements FactoryBean<TestCase> {
3737

3838
@Override
3939
public TestCase getObject() throws Exception {
40-
if (this.testActions != null && this.testActions.size() > 0) {
40+
if (this.testActions != null && !this.testActions.isEmpty()) {
4141
for (TestAction action : testActions) {
4242
testCase.addTestAction(action);
4343
}
4444
}
4545

46-
if (this.finalActions != null && this.finalActions.size() > 0) {
46+
if (this.finalActions != null && !this.finalActions.isEmpty()) {
4747
for (TestAction action : finalActions) {
4848
testCase.addFinalAction(action);
4949
}

Diff for: core/citrus-spring/src/main/java/org/citrusframework/config/handler/CitrusConfigNamespaceHandler.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package org.citrusframework.config.handler;
1818

19-
import java.util.Map;
20-
2119
import org.citrusframework.config.xml.DefaultMessageQueueParser;
2220
import org.citrusframework.config.xml.DirectEndpointAdapterParser;
2321
import org.citrusframework.config.xml.DirectEndpointParser;
@@ -44,6 +42,8 @@
4442
import org.springframework.beans.factory.xml.BeanDefinitionParser;
4543
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
4644

45+
import java.util.Map;
46+
4747
/**
4848
* Namespace handler for components in Citrus configuration.
4949
*
@@ -89,7 +89,7 @@ private void lookupBeanDefinitionParser() {
8989
actionParserMap.forEach((k, p) -> {
9090
registerBeanDefinitionParser(k, p);
9191
if (logger.isDebugEnabled()) {
92-
logger.debug(String.format("Register bean definition parser %s from resource %s", p.getClass(), k));
92+
logger.debug("Register bean definition parser {} from resource {}", p.getClass(), k);
9393
}
9494
});
9595
}

Diff for: core/citrus-spring/src/main/java/org/citrusframework/config/util/VariableExtractorParserUtil.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616

1717
package org.citrusframework.config.util;
1818

19-
import java.util.HashMap;
20-
import java.util.List;
21-
import java.util.Map;
22-
2319
import org.citrusframework.validation.DelegatingPayloadVariableExtractor;
2420
import org.citrusframework.variable.VariableExtractor;
2521
import org.springframework.util.xml.DomUtils;
2622
import org.w3c.dom.Element;
2723

24+
import java.util.HashMap;
25+
import java.util.List;
26+
import java.util.Map;
27+
2828
/**
2929
* Helper for parsing 'extract' elements containing nested xpath or json variable-extractors.
3030
*
@@ -52,7 +52,7 @@ public static void addPayloadVariableExtractors(Element element, List<VariableEx
5252
Element messageElement = DomUtils.getChildElementByTagName(element, "message");
5353
if (messageElement != null) {
5454
List<?> namespaceElements = DomUtils.getChildElementsByTagName(messageElement, "namespace");
55-
if (namespaceElements.size() > 0) {
55+
if (!namespaceElements.isEmpty()) {
5656
for (Object namespaceElementObject : namespaceElements) {
5757
Element namespaceElement = (Element) namespaceElementObject;
5858
namespaces.put(namespaceElement.getAttribute("prefix"), namespaceElement.getAttribute("value"));

Diff for: core/citrus-spring/src/main/java/org/citrusframework/config/xml/AbstractMessageActionParser.java

+52-7
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,9 @@
1616

1717
package org.citrusframework.config.xml;
1818

19-
import java.util.ArrayList;
20-
import java.util.HashMap;
21-
import java.util.LinkedHashMap;
22-
import java.util.List;
23-
import java.util.Map;
24-
import java.util.Optional;
25-
19+
import org.citrusframework.CitrusSettings;
2620
import org.citrusframework.common.Named;
21+
import org.citrusframework.config.util.BeanDefinitionParserUtils;
2722
import org.citrusframework.config.xml.parser.CitrusXmlConfigParser;
2823
import org.citrusframework.config.xml.parser.ScriptMessageBuilderParser;
2924
import org.citrusframework.message.DelegatingPathExpressionProcessor;
@@ -47,16 +42,66 @@
4742
import org.springframework.beans.factory.BeanCreationException;
4843
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
4944
import org.springframework.beans.factory.xml.BeanDefinitionParser;
45+
import org.springframework.beans.factory.xml.ParserContext;
5046
import org.springframework.util.CollectionUtils;
5147
import org.springframework.util.xml.DomUtils;
5248
import org.w3c.dom.Element;
5349

50+
import java.util.ArrayList;
51+
import java.util.HashMap;
52+
import java.util.LinkedHashMap;
53+
import java.util.List;
54+
import java.util.Map;
55+
import java.util.Optional;
56+
57+
import static org.citrusframework.util.StringUtils.hasText;
58+
5459
/**
5560
* Parser providing basic message element configurations used in send and receive actions.
5661
*
5762
*/
5863
public abstract class AbstractMessageActionParser implements BeanDefinitionParser {
5964

65+
protected BeanDefinitionBuilder getBeanDefinitionBuilder(Element element, ParserContext parserContext) {
66+
String endpointUri = parseEndpoint(element);
67+
68+
BeanDefinitionBuilder builder = parseComponent(element, parserContext);
69+
builder.addPropertyValue("name", element.getLocalName());
70+
71+
if (endpointUri.contains(":") || (endpointUri.contains(CitrusSettings.VARIABLE_PREFIX) && endpointUri.contains(CitrusSettings.VARIABLE_SUFFIX))) {
72+
builder.addPropertyValue("endpointUri", endpointUri);
73+
} else {
74+
builder.addPropertyReference("endpoint", endpointUri);
75+
}
76+
77+
DescriptionElementParser.doParse(element, builder);
78+
79+
BeanDefinitionParserUtils.setPropertyReference(builder, element.getAttribute("actor"), "actor");
80+
return builder;
81+
}
82+
83+
private String parseEndpoint(Element element) {
84+
String endpointUri = element.getAttribute("endpoint");
85+
86+
if (!hasText(endpointUri)) {
87+
throw new BeanCreationException("Endpoint reference must not be empty");
88+
}
89+
90+
return endpointUri;
91+
}
92+
93+
/**
94+
* Parse component returning generic bean definition.
95+
* @param element
96+
* @param parserContext
97+
* @return
98+
*/
99+
protected BeanDefinitionBuilder parseComponent(Element element, ParserContext parserContext) {
100+
return BeanDefinitionBuilder.genericBeanDefinition(getMessageFactoryClass());
101+
}
102+
103+
protected abstract Class<?> getMessageFactoryClass();
104+
60105
/**
61106
* Static parse method taking care of basic message element parsing.
62107
*

Diff for: core/citrus-spring/src/main/java/org/citrusframework/config/xml/ActionContainerParser.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package org.citrusframework.config.xml;
1818

19-
import java.util.List;
20-
2119
import org.citrusframework.config.CitrusNamespaceParserRegistry;
2220
import org.springframework.beans.factory.config.BeanDefinition;
2321
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
@@ -27,6 +25,8 @@
2725
import org.springframework.util.xml.DomUtils;
2826
import org.w3c.dom.Element;
2927

28+
import java.util.List;
29+
3030
/**
3131
* Abstract parser implementation that is aware of several embedded test actions of a container. Bean definitions that use
3232
* this parser component must have an 'actions' property of type {@link List} in order to receive the list of embedded test actions.
@@ -70,7 +70,7 @@ public static void doParse(Element element, ParserContext parserContext, BeanDef
7070
}
7171
}
7272

73-
if (actions.size() > 0) {
73+
if (!actions.isEmpty()) {
7474
builder.addPropertyValue(propertyName, actions);
7575
}
7676
}

Diff for: core/citrus-spring/src/main/java/org/citrusframework/config/xml/ReceiveMessageActionParser.java

+17-51
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,9 @@
1616

1717
package org.citrusframework.config.xml;
1818

19-
import java.util.ArrayList;
20-
import java.util.HashMap;
21-
import java.util.HashSet;
22-
import java.util.LinkedHashMap;
23-
import java.util.List;
24-
import java.util.Map;
25-
import java.util.Set;
26-
import java.util.stream.Stream;
27-
28-
import org.citrusframework.CitrusSettings;
2919
import org.citrusframework.actions.ReceiveMessageAction;
30-
import org.citrusframework.config.util.BeanDefinitionParserUtils;
3120
import org.citrusframework.config.util.ValidateMessageParserUtil;
3221
import org.citrusframework.config.util.VariableExtractorParserUtil;
33-
import org.citrusframework.util.StringUtils;
3422
import org.citrusframework.validation.builder.DefaultMessageBuilder;
3523
import org.citrusframework.validation.context.HeaderValidationContext;
3624
import org.citrusframework.validation.context.SchemaValidationContext;
@@ -51,6 +39,15 @@
5139
import org.springframework.util.xml.DomUtils;
5240
import org.w3c.dom.Element;
5341

42+
import java.util.ArrayList;
43+
import java.util.HashMap;
44+
import java.util.HashSet;
45+
import java.util.LinkedHashMap;
46+
import java.util.List;
47+
import java.util.Map;
48+
import java.util.Set;
49+
import java.util.stream.Stream;
50+
5451
import static java.lang.Boolean.parseBoolean;
5552
import static org.citrusframework.util.StringUtils.hasText;
5653

@@ -63,20 +60,7 @@ public class ReceiveMessageActionParser extends AbstractMessageActionParser {
6360

6461
@Override
6562
public BeanDefinition parse(Element element, ParserContext parserContext) {
66-
String endpointUri = parseEndpoint(element);
67-
68-
BeanDefinitionBuilder builder = parseComponent(element, parserContext);
69-
builder.addPropertyValue("name", element.getLocalName());
70-
71-
if (endpointUri.contains(":") || (endpointUri.contains(CitrusSettings.VARIABLE_PREFIX) && endpointUri.contains(CitrusSettings.VARIABLE_SUFFIX))) {
72-
builder.addPropertyValue("endpointUri", endpointUri);
73-
} else {
74-
builder.addPropertyReference("endpoint", endpointUri);
75-
}
76-
77-
DescriptionElementParser.doParse(element, builder);
78-
79-
BeanDefinitionParserUtils.setPropertyReference(builder, element.getAttribute("actor"), "actor");
63+
BeanDefinitionBuilder builder = getBeanDefinitionBuilder(element, parserContext);
8064

8165
String receiveTimeout = element.getAttribute("timeout");
8266
if (hasText(receiveTimeout)) {
@@ -98,15 +82,6 @@ public BeanDefinition parse(Element element, ParserContext parserContext) {
9882
return builder.getBeanDefinition();
9983
}
10084

101-
protected String parseEndpoint(Element element) {
102-
String endpointUri = element.getAttribute("endpoint");
103-
104-
if (!StringUtils.hasText(endpointUri)) {
105-
throw new BeanCreationException("Endpoint reference must not be empty");
106-
}
107-
return endpointUri;
108-
}
109-
11085
/**
11186
* Parse message validation contexts.
11287
* @param messageElement
@@ -323,7 +298,7 @@ private JsonPathMessageValidationContext getJsonPathMessageValidationContext(Ele
323298
//for now we only handle jsonPath validation
324299
Map<String, Object> validateJsonPathExpressions = new HashMap<>();
325300
List<Element> validateElements = DomUtils.getChildElementsByTagName(messageElement, "validate");
326-
if (validateElements.size() > 0) {
301+
if (!validateElements.isEmpty()) {
327302
for (Element validateElement : validateElements) {
328303
extractJsonPathValidateExpressions(validateElement, validateJsonPathExpressions);
329304
}
@@ -390,16 +365,17 @@ private void parseNamespaceValidationElements(Element messageElement, XmlMessage
390365
Map<String, String> validateNamespaces = new HashMap<>();
391366

392367
List<Element> validateElements = DomUtils.getChildElementsByTagName(messageElement, "validate");
393-
if (validateElements.size() > 0) {
368+
if (!validateElements.isEmpty()) {
394369
for (Element validateElement : validateElements) {
395370
//check for namespace validation elements
396371
List<Element> validateNamespaceElements = DomUtils.getChildElementsByTagName(validateElement, "namespace");
397-
if (validateNamespaceElements.size() > 0) {
372+
if (!validateNamespaceElements.isEmpty()) {
398373
for (Element namespaceElement : validateNamespaceElements) {
399374
validateNamespaces.put(namespaceElement.getAttribute("prefix"), namespaceElement.getAttribute("value"));
400375
}
401376
}
402377
}
378+
403379
context.namespaces(validateNamespaces);
404380
}
405381
}
@@ -416,7 +392,7 @@ private void parseXPathValidationElements(Element messageElement, XpathMessageVa
416392
Map<String, Object> validateXpathExpressions = new HashMap<>();
417393

418394
List<Element> validateElements = DomUtils.getChildElementsByTagName(messageElement, "validate");
419-
if (validateElements.size() > 0) {
395+
if (!validateElements.isEmpty()) {
420396
for (Element validateElement : validateElements) {
421397
extractXPathValidateExpressions(validateElement, validateXpathExpressions);
422398
}
@@ -466,8 +442,7 @@ private void extractXPathValidateExpressions(
466442
* @param validateElement
467443
* @param validateJsonPathExpressions
468444
*/
469-
private void extractJsonPathValidateExpressions(
470-
Element validateElement, Map<String, Object> validateJsonPathExpressions) {
445+
private void extractJsonPathValidateExpressions(Element validateElement, Map<String, Object> validateJsonPathExpressions) {
471446
//check for jsonPath validation - old style with direct attribute
472447
String pathExpression = validateElement.getAttribute("path");
473448
if (JsonPathMessageValidationContext.isJsonPathExpression(pathExpression)) {
@@ -478,16 +453,7 @@ private void extractJsonPathValidateExpressions(
478453
ValidateMessageParserUtil.parseJsonPathElements(validateElement, validateJsonPathExpressions);
479454
}
480455

481-
/**
482-
* Parse component returning generic bean definition.
483-
*
484-
* @param element
485-
* @return
486-
*/
487-
protected BeanDefinitionBuilder parseComponent(Element element, ParserContext parserContext) {
488-
return BeanDefinitionBuilder.genericBeanDefinition(getMessageFactoryClass());
489-
}
490-
456+
@Override
491457
protected Class<? extends AbstractReceiveMessageActionFactoryBean> getMessageFactoryClass() {
492458
return ReceiveMessageActionFactoryBean.class;
493459
}

Diff for: core/citrus-spring/src/main/java/org/citrusframework/config/xml/SchemaParser.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@
1616

1717
package org.citrusframework.config.xml;
1818

19-
import java.util.HashMap;
20-
import java.util.Map;
21-
2219
import org.citrusframework.spi.ResourcePathTypeResolver;
2320
import org.citrusframework.util.FileUtils;
2421
import org.slf4j.Logger;
@@ -28,6 +25,9 @@
2825
import org.springframework.beans.factory.xml.ParserContext;
2926
import org.w3c.dom.Element;
3027

28+
import java.util.HashMap;
29+
import java.util.Map;
30+
3131
/**
3232
* Bean definition parser for schema configuration.
3333
*
@@ -68,7 +68,7 @@ private BeanDefinitionParser lookupSchemaParser(String location) {
6868
}
6969

7070
BeanDefinitionParser parser = TYPE_RESOLVER.resolve(fileExtension);
71-
logger.info(String.format("Found schema bean definition parser %s from resource %s", parser.getClass(), RESOURCE_PATH + "/" + fileExtension));
71+
logger.info("Found schema bean definition parser {} from resource {}", parser.getClass(), RESOURCE_PATH + "/" + fileExtension);
7272
SCHEMA_PARSER.put(fileExtension, parser);
7373
return parser;
7474
}

0 commit comments

Comments
 (0)