[mapguide-commits] r6036 - in trunk/Tools/Maestro: MaestroAPITests
OSGeo.MapGuide.ExtendedObjectModels
OSGeo.MapGuide.ExtendedObjectModels/Properties
OSGeo.MapGuide.MaestroAPI
OSGeo.MapGuide.MaestroAPI/Resource/Conversion
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Thu Aug 4 12:00:10 EDT 2011
Author: jng
Date: 2011-08-04 09:00:10 -0700 (Thu, 04 Aug 2011)
New Revision: 6036
Removed:
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ResourceConverter.cs
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ResourceUpgrader.cs
Modified:
trunk/Tools/Maestro/MaestroAPITests/MaestroAPITests.csproj
trunk/Tools/Maestro/MaestroAPITests/ResourceTests.cs
trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs
trunk/Tools/Maestro/OSGeo.MapGuide.ExtendedObjectModels/OSGeo.MapGuide.ExtendedObjectModels.csproj
trunk/Tools/Maestro/OSGeo.MapGuide.ExtendedObjectModels/Properties/AssemblyInfo.cs
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/IResourceConverter.cs
Log:
#1769: Add API and unit tests for resource upgrades.
Modified: trunk/Tools/Maestro/MaestroAPITests/MaestroAPITests.csproj
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/MaestroAPITests.csproj 2011-08-04 14:13:13 UTC (rev 6035)
+++ trunk/Tools/Maestro/MaestroAPITests/MaestroAPITests.csproj 2011-08-04 16:00:10 UTC (rev 6036)
@@ -288,34 +288,10 @@
</None>
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="..\ExtendedModels\LayerDefinition-1.1.0\OSGeo.MapGuide.ObjectModels.LayerDefinition-1.1.0.csproj">
- <Project>{B5EA049C-6AB7-4686-A2F4-4BA2EAC0E585}</Project>
- <Name>OSGeo.MapGuide.ObjectModels.LayerDefinition-1.1.0</Name>
+ <ProjectReference Include="..\OSGeo.MapGuide.ExtendedObjectModels\OSGeo.MapGuide.ExtendedObjectModels.csproj">
+ <Project>{B3A2B816-9F41-4857-A111-09D2DF2550D6}</Project>
+ <Name>OSGeo.MapGuide.ExtendedObjectModels</Name>
</ProjectReference>
- <ProjectReference Include="..\ExtendedModels\LayerDefinition-1.2.0\OSGeo.MapGuide.ObjectModels.LayerDefinition-1.2.0.csproj">
- <Project>{EDDB0F74-6FE7-4969-80B0-817A629722CD}</Project>
- <Name>OSGeo.MapGuide.ObjectModels.LayerDefinition-1.2.0</Name>
- </ProjectReference>
- <ProjectReference Include="..\ExtendedModels\LayerDefinition-1.3.0\OSGeo.MapGuide.ObjectModels.LayerDefinition-1.3.0.csproj">
- <Project>{AC5068F6-CFBE-4BCD-B68B-062725E424D4}</Project>
- <Name>OSGeo.MapGuide.ObjectModels.LayerDefinition-1.3.0</Name>
- </ProjectReference>
- <ProjectReference Include="..\ExtendedModels\LoadProcedure-1.1.0\OSGeo.MapGuide.ObjectModels.LoadProcedure-1.1.0.csproj">
- <Project>{B2A1F69E-52AA-42A2-8DED-89ADB9B14A38}</Project>
- <Name>OSGeo.MapGuide.ObjectModels.LoadProcedure-1.1.0</Name>
- </ProjectReference>
- <ProjectReference Include="..\ExtendedModels\LoadProcedure-2.2.0\OSGeo.MapGuide.ObjectModels.LoadProcedure-2.2.0.csproj">
- <Project>{D525B343-66D6-4D6B-9A55-78A173D94A51}</Project>
- <Name>OSGeo.MapGuide.ObjectModels.LoadProcedure-2.2.0</Name>
- </ProjectReference>
- <ProjectReference Include="..\ExtendedModels\SymbolDefinition-1.1.0\OSGeo.MapGuide.ObjectModels.SymbolDefinition-1.1.0.csproj">
- <Project>{BF6E996E-27AF-44CD-B3CF-A40874E15B2E}</Project>
- <Name>OSGeo.MapGuide.ObjectModels.SymbolDefinition-1.1.0</Name>
- </ProjectReference>
- <ProjectReference Include="..\ExtendedModels\WebLayout-1.1.0\OSGeo.MapGuide.ObjectModels.WebLayout-1.1.0.csproj">
- <Project>{0A93ACA8-5B21-44E6-B0B7-5D1E72D3A6A2}</Project>
- <Name>OSGeo.MapGuide.ObjectModels.WebLayout-1.1.0</Name>
- </ProjectReference>
<ProjectReference Include="..\OSGeo.MapGuide.MaestroAPI.Http\OSGeo.MapGuide.MaestroAPI.Http.csproj">
<Project>{6EF1E775-444B-4E5F-87FB-D687C43A68D7}</Project>
<Name>OSGeo.MapGuide.MaestroAPI.Http</Name>
Modified: trunk/Tools/Maestro/MaestroAPITests/ResourceTests.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/ResourceTests.cs 2011-08-04 14:13:13 UTC (rev 6035)
+++ trunk/Tools/Maestro/MaestroAPITests/ResourceTests.cs 2011-08-04 16:00:10 UTC (rev 6036)
@@ -444,189 +444,6 @@
}
[Test]
- public void TestNoConversionOnIdenticalVersion()
- {
- //Verify origial reference is returned if we're converting a resource to the same version
- _mocks = new Mockery();
- var conn = _mocks.NewMock<IServerConnection>();
- var caps = _mocks.NewMock<IConnectionCapabilities>();
- Stub.On(conn).GetProperty("Capabilities").Will(Return.Value(caps));
- foreach (var rt in Enum.GetValues(typeof(ResourceTypes)))
- {
- Stub.On(caps).Method("GetMaxSupportedResourceVersion").With(rt).Will(Return.Value(new Version(1, 0, 0)));
- }
-
- var conv = new ResourceConverter(new List<IResourceConverter>());
- var targetVer = new Version(1, 0, 0);
-
- var app = ObjectFactory.DeserializeEmbeddedFlexLayout();
- var app2 = conv.Upgrade(app, targetVer);
- Assert.AreSame(app, app2);
-
- var fs = ObjectFactory.CreateFeatureSource(conn, "OSGeo.SDF");
- var fs2 = conv.Upgrade(fs, targetVer);
- Assert.AreSame(fs, fs2);
-
- var ld = ObjectFactory.CreateDefaultLayer(conn, LayerType.Vector, new Version(1, 0, 0));
- var ld2 = conv.Upgrade(ld, targetVer);
- Assert.AreSame(ld, ld2);
-
- var md = ObjectFactory.CreateMapDefinition(conn, "Test Map");
- var md2 = conv.Upgrade(md, targetVer);
- Assert.AreSame(md, md2);
-
- var wl = ObjectFactory.CreateWebLayout(conn, new Version(1, 0, 0), "Library://Test.MapDefinition");
- var wl2 = conv.Upgrade(wl, targetVer);
- Assert.AreSame(wl, wl2);
-
- var ssd = ObjectFactory.CreateSimpleSymbol(conn, new Version(1, 0, 0), "Test", "Test Symbol");
- var ssd2 = conv.Upgrade(ssd, targetVer);
- Assert.AreSame(ssd, ssd2);
-
- var csd = ObjectFactory.CreateCompoundSymbol(conn, new Version(1, 0, 0), "Test", "Test Symbol");
- var csd2 = conv.Upgrade(csd, targetVer);
- Assert.AreSame(csd, csd2);
-
- var pl = ObjectFactory.CreatePrintLayout(conn);
- var pl2 = conv.Upgrade(pl, targetVer);
- Assert.AreSame(pl, pl2);
- }
-
- [Test]
- public void TestSingleUpgrade()
- {
- _mocks = new Mockery();
-
- var orig = _mocks.NewMock<IResource>();
- Stub.On(orig).GetProperty("ResourceVersion").Will(Return.Value(new Version(1, 0, 0)));
- Stub.On(orig).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
- Stub.On(orig).Method("Clone").WithAnyArguments().Will(Return.Value(orig));
-
- var res2 = _mocks.NewMock<IResource>();
- Stub.On(res2).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
- Stub.On(res2).GetProperty("ResourceVersion").Will(Return.Value(new Version(1, 1, 0)));
-
- var upg = _mocks.NewMock<IResourceConverter>();
- Stub.On(upg).GetProperty("SourceVersion").Will(Return.Value(new Version(1, 0, 0)));
- Stub.On(upg).GetProperty("TargetVersion").Will(Return.Value(new Version(1, 1, 0)));
- Stub.On(upg).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
- Stub.On(upg).Method("Convert").WithAnyArguments().Will(Return.Value(res2));
-
- var upgList = new List<IResourceConverter>();
- upgList.Add(upg);
- var conv = new ResourceConverter(upgList);
-
- var obj = conv.Upgrade(orig, new Version(1, 1, 0));
- Assert.AreEqual(obj.ResourceVersion, new Version(1, 1, 0));
-
- try
- {
- //No 1.0.0 -> 1.2.0 converter registered. Should fail.
- obj = conv.Upgrade(orig, new Version(1, 2, 0));
- Assert.Fail("An exception should've been thrown (no upgrade path)");
- }
- catch (ResourceConversionException)
- {
-
- }
- }
-
- [Test]
- [ExpectedException(typeof(ResourceConversionException))]
- public void TestClashingUpgraders()
- {
- _mocks = new Mockery();
- var upg = _mocks.NewMock<IResourceConverter>();
- Stub.On(upg).GetProperty("SourceVersion").Will(Return.Value(new Version(1, 0, 0)));
- Stub.On(upg).GetProperty("TargetVersion").Will(Return.Value(new Version(1, 1, 0)));
- Stub.On(upg).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
-
- var upg2 = _mocks.NewMock<IResourceConverter>();
- Stub.On(upg2).GetProperty("SourceVersion").Will(Return.Value(new Version(1, 0, 0)));
- Stub.On(upg2).GetProperty("TargetVersion").Will(Return.Value(new Version(1, 3, 0)));
- Stub.On(upg2).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
-
- var upgList = new List<IResourceConverter>();
- upgList.Add(upg);
- upgList.Add(upg2);
- var conv = new ResourceConverter(upgList);
- }
-
- [Test]
- public void TestIncrementalUpgrade()
- {
- //Verify a resource is upgraded to the correct version
- //when going through multiple upgraders
-
- _mocks = new Mockery();
-
- var orig = _mocks.NewMock<IResource>();
- Stub.On(orig).GetProperty("ResourceVersion").Will(Return.Value(new Version(1, 0, 0)));
- Stub.On(orig).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
- Stub.On(orig).Method("Clone").WithAnyArguments().Will(Return.Value(orig));
-
- var orig11 = _mocks.NewMock<IResource>();
- Stub.On(orig11).GetProperty("ResourceVersion").Will(Return.Value(new Version(1, 1, 0)));
- Stub.On(orig11).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
- Stub.On(orig11).Method("Clone").WithAnyArguments().Will(Return.Value(orig11));
-
- var orig12 = _mocks.NewMock<IResource>();
- Stub.On(orig12).GetProperty("ResourceVersion").Will(Return.Value(new Version(1, 2, 0)));
- Stub.On(orig12).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
- Stub.On(orig12).Method("Clone").WithAnyArguments().Will(Return.Value(orig12));
-
- var upg = _mocks.NewMock<IResourceConverter>();
- Stub.On(upg).GetProperty("SourceVersion").Will(Return.Value(new Version(1, 0, 0)));
- Stub.On(upg).GetProperty("TargetVersion").Will(Return.Value(new Version(1, 1, 0)));
- Stub.On(upg).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
- Stub.On(upg).Method("Convert").WithAnyArguments().Will(Return.Value(orig11));
-
- var upg2 = _mocks.NewMock<IResourceConverter>();
- Stub.On(upg2).GetProperty("SourceVersion").Will(Return.Value(new Version(1, 1, 0)));
- Stub.On(upg2).GetProperty("TargetVersion").Will(Return.Value(new Version(1, 2, 0)));
- Stub.On(upg2).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
- Stub.On(upg2).Method("Convert").WithAnyArguments().Will(Return.Value(orig12));
-
- var upgList = new List<IResourceConverter>() { upg, upg2 };
- var conv = new ResourceConverter(upgList);
-
- var obj = conv.Upgrade(orig, new Version(1, 2, 0));
- Assert.AreEqual(obj.ResourceVersion, new Version(1, 2, 0));
- }
-
- [Test]
- [ExpectedException(typeof(ResourceConversionException))]
- public void TestBrokenUpgradePath()
- {
- //Verify exception thrown when there is a version gap
- //in the upgrade path
-
- _mocks = new Mockery();
- var upg = _mocks.NewMock<IResourceConverter>();
- Stub.On(upg).GetProperty("SourceVersion").Will(Return.Value(new Version(1, 0, 0)));
- Stub.On(upg).GetProperty("TargetVersion").Will(Return.Value(new Version(1, 1, 0)));
- Stub.On(upg).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
-
- var upg2 = _mocks.NewMock<IResourceConverter>();
- Stub.On(upg2).GetProperty("SourceVersion").Will(Return.Value(new Version(1, 0, 0)));
- Stub.On(upg2).GetProperty("TargetVersion").Will(Return.Value(new Version(1, 3, 0)));
- Stub.On(upg2).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
-
- var orig = _mocks.NewMock<IResource>();
- Stub.On(orig).GetProperty("ResourceVersion").Will(Return.Value(new Version(1, 0, 0)));
- Stub.On(orig).GetProperty("ResourceType").Will(Return.Value(ResourceTypes.LayerDefinition));
- Stub.On(orig).Method("Clone").WithAnyArguments().Will(Return.Value(orig));
-
- var upgList = new List<IResourceConverter>();
- upgList.Add(upg);
- upgList.Add(upg2);
- var conv = new ResourceConverter(upgList);
-
- //There's no 1.1.0 -> 1.2.0 upgrader registered. This should fail.
- var obj = conv.Upgrade(orig, new Version(1, 3, 0));
- }
-
- [Test]
public void TestWebLayout()
{
var conn = _mocks.NewMock<IServerConnection>();
@@ -782,5 +599,292 @@
rtd = new ResourceTypeDescriptor(ResourceTypes.WebLayout, "1.0.0");
Assert.AreEqual(rtd.XsdName, "WebLayout-1.0.0.xsd");
}
+
+ [Test]
+ public void TestLayerDefinitionConversions()
+ {
+ var conn = _mocks.NewMock<IServerConnection>();
+ var conv = new ResourceObjectConverter();
+ var ldf = ObjectFactory.CreateDefaultLayer(conn, LayerType.Vector, new Version(1, 0, 0));
+
+ Assert.AreEqual("1.0.0", ldf.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("LayerDefinition-1.0.0.xsd", ldf.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("LayerDefinition-1.0.0.xsd", ldf.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 0, 0), ldf.ResourceVersion);
+
+ using (var fs = File.OpenWrite("LayerDef_100.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(ldf))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+
+ var ldf1 = (ILayerDefinition)conv.Convert(ldf, new Version(1, 1, 0));
+
+ Assert.AreEqual("1.1.0", ldf1.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("LayerDefinition-1.1.0.xsd", ldf1.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("LayerDefinition-1.1.0.xsd", ldf1.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 1, 0), ldf1.ResourceVersion);
+ Assert.NotNull(ldf1.CurrentConnection);
+
+ using (var fs = File.OpenWrite("LayerDef_110.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(ldf1))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+
+ var ldf2 = (ILayerDefinition)conv.Convert(ldf1, new Version(1, 2, 0));
+
+ Assert.AreEqual("1.2.0", ldf2.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("LayerDefinition-1.2.0.xsd", ldf2.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("LayerDefinition-1.2.0.xsd", ldf2.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 2, 0), ldf2.ResourceVersion);
+ Assert.NotNull(ldf2.CurrentConnection);
+
+ using (var fs = File.OpenWrite("LayerDef_120.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(ldf2))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+
+ var ldf3 = (ILayerDefinition)conv.Convert(ldf2, new Version(1, 3, 0));
+
+ Assert.AreEqual("1.3.0", ldf3.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("LayerDefinition-1.3.0.xsd", ldf3.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("LayerDefinition-1.3.0.xsd", ldf3.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 3, 0), ldf3.ResourceVersion);
+ Assert.NotNull(ldf3.CurrentConnection);
+
+ using (var fs = File.OpenWrite("LayerDef_130.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(ldf3))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+
+ var ldf4 = (ILayerDefinition)conv.Convert(ldf2, new Version(2, 3, 0));
+
+ Assert.AreEqual("2.3.0", ldf4.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("LayerDefinition-2.3.0.xsd", ldf4.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("LayerDefinition-2.3.0.xsd", ldf4.ValidatingSchema);
+ Assert.AreEqual(new Version(2, 3, 0), ldf4.ResourceVersion);
+ Assert.NotNull(ldf4.CurrentConnection);
+ Assert.IsTrue(ldf4.SubLayer is ISubLayerDefinition2);
+
+ using (var fs = File.OpenWrite("LayerDef_230.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(ldf4))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+ }
+
+ [Test]
+ public void TestMapDefinitionConversions()
+ {
+ var conn = _mocks.NewMock<IServerConnection>();
+ var conv = new ResourceObjectConverter();
+
+ var mdf = ObjectFactory.CreateMapDefinition(conn, new Version(1, 0, 0), "Test Map");
+
+ Assert.AreEqual("1.0.0", mdf.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("MapDefinition-1.0.0.xsd", mdf.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("MapDefinition-1.0.0.xsd", mdf.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 0, 0), mdf.ResourceVersion);
+
+ using (var fs = File.OpenWrite("MapDef_100.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(mdf))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+
+ var mdf2 = (IMapDefinition)conv.Convert(mdf, new Version(2, 3, 0));
+
+ Assert.AreEqual("2.3.0", mdf2.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("MapDefinition-2.3.0.xsd", mdf2.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("MapDefinition-2.3.0.xsd", mdf2.ValidatingSchema);
+ Assert.AreEqual(new Version(2, 3, 0), mdf2.ResourceVersion);
+ Assert.NotNull(mdf2.CurrentConnection);
+ Assert.True(mdf2 is IMapDefinition2);
+
+ using (var fs = File.OpenWrite("MapDef_230.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(mdf2))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+ }
+
+ [Test]
+ public void TestLoadProcedureConversions()
+ {
+ var conn = _mocks.NewMock<IServerConnection>();
+ var conv = new ResourceObjectConverter();
+
+ var lproc = ObjectFactory.CreateLoadProcedure(conn, LoadType.Sdf);
+
+ Assert.AreEqual("1.0.0", lproc.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("LoadProcedure-1.0.0.xsd", lproc.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("LoadProcedure-1.0.0.xsd", lproc.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 0, 0), lproc.ResourceVersion);
+
+ using (var fs = File.OpenWrite("LoadProc_100.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(lproc))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+
+ var lproc2 = (ILoadProcedure)conv.Convert(lproc, new Version(1, 1, 0));
+
+ Assert.AreEqual("1.1.0", lproc2.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("LoadProcedure-1.1.0.xsd", lproc2.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("LoadProcedure-1.1.0.xsd", lproc2.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 1, 0), lproc2.ResourceVersion);
+ Assert.NotNull(lproc2.CurrentConnection);
+
+ using (var fs = File.OpenWrite("LoadProc_110.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(lproc2))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+
+ var lproc3 = (ILoadProcedure)conv.Convert(lproc2, new Version(2, 2, 0));
+
+ Assert.AreEqual("2.2.0", lproc3.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("LoadProcedure-2.2.0.xsd", lproc3.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("LoadProcedure-2.2.0.xsd", lproc3.ValidatingSchema);
+ Assert.AreEqual(new Version(2, 2, 0), lproc3.ResourceVersion);
+ Assert.NotNull(lproc3.CurrentConnection);
+
+ using (var fs = File.OpenWrite("LoadProc_220.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(lproc3))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+ }
+
+ [Test]
+ public void TestWebLayoutConversions()
+ {
+ var conn = _mocks.NewMock<IServerConnection>();
+ var conv = new ResourceObjectConverter();
+
+ var wl = ObjectFactory.CreateWebLayout(conn, new Version(1, 0, 0), "Library://Test.MapDefinition");
+
+ Assert.AreEqual("1.0.0", wl.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("WebLayout-1.0.0.xsd", wl.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("WebLayout-1.0.0.xsd", wl.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 0, 0), wl.ResourceVersion);
+
+ using (var fs = File.OpenWrite("WebLayout_100.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(wl))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+
+ var wl2 = (IWebLayout)conv.Convert(wl, new Version(1, 1, 0));
+
+ Assert.AreEqual("1.1.0", wl2.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("WebLayout-1.1.0.xsd", wl2.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("WebLayout-1.1.0.xsd", wl2.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 1, 0), wl2.ResourceVersion);
+ Assert.NotNull(wl2.CurrentConnection);
+ Assert.True(wl2 is IWebLayout2);
+
+ using (var fs = File.OpenWrite("WebLayout_110.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(wl2))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+ }
+
+ [Test]
+ public void TestSymbolDefinitionConversions()
+ {
+ var conn = _mocks.NewMock<IServerConnection>();
+ var conv = new ResourceObjectConverter();
+
+ var ssym = ObjectFactory.CreateSimpleSymbol(conn, new Version(1, 0, 0), "SimpleSymbolTest", "Test simple symbol");
+
+ Assert.AreEqual("1.0.0", ssym.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("SymbolDefinition-1.0.0.xsd", ssym.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("SymbolDefinition-1.0.0.xsd", ssym.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 0, 0), ssym.ResourceVersion);
+
+ using (var fs = File.OpenWrite("SimpleSymDef_100.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(ssym))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+
+ var ssym2 = (ISimpleSymbolDefinition)conv.Convert(ssym, new Version(1, 1, 0));
+
+ Assert.AreEqual("1.1.0", ssym2.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("SymbolDefinition-1.1.0.xsd", ssym2.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("SymbolDefinition-1.1.0.xsd", ssym2.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 1, 0), ssym2.ResourceVersion);
+ Assert.NotNull(ssym2.CurrentConnection);
+
+ using (var fs = File.OpenWrite("SimpleSymDef_110.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(ssym2))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+
+ var csym = ObjectFactory.CreateCompoundSymbol(conn, new Version(1, 0, 0), "CompoundSymbolTest", "Test compound symbol");
+
+ Assert.AreEqual("1.0.0", csym.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("SymbolDefinition-1.0.0.xsd", csym.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("SymbolDefinition-1.0.0.xsd", csym.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 0, 0), csym.ResourceVersion);
+
+ using (var fs = File.OpenWrite("CompoundSymDef_100.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(csym))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+
+ var csym2 = (ICompoundSymbolDefinition)conv.Convert(csym, new Version(1, 1, 0));
+
+ Assert.AreEqual("1.1.0", csym2.GetResourceTypeDescriptor().Version);
+ Assert.AreEqual("SymbolDefinition-1.1.0.xsd", csym2.GetResourceTypeDescriptor().XsdName);
+ Assert.AreEqual("SymbolDefinition-1.1.0.xsd", csym2.ValidatingSchema);
+ Assert.AreEqual(new Version(1, 1, 0), csym2.ResourceVersion);
+ Assert.NotNull(csym2.CurrentConnection);
+
+ using (var fs = File.OpenWrite("CompoundSymDef_110.xml"))
+ {
+ using (var src = ResourceTypeRegistry.Serialize(csym2))
+ {
+ Utility.CopyStream(src, fs);
+ }
+ }
+ }
}
}
Modified: trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs
===================================================================
--- trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs 2011-08-04 14:13:13 UTC (rev 6035)
+++ trunk/Tools/Maestro/MaestroAPITests/RuntimeMapTests.cs 2011-08-04 16:00:10 UTC (rev 6036)
@@ -30,13 +30,6 @@
namespace MaestroAPITests
{
- using Ldf110 = OSGeo.MapGuide.ObjectModels.LayerDefinition_1_1_0;
- using Ldf120 = OSGeo.MapGuide.ObjectModels.LayerDefinition_1_2_0;
- using Ldf130 = OSGeo.MapGuide.ObjectModels.LayerDefinition_1_3_0;
-
- using Lp110 = OSGeo.MapGuide.ObjectModels.LoadProcedure_1_1_0;
- using Lp220 = OSGeo.MapGuide.ObjectModels.LoadProcedure_2_2_0;
- using WL110 = OSGeo.MapGuide.ObjectModels.WebLayout_1_1_0;
using OSGeo.MapGuide.ObjectModels;
using OSGeo.MapGuide.MaestroAPI.Resource.Validation;
using OSGeo.MapGuide.MaestroAPI.Resource;
@@ -44,6 +37,7 @@
using System.Diagnostics;
using OSGeo.MapGuide.MaestroAPI.CoordinateSystem;
using System.Drawing;
+ using OSGeo.MapGuide.ExtendedObjectModels;
[SetUpFixture]
public class TestBootstrap
@@ -56,56 +50,7 @@
{
if (!_registered)
{
- //Layer Definition 1.1.0
- ResourceValidatorSet.RegisterValidator(new Ldf110.LayerDefinitionValidator());
- ResourceTypeRegistry.RegisterResource(
- new ResourceTypeDescriptor(ResourceTypes.LayerDefinition, "1.1.0"),
- new ResourceSerializationCallback(Ldf110.LdfEntryPoint.Serialize),
- new ResourceDeserializationCallback(Ldf110.LdfEntryPoint.Deserialize));
- ObjectFactory.RegisterLayerFactoryMethod(new Version(1, 1, 0), new LayerCreatorFunc(Ldf110.LdfEntryPoint.CreateDefault));
-
- //Layer Definition 1.2.0
- ResourceValidatorSet.RegisterValidator(new Ldf120.LayerDefinitionValidator());
- ResourceTypeRegistry.RegisterResource(
- new ResourceTypeDescriptor(ResourceTypes.LayerDefinition, "1.2.0"),
- new ResourceSerializationCallback(Ldf120.LdfEntryPoint.Serialize),
- new ResourceDeserializationCallback(Ldf120.LdfEntryPoint.Deserialize));
- ObjectFactory.RegisterLayerFactoryMethod(new Version(1, 2, 0), new LayerCreatorFunc(Ldf120.LdfEntryPoint.CreateDefault));
-
- //Layer Definition 1.3.0
- ResourceValidatorSet.RegisterValidator(new Ldf130.LayerDefinitionValidator());
- ResourceTypeRegistry.RegisterResource(
- new ResourceTypeDescriptor(ResourceTypes.LayerDefinition, "1.3.0"),
- new ResourceSerializationCallback(Ldf130.LdfEntryPoint.Serialize),
- new ResourceDeserializationCallback(Ldf130.LdfEntryPoint.Deserialize));
- ObjectFactory.RegisterLayerFactoryMethod(new Version(1, 3, 0), new LayerCreatorFunc(Ldf130.LdfEntryPoint.CreateDefault));
-
- //Load Procedure 1.1.0
- ResourceValidatorSet.RegisterValidator(new Lp110.LoadProcedureValidator());
- ResourceTypeRegistry.RegisterResource(
- new ResourceTypeDescriptor(ResourceTypes.LoadProcedure, "1.1.0"),
- new ResourceSerializationCallback(Lp110.LoadProcEntryPoint.Serialize),
- new ResourceDeserializationCallback(Lp110.LoadProcEntryPoint.Deserialize));
-
- //Load Procedure 1.1.0 schema offers nothing new for the ones we want to support, so nothing to register
- //with the ObjectFactory
-
- //Load Procedure 2.2.0
- ResourceValidatorSet.RegisterValidator(new Lp220.LoadProcedureValidator());
- ResourceTypeRegistry.RegisterResource(
- new ResourceTypeDescriptor(ResourceTypes.LoadProcedure, "2.2.0"),
- new ResourceSerializationCallback(Lp220.LoadProcEntryPoint.Serialize),
- new ResourceDeserializationCallback(Lp220.LoadProcEntryPoint.Deserialize));
- ObjectFactory.RegisterLoadProcedureFactoryMethod(LoadType.Sqlite, new LoadProcCreatorFunc(Lp220.LoadProcEntryPoint.CreateDefaultSqlite));
-
- //Web Layout 1.1.0
- ResourceValidatorSet.RegisterValidator(new WL110.WebLayoutValidator());
- ResourceTypeRegistry.RegisterResource(
- new ResourceTypeDescriptor(ResourceTypes.WebLayout, "1.1.0"),
- new ResourceSerializationCallback(WL110.WebLayoutEntryPoint.Serialize),
- new ResourceDeserializationCallback(WL110.WebLayoutEntryPoint.Deserialize));
- ObjectFactory.RegisterWebLayoutFactoryMethod(new Version(1, 1, 0), new WebLayoutCreatorFunc(WL110.WebLayoutEntryPoint.CreateDefault));
-
+ ModelSetup.Initialize();
_registered = true;
}
}
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ExtendedObjectModels/OSGeo.MapGuide.ExtendedObjectModels.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ExtendedObjectModels/OSGeo.MapGuide.ExtendedObjectModels.csproj 2011-08-04 14:13:13 UTC (rev 6035)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ExtendedObjectModels/OSGeo.MapGuide.ExtendedObjectModels.csproj 2011-08-04 16:00:10 UTC (rev 6036)
@@ -37,6 +37,12 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="..\Properties\GlobalAssemblyInfo.cs">
+ <Link>GlobalAssemblyInfo.cs</Link>
+ </Compile>
+ <Compile Include="..\Properties\SignedAssemblyInfo.cs">
+ <Link>SignedAssemblyInfo.cs</Link>
+ </Compile>
<Compile Include="ModelSetup.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.ExtendedObjectModels/Properties/AssemblyInfo.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.ExtendedObjectModels/Properties/AssemblyInfo.cs 2011-08-04 14:13:13 UTC (rev 6035)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.ExtendedObjectModels/Properties/AssemblyInfo.cs 2011-08-04 16:00:10 UTC (rev 6036)
@@ -7,10 +7,7 @@
// associated with an assembly.
[assembly: AssemblyTitle("OSGeo.MapGuide.ExtendedObjectModels")]
[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("OSGeo.MapGuide.ExtendedObjectModels")]
-[assembly: AssemblyCopyright("Copyright © 2011")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -21,16 +18,3 @@
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("59a0a5e6-9ed7-4600-82e6-f48a993354bf")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj 2011-08-04 14:13:13 UTC (rev 6035)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/OSGeo.MapGuide.MaestroAPI.csproj 2011-08-04 16:00:10 UTC (rev 6036)
@@ -305,8 +305,6 @@
<Compile Include="Resource\Validation\BaseLoadProcedureValidator.cs" />
<Compile Include="Resource\Validation\BaseWebLayoutValidator.cs" />
<Compile Include="Resource\Conversion\IResourceConverter.cs" />
- <Compile Include="Resource\Conversion\ResourceConverter.cs" />
- <Compile Include="Resource\Conversion\ResourceUpgrader.cs" />
<Compile Include="Resource\IResource.cs" />
<Compile Include="Resource\IResourceValidator.cs" />
<Compile Include="Resource\IVersionedEntity.cs" />
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/IResourceConverter.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/IResourceConverter.cs 2011-08-04 14:13:13 UTC (rev 6035)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/IResourceConverter.cs 2011-08-04 16:00:10 UTC (rev 6036)
@@ -20,48 +20,45 @@
using System;
using System.Collections.Generic;
using System.Text;
+using System.IO;
namespace OSGeo.MapGuide.MaestroAPI.Resource.Conversion
{
/// <summary>
/// Performs schematic upgrades of resources
/// </summary>
- public interface IResourceConversionService
+ public interface IResourceConverter
{
/// <summary>
- /// Upgrades the resource
+ /// Converts the resource to the specified version
/// </summary>
/// <param name="resource">The resource.</param>
/// <param name="targetVersion">The target version.</param>
/// <returns></returns>
- IResource Upgrade(IResource resource, Version targetVersion);
+ IResource Convert(IResource resource, Version targetVersion);
}
- /// <summary>
- /// Converts a specified resource to a specified version
- /// </summary>
- public interface IResourceConverter
+ public class ResourceObjectConverter : IResourceConverter
{
- /// <summary>
- /// Gets the type of resource this can convert
- /// </summary>
- ResourceTypes ResourceType { get; }
+ public IResource Convert(IResource resource, Version targetVersion)
+ {
+ var resVer = resource.GetResourceTypeDescriptor().Version;
+ var dstVer = string.Format("{0}.{1}.{2}", targetVersion.Major, targetVersion.Minor, targetVersion.Build);
+ var dstXsd = resource.ValidatingSchema.Replace(resVer, dstVer);
- /// <summary>
- /// Gets the version this converter can convert from
- /// </summary>
- Version SourceVersion { get; }
+ using (var sr = ResourceTypeRegistry.Serialize(resource))
+ {
+ using (var str = new StreamReader(sr))
+ {
+ var xml = new StringBuilder(str.ReadToEnd());
+ xml.Replace(resource.ValidatingSchema, dstXsd);
+ xml.Replace("version=\"" + resVer, "version=\"" + dstVer);
- /// <summary>
- /// Gets the version this converter will convert to
- /// </summary>
- Version TargetVersion { get; }
-
- /// <summary>
- /// Converts the resource
- /// </summary>
- /// <param name="resource"></param>
- /// <returns></returns>
- IResource Convert(IResource resource);
+ var convRes = ResourceTypeRegistry.Deserialize(xml.ToString());
+ convRes.CurrentConnection = resource.CurrentConnection;
+ return convRes;
+ }
+ }
+ }
}
}
Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ResourceConverter.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ResourceConverter.cs 2011-08-04 14:13:13 UTC (rev 6035)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ResourceConverter.cs 2011-08-04 16:00:10 UTC (rev 6036)
@@ -1,107 +0,0 @@
-#region Disclaimer / License
-// Copyright (C) 2010, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Text;
-using OSGeo.MapGuide.MaestroAPI.Exceptions;
-
-namespace OSGeo.MapGuide.MaestroAPI.Resource.Conversion
-{
- /// <summary>
- /// Resource conversion services
- /// </summary>
- public class ResourceConverter : IResourceConversionService
- {
- private IList<IResourceConverter> _upgraders;
-
- internal ResourceConverter(IList<IResourceConverter> upgraders)
- {
- ValidateConverterList(upgraders);
- _upgraders = upgraders;
- }
-
- private void ValidateConverterList(IList<IResourceConverter> upgraders)
- {
- var conv = new Dictionary<ResourceTypeDescriptor, IResourceConverter>();
- foreach (var upg in upgraders)
- {
- var desc = new ResourceTypeDescriptor(upg.ResourceType, upg.SourceVersion.ToString());
- if (conv.ContainsKey(desc))
- throw new ResourceConversionException(string.Format(Properties.Resources.ERR_CONVERTER_ALREADY_REGISTERED, upg.ResourceType + " " + upg.SourceVersion));
-
- conv.Add(desc, upg);
- }
- }
-
- private IResourceConverter FindUpgrader(ResourceTypes resourceType, Version source)
- {
- foreach (var conv in _upgraders)
- {
- if (conv.SourceVersion == source && conv.ResourceType == resourceType)
- return conv;
- }
- return null;
- }
-
- /// <summary>
- /// Performs the upgrade of a given resource. If the versions differ
- /// by more than one revision, the upgrade is done incrementally. (eg. Upgrading
- /// a 1.0.0 Layer Definition to 1.2.0 will go from:
- /// - 1.0.0 to 1.1.0
- /// - 1.1.0 to 1.2.0
- ///
- /// If the target version matches the resource's version, the original resource is returned
- /// </summary>
- /// <param name="resource"></param>
- /// <param name="version"></param>
- /// <returns></returns>
- public IResource Upgrade(IResource resource, Version version)
- {
- if (resource.ResourceVersion == version)
- return resource;
-
- var rt = resource.ResourceType;
- IResource res = (IResource)resource.Clone();
- Version currentVer = res.ResourceVersion;
- //Construct the upgrade path
- List<IResourceConverter> upgradePath = new List<IResourceConverter>();
- while (currentVer < version)
- {
- var conv = FindUpgrader(rt, currentVer);
- if (conv == null)
- break;
-
- upgradePath.Add(conv);
- currentVer = conv.TargetVersion;
- }
-
- if (currentVer != version)
- {
- throw new ResourceConversionException(Properties.Resources.ERR_NO_UPGRADE_PATH);
- }
-
- for (int i = 0; i < upgradePath.Count; i++)
- {
- res = upgradePath[i].Convert(res);
- }
- return res;
- }
- }
-}
Deleted: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ResourceUpgrader.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ResourceUpgrader.cs 2011-08-04 14:13:13 UTC (rev 6035)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Resource/Conversion/ResourceUpgrader.cs 2011-08-04 16:00:10 UTC (rev 6036)
@@ -1,92 +0,0 @@
-#region Disclaimer / License
-// Copyright (C) 2010, Jackie Ng
-// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie at gmail.com
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-//
-#endregion
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace OSGeo.MapGuide.MaestroAPI.Resource.Conversion
-{
- /// <summary>
- /// Base class of all resource converter classes
- /// </summary>
- /// <typeparam name="T"></typeparam>
- public abstract class ResourceUpgrader<T> : IResourceConverter where T : IResource
- {
- /// <summary>
- /// Gets the version this converter will convert to
- /// </summary>
- /// <value></value>
- public abstract Version TargetVersion
- {
- get;
- }
-
- /// <summary>
- /// Converts the specified resource.
- /// </summary>
- /// <param name="resource">The resource.</param>
- /// <returns></returns>
- public T Convert(T resource)
- {
- if (resource.ResourceVersion > this.TargetVersion)
- throw new InvalidOperationException(Properties.Resources.ERR_CANNOT_UPGRADE_NEWER_RESOURCE);
-
- if (resource.ResourceVersion == this.TargetVersion)
- return resource;
-
- return Upgrade(resource);
- }
-
- /// <summary>
- /// Upgrades the resource to the target version
- /// </summary>
- /// <param name="resource"></param>
- /// <returns></returns>
- protected abstract T Upgrade(T resource);
-
- /// <summary>
- /// Converts the resource
- /// </summary>
- /// <param name="resource"></param>
- /// <returns></returns>
- public IResource Convert(IResource resource)
- {
- return Convert((T)resource);
- }
-
- /// <summary>
- /// Gets the version this converter can convert from
- /// </summary>
- /// <value></value>
- public abstract Version SourceVersion
- {
- get;
- }
-
- /// <summary>
- /// Gets the type of resource this can convert
- /// </summary>
- /// <value></value>
- public abstract ResourceTypes ResourceType
- {
- get;
- }
- }
-}
More information about the mapguide-commits
mailing list