SecurityNamespaceHandler: update schema version to 5.5
Closes gh-8974
This commit is contained in:
parent
816e847af2
commit
944463e19a
|
@ -93,7 +93,7 @@ public final class SecurityNamespaceHandler implements NamespaceHandler {
|
||||||
if (!namespaceMatchesVersion(element)) {
|
if (!namespaceMatchesVersion(element)) {
|
||||||
pc.getReaderContext().fatal("You cannot use a spring-security-2.0.xsd or spring-security-3.0.xsd or "
|
pc.getReaderContext().fatal("You cannot use a spring-security-2.0.xsd or spring-security-3.0.xsd or "
|
||||||
+ "spring-security-3.1.xsd schema or spring-security-3.2.xsd schema or spring-security-4.0.xsd schema "
|
+ "spring-security-3.1.xsd schema or spring-security-3.2.xsd schema or spring-security-4.0.xsd schema "
|
||||||
+ "with Spring Security 5.4. Please update your schema declarations to the 5.4 schema.", element);
|
+ "with Spring Security 5.5. Please update your schema declarations to the 5.5 schema.", element);
|
||||||
}
|
}
|
||||||
String name = pc.getDelegate().getLocalName(element);
|
String name = pc.getDelegate().getLocalName(element);
|
||||||
BeanDefinitionParser parser = this.parsers.get(name);
|
BeanDefinitionParser parser = this.parsers.get(name);
|
||||||
|
@ -213,7 +213,7 @@ public final class SecurityNamespaceHandler implements NamespaceHandler {
|
||||||
|
|
||||||
private boolean matchesVersionInternal(Element element) {
|
private boolean matchesVersionInternal(Element element) {
|
||||||
String schemaLocation = element.getAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "schemaLocation");
|
String schemaLocation = element.getAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "schemaLocation");
|
||||||
return schemaLocation.matches("(?m).*spring-security-5\\.4.*.xsd.*")
|
return schemaLocation.matches("(?m).*spring-security-5\\.5.*.xsd.*")
|
||||||
|| schemaLocation.matches("(?m).*spring-security.xsd.*")
|
|| schemaLocation.matches("(?m).*spring-security.xsd.*")
|
||||||
|| !schemaLocation.matches("(?m).*spring-security.*");
|
|| !schemaLocation.matches("(?m).*spring-security.*");
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,18 +16,42 @@
|
||||||
|
|
||||||
package org.springframework.security.config.util;
|
package org.springframework.security.config.util;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.context.support.AbstractXmlApplicationContext;
|
import org.springframework.context.support.AbstractXmlApplicationContext;
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
|
import org.springframework.security.core.SpringSecurityCoreVersion;
|
||||||
import org.springframework.security.util.InMemoryResource;
|
import org.springframework.security.util.InMemoryResource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Luke Taylor
|
* @author Luke Taylor
|
||||||
* @author Eddú Meléndez
|
* @author Eddú Meléndez
|
||||||
|
* @author Emil Sierżęga
|
||||||
*/
|
*/
|
||||||
public class InMemoryXmlApplicationContext extends AbstractXmlApplicationContext {
|
public class InMemoryXmlApplicationContext extends AbstractXmlApplicationContext {
|
||||||
|
|
||||||
|
private static String getCurrentXSDVersionFromSpringSchemas() {
|
||||||
|
Properties properties = new Properties();
|
||||||
|
try (InputStream is = SpringSecurityCoreVersion.class.getClassLoader()
|
||||||
|
.getResourceAsStream("META-INF/spring.schemas")) {
|
||||||
|
properties.load(is);
|
||||||
|
}
|
||||||
|
catch (IOException ex) {
|
||||||
|
throw new RuntimeException("Could not read 'META-INF/spring.schemas'", ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
String inPackageLocation = properties
|
||||||
|
.getProperty("https://www.springframework.org/schema/security/spring-security.xsd");
|
||||||
|
String[] parts = inPackageLocation.split("-");
|
||||||
|
String currentXSD = parts[parts.length - 1];
|
||||||
|
String currentVersion = currentXSD.replace(".xsd", "");
|
||||||
|
return currentVersion;
|
||||||
|
}
|
||||||
|
|
||||||
static final String BEANS_OPENING = "<b:beans xmlns='http://www.springframework.org/schema/security'\n"
|
static final String BEANS_OPENING = "<b:beans xmlns='http://www.springframework.org/schema/security'\n"
|
||||||
+ " xmlns:context='http://www.springframework.org/schema/context'\n"
|
+ " xmlns:context='http://www.springframework.org/schema/context'\n"
|
||||||
+ " xmlns:b='http://www.springframework.org/schema/beans'\n"
|
+ " xmlns:b='http://www.springframework.org/schema/beans'\n"
|
||||||
|
@ -42,7 +66,7 @@ public class InMemoryXmlApplicationContext extends AbstractXmlApplicationContext
|
||||||
+ "http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-2.5.xsd\n"
|
+ "http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-2.5.xsd\n"
|
||||||
+ "http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security-";
|
+ "http://www.springframework.org/schema/security https://www.springframework.org/schema/security/spring-security-";
|
||||||
static final String BEANS_CLOSE = "</b:beans>\n";
|
static final String BEANS_CLOSE = "</b:beans>\n";
|
||||||
static final String SPRING_SECURITY_VERSION = "5.4";
|
static final String SPRING_SECURITY_VERSION = getCurrentXSDVersionFromSpringSchemas();
|
||||||
|
|
||||||
Resource inMemoryXml;
|
Resource inMemoryXml;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue