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:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user