From 7cbb3b06a0538818948d336c303db3fd1b216462 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 6 Mar 2019 13:50:40 +0100 Subject: [PATCH] Consistent local vs external resolution of https schema references Closes gh-22504 --- .../beans/factory/xml/BeansDtdResolver.java | 5 +- .../factory/xml/DelegatingEntityResolver.java | 8 ++- .../factory/xml/PluggableSchemaResolver.java | 6 +- .../factory/xml/ResourceEntityResolver.java | 22 +++++-- .../factory/xml/XmlBeanFactoryTests.java | 66 +++++++++---------- .../config/ContextNamespaceHandlerTests.java | 20 +++--- .../xml/XmlBeanFactoryTests-resource.xml | 2 +- .../contextNamespaceHandlerTests-simple.xml | 4 +- 8 files changed, 78 insertions(+), 55 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java index dce36a05e4..1a48e2fd92 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java @@ -16,6 +16,7 @@ package org.springframework.beans.factory.xml; +import java.io.FileNotFoundException; import java.io.IOException; import org.apache.commons.logging.Log; @@ -52,7 +53,7 @@ public class BeansDtdResolver implements EntityResolver { @Override @Nullable - public InputSource resolveEntity(String publicId, @Nullable String systemId) throws IOException { + public InputSource resolveEntity(@Nullable String publicId, @Nullable String systemId) throws IOException { if (logger.isTraceEnabled()) { logger.trace("Trying to resolve XML entity with public ID [" + publicId + "] and system ID [" + systemId + "]"); @@ -76,7 +77,7 @@ public class BeansDtdResolver implements EntityResolver { } return source; } - catch (IOException ex) { + catch (FileNotFoundException ex) { if (logger.isDebugEnabled()) { logger.debug("Could not resolve beans DTD [" + systemId + "]: not found in classpath", ex); } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/DelegatingEntityResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/DelegatingEntityResolver.java index 5574d069c4..a99ad2f62a 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/DelegatingEntityResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/DelegatingEntityResolver.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -79,7 +79,9 @@ public class DelegatingEntityResolver implements EntityResolver { @Override @Nullable - public InputSource resolveEntity(String publicId, @Nullable String systemId) throws SAXException, IOException { + public InputSource resolveEntity(@Nullable String publicId, @Nullable String systemId) + throws SAXException, IOException { + if (systemId != null) { if (systemId.endsWith(DTD_SUFFIX)) { return this.dtdResolver.resolveEntity(publicId, systemId); @@ -88,6 +90,8 @@ public class DelegatingEntityResolver implements EntityResolver { return this.schemaResolver.resolveEntity(publicId, systemId); } } + + // Fall back to the parser's default behavior. return null; } diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/PluggableSchemaResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/PluggableSchemaResolver.java index c751fcc2e5..c1bbf770f9 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/PluggableSchemaResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/PluggableSchemaResolver.java @@ -106,7 +106,7 @@ public class PluggableSchemaResolver implements EntityResolver { @Override @Nullable - public InputSource resolveEntity(String publicId, @Nullable String systemId) throws IOException { + public InputSource resolveEntity(@Nullable String publicId, @Nullable String systemId) throws IOException { if (logger.isTraceEnabled()) { logger.trace("Trying to resolve XML entity with public id [" + publicId + "] and system id [" + systemId + "]"); @@ -114,6 +114,10 @@ public class PluggableSchemaResolver implements EntityResolver { if (systemId != null) { String resourceLocation = getSchemaMappings().get(systemId); + if (resourceLocation == null && systemId.startsWith("https:")) { + // Retrieve canonical http schema mapping even for https declaration + resourceLocation = getSchemaMappings().get("http:" + systemId.substring(6)); + } if (resourceLocation != null) { Resource resource = new ClassPathResource(resourceLocation, this.classLoader); try { diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/xml/ResourceEntityResolver.java b/spring-beans/src/main/java/org/springframework/beans/factory/xml/ResourceEntityResolver.java index 53d9e807ca..989576a3fd 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/xml/ResourceEntityResolver.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/xml/ResourceEntityResolver.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,9 +31,9 @@ import org.springframework.core.io.ResourceLoader; import org.springframework.lang.Nullable; /** - * EntityResolver implementation that tries to resolve entity references + * {@code EntityResolver} implementation that tries to resolve entity references * through a {@link org.springframework.core.io.ResourceLoader} (usually, - * relative to the resource base of an ApplicationContext), if applicable. + * relative to the resource base of an {@code ApplicationContext}), if applicable. * Extends {@link DelegatingEntityResolver} to also provide DTD and XSD lookup. * *

Allows to use standard XML entities to include XML snippets into an @@ -72,8 +72,11 @@ public class ResourceEntityResolver extends DelegatingEntityResolver { @Override @Nullable - public InputSource resolveEntity(String publicId, @Nullable String systemId) throws SAXException, IOException { + public InputSource resolveEntity(@Nullable String publicId, @Nullable String systemId) + throws SAXException, IOException { + InputSource source = super.resolveEntity(publicId, systemId); + if (source == null && systemId != null) { String resourcePath = null; try { @@ -105,7 +108,18 @@ public class ResourceEntityResolver extends DelegatingEntityResolver { logger.debug("Found XML entity [" + systemId + "]: " + resource); } } + else if (systemId.endsWith(DTD_SUFFIX) || systemId.endsWith(XSD_SUFFIX)) { + // External dtd/xsd lookup via https even for canonical http declaration + String url = systemId; + if (url.startsWith("http:")) { + url = "https:" + url.substring(5); + } + source = new InputSource(url); + source.setPublicId(publicId); + return source; + } } + return source; } diff --git a/spring-context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests.java b/spring-context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests.java index 9f3948220b..30679e554e 100644 --- a/spring-context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests.java +++ b/spring-context/src/test/java/org/springframework/beans/factory/xml/XmlBeanFactoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -123,16 +123,16 @@ public class XmlBeanFactoryTests { return new ClassPathResource(CLASSNAME + suffix, CLASS); } - /* SPR-2368 */ - @Test - public void testCollectionsReferredToAsRefLocals() throws Exception { + + @Test // SPR-2368 + public void testCollectionsReferredToAsRefLocals() { DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(factory).loadBeanDefinitions(COLLECTIONS_XSD_CONTEXT); factory.preInstantiateSingletons(); } @Test - public void testRefToSeparatePrototypeInstances() throws Exception { + public void testRefToSeparatePrototypeInstances() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE); @@ -151,7 +151,7 @@ public class XmlBeanFactoryTests { } @Test - public void testRefToSingleton() throws Exception { + public void testRefToSingleton() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE); @@ -307,7 +307,7 @@ public class XmlBeanFactoryTests { } @Test - public void testInheritanceFromParentFactoryPrototype() throws Exception { + public void testInheritanceFromParentFactoryPrototype() { DefaultListableBeanFactory parent = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(parent).loadBeanDefinitions(PARENT_CONTEXT); DefaultListableBeanFactory child = new DefaultListableBeanFactory(parent); @@ -323,7 +323,7 @@ public class XmlBeanFactoryTests { } @Test - public void testInheritanceWithDifferentClass() throws Exception { + public void testInheritanceWithDifferentClass() { DefaultListableBeanFactory parent = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(parent).loadBeanDefinitions(PARENT_CONTEXT); DefaultListableBeanFactory child = new DefaultListableBeanFactory(parent); @@ -338,7 +338,7 @@ public class XmlBeanFactoryTests { } @Test - public void testInheritanceWithClass() throws Exception { + public void testInheritanceWithClass() { DefaultListableBeanFactory parent = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(parent).loadBeanDefinitions(PARENT_CONTEXT); DefaultListableBeanFactory child = new DefaultListableBeanFactory(parent); @@ -353,7 +353,7 @@ public class XmlBeanFactoryTests { } @Test - public void testPrototypeInheritanceFromParentFactoryPrototype() throws Exception { + public void testPrototypeInheritanceFromParentFactoryPrototype() { DefaultListableBeanFactory parent = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(parent).loadBeanDefinitions(PARENT_CONTEXT); DefaultListableBeanFactory child = new DefaultListableBeanFactory(parent); @@ -373,7 +373,7 @@ public class XmlBeanFactoryTests { } @Test - public void testPrototypeInheritanceFromParentFactorySingleton() throws Exception { + public void testPrototypeInheritanceFromParentFactorySingleton() { DefaultListableBeanFactory parent = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(parent).loadBeanDefinitions(PARENT_CONTEXT); DefaultListableBeanFactory child = new DefaultListableBeanFactory(parent); @@ -433,7 +433,7 @@ public class XmlBeanFactoryTests { } @Test - public void testDependenciesMaterializeThis() throws Exception { + public void testDependenciesMaterializeThis() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(DEP_MATERIALIZE_CONTEXT); @@ -452,7 +452,7 @@ public class XmlBeanFactoryTests { } @Test - public void testChildOverridesParentBean() throws Exception { + public void testChildOverridesParentBean() { DefaultListableBeanFactory parent = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(parent).loadBeanDefinitions(PARENT_CONTEXT); DefaultListableBeanFactory child = new DefaultListableBeanFactory(parent); @@ -471,7 +471,7 @@ public class XmlBeanFactoryTests { * If a singleton does this the factory will fail to load. */ @Test - public void testBogusParentageFromParentFactory() throws Exception { + public void testBogusParentageFromParentFactory() { DefaultListableBeanFactory parent = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(parent).loadBeanDefinitions(PARENT_CONTEXT); DefaultListableBeanFactory child = new DefaultListableBeanFactory(parent); @@ -493,7 +493,7 @@ public class XmlBeanFactoryTests { * instances even if derived from a prototype */ @Test - public void testSingletonInheritsFromParentFactoryPrototype() throws Exception { + public void testSingletonInheritsFromParentFactoryPrototype() { DefaultListableBeanFactory parent = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(parent).loadBeanDefinitions(PARENT_CONTEXT); DefaultListableBeanFactory child = new DefaultListableBeanFactory(parent); @@ -658,7 +658,7 @@ public class XmlBeanFactoryTests { } @Test - public void testInitMethodIsInvoked() throws Exception { + public void testInitMethodIsInvoked() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(INITIALIZERS_CONTEXT); DoubleInitializer in = (DoubleInitializer) xbf.getBean("init-method1"); @@ -685,7 +685,7 @@ public class XmlBeanFactoryTests { } @Test - public void testNoSuchInitMethod() throws Exception { + public void testNoSuchInitMethod() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(INITIALIZERS_CONTEXT); try { @@ -704,7 +704,7 @@ public class XmlBeanFactoryTests { * Check that InitializingBean method is called first. */ @Test - public void testInitializingBeanAndInitMethod() throws Exception { + public void testInitializingBeanAndInitMethod() { InitAndIB.constructed = false; DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(INITIALIZERS_CONTEXT); @@ -725,7 +725,7 @@ public class XmlBeanFactoryTests { * Check that InitializingBean method is not called twice. */ @Test - public void testInitializingBeanAndSameInitMethod() throws Exception { + public void testInitializingBeanAndSameInitMethod() { InitAndIB.constructed = false; DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(INITIALIZERS_CONTEXT); @@ -743,7 +743,7 @@ public class XmlBeanFactoryTests { } @Test - public void testDefaultLazyInit() throws Exception { + public void testDefaultLazyInit() { InitAndIB.constructed = false; DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(DEFAULT_LAZY_CONTEXT); @@ -759,19 +759,19 @@ public class XmlBeanFactoryTests { } @Test(expected = BeanDefinitionStoreException.class) - public void noSuchXmlFile() throws Exception { + public void noSuchXmlFile() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(MISSING_CONTEXT); } @Test(expected = BeanDefinitionStoreException.class) - public void invalidXmlFile() throws Exception { + public void invalidXmlFile() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(INVALID_CONTEXT); } @Test - public void testAutowire() throws Exception { + public void testAutowire() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(AUTOWIRE_CONTEXT); TestBean spouse = new TestBean("kerry", 0); @@ -780,7 +780,7 @@ public class XmlBeanFactoryTests { } @Test - public void testAutowireWithParent() throws Exception { + public void testAutowireWithParent() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(AUTOWIRE_CONTEXT); DefaultListableBeanFactory lbf = new DefaultListableBeanFactory(); @@ -793,7 +793,7 @@ public class XmlBeanFactoryTests { doTestAutowire(xbf); } - private void doTestAutowire(DefaultListableBeanFactory xbf) throws Exception { + private void doTestAutowire(DefaultListableBeanFactory xbf) { DependenciesBean rod1 = (DependenciesBean) xbf.getBean("rod1"); TestBean kerry = (TestBean) xbf.getBean("spouse"); // should have been autowired @@ -842,7 +842,7 @@ public class XmlBeanFactoryTests { } @Test - public void testAutowireWithDefault() throws Exception { + public void testAutowireWithDefault() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(DEFAULT_AUTOWIRE_CONTEXT); @@ -858,7 +858,7 @@ public class XmlBeanFactoryTests { } @Test - public void testAutowireByConstructor() throws Exception { + public void testAutowireByConstructor() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(CONSTRUCTOR_ARG_CONTEXT); ConstructorDependenciesBean rod1 = (ConstructorDependenciesBean) xbf.getBean("rod1"); @@ -896,7 +896,7 @@ public class XmlBeanFactoryTests { } @Test - public void testAutowireByConstructorWithSimpleValues() throws Exception { + public void testAutowireByConstructorWithSimpleValues() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(CONSTRUCTOR_ARG_CONTEXT); @@ -1014,14 +1014,14 @@ public class XmlBeanFactoryTests { } @Test(expected = BeanCreationException.class) - public void throwsExceptionOnTooManyArguments() throws Exception { + public void throwsExceptionOnTooManyArguments() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(CONSTRUCTOR_ARG_CONTEXT); xbf.getBean("rod7", ConstructorDependenciesBean.class); } @Test(expected = UnsatisfiedDependencyException.class) - public void throwsExceptionOnAmbiguousResolution() throws Exception { + public void throwsExceptionOnAmbiguousResolution() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(CONSTRUCTOR_ARG_CONTEXT); xbf.getBean("rod8", ConstructorDependenciesBean.class); @@ -1372,7 +1372,7 @@ public class XmlBeanFactoryTests { } @Test - public void serializableMethodReplacerAndSuperclass() throws Exception { + public void serializableMethodReplacerAndSuperclass() throws IOException { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(xbf); reader.loadBeanDefinitions(DELEGATION_OVERRIDES_CONTEXT); @@ -1571,7 +1571,7 @@ public class XmlBeanFactoryTests { } @Test - public void testWithDuplicateName() throws Exception { + public void testWithDuplicateName() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); try { new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(TEST_WITH_DUP_NAMES_CONTEXT); @@ -1583,7 +1583,7 @@ public class XmlBeanFactoryTests { } @Test - public void testWithDuplicateNameInAlias() throws Exception { + public void testWithDuplicateNameInAlias() { DefaultListableBeanFactory xbf = new DefaultListableBeanFactory(); try { new XmlBeanDefinitionReader(xbf).loadBeanDefinitions(TEST_WITH_DUP_NAME_IN_ALIAS_CONTEXT); diff --git a/spring-context/src/test/java/org/springframework/context/config/ContextNamespaceHandlerTests.java b/spring-context/src/test/java/org/springframework/context/config/ContextNamespaceHandlerTests.java index bf106be77f..abfb143fee 100644 --- a/spring-context/src/test/java/org/springframework/context/config/ContextNamespaceHandlerTests.java +++ b/spring-context/src/test/java/org/springframework/context/config/ContextNamespaceHandlerTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2019 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,7 +48,7 @@ public class ContextNamespaceHandlerTests { @Test - public void propertyPlaceholder() throws Exception { + public void propertyPlaceholder() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "contextNamespaceHandlerTests-replace.xml", getClass()); assertEquals("bar", applicationContext.getBean("string")); @@ -56,7 +56,7 @@ public class ContextNamespaceHandlerTests { } @Test - public void propertyPlaceholderSystemProperties() throws Exception { + public void propertyPlaceholderSystemProperties() { String value = System.setProperty("foo", "spam"); try { ApplicationContext applicationContext = new ClassPathXmlApplicationContext( @@ -72,7 +72,7 @@ public class ContextNamespaceHandlerTests { } @Test - public void propertyPlaceholderEnvironmentProperties() throws Exception { + public void propertyPlaceholderEnvironmentProperties() { MockEnvironment env = new MockEnvironment().withProperty("foo", "spam"); GenericXmlApplicationContext applicationContext = new GenericXmlApplicationContext(); applicationContext.setEnvironment(env); @@ -83,7 +83,7 @@ public class ContextNamespaceHandlerTests { } @Test - public void propertyPlaceholderLocation() throws Exception { + public void propertyPlaceholderLocation() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "contextNamespaceHandlerTests-location.xml", getClass()); assertEquals("bar", applicationContext.getBean("foo")); @@ -92,7 +92,7 @@ public class ContextNamespaceHandlerTests { } @Test - public void propertyPlaceholderLocationWithSystemPropertyForOneLocation() throws Exception { + public void propertyPlaceholderLocationWithSystemPropertyForOneLocation() { System.setProperty("properties", "classpath*:/org/springframework/context/config/test-*.properties"); try { @@ -108,7 +108,7 @@ public class ContextNamespaceHandlerTests { } @Test - public void propertyPlaceholderLocationWithSystemPropertyForMultipleLocations() throws Exception { + public void propertyPlaceholderLocationWithSystemPropertyForMultipleLocations() { System.setProperty("properties", "classpath*:/org/springframework/context/config/test-*.properties," + "classpath*:/org/springframework/context/config/empty-*.properties," + @@ -126,7 +126,7 @@ public class ContextNamespaceHandlerTests { } @Test - public void propertyPlaceholderLocationWithSystemPropertyMissing() throws Exception { + public void propertyPlaceholderLocationWithSystemPropertyMissing() { try { ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "contextNamespaceHandlerTests-location-placeholder.xml", getClass()); @@ -140,7 +140,7 @@ public class ContextNamespaceHandlerTests { } @Test - public void propertyPlaceholderIgnored() throws Exception { + public void propertyPlaceholderIgnored() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "contextNamespaceHandlerTests-replace-ignore.xml", getClass()); assertEquals("${bar}", applicationContext.getBean("string")); @@ -148,7 +148,7 @@ public class ContextNamespaceHandlerTests { } @Test - public void propertyOverride() throws Exception { + public void propertyOverride() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "contextNamespaceHandlerTests-override.xml", getClass()); Date date = (Date) applicationContext.getBean("date"); diff --git a/spring-context/src/test/resources/org/springframework/beans/factory/xml/XmlBeanFactoryTests-resource.xml b/spring-context/src/test/resources/org/springframework/beans/factory/xml/XmlBeanFactoryTests-resource.xml index a48a32673f..d03cdec6de 100644 --- a/spring-context/src/test/resources/org/springframework/beans/factory/xml/XmlBeanFactoryTests-resource.xml +++ b/spring-context/src/test/resources/org/springframework/beans/factory/xml/XmlBeanFactoryTests-resource.xml @@ -1,5 +1,5 @@ - + diff --git a/spring-context/src/test/resources/org/springframework/context/config/contextNamespaceHandlerTests-simple.xml b/spring-context/src/test/resources/org/springframework/context/config/contextNamespaceHandlerTests-simple.xml index 42bd4335a2..b8f2aa8893 100644 --- a/spring-context/src/test/resources/org/springframework/context/config/contextNamespaceHandlerTests-simple.xml +++ b/spring-context/src/test/resources/org/springframework/context/config/contextNamespaceHandlerTests-simple.xml @@ -2,8 +2,8 @@ + xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans-2.5.xsd + http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context-3.1.xsd"> -- GitLab