Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
* @author Gary Russell
* @author Artem Bilan
* @author Shiliang Li
* @author Arun Sethumadhavan
*
* @since 2.0.2
*/
Expand All @@ -62,6 +63,23 @@ static void verifyNoRestTemplateAttributes(Element element, ParserContext parser
}
}

static void verifyNoRestClientAttributes(Element element, ParserContext parserContext) {
for (String attributeName : SYNC_REST_TEMPLATE_REFERENCE_ATTRIBUTES) {
if (element.hasAttribute(attributeName)) {
parserContext.getReaderContext().error("When providing a 'rest-client' reference, the '"
+ attributeName + "' attribute is not allowed, " +
"it must be set on the provided client instead",
parserContext.extractSource(element));
}
}

if (element.hasAttribute("encoding-mode")) {
parserContext.getReaderContext().error("When providing a 'rest-client' reference, " +
"the 'encoding-mode' must be set on the 'RestClient.Builder.uriBuilderFactory' property.",
parserContext.extractSource(element));
}
}

static void configureUriVariableExpressions(BeanDefinitionBuilder builder, ParserContext parserContext,
Element element) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
* @author Gary Russell
* @author Artem Bilan
* @author Shiliang Li
* @author Arun Sethumadhavan
*
* @since 2.0
*/
Expand Down Expand Up @@ -78,13 +79,26 @@ protected BeanDefinitionBuilder getBuilder(Element element, ParserContext parser
BeanDefinitionBuilder.genericBeanDefinition(HttpRequestExecutingMessageHandler.class);

String restTemplateRef = element.getAttribute("rest-template");
String restClientRef = element.getAttribute("rest-client");

if (StringUtils.hasText(restTemplateRef) && StringUtils.hasText(restClientRef)) {
parserContext.getReaderContext()
.error("Only one of 'rest-template' and 'rest-client' references is allowed.",
parserContext.extractSource(element));
}

if (StringUtils.hasText(restTemplateRef)) {
HttpAdapterParsingUtils.verifyNoRestTemplateAttributes(element, parserContext);
builder.getBeanDefinition()
.getConstructorArgumentValues()
.addIndexedArgumentValue(1, new RuntimeBeanReference(restTemplateRef));
}
else if (StringUtils.hasText(restClientRef)) {
HttpAdapterParsingUtils.verifyNoRestClientAttributes(element, parserContext);
builder.getBeanDefinition()
.getConstructorArgumentValues()
.addIndexedArgumentValue(1, new RuntimeBeanReference(restClientRef));
}
else {
for (String referenceAttributeName : HttpAdapterParsingUtils.SYNC_REST_TEMPLATE_REFERENCE_ATTRIBUTES) {
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, referenceAttributeName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
* @author Gary Russell
* @author Artem Bilan
* @author Shiliang Li
* @author Arun Sethumadhavan
*/
public class HttpOutboundGatewayParser extends AbstractConsumerEndpointParser {

Expand Down Expand Up @@ -91,13 +92,26 @@ protected BeanDefinitionBuilder getBuilder(Element element, ParserContext parser
BeanDefinitionBuilder.genericBeanDefinition(HttpRequestExecutingMessageHandler.class);

String restTemplateRef = element.getAttribute("rest-template");
String restClientRef = element.getAttribute("rest-client");

if (StringUtils.hasText(restTemplateRef) && StringUtils.hasText(restClientRef)) {
parserContext.getReaderContext()
.error("Only one of 'rest-template' and 'rest-client' references is allowed.",
parserContext.extractSource(element));
}

if (StringUtils.hasText(restTemplateRef)) {
HttpAdapterParsingUtils.verifyNoRestTemplateAttributes(element, parserContext);
builder.getBeanDefinition()
.getConstructorArgumentValues()
.addIndexedArgumentValue(1, new RuntimeBeanReference(restTemplateRef));
}
else if (StringUtils.hasText(restClientRef)) {
HttpAdapterParsingUtils.verifyNoRestClientAttributes(element, parserContext);
builder.getBeanDefinition()
.getConstructorArgumentValues()
.addIndexedArgumentValue(1, new RuntimeBeanReference(restClientRef));
}
else {
for (String referenceAttributeName : HttpAdapterParsingUtils.SYNC_REST_TEMPLATE_REFERENCE_ATTRIBUTES) {
IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, referenceAttributeName);
Expand Down
Loading