Start version 5.3

* Move `What's New` into `changes-5.1-5.2.adoc`
* Remove version from the `XSD` files:
 1. Align with SF
 2. The version for XSD doesn't matter for the current jar version,
 since only the version is available in classpath is from the current
 jar version
 3. Modify `spring.schemas` to map all the possible versions for XSD
 into the current one in a jar.
 This way target applications can upgrade without changing the version
 for XSD location and we don't need to require `versionless` variant
 any more
 4. The jar in classpath can handle only its own XSD, so independently
 of version or no-version variants we still may fail because the current
 jar may not support end-user code any more - need some fix over there
 anyway.
* Remove `checkTestConfigs` Gradle task since we don't worry about XSD
version any more
* Modify `schemaZip` Gradle task to populate XSDs into a distribution
still with a version to avoid overriding on-line XSDs for version `1.0.x`.
We may consider not do that since SF doesn't and just bite a bullet
for always overriding those on-line XSDs to the actual one from the latest
release.
This commit is contained in:
Artem Bilan
2019-11-27 17:51:35 -05:00
parent 1a9fb83199
commit 9dc3519f20
71 changed files with 4106 additions and 3358 deletions

View File

@@ -18,20 +18,12 @@ package org.springframework.integration.config.xml;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanDefinitionHolder;
import org.springframework.beans.factory.xml.BeanDefinitionDecorator;
import org.springframework.beans.factory.xml.BeanDefinitionParser;
import org.springframework.beans.factory.xml.NamespaceHandler;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.integration.config.IntegrationRegistrar;
import org.springframework.util.StringUtils;
/**
* Base class for NamespaceHandlers that registers a BeanFactoryPostProcessor
@@ -42,89 +34,17 @@ import org.springframework.util.StringUtils;
* @author Gary Russell
* @author Artem Bilan
*/
public abstract class AbstractIntegrationNamespaceHandler implements NamespaceHandler {
private static final String VERSION = "5.2";
protected final Log logger = LogFactory.getLog(this.getClass()); // NOSONAR final
private final NamespaceHandlerDelegate delegate = new NamespaceHandlerDelegate();
public abstract class AbstractIntegrationNamespaceHandler extends NamespaceHandlerSupport {
private final AtomicBoolean initialized = new AtomicBoolean();
@Override
public final BeanDefinition parse(Element element, ParserContext parserContext) {
if (!this.initialized.getAndSet(true)) {
verifySchemaVersion(element, parserContext);
IntegrationRegistrar integrationRegistrar = new IntegrationRegistrar();
integrationRegistrar.registerBeanDefinitions(null, parserContext.getRegistry());
}
return this.delegate.parse(element, parserContext);
}
@Override
public final BeanDefinitionHolder decorate(Node source, BeanDefinitionHolder definition,
ParserContext parserContext) {
return this.delegate.decorate(source, definition, parserContext);
}
protected final void registerBeanDefinitionDecorator(String elementName, BeanDefinitionDecorator decorator) {
this.delegate.doRegisterBeanDefinitionDecorator(elementName, decorator);
}
protected final void registerBeanDefinitionDecoratorForAttribute(String attributeName,
BeanDefinitionDecorator decorator) {
this.delegate.doRegisterBeanDefinitionDecoratorForAttribute(attributeName, decorator);
}
protected final void registerBeanDefinitionParser(String elementName, BeanDefinitionParser parser) {
this.delegate.doRegisterBeanDefinitionParser(elementName, parser);
}
private void verifySchemaVersion(Element element, ParserContext parserContext) {
if (!(matchesVersion(element) && matchesVersion(element.getOwnerDocument().getDocumentElement()))) {
parserContext.getReaderContext().error(
"You cannot use prior versions of Spring Integration schemas with Spring Integration " + VERSION +
". Please upgrade your schema declarations " +
"or use versionless aliases (e.g. spring-integration.xsd).", element);
}
}
private static boolean matchesVersion(Element element) {
String schemaLocation = element.getAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "schemaLocation");
return !StringUtils.hasText(schemaLocation) // no namespace on this element
|| schemaLocation.matches("(?m).*spring-integration-[a-z-]*" + VERSION + ".xsd.*") // correct version
|| schemaLocation.matches("(?m).*spring-integration[a-z-]*.xsd.*") // version-less schema
|| !schemaLocation.matches("(?m).*spring-integration.*"); // no spring-integration schemas
}
private class NamespaceHandlerDelegate extends NamespaceHandlerSupport {
NamespaceHandlerDelegate() {
super();
}
@Override
public void init() {
AbstractIntegrationNamespaceHandler.this.init();
}
private void doRegisterBeanDefinitionDecorator(String elementName, BeanDefinitionDecorator decorator) {
super.registerBeanDefinitionDecorator(elementName, decorator);
}
private void doRegisterBeanDefinitionDecoratorForAttribute(String attributeName,
BeanDefinitionDecorator decorator) {
super.registerBeanDefinitionDecoratorForAttribute(attributeName, decorator);
}
private void doRegisterBeanDefinitionParser(String elementName, BeanDefinitionParser parser) {
super.registerBeanDefinitionParser(elementName, parser);
}
return super.parse(element, parserContext);
}
}

View File

@@ -1,4 +1,24 @@
http\://www.springframework.org/schema/integration/spring-integration-5.2.xsd=org/springframework/integration/config/spring-integration-5.2.xsd
http\://www.springframework.org/schema/integration/spring-integration.xsd=org/springframework/integration/config/spring-integration-5.2.xsd
https\://www.springframework.org/schema/integration/spring-integration-5.2.xsd=org/springframework/integration/config/spring-integration-5.2.xsd
https\://www.springframework.org/schema/integration/spring-integration.xsd=org/springframework/integration/config/spring-integration-5.2.xsd
http\://www.springframework.org/schema/integration/spring-integration-2.0.xsd=org/springframework/integration/config/spring-integration.xsd
http\://www.springframework.org/schema/integration/spring-integration-2.1.xsd=org/springframework/integration/config/spring-integration.xsd
http\://www.springframework.org/schema/integration/spring-integration-2.2.xsd=org/springframework/integration/config/spring-integration.xsd
http\://www.springframework.org/schema/integration/spring-integration-3.0.xsd=org/springframework/integration/config/spring-integration.xsd
http\://www.springframework.org/schema/integration/spring-integration-4.0.xsd=org/springframework/integration/config/spring-integration.xsd
http\://www.springframework.org/schema/integration/spring-integration-4.1.xsd=org/springframework/integration/config/spring-integration.xsd
http\://www.springframework.org/schema/integration/spring-integration-4.2.xsd=org/springframework/integration/config/spring-integration.xsd
http\://www.springframework.org/schema/integration/spring-integration-4.3.xsd=org/springframework/integration/config/spring-integration.xsd
http\://www.springframework.org/schema/integration/spring-integration-5.0.xsd=org/springframework/integration/config/spring-integration.xsd
http\://www.springframework.org/schema/integration/spring-integration-5.1.xsd=org/springframework/integration/config/spring-integration.xsd
http\://www.springframework.org/schema/integration/spring-integration-5.2.xsd=org/springframework/integration/config/spring-integration.xsd
http\://www.springframework.org/schema/integration/spring-integration.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration-2.0.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration-2.1.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration-2.2.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration-3.0.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration-4.0.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration-4.1.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration-4.2.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration-4.3.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration-5.0.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration-5.1.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration-5.2.xsd=org/springframework/integration/config/spring-integration.xsd
https\://www.springframework.org/schema/integration/spring-integration.xsd=org/springframework/integration/config/spring-integration.xsd