diff --git a/src/Spring/Spring.Core/Objects/Factory/Xml/NamespaceParserRegistry.cs b/src/Spring/Spring.Core/Objects/Factory/Xml/NamespaceParserRegistry.cs
index 53398c98..dea7e64f 100644
--- a/src/Spring/Spring.Core/Objects/Factory/Xml/NamespaceParserRegistry.cs
+++ b/src/Spring/Spring.Core/Objects/Factory/Xml/NamespaceParserRegistry.cs
@@ -99,6 +99,7 @@ namespace Spring.Objects.Factory.Xml
wellknownNamespaceParserTypeNames["http://www.springframework.net/tx"] = "Spring.Transaction.Config.TxNamespaceParser, Spring.Data";
wellknownNamespaceParserTypeNames["http://www.springframework.net/aop"] = "Spring.Aop.Config.AopNamespaceParser, Spring.Aop";
wellknownNamespaceParserTypeNames["http://www.springframework.net/db"] = "Spring.Data.Config.DatabaseNamespaceParser, Spring.Data";
+ wellknownNamespaceParserTypeNames["http://www.springframework.net/database"] = "Spring.Data.Config.DatabaseNamespaceParser, Spring.Data";
wellknownNamespaceParserTypeNames["http://www.springframework.net/remoting"] = "Spring.Remoting.Config.RemotingNamespaceParser, Spring.Services";
wellknownNamespaceParserTypeNames["http://www.springframework.net/wcf"] = "Spring.ServiceModel.Config.WcfNamespaceParser, Spring.Services";
wellknownNamespaceParserTypeNames["http://www.springframework.net/nms"] = "Spring.Messaging.Nms.Config.NmsNamespaceParser, Spring.Messaging.Nms";
@@ -120,7 +121,7 @@ namespace Spring.Objects.Factory.Xml
schemas = new XmlSchemaCollection();
#else
schemas = new XmlSchemaSet();
- schemas.XmlResolver = new XmlResourceUrlResolver();
+ schemas.XmlResolver = new XmlResourceUrlResolver();
#endif
RegisterParser(new ObjectsNamespaceParser());
@@ -185,6 +186,12 @@ namespace Spring.Objects.Factory.Xml
if (ok)
{
parser = (INamespaceParser)parsers[namespaceURI];
+
+ //work-around for SPRNET-1277 where we're inconsistent re: exposing /db or /database as the final namespace element
+ if (parser == null && namespaceURI == "http://www.springframework.net/db")
+ {
+ parser = (INamespaceParser)parsers["http://www.springframework.net/database"];
+ }
}
}
return parser;
@@ -404,6 +411,7 @@ namespace Spring.Objects.Factory.Xml
#else
XmlTextReader schemaDocument = new XmlTextReader(schema.Uri.AbsoluteUri, schema.InputStream);
schemas.Add(namespaceUri, schemaDocument);
+
#endif
}
catch (Exception e)
diff --git a/test/Spring/Spring.Core.Tests/Objects/Factory/Xml/XmlObjectDefinitionReaderTests.cs b/test/Spring/Spring.Core.Tests/Objects/Factory/Xml/XmlObjectDefinitionReaderTests.cs
index 55778b66..98851191 100644
--- a/test/Spring/Spring.Core.Tests/Objects/Factory/Xml/XmlObjectDefinitionReaderTests.cs
+++ b/test/Spring/Spring.Core.Tests/Objects/Factory/Xml/XmlObjectDefinitionReaderTests.cs
@@ -68,14 +68,53 @@ namespace Spring.Objects.Factory.Xml
new DefaultListableObjectFactory());
reader.LoadObjectDefinitions(new ReadOnlyXmlTestResource("/dev/null"));
}
+#if NET_2_0
[Test]
+ public void AutoRegistersAllWellknownNamespaceParsers_Common()
+ {
+ string[] namespaces = {
+ "http://www.springframework.net/tx",
+ "http://www.springframework.net/aop",
+ "http://www.springframework.net/db",
+ "http://www.springframework.net/database",
+ "http://www.springframework.net/remoting",
+ "http://www.springframework.net/nms",
+ "http://www.springframework.net/validation",
+ "http://www.springframework.net/nvelocity" };
+
+ foreach (string ns in namespaces)
+ {
+ Assert.IsNotNull(NamespaceParserRegistry.GetParser(ns),
+ string.Format("Parser for Namespace {0} could not be auto-registered.", ns));
+ }
+ }
+
+#endif
+
+#if NET_3_0
+
+ [Test]
+ public void AutoRegistersAllWellknownNamespaceParsers_3_0()
+ {
+ string[] namespaces = { "http://www.springframework.net/wcf" };
+
+ foreach (string ns in namespaces)
+ {
+ Assert.IsNotNull(NamespaceParserRegistry.GetParser(ns),
+ string.Format("Parser for Namespace {0} could not be auto-registered.", ns));
+ }
+ }
+#endif
+
+ [Test]
+ [Ignore] //this test cannot co-exist with AutoRegistersAllWellknownNamespaceParsers b/c that test will have already loaded the Spring.Data ass'y
public void AutoRegistersWellknownNamespaceParser()
{
try
{
Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies();
- foreach(Assembly assembly in loadedAssemblies)
+ foreach (Assembly assembly in loadedAssemblies)
{
if (assembly.GetName(true).Name.StartsWith("Spring.Data"))
{
@@ -89,17 +128,17 @@ namespace Spring.Objects.Factory.Xml
XmlObjectDefinitionReader reader = new XmlObjectDefinitionReader(of);
reader.LoadObjectDefinitions(new StringResource(
@"
-
-
-
-"));
+
+
+
+ "));
object apc = of.GetObject(AopNamespaceUtils.AUTO_PROXY_CREATOR_OBJECT_NAME);
Assert.NotNull(apc);
}
finally
{
- NamespaceParserRegistry.Reset();
+ NamespaceParserRegistry.Reset();
}
}
@@ -135,7 +174,7 @@ namespace Spring.Objects.Factory.Xml
"));
- Assert.AreEqual(" \n\r\t", ((TestObject) of.GetObject("test")).Name);
+ Assert.AreEqual(" \n\r\t", ((TestObject)of.GetObject("test")).Name);
}
[Test]
@@ -157,9 +196,9 @@ namespace Spring.Objects.Factory.Xml
"));
- Assert.AreEqual(string.Empty, ((TestObject) of.GetObject("test2")).Name);
- Assert.AreEqual(string.Empty, ((TestObject) of.GetObject("test3")).Name);
- Assert.AreEqual(string.Empty, ((TestObject) of.GetObject("test4")).Name);
+ Assert.AreEqual(string.Empty, ((TestObject)of.GetObject("test2")).Name);
+ Assert.AreEqual(string.Empty, ((TestObject)of.GetObject("test3")).Name);
+ Assert.AreEqual(string.Empty, ((TestObject)of.GetObject("test4")).Name);
}
@@ -176,13 +215,13 @@ namespace Spring.Objects.Factory.Xml
"));
- Assert.AreEqual(" \n\r\t", ((TestObject) of.GetObject("test4")).Name);
+ Assert.AreEqual(" \n\r\t", ((TestObject)of.GetObject("test4")).Name);
}
[Test]
public void ThrowsObjectDefinitionStoreExceptionOnValidationError()
{
- try
+ try
{
DefaultListableObjectFactory of = new DefaultListableObjectFactory();
XmlObjectDefinitionReader reader = new XmlObjectDefinitionReader(of);
@@ -191,12 +230,12 @@ namespace Spring.Objects.Factory.Xml
- "));
+ "));
Assert.Fail();
}
- catch(ObjectDefinitionStoreException ex)
+ catch (ObjectDefinitionStoreException ex)
{
- Assert.IsTrue( ex.Message.IndexOf("Line 3 in XML document from violates the schema.") > -1);
+ Assert.IsTrue(ex.Message.IndexOf("Line 3 in XML document from violates the schema.") > -1);
}
}
@@ -215,9 +254,9 @@ namespace Spring.Objects.Factory.Xml
"));
Assert.Fail();
}
- catch(ObjectDefinitionStoreException ex)
+ catch (ObjectDefinitionStoreException ex)
{
- Assert.IsTrue( ex.Message.IndexOf("Line 4 in XML document from is not well formed.") > -1);
+ Assert.IsTrue(ex.Message.IndexOf("Line 4 in XML document from is not well formed.") > -1);
}
}
@@ -225,8 +264,9 @@ namespace Spring.Objects.Factory.Xml
private class TestXmlObjectDefinitionReader : XmlObjectDefinitionReader
{
- public TestXmlObjectDefinitionReader(IObjectDefinitionRegistry registry) : base(registry)
- {}
+ public TestXmlObjectDefinitionReader(IObjectDefinitionRegistry registry)
+ : base(registry)
+ { }
private class ThrowingObjectDefinitionDocumentReader : IObjectDefinitionDocumentReader
{
@@ -256,7 +296,7 @@ namespace Spring.Objects.Factory.Xml
-"));
+"));
}
[Test]
@@ -278,7 +318,7 @@ namespace Spring.Objects.Factory.Xml
"));
- TestObject test2 = (TestObject) of.GetObject("test2");
+ TestObject test2 = (TestObject)of.GetObject("test2");
Assert.AreEqual(typeof(TestObject), test2.GetType());
Assert.IsNotNull(test2.Sibling);
}
@@ -305,12 +345,12 @@ namespace Spring.Objects.Factory.Xml
/>
"));
- AbstractObjectDefinition od1 = (AbstractObjectDefinition) of.GetObjectDefinition("test1");
+ AbstractObjectDefinition od1 = (AbstractObjectDefinition)of.GetObjectDefinition("test1");
Assert.IsFalse(od1.IsSingleton);
Assert.IsTrue(od1.IsAbstract);
Assert.IsFalse(od1.IsLazyInit);
- AbstractObjectDefinition od2 = (AbstractObjectDefinition) of.GetObjectDefinition("test2");
+ AbstractObjectDefinition od2 = (AbstractObjectDefinition)of.GetObjectDefinition("test2");
Assert.IsTrue(od2.IsSingleton);
Assert.IsFalse(od2.IsAbstract);
Assert.IsTrue(od2.IsLazyInit);
diff --git a/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2003.csproj b/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2003.csproj
index e7083e5d..f3028cf7 100644
--- a/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2003.csproj
+++ b/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2003.csproj
@@ -111,6 +111,16 @@
Name = "Spring.Core.2003"
Project = "{710961A3-0DF4-49E4-A26E-F5B9C044AC84}"
Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}"
+ />
+
+
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}
Spring.Data.2008
+
+ {AEB1578C-9018-4D49-B440-789F38DD2F29}
+ Spring.Messaging.Nms.2008
+
+
+ {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Spring.Services.2008
+
+
+ {BF3AB954-8375-407C-9E98-4C51D8072784}
+ Spring.Template.Velocity.2008
+
diff --git a/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2010.csproj b/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2010.csproj
index 187ab6b4..1f0aea1f 100644
--- a/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2010.csproj
+++ b/test/Spring/Spring.Core.Tests/Spring.Core.Tests.2010.csproj
@@ -37,7 +37,7 @@
false
- TRACE;DEBUG;NET_2_0;NET_4_0;DEBUG_DYNAMIC
+ TRACE;DEBUG;NET_2_0;NET_3_0;NET_4_0;DEBUG_DYNAMIC
true
@@ -926,6 +926,18 @@
{AE00E5AB-C39A-436F-86D2-33BFE33E2E40}
Spring.Data.2010
+
+ {AEB1578C-9018-4D49-B440-789F38DD2F29}
+ Spring.Messaging.Nms.2010
+
+
+ {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Spring.Services.2010
+
+
+ {BF3AB954-8375-407C-9E98-4C51D8072784}
+ Spring.Template.Velocity.2010
+