├── .gitattributes ├── .gitignore ├── ReadMe.md ├── Wintellect.Sterling.Core ├── AsyncLock.cs ├── CommonAssemblyInfo.cs ├── Database │ ├── BaseDatabaseInstance.cs │ ├── BaseDriver.cs │ ├── BaseSterlingByteInterceptor.cs │ ├── BaseSterlingTrigger.cs │ ├── CycleCache.cs │ ├── CycleItem.cs │ ├── Extensions.cs │ ├── ITableDefinition.cs │ ├── LogManager.cs │ ├── PendingOperation.cs │ ├── SterlingDatabase.cs │ ├── TableDefinition.cs │ └── TableTypeResolver.cs ├── Events │ ├── SterlingOperation.cs │ └── SterlingOperationArgs.cs ├── Exceptions │ ├── Exceptions.Designer.cs │ ├── Exceptions.Designer2.cs │ ├── Exceptions.resx │ ├── Exceptions2.resx │ ├── SterlingActivationException.cs │ ├── SterlingDatabaseNotFoundException.cs │ ├── SterlingDuplicateDatabaseException.cs │ ├── SterlingDuplicateIndexException.cs │ ├── SterlingDuplicateTypeException.cs │ ├── SterlingException.cs │ ├── SterlingIndexNotFoundException.cs │ ├── SterlingIsolatedStorageException.cs │ ├── SterlingLoggerNotFoundException.cs │ ├── SterlingNoTableDefinitionsException.cs │ ├── SterlingNotReadyException.cs │ ├── SterlingNullException.cs │ ├── SterlingSerializerException.cs │ ├── SterlingTableNotFoundException.cs │ └── SterlingTriggerException.cs ├── ISterlingByteInterceptor.cs ├── ISterlingDatabase.cs ├── ISterlingDatabaseInstance.cs ├── ISterlingDriver.cs ├── ISterlingLock.cs ├── ISterlingPlatformAdapter.cs ├── ISterlingPropertyConverter.cs ├── ISterlingTrigger.cs ├── ISterlingTypeResolver.cs ├── Indexes │ ├── IIndexCollection.cs │ ├── IndexCollection.cs │ ├── IndexCollection2.cs │ ├── TableIndex.cs │ └── TableIndex2.cs ├── Keys │ ├── IKeyCollection.cs │ ├── KeyCollection.cs │ └── TableKey.cs ├── MemoryDriver.cs ├── Properties │ └── AssemblyInfo.cs ├── Serialization │ ├── AggregateSerializer.cs │ ├── BaseSerializer.cs │ ├── DefaultSerializer.cs │ ├── ExtendedSerializer.cs │ ├── ISterlingSerializer.cs │ ├── PropertyOrField.cs │ ├── SerializationCache.cs │ ├── SerializationHelper.cs │ └── SterlingIgnoreAttribute.cs ├── SterlingDefaultLogger.cs ├── SterlingEngine.cs ├── SterlingFactory.cs ├── SterlingLicense.txt ├── SterlingLogLevel.cs ├── VersionInfo.cs ├── Wintellect.Sterling.Core.csproj └── Wintellect.Sterling.snk ├── Wintellect.Sterling.Server.Azure ├── Properties │ └── AssemblyInfo.cs ├── TableStorage │ ├── Driver.cs │ ├── Lock.cs │ ├── SterlingFileSystemException.cs │ └── StorageExtensions.cs ├── Wintellect.Sterling.Server.Azure.csproj ├── Wintellect.Sterling.Server.Azure.sln └── packages.config ├── Wintellect.Sterling.Server.Test ├── Database │ ├── TestActivation.cs │ ├── TestAggregateList.cs │ ├── TestArrays.cs │ ├── TestAsync.cs │ ├── TestBackupRestore.cs │ ├── TestByteStreamInterceptor.cs │ ├── TestCycle.cs │ ├── TestDelete.cs │ ├── TestDictionary.cs │ ├── TestDirtyFlag.cs │ ├── TestEnum.cs │ ├── TestField.cs │ ├── TestIndexQuery.cs │ ├── TestInterfaceProperty.cs │ ├── TestLists.cs │ ├── TestNestedInstance.cs │ ├── TestNullable.cs │ ├── TestPurge.cs │ ├── TestQuery.cs │ ├── TestRegistration.cs │ ├── TestSaveAndLoad.cs │ ├── TestSerializers.cs │ ├── TestTableDefinition.cs │ ├── TestTriggers.cs │ ├── TestTruncate.cs │ └── TestWriteableBitmap.cs ├── EngineFactory.cs ├── Helpers │ ├── BadDatabaseInstance.cs │ ├── DupDatabaseInstance.cs │ ├── ExceptionHelper.cs │ ├── TestAggregateListModel.cs │ ├── TestAggregateModel.cs │ ├── TestBaseClassModel.cs │ ├── TestChangingTypeFirstVersionClass.cs │ ├── TestChangingTypeSecondVersionClass.cs │ ├── TestClassWithArray.cs │ ├── TestClassWithDictionary.cs │ ├── TestClassWithStruct.cs │ ├── TestCompositeClass.cs │ ├── TestCompositeKeyClass.cs │ ├── TestCompositeSerializer.cs │ ├── TestDatabaseInstance.cs │ ├── TestDatabaseInstanceComposite.cs │ ├── TestDatabaseInterfaceInstance.cs │ ├── TestDerivedClassAModel.cs │ ├── TestDerivedClassBModel.cs │ ├── TestForeignModel.cs │ ├── TestListModel.cs │ ├── TestModel.cs │ ├── TestModelAsList.cs │ └── TestSerializer.cs ├── Indexes │ └── TestSingleIndex.cs ├── Keys │ ├── TestCompositeKey.cs │ ├── TestCompositeKeyWithKeyClass.cs │ ├── TestKeyCollection.cs │ └── TestTableKey.cs ├── Properties │ └── AssemblyInfo.cs ├── Serializer │ ├── TestAggregateSerializer.cs │ ├── TestCustomSerializer.cs │ ├── TestDefaultSerializer.cs │ └── TestExtendedSerializer.cs ├── TestBase.cs ├── Wintellect.Sterling.Server.Test.csproj └── readme.txt ├── Wintellect.Sterling.Server ├── FileSystem │ ├── FileSystemDriver.cs │ ├── FileSystemHelper.cs │ ├── PathLock.cs │ ├── PathProvider.cs │ └── SterlingFileSystemException.cs ├── PlatformAdapter.cs ├── Properties │ └── AssemblyInfo.cs ├── Wintellect.Sterling.Server.csproj ├── Wintellect.Sterling.Server.sln ├── Wintellect.Sterling.Server.sln.DotSettings └── packages │ ├── Microsoft.Data.Edm.5.0.2 │ ├── Microsoft.Data.Edm.5.0.2.nupkg │ ├── Microsoft.Data.Edm.5.0.2.nuspec │ └── lib │ │ ├── net40 │ │ ├── CHS │ │ │ └── Microsoft.Data.Edm.resources.dll │ │ ├── CHT │ │ │ └── Microsoft.Data.Edm.resources.dll │ │ ├── DEU │ │ │ └── Microsoft.Data.Edm.resources.dll │ │ ├── ESN │ │ │ └── Microsoft.Data.Edm.resources.dll │ │ ├── FRA │ │ │ └── Microsoft.Data.Edm.resources.dll │ │ ├── ITA │ │ │ └── Microsoft.Data.Edm.resources.dll │ │ ├── JPN │ │ │ └── Microsoft.Data.Edm.resources.dll │ │ ├── KOR │ │ │ └── Microsoft.Data.Edm.resources.dll │ │ ├── Microsoft.Data.Edm.dll │ │ ├── Microsoft.Data.Edm.xml │ │ └── RUS │ │ │ └── Microsoft.Data.Edm.resources.dll │ │ └── sl4 │ │ ├── CHS │ │ └── Microsoft.Data.Edm.SL.resources.dll │ │ ├── CHT │ │ └── Microsoft.Data.Edm.SL.resources.dll │ │ ├── DEU │ │ └── Microsoft.Data.Edm.SL.resources.dll │ │ ├── ESN │ │ └── Microsoft.Data.Edm.SL.resources.dll │ │ ├── FRA │ │ └── Microsoft.Data.Edm.SL.resources.dll │ │ ├── ITA │ │ └── Microsoft.Data.Edm.SL.resources.dll │ │ ├── JPN │ │ └── Microsoft.Data.Edm.SL.resources.dll │ │ ├── KOR │ │ └── Microsoft.Data.Edm.SL.resources.dll │ │ ├── Microsoft.Data.Edm.SL.dll │ │ └── RUS │ │ └── Microsoft.Data.Edm.SL.resources.dll │ ├── Microsoft.Data.OData.5.0.2 │ ├── Microsoft.Data.OData.5.0.2.nupkg │ ├── Microsoft.Data.OData.5.0.2.nuspec │ └── lib │ │ ├── net40 │ │ ├── CHS │ │ │ └── Microsoft.Data.OData.resources.dll │ │ ├── CHT │ │ │ └── Microsoft.Data.OData.resources.dll │ │ ├── DEU │ │ │ └── Microsoft.Data.OData.resources.dll │ │ ├── ESN │ │ │ └── Microsoft.Data.OData.resources.dll │ │ ├── FRA │ │ │ └── Microsoft.Data.OData.resources.dll │ │ ├── ITA │ │ │ └── Microsoft.Data.OData.resources.dll │ │ ├── JPN │ │ │ └── Microsoft.Data.OData.resources.dll │ │ ├── KOR │ │ │ └── Microsoft.Data.OData.resources.dll │ │ ├── Microsoft.Data.OData.dll │ │ ├── Microsoft.Data.OData.xml │ │ └── RUS │ │ │ └── Microsoft.Data.OData.resources.dll │ │ └── sl4 │ │ ├── CHS │ │ └── Microsoft.Data.OData.SL.resources.dll │ │ ├── CHT │ │ └── Microsoft.Data.OData.SL.resources.dll │ │ ├── DEU │ │ └── Microsoft.Data.OData.SL.resources.dll │ │ ├── ESN │ │ └── Microsoft.Data.OData.SL.resources.dll │ │ ├── FRA │ │ └── Microsoft.Data.OData.SL.resources.dll │ │ ├── ITA │ │ └── Microsoft.Data.OData.SL.resources.dll │ │ ├── JPN │ │ └── Microsoft.Data.OData.SL.resources.dll │ │ ├── KOR │ │ └── Microsoft.Data.OData.SL.resources.dll │ │ ├── Microsoft.Data.OData.SL.dll │ │ └── RUS │ │ └── Microsoft.Data.OData.SL.resources.dll │ ├── Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0 │ ├── Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0.nupkg │ ├── Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0.nuspec │ └── lib │ │ └── net35-full │ │ └── Microsoft.WindowsAzure.Configuration.dll │ ├── System.Spatial.5.0.2 │ ├── System.Spatial.5.0.2.nupkg │ ├── System.Spatial.5.0.2.nuspec │ └── lib │ │ ├── net40 │ │ ├── CHS │ │ │ └── System.Spatial.resources.dll │ │ ├── CHT │ │ │ └── System.Spatial.resources.dll │ │ ├── DEU │ │ │ └── System.Spatial.resources.dll │ │ ├── ESN │ │ │ └── System.Spatial.resources.dll │ │ ├── FRA │ │ │ └── System.Spatial.resources.dll │ │ ├── ITA │ │ │ └── System.Spatial.resources.dll │ │ ├── JPN │ │ │ └── System.Spatial.resources.dll │ │ ├── KOR │ │ │ └── System.Spatial.resources.dll │ │ ├── RUS │ │ │ └── System.Spatial.resources.dll │ │ ├── System.Spatial.dll │ │ └── System.Spatial.xml │ │ └── sl4 │ │ ├── CHS │ │ └── System.Spatial.SL.resources.dll │ │ ├── CHT │ │ └── System.Spatial.SL.resources.dll │ │ ├── DEU │ │ └── System.Spatial.SL.resources.dll │ │ ├── ESN │ │ └── System.Spatial.SL.resources.dll │ │ ├── FRA │ │ └── System.Spatial.SL.resources.dll │ │ ├── ITA │ │ └── System.Spatial.SL.resources.dll │ │ ├── JPN │ │ └── System.Spatial.SL.resources.dll │ │ ├── KOR │ │ └── System.Spatial.SL.resources.dll │ │ ├── RUS │ │ └── System.Spatial.SL.resources.dll │ │ └── System.Spatial.SL.dll │ ├── WindowsAzure.Storage.2.0.4.0 │ ├── WindowsAzure.Storage.2.0.4.0.nupkg │ ├── WindowsAzure.Storage.2.0.4.0.nuspec │ └── lib │ │ └── net40 │ │ ├── Microsoft.WindowsAzure.Storage.dll │ │ └── Microsoft.WindowsAzure.Storage.xml │ └── repositories.config ├── Wintellect.Sterling.WP8.Test ├── App.xaml ├── App.xaml.cs ├── Assets │ ├── AlignmentGrid.png │ ├── ApplicationIcon.png │ └── Tiles │ │ ├── FlipCycleTileLarge.png │ │ ├── FlipCycleTileMedium.png │ │ ├── FlipCycleTileSmall.png │ │ ├── IconicTileMediumLarge.png │ │ └── IconicTileSmall.png ├── EngineFactory.cs ├── LocalizedStrings.cs ├── MainPage.xaml ├── MainPage.xaml.cs ├── Properties │ ├── AppManifest.xml │ ├── AssemblyInfo.cs │ └── WMAppManifest.xml ├── README_FIRST.txt ├── Resources │ ├── AppResources.Designer.cs │ └── AppResources.resx ├── Toolkit.Content │ ├── ApplicationBar.Cancel.png │ ├── ApplicationBar.Check.png │ ├── ApplicationBar.Delete.png │ ├── ApplicationBar.Email.png │ ├── ApplicationBar.Play.png │ ├── ApplicationBar.Save.png │ └── ApplicationBar.Select.png ├── Wintellect.Sterling.WP8.Test.csproj ├── app.config └── packages.config ├── Wintellect.Sterling.WP8 ├── IsolatedStorage │ ├── IsoStorageHelper.cs │ ├── IsolatedStorageDriver.cs │ └── PathProvider.cs ├── PlatformAdapter.cs ├── Properties │ └── AssemblyInfo.cs ├── Wintellect.Sterling.WP8.csproj ├── Wintellect.Sterling.WP8.sln ├── Wintellect.Sterling.WP8.sln.DotSettings └── packages │ ├── WPToolkitTestFx.4.2012.11.14 │ ├── WPToolkitTestFx.4.2012.11.14.nupkg │ ├── WPToolkitTestFx.4.2012.11.14.nuspec │ ├── content │ │ └── Toolkit.Content │ │ │ ├── ApplicationBar.Email.png │ │ │ ├── ApplicationBar.Play.png │ │ │ └── ApplicationBar.Save.png │ └── lib │ │ ├── README_FIRST.TXT │ │ ├── sl4-wp71 │ │ ├── Microsoft.Phone.Toolkit.Testing.dll │ │ └── Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll │ │ └── wp8 │ │ ├── Microsoft.Phone.Toolkit.Testing.dll │ │ └── Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll │ ├── WPtoolkit.4.2012.10.30 │ ├── WPtoolkit.4.2012.10.30.nupkg │ ├── WPtoolkit.4.2012.10.30.nuspec │ ├── content │ │ ├── README_FIRST.txt │ │ └── Toolkit.Content │ │ │ ├── ApplicationBar.Cancel.png │ │ │ ├── ApplicationBar.Check.png │ │ │ ├── ApplicationBar.Delete.png │ │ │ └── ApplicationBar.Select.png │ └── lib │ │ ├── sl3-wp │ │ └── Microsoft.Phone.Controls.Toolkit.dll │ │ ├── sl4-windowsphone71 │ │ └── Microsoft.Phone.Controls.Toolkit.dll │ │ └── wp8 │ │ └── Microsoft.Phone.Controls.Toolkit.dll │ └── repositories.config ├── Wintellect.Sterling.WinRT.Test ├── EngineFactory.cs ├── Images │ ├── UnitTestLogo.png │ ├── UnitTestSmallLogo.png │ ├── UnitTestSplashScreen.png │ └── UnitTestStoreLogo.png ├── Package.appxmanifest ├── Properties │ └── AssemblyInfo.cs ├── WindowsStorage │ └── TestStorageHelper.cs ├── Wintellect.Sterling.WinRT.Test.csproj └── Wintellect.Sterling.pfx ├── Wintellect.Sterling.WinRT ├── PlatformAdapter.cs ├── Properties │ └── AssemblyInfo.cs ├── WindowsStorage │ ├── PathLock.cs │ ├── PathProvider.cs │ ├── StorageHelper.cs │ └── WindowsStorageDriver.cs ├── Wintellect.Sterling.WinRT.csproj ├── Wintellect.Sterling.WinRT.sln └── Wintellect.Sterling.WinRT.sln.DotSettings └── packages ├── WPToolkitTestFx.4.2012.11.14 ├── WPToolkitTestFx.4.2012.11.14.nupkg ├── WPToolkitTestFx.4.2012.11.14.nuspec ├── content │ └── Toolkit.Content │ │ ├── ApplicationBar.Email.png │ │ ├── ApplicationBar.Play.png │ │ └── ApplicationBar.Save.png └── lib │ ├── README_FIRST.TXT │ ├── sl4-wp71 │ ├── Microsoft.Phone.Toolkit.Testing.dll │ └── Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll │ └── wp8 │ ├── Microsoft.Phone.Toolkit.Testing.dll │ └── Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll ├── WPtoolkit.4.2012.10.30 ├── WPtoolkit.4.2012.10.30.nupkg ├── WPtoolkit.4.2012.10.30.nuspec ├── content │ ├── README_FIRST.txt │ └── Toolkit.Content │ │ ├── ApplicationBar.Cancel.png │ │ ├── ApplicationBar.Check.png │ │ ├── ApplicationBar.Delete.png │ │ └── ApplicationBar.Select.png └── lib │ ├── sl3-wp │ └── Microsoft.Phone.Controls.Toolkit.dll │ ├── sl4-windowsphone71 │ └── Microsoft.Phone.Controls.Toolkit.dll │ └── wp8 │ └── Microsoft.Phone.Controls.Toolkit.dll └── repositories.config /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################# 2 | ## Eclipse 3 | ################# 4 | 5 | *.pydevproject 6 | .project 7 | .metadata 8 | bin/ 9 | tmp/ 10 | *.tmp 11 | *.bak 12 | *.swp 13 | *~.nib 14 | local.properties 15 | .classpath 16 | .settings/ 17 | .loadpath 18 | 19 | # External tool builders 20 | .externalToolBuilders/ 21 | 22 | # Locally stored "Eclipse launch configurations" 23 | *.launch 24 | 25 | # CDT-specific 26 | .cproject 27 | 28 | # PDT-specific 29 | .buildpath 30 | 31 | 32 | ################# 33 | ## Visual Studio 34 | ################# 35 | 36 | ## Ignore Visual Studio temporary files, build results, and 37 | ## files generated by popular Visual Studio add-ons. 38 | 39 | # User-specific files 40 | *.suo 41 | *.user 42 | *.sln.docstates 43 | 44 | # Build results 45 | [Dd]ebug/ 46 | [Rr]elease/ 47 | *_i.c 48 | *_p.c 49 | *.ilk 50 | *.meta 51 | *.obj 52 | *.pch 53 | *.pdb 54 | *.pgc 55 | *.pgd 56 | *.rsp 57 | *.sbr 58 | *.tlb 59 | *.tli 60 | *.tlh 61 | *.tmp 62 | *.vspscc 63 | .builds 64 | *.dotCover 65 | 66 | ## TODO: If you have NuGet Package Restore enabled, uncomment this 67 | #packages/ 68 | 69 | # Visual C++ cache files 70 | ipch/ 71 | *.aps 72 | *.ncb 73 | *.opensdf 74 | *.sdf 75 | 76 | # Visual Studio profiler 77 | *.psess 78 | *.vsp 79 | 80 | # ReSharper is a .NET coding add-in 81 | _ReSharper* 82 | 83 | # Installshield output folder 84 | [Ee]xpress 85 | 86 | # DocProject is a documentation generator add-in 87 | DocProject/buildhelp/ 88 | DocProject/Help/*.HxT 89 | DocProject/Help/*.HxC 90 | DocProject/Help/*.hhc 91 | DocProject/Help/*.hhk 92 | DocProject/Help/*.hhp 93 | DocProject/Help/Html2 94 | DocProject/Help/html 95 | 96 | # Click-Once directory 97 | publish 98 | 99 | # Others 100 | [Bb]in 101 | [Oo]bj 102 | sql 103 | TestResults 104 | *.Cache 105 | ClientBin 106 | stylecop.* 107 | ~$* 108 | *.dbmdl 109 | Generated_Code #added for RIA/Silverlight projects 110 | 111 | # Backup & report files from converting an old project file to a newer 112 | # Visual Studio version. Backup files are not needed, because we have git ;-) 113 | _UpgradeReport_Files/ 114 | Backup*/ 115 | UpgradeLog*.XML 116 | 117 | 118 | 119 | ############ 120 | ## Windows 121 | ############ 122 | 123 | # Windows image file caches 124 | Thumbs.db 125 | 126 | # Folder config file 127 | Desktop.ini 128 | 129 | 130 | ############# 131 | ## Python 132 | ############# 133 | 134 | *.py[co] 135 | 136 | # Packages 137 | *.egg 138 | *.egg-info 139 | dist 140 | build 141 | eggs 142 | parts 143 | bin 144 | var 145 | sdist 146 | develop-eggs 147 | .installed.cfg 148 | 149 | # Installer logs 150 | pip-log.txt 151 | 152 | # Unit test / coverage reports 153 | .coverage 154 | .tox 155 | 156 | #Translations 157 | *.mo 158 | 159 | #Mr Developer 160 | .mr.developer.cfg 161 | 162 | # Mac crap 163 | .DS_Store 164 | -------------------------------------------------------------------------------- /ReadMe.md: -------------------------------------------------------------------------------- 1 | # Sterling NoSQL OODB # 2 | 3 | Sterling is a lightweight NoSQL object-oriented database for .Net 4.5, Windows Store, and Windows Phone 8 that works with your existing class structures. Sterling supports full LINQ to Object queries over keys and indexes for fast retrieval of information from large data sets. 4 | 5 | The goal behind Sterling is to keep it: 6 | - Non-intrusive. You shouldn't have to change your classes just to persist them. (No awkward mapping from a class model to a relational database model). 7 | - Lightweight. As of this writing, the total memory footprint of Sterling is under 100 Kb. No one needs to bloat their project for something as simple as persisting data. 8 | - Flexible. While the core is light, Sterling is designed to handle any serialization task and make it ultra-easy to query databases using LINQ-to-Objects. 9 | - Portable. Sterling runs equally well on the desktop/server .NET 4.5 Framework, Windows Store, and Windows Phone 8. 10 | 11 | Important Note from Jeremy Likness 12 | 13 | Using Sterling comes with a trade-off. This product is maintained by a very small team - mostly Jeremy Likness with some assistance - so there is no guaranteed turnaround time for bug-fixes and there is no support hotline. That is the risk: defects may exist, and there is no guaranteed resolution. The reward is an out-of-the-box tool that makes saving and serializing objects very fast, easy, and straightforward. To further remove any barriers to use, I purposefully make two decisions with this project: first, you have 100% uncompromised access to the source at no cost, and second, you have full rights to take the source, modify it, fix it, or use it however you see fit within your own projects, at your own risk, against with no charge. There is no commercial fee for this project. I hope that this risk/reward model works for you and I also look forward to anyone open to joining our team to help support this product through future releases. 14 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/AsyncLock.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Collections.Generic; 4 | using System.Threading; 5 | using System.Threading.Tasks; 6 | 7 | namespace Wintellect.Sterling.Core 8 | { 9 | // http://blogs.msdn.com/b/pfxteam/archive/2012/02/12/10266983.aspx 10 | internal class AsyncSemaphore 11 | { 12 | private readonly static Task _completed = Task.FromResult( true ); 13 | private readonly Queue> _waiters = new Queue>(); 14 | private int _currentCount; 15 | 16 | public AsyncSemaphore( int initialCount ) 17 | { 18 | if ( initialCount < 0 ) throw new ArgumentOutOfRangeException( "initialCount" ); 19 | _currentCount = initialCount; 20 | } 21 | 22 | public Task WaitAsync() 23 | { 24 | lock ( _waiters ) 25 | { 26 | if ( _currentCount > 0 ) 27 | { 28 | --_currentCount; 29 | return _completed; 30 | } 31 | else 32 | { 33 | var waiter = new TaskCompletionSource(); 34 | _waiters.Enqueue( waiter ); 35 | return waiter.Task; 36 | } 37 | } 38 | } 39 | 40 | public void Release() 41 | { 42 | TaskCompletionSource toRelease = null; 43 | lock ( _waiters ) 44 | { 45 | if ( _waiters.Count > 0 ) 46 | toRelease = _waiters.Dequeue(); 47 | else 48 | ++_currentCount; 49 | } 50 | if ( toRelease != null ) 51 | toRelease.SetResult( true ); 52 | } 53 | } 54 | 55 | // http://blogs.msdn.com/b/pfxteam/archive/2012/02/12/10266988.aspx 56 | internal class AsyncLock 57 | { 58 | private readonly AsyncSemaphore _semaphore; 59 | private readonly Task _releaser; 60 | private readonly Task _reentrantReleaser; 61 | private readonly int _threadId; 62 | 63 | public AsyncLock() 64 | { 65 | _threadId = Environment.CurrentManagedThreadId; 66 | _semaphore = new AsyncSemaphore( 1 ); 67 | _releaser = Task.FromResult( new Releaser( this ) ); 68 | _reentrantReleaser = Task.FromResult( new Releaser() ); 69 | } 70 | 71 | public Task LockAsync() 72 | { 73 | if ( Environment.CurrentManagedThreadId == _threadId ) 74 | { 75 | return _reentrantReleaser; 76 | } 77 | 78 | var wait = _semaphore.WaitAsync(); 79 | 80 | return wait.IsCompleted ? 81 | _releaser : 82 | wait.ContinueWith( ( _, state ) => new Releaser( (AsyncLock) state ), this, CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default ); 83 | } 84 | 85 | public struct Releaser : IDisposable 86 | { 87 | private readonly AsyncLock _toRelease; 88 | 89 | internal Releaser( AsyncLock toRelease ) { _toRelease = toRelease; } 90 | 91 | public void Dispose() 92 | { 93 | if ( _toRelease != null ) 94 | _toRelease._semaphore.Release(); 95 | } 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/CommonAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | using System; 5 | using System.Resources; 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [assembly: AssemblyCompany("Jeremy Likness")] 11 | [assembly: AssemblyProduct("Sterling NoSQL Database")] 12 | [assembly: AssemblyCopyright("Copyright © Jeremy Likness 2010 - 2013")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | [assembly: NeutralResourcesLanguageAttribute("en")] 17 | [assembly: CLSCompliant(true)] 18 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Database/BaseSterlingByteInterceptor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Database 4 | { 5 | public abstract class BaseSterlingByteInterceptor : ISterlingByteInterceptor 6 | { 7 | virtual public byte[] Save(byte[] sourceStream) 8 | { 9 | throw new NotImplementedException(); 10 | } 11 | 12 | virtual public byte[] Load(byte[] sourceStream) 13 | { 14 | throw new NotImplementedException(); 15 | } 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Database/BaseSterlingTrigger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Database 4 | { 5 | /// 6 | /// Base for triggers 7 | /// 8 | /// The type the trigger is for 9 | /// The type of the key 10 | public abstract class BaseSterlingTrigger : ISterlingTrigger where T: class, new() 11 | { 12 | public bool BeforeSave(Type type, object instance) 13 | { 14 | return BeforeSave((T) instance); 15 | } 16 | 17 | public void AfterSave(Type type, object instance) 18 | { 19 | AfterSave((T) instance); 20 | } 21 | 22 | public bool BeforeDelete(Type type, object key) 23 | { 24 | return BeforeDelete((TKey) key); 25 | } 26 | 27 | public abstract bool BeforeSave(T instance); 28 | 29 | public abstract void AfterSave(T instance); 30 | 31 | public abstract bool BeforeDelete(TKey key); 32 | 33 | } 34 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Database/CycleCache.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | namespace Wintellect.Sterling.Core.Database 6 | { 7 | /// 8 | /// Cycle cache for cycle detection 9 | /// 10 | public class CycleCache : List 11 | { 12 | /// 13 | /// Add an item to the cache 14 | /// 15 | /// The type 16 | /// The instance 17 | /// The key 18 | public void Add(Type type, object instance, object key) 19 | { 20 | if (instance == null || key == null) 21 | { 22 | return; 23 | } 24 | 25 | Add(new CycleItem {ClassType = type, Instance = instance, Key = key}); 26 | } 27 | 28 | /// 29 | /// Check for existance based on key and return if there 30 | /// 31 | /// The type 32 | /// The key 33 | /// The cached instance, if it exists 34 | public object CheckKey(Type type, object key) 35 | { 36 | if (key == null) 37 | { 38 | return null; 39 | } 40 | 41 | return (from o in this 42 | where o.ClassType.Equals(type) && key.Equals(o.Key) 43 | select o.Instance).FirstOrDefault(); 44 | } 45 | 46 | /// 47 | /// Check to see if an instance already exists 48 | /// 49 | /// The instance 50 | /// True if it does 51 | public bool Check(object instance) 52 | { 53 | if (instance == null) 54 | { 55 | return false; 56 | } 57 | 58 | return (from o in this 59 | where ReferenceEquals(instance, o.Instance) 60 | select o).Any(); 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Database/CycleItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Database 4 | { 5 | /// 6 | /// Item to help prevent cycle cases 7 | /// 8 | public class CycleItem 9 | { 10 | public Type ClassType { get; set; } 11 | public object Instance { get; set; } 12 | public object Key { get; set; } 13 | 14 | public override bool Equals(object obj) 15 | { 16 | var other = obj as CycleItem; 17 | return other != null && 18 | other.ClassType.Equals(ClassType) && 19 | other.Key.Equals(Key); 20 | 21 | } 22 | 23 | public override int GetHashCode() 24 | { 25 | return string.Format("{0}{1}", ClassType.AssemblyQualifiedName, Key).GetHashCode(); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Database/ITableDefinition.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections; 3 | using System.Collections.Generic; 4 | using System.Threading.Tasks; 5 | using Wintellect.Sterling.Core.Indexes; 6 | using Wintellect.Sterling.Core.Keys; 7 | 8 | namespace Wintellect.Sterling.Core.Database 9 | { 10 | /// 11 | /// Table definnition 12 | /// 13 | public interface ITableDefinition 14 | { 15 | /// 16 | /// Key list 17 | /// 18 | IKeyCollection Keys { get; } 19 | 20 | /// 21 | /// Get a new dictionary (creates the generic) 22 | /// 23 | /// The new dictionary instance 24 | IDictionary GetNewDictionary(); 25 | 26 | /// 27 | /// Indexes 28 | /// 29 | Dictionary Indexes { get; } 30 | 31 | /// 32 | /// Table type 33 | /// 34 | Type TableType { get; } 35 | 36 | /// 37 | /// Key type 38 | /// 39 | Type KeyType { get; } 40 | 41 | /// 42 | /// Refresh key list 43 | /// 44 | Task RefreshAsync(); 45 | 46 | /// 47 | /// Fetch the key for the instance 48 | /// 49 | /// The instance 50 | /// The key 51 | object FetchKeyFromInstance(object instance); 52 | 53 | /// 54 | /// Is the instance dirty? 55 | /// 56 | /// True if dirty 57 | bool IsDirty(object instance); 58 | } 59 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Database/LogManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Wintellect.Sterling.Core.Exceptions; 4 | 5 | namespace Wintellect.Sterling.Core.Database 6 | { 7 | /// 8 | /// Manages the loggers 9 | /// 10 | public class LogManager 11 | { 12 | private object _lock = new object(); 13 | 14 | /// 15 | /// The dictionary of loggers 16 | /// 17 | private readonly Dictionary> _loggers 18 | = new Dictionary>(); 19 | 20 | /// 21 | /// Register a logger 22 | /// 23 | /// The logger to register 24 | /// A unique identifier 25 | public Guid RegisterLogger(Action logger) 26 | { 27 | var identifier = Guid.NewGuid(); 28 | 29 | lock(_lock) 30 | { 31 | _loggers.Add(identifier, logger); 32 | } 33 | 34 | return identifier; 35 | } 36 | 37 | /// 38 | /// Removes a logger 39 | /// 40 | /// The identifier for the logger 41 | public void UnhookLogger(Guid guid) 42 | { 43 | lock(_lock) 44 | { 45 | _loggers.Remove(guid); 46 | } 47 | } 48 | 49 | /// 50 | /// Log an entry 51 | /// 52 | /// The level 53 | /// The message 54 | /// The exception 55 | public void Log(SterlingLogLevel level, string message, Exception exception) 56 | { 57 | lock(_lock) 58 | { 59 | foreach (var key in _loggers.Keys) 60 | { 61 | _loggers[key](level, message, exception); 62 | } 63 | } 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Database/TableTypeResolver.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using Wintellect.Sterling.Core.Exceptions; 5 | 6 | namespace Wintellect.Sterling.Core.Database 7 | { 8 | /// 9 | /// Helper class to resolve the types of elements stored in database tables. 10 | /// 11 | public class TableTypeResolver 12 | { 13 | private List _typeResolvers = new List(); 14 | private Dictionary _resolvedTypes = new Dictionary(); 15 | 16 | public void RegisterTypeResolver(ISterlingTypeResolver interceptor) 17 | { 18 | if (interceptor == null) 19 | { 20 | throw new ArgumentNullException("interceptor"); 21 | } 22 | 23 | if (!_typeResolvers.Contains(interceptor)) 24 | { 25 | _typeResolvers.Add(interceptor); 26 | } 27 | } 28 | 29 | public Type ResolveTableType(string fullTypeName) 30 | { 31 | // TODO: searching for replacement type first makes unit testing possible, but isn't nice design 32 | Type tableType = (ResolveCachedType(fullTypeName) ?? 33 | ResolveReplacementType(fullTypeName) ?? 34 | ResolveOriginalType(fullTypeName)); 35 | 36 | return tableType; 37 | } 38 | 39 | private Type ResolveCachedType(string fullTypeName) 40 | { 41 | Type result; 42 | _resolvedTypes.TryGetValue(fullTypeName, out result); 43 | return result; 44 | } 45 | 46 | private Type ResolveOriginalType(string fullTypeName) 47 | { 48 | Type result = null; 49 | 50 | try 51 | { 52 | result = Type.GetType( fullTypeName, false ); 53 | CacheResolvedType( fullTypeName, result ); 54 | } 55 | //catch (TypeLoadException) { } 56 | //catch (FileLoadException) { } 57 | catch ( Exception ) { } 58 | return result; 59 | } 60 | 61 | private Type ResolveReplacementType(string fullTypeName) 62 | { 63 | Type result = null; 64 | foreach (ISterlingTypeResolver typeResolver in _typeResolvers) 65 | { 66 | result = typeResolver.ResolveTableType(fullTypeName); 67 | if (result != null) 68 | { 69 | CacheResolvedType(fullTypeName, result); 70 | break; 71 | } 72 | } 73 | return result; 74 | } 75 | 76 | private void CacheResolvedType(string fullTypeName, Type resolvedType) 77 | { 78 | if (resolvedType != null) 79 | { 80 | _resolvedTypes[fullTypeName] = resolvedType; 81 | } 82 | } 83 | } 84 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Events/SterlingOperation.cs: -------------------------------------------------------------------------------- 1 | namespace Wintellect.Sterling.Core.Events 2 | { 3 | /// 4 | /// Operation in STerling 5 | /// 6 | public enum SterlingOperation 7 | { 8 | Save, 9 | Load, 10 | Delete, 11 | Flush, 12 | Purge, 13 | Truncate 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Events/SterlingOperationArgs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Events 4 | { 5 | /// 6 | /// Notify arguments when changes happen 7 | /// 8 | public class SterlingOperationArgs : EventArgs 9 | { 10 | public SterlingOperationArgs(SterlingOperation operation, Type targetType, object key) 11 | { 12 | TargetType = targetType; 13 | Operation = operation; 14 | Key = key; 15 | } 16 | 17 | public Type TargetType { get; private set; } 18 | 19 | public object Key { get; private set; } 20 | 21 | public SterlingOperation Operation { get; private set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingActivationException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingActivationException : SterlingException 6 | { 7 | public SterlingActivationException(string operation) : base(string.Format(Exceptions.SterlingActivationException, operation)) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingDatabaseNotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingDatabaseNotFoundException : SterlingException 6 | { 7 | public SterlingDatabaseNotFoundException(string databaseName) 8 | : base(string.Format(Exceptions.SterlingDatabaseNotFoundException, databaseName)) 9 | { 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingDuplicateDatabaseException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingDuplicateDatabaseException : SterlingException 6 | { 7 | public SterlingDuplicateDatabaseException(ISterlingDatabaseInstance instance) : base( 8 | string.Format(Exceptions.SterlingDuplicateDatabaseException, instance.GetType().FullName)) 9 | { 10 | } 11 | 12 | public SterlingDuplicateDatabaseException(Type type) 13 | : base( 14 | string.Format(Exceptions.SterlingDuplicateDatabaseException, type.FullName)) 15 | { 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingDuplicateIndexException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingDuplicateIndexException : SterlingException 6 | { 7 | public SterlingDuplicateIndexException(string indexName, Type type, string databaseName) : 8 | base (string.Format(Exceptions.SterlingDuplicateIndexException, indexName, type.FullName, databaseName)) 9 | { 10 | 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingDuplicateTypeException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingDuplicateTypeException : SterlingException 6 | { 7 | public SterlingDuplicateTypeException(Type type, string databaseName) : 8 | base(string.Format(Exceptions.SterlingDuplicateTypeException, type.FullName, databaseName)) 9 | { 10 | 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | /// 6 | /// Base from which sterling exceptions derived 7 | /// 8 | public class SterlingException : Exception 9 | { 10 | public SterlingException() 11 | { 12 | 13 | } 14 | 15 | public SterlingException(string message) : base(message) 16 | { 17 | 18 | } 19 | 20 | public SterlingException(string message, Exception innerException) : base(message, innerException) 21 | { 22 | 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingIndexNotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingIndexNotFoundException : SterlingException 6 | { 7 | public SterlingIndexNotFoundException(string indexName, Type type) : 8 | base(string.Format(Exceptions.SterlingIndexNotFoundException, indexName, type.FullName)) 9 | { 10 | 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingIsolatedStorageException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingIsolatedStorageException : SterlingException 6 | { 7 | public SterlingIsolatedStorageException(Exception ex) : base(string.Format(Exceptions.SterlingIsolatedStorageException,ex.Message), ex) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingLoggerNotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingLoggerNotFoundException : SterlingException 6 | { 7 | public SterlingLoggerNotFoundException(Guid guid) : base(string.Format(Exceptions.SterlingLoggerNotFoundException, guid)) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingNoTableDefinitionsException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingNoTableDefinitionsException : SterlingException 6 | { 7 | public SterlingNoTableDefinitionsException() : base(Exceptions.SterlingNoTableDefinitionsException) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingNotReadyException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingNotReadyException : SterlingException 6 | { 7 | public SterlingNotReadyException() : base(Exceptions.SterlingNotReadyException) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingNullException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingNullException : SterlingException 6 | { 7 | public SterlingNullException(string property, Type type) : base(string.Format(Exceptions.SterlingNullException, property, type.FullName)) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingSerializerException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Wintellect.Sterling.Core.Serialization; 3 | 4 | namespace Wintellect.Sterling.Core.Exceptions 5 | { 6 | public class SterlingSerializerException : SterlingException 7 | { 8 | public SterlingSerializerException(ISterlingSerializer serializer, Type targetType) : 9 | base(string.Format(Exceptions.SterlingSerializerException, serializer.GetType().FullName, targetType.FullName)) 10 | { 11 | 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingTableNotFoundException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingTableNotFoundException : SterlingException 6 | { 7 | public SterlingTableNotFoundException(Type tableType, string databaseName) 8 | : base(string.Format(Exceptions.SterlingTableNotFoundException, tableType.FullName, databaseName)) 9 | { 10 | } 11 | 12 | public SterlingTableNotFoundException(string typeName, string databaseName) 13 | : base(string.Format(Exceptions.SterlingTableNotFoundException, typeName, databaseName)) 14 | { 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Exceptions/SterlingTriggerException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Exceptions 4 | { 5 | public class SterlingTriggerException : SterlingException 6 | { 7 | public SterlingTriggerException(string message, Type triggerType) : 8 | base(string.Format(Exceptions.SterlingTriggerException_SterlingTriggerException_Sterling_trigger_exception, triggerType.FullName, 9 | message)) 10 | { 11 | 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/ISterlingByteInterceptor.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core 4 | { 5 | /// 6 | /// Byte Interceptor interface 7 | /// 8 | public interface ISterlingByteInterceptor 9 | { 10 | byte[] Save(byte[] sourceStream); 11 | byte[] Load(byte[] sourceStream); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/ISterlingDatabase.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Threading.Tasks; 4 | using Wintellect.Sterling.Core.Database; 5 | using Wintellect.Sterling.Core.Serialization; 6 | 7 | namespace Wintellect.Sterling.Core 8 | { 9 | /// 10 | /// Sterling database interface 11 | /// 12 | public interface ISterlingDatabase 13 | { 14 | SterlingEngine Engine { get; } 15 | 16 | LogManager LogManager { get; } 17 | 18 | /// 19 | /// Backup the database 20 | /// 21 | /// The database type 22 | /// Writer to receive the backup 23 | Task BackupAsync(BinaryWriter writer) where T : BaseDatabaseInstance; 24 | 25 | /// 26 | /// Restore the database 27 | /// 28 | /// The database type 29 | /// The stream providing the backup 30 | Task RestoreAsync(BinaryReader reader) where T : BaseDatabaseInstance; 31 | 32 | /// 33 | /// Register a database type with the system 34 | /// 35 | /// The type of the database to register 36 | /// The name of the database instance 37 | ISterlingDatabaseInstance RegisterDatabase( string instanceName ) where T : BaseDatabaseInstance; 38 | 39 | /// 40 | /// Register a database type with the system 41 | /// 42 | /// The type of the database to register 43 | /// Register with a driver 44 | /// The name of the database instance 45 | ISterlingDatabaseInstance RegisterDatabase( string instanceName ) 46 | where T : BaseDatabaseInstance 47 | where TDriver : ISterlingDriver; 48 | 49 | /// 50 | /// Register a database type with the system 51 | /// 52 | /// The type of the database to register 53 | /// The name of the database instance 54 | /// The storage driver 55 | ISterlingDatabaseInstance RegisterDatabase( string instanceName, ISterlingDriver driver ) 56 | where T : BaseDatabaseInstance; 57 | 58 | 59 | /// 60 | /// Retrieve the database with the name 61 | /// 62 | /// The database name 63 | /// The database instance 64 | ISterlingDatabaseInstance GetDatabase(string databaseName); 65 | 66 | /// 67 | /// Register a serializer with the system 68 | /// 69 | /// The type of the serliaizer 70 | void RegisterSerializer() where T : BaseSerializer; 71 | 72 | /// 73 | /// Register a class responsible for type resolution. 74 | /// 75 | /// The typeResolver 76 | void RegisterTypeResolver(ISterlingTypeResolver typeResolver); 77 | } 78 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/ISterlingLock.cs: -------------------------------------------------------------------------------- 1 | namespace Wintellect.Sterling.Core 2 | { 3 | /// 4 | /// Lock mechanism 5 | /// 6 | public interface ISterlingLock 7 | { 8 | object Lock { get; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/ISterlingPlatformAdapter.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Reflection; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace Wintellect.Sterling.Core 11 | { 12 | public interface ISterlingPlatformAdapter 13 | { 14 | bool IsAssignableFrom( Type target, Type test ); 15 | bool IsSubclassOf( Type target, Type test ); 16 | bool IsEnum( Type target ); 17 | IEnumerable GetFields( Type type ); 18 | IEnumerable GetProperties( Type type ); 19 | MethodInfo GetGetMethod( PropertyInfo property ); 20 | MethodInfo GetSetMethod( PropertyInfo property ); 21 | IEnumerable GetCustomAttributes( Type target, Type attributeType, bool inherit ); 22 | void Sleep( int milliseconds ); 23 | Tuple, Func> GetBitmapSerializer(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/ISterlingPropertyConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core 4 | { 5 | /// 6 | /// Implement this interface when you have renamed a property on one of your serialized classes. 7 | /// Register it by calling RegisterPropertyConverter on your database. 8 | /// 9 | public interface ISterlingPropertyConverter 10 | { 11 | /// 12 | /// Returns the type this converter can convert properties for. 13 | /// 14 | /// A System.Type. 15 | Type IsConverterFor(); 16 | 17 | /// 18 | /// Sets the new property of the given instance to the given value. 19 | /// 20 | /// The instance 21 | /// The old property name 22 | /// The value 23 | void SetValue(object instance, string oldPropertyName, object value); 24 | } 25 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/ISterlingTrigger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core 4 | { 5 | /// 6 | /// Interface for a sterling trigger 7 | /// 8 | internal interface ISterlingTrigger 9 | { 10 | bool BeforeSave(Type type, object instance); 11 | void AfterSave(Type type, object instance); 12 | bool BeforeDelete(Type type, object key); 13 | } 14 | 15 | /// 16 | /// Trigger for sterling 17 | /// 18 | /// The type it supports 19 | /// The key 20 | internal interface ISterlingTrigger : ISterlingTrigger where T: class, new() 21 | { 22 | bool BeforeSave(T instance); 23 | void AfterSave(T instance); 24 | bool BeforeDelete(TKey key); 25 | } 26 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/ISterlingTypeResolver.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core 4 | { 5 | /// 6 | /// Implement this interface when you're application will be updated. Typenames might have changed and with this interface, you can return the correct 7 | /// type for a given type name. Register your resolver by calling RegisterTypeResolver on your database. 8 | /// 9 | public interface ISterlingTypeResolver 10 | { 11 | Type ResolveTableType(string fullTypeName); 12 | } 13 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Indexes/IIndexCollection.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | namespace Wintellect.Sterling.Core.Indexes 3 | { 4 | /// 5 | /// Index collection interface 6 | /// 7 | public interface IIndexCollection 8 | { 9 | /// 10 | /// Serialize 11 | /// 12 | Task FlushAsync(); 13 | 14 | /// 15 | /// Refresh the list 16 | /// 17 | Task RefreshAsync(); 18 | 19 | /// 20 | /// Truncate index 21 | /// 22 | Task TruncateAsync(); 23 | 24 | /// 25 | /// Add an index to the list 26 | /// 27 | /// The instance 28 | /// The related key 29 | Task AddIndexAsync(object instance, object key); 30 | 31 | /// 32 | /// Update the index 33 | /// 34 | /// The instance 35 | /// The key 36 | Task UpdateIndexAsync(object instance, object key); 37 | 38 | /// 39 | /// Remove an index from the list 40 | /// 41 | /// The key 42 | Task RemoveIndexAsync(object key); 43 | } 44 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Indexes/IndexCollection2.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | 6 | namespace Wintellect.Sterling.Core.Indexes 7 | { 8 | /// 9 | /// Collection of keys for a given entity 10 | /// 11 | internal class IndexCollection : IndexCollection, TKey> 12 | where T : class, new() 13 | { 14 | /// 15 | /// Initialize the key collection 16 | /// 17 | /// Index name 18 | /// Sterling driver 19 | /// How to resolve the index 20 | /// The resolver for loading the object 21 | public IndexCollection(string name, ISterlingDriver driver, 22 | Func> indexer, Func resolver) 23 | : base(name, driver, indexer, resolver) 24 | { 25 | IsTuple = true; 26 | } 27 | 28 | /// 29 | /// Deserialize the indexes 30 | /// 31 | protected override async Task DeserializeIndexesAsync() 32 | { 33 | IndexList.Clear(); 34 | 35 | var indexes = await Driver.DeserializeIndexAsync( typeof( T ), Name ).ConfigureAwait( false ); 36 | 37 | foreach ( var index in indexes ?? new Dictionary>() ) 38 | { 39 | IndexList.Add( new TableIndex( index.Value.Item1, index.Value.Item2, index.Key, Resolver ) ); 40 | } 41 | } 42 | 43 | /// 44 | /// Serializes the key list 45 | /// 46 | protected override async Task SerializeIndexesAsync() 47 | { 48 | var dictionary = IndexList.ToDictionary( item => item.Key, item => Tuple.Create( item.Index.Item1, item.Index.Item2 ) ); 49 | 50 | await Driver.SerializeIndexAsync( typeof( T ), Name, dictionary ).ConfigureAwait( false ); 51 | } 52 | 53 | 54 | /// 55 | /// Add an index to the list 56 | /// 57 | /// The second index 58 | /// The related key 59 | /// The first index 60 | public async Task AddIndexAsync(object index1, object index2, object key) 61 | { 62 | var newIndex = new TableIndex( (TIndex1) index1, (TIndex2) index2, (TKey) key, 63 | Resolver ); 64 | 65 | await AddIndexAsync( newIndex, key ).ConfigureAwait( false ); 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Indexes/TableIndex2.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Indexes 4 | { 5 | /// 6 | /// An individual table key 7 | /// 8 | /// The class the key maps to 9 | /// The type of the index 10 | /// The type of the second index 11 | /// The type of the key 12 | public class TableIndex : TableIndex,TKey> where T : class, new() 13 | { 14 | /// 15 | /// Index 16 | /// 17 | public TIndex1 Index1 { get; private set; } 18 | 19 | /// 20 | /// Second index 21 | /// 22 | public TIndex2 Index2 { get; private set;} 23 | 24 | //// The getter 25 | /// 26 | /// Construct with how to get the key 27 | /// 28 | /// Value of the second index 29 | /// The associated key with the index 30 | /// Getter method for loading an instance 31 | /// Value of the first index 32 | internal TableIndex(TIndex1 index1, TIndex2 index2, TKey key, Func getter) : base(Tuple.Create(index1,index2), key, getter) 33 | { 34 | Index1 = index1; 35 | Index2 = index2; 36 | } 37 | 38 | internal TableIndex(TableIndex, TKey> baseIndex, Func getter) : base(baseIndex.Index, baseIndex.Key, getter) 39 | { 40 | } 41 | 42 | /// 43 | /// To string 44 | /// 45 | /// The key 46 | public override string ToString() 47 | { 48 | return string.Format("Index: [{0}][{1},{2}]={3},{4}", typeof(T).FullName, typeof(TIndex1).FullName, typeof(TIndex2).FullName, Index1, Index2); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Keys/IKeyCollection.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | namespace Wintellect.Sterling.Core.Keys 3 | { 4 | /// 5 | /// Key collection interface 6 | /// 7 | public interface IKeyCollection 8 | { 9 | /// 10 | /// Serialize 11 | /// 12 | Task FlushAsync(); 13 | 14 | /// 15 | /// Get the index for a key 16 | /// 17 | /// The key 18 | /// The index 19 | Task GetIndexForKeyAsync(object key); 20 | 21 | /// 22 | /// Refresh the list 23 | /// 24 | Task RefreshAsync(); 25 | 26 | /// 27 | /// Truncate the collection 28 | /// 29 | Task TruncateAsync(); 30 | 31 | /// 32 | /// Add a key to the list 33 | /// 34 | /// The key 35 | Task AddKeyAsync(object key); 36 | 37 | /// 38 | /// Remove a key from the list 39 | /// 40 | /// The key 41 | Task RemoveKeyAsync(object key); 42 | } 43 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Keys/TableKey.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Keys 4 | { 5 | /// 6 | /// An individual table key 7 | /// 8 | /// The class the key maps to 9 | /// The type of the key 10 | public class TableKey where T: class, new() 11 | { 12 | private readonly Func _getter; 13 | private readonly int _hashCode; 14 | 15 | /// 16 | /// Construct with how to get the key 17 | /// 18 | /// The key 19 | /// The getter 20 | public TableKey(TKey key, Func getter) 21 | { 22 | Key = key; 23 | _hashCode = key.GetHashCode(); 24 | _getter = getter; 25 | LazyValue = new Lazy( () => _getter(Key) ); 26 | } 27 | 28 | /// 29 | /// Key 30 | /// 31 | public TKey Key { get; private set; } 32 | 33 | /// 34 | /// Entity the key points to 35 | /// 36 | public Lazy LazyValue { get; private set; } 37 | 38 | /// 39 | /// Refresh the lazy value 40 | /// 41 | public void Refresh() 42 | { 43 | LazyValue = new Lazy(() => _getter(Key)); 44 | } 45 | 46 | /// 47 | /// Compares for equality 48 | /// 49 | /// The object 50 | /// True if equal 51 | public override bool Equals(object obj) 52 | { 53 | return obj.GetHashCode() == _hashCode && ((TableKey) obj).Key.Equals(Key); 54 | } 55 | 56 | /// 57 | /// Hash code 58 | /// 59 | /// The has code of the key 60 | public override int GetHashCode() 61 | { 62 | return _hashCode; 63 | } 64 | 65 | /// 66 | /// To string 67 | /// 68 | /// The key 69 | public override string ToString() 70 | { 71 | return string.Format("Key: [{0}][{1}]={2}", typeof (T).FullName, typeof (TKey).FullName, Key); 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Resources; 4 | using System.Reflection; 5 | using System.Runtime.CompilerServices; 6 | using System.Runtime.InteropServices; 7 | 8 | [assembly: AssemblyTitle( "Wintellect.Sterling.Core" )] 9 | [assembly: AssemblyDescription( "Sterling NoSQL Database Core Components" )] 10 | [assembly: AssemblyConfiguration( "" )] 11 | 12 | [assembly: InternalsVisibleTo( "Wintellect.Sterling.Server, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a3b45c0ad256fd762ab7c2ff33a1b6ff2cde6292ea34689af322868b0ca96e85fabc3b565c2df4d44417dabddcf0b4872f38accd4045469f36dd176312472d2d26f91e0258008e5c5a8ff790d3afb505ea7562077002a5d196e180cc8de708862d236f2e5edb9dfe2ca637267a4a9b157dce0c461dc9d794eb89ac3fcaeadfe8" )] 13 | [assembly: InternalsVisibleTo( "Wintellect.Sterling.Server.Azure, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a3b45c0ad256fd762ab7c2ff33a1b6ff2cde6292ea34689af322868b0ca96e85fabc3b565c2df4d44417dabddcf0b4872f38accd4045469f36dd176312472d2d26f91e0258008e5c5a8ff790d3afb505ea7562077002a5d196e180cc8de708862d236f2e5edb9dfe2ca637267a4a9b157dce0c461dc9d794eb89ac3fcaeadfe8" )] 14 | [assembly: InternalsVisibleTo( "Wintellect.Sterling.Server.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a3b45c0ad256fd762ab7c2ff33a1b6ff2cde6292ea34689af322868b0ca96e85fabc3b565c2df4d44417dabddcf0b4872f38accd4045469f36dd176312472d2d26f91e0258008e5c5a8ff790d3afb505ea7562077002a5d196e180cc8de708862d236f2e5edb9dfe2ca637267a4a9b157dce0c461dc9d794eb89ac3fcaeadfe8" )] 15 | [assembly: InternalsVisibleTo( "Wintellect.Sterling.WinRT, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a3b45c0ad256fd762ab7c2ff33a1b6ff2cde6292ea34689af322868b0ca96e85fabc3b565c2df4d44417dabddcf0b4872f38accd4045469f36dd176312472d2d26f91e0258008e5c5a8ff790d3afb505ea7562077002a5d196e180cc8de708862d236f2e5edb9dfe2ca637267a4a9b157dce0c461dc9d794eb89ac3fcaeadfe8" )] 16 | [assembly: InternalsVisibleTo( "Wintellect.Sterling.WinRT.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a3b45c0ad256fd762ab7c2ff33a1b6ff2cde6292ea34689af322868b0ca96e85fabc3b565c2df4d44417dabddcf0b4872f38accd4045469f36dd176312472d2d26f91e0258008e5c5a8ff790d3afb505ea7562077002a5d196e180cc8de708862d236f2e5edb9dfe2ca637267a4a9b157dce0c461dc9d794eb89ac3fcaeadfe8" )] 17 | [assembly: InternalsVisibleTo( "Wintellect.Sterling.WP8, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a3b45c0ad256fd762ab7c2ff33a1b6ff2cde6292ea34689af322868b0ca96e85fabc3b565c2df4d44417dabddcf0b4872f38accd4045469f36dd176312472d2d26f91e0258008e5c5a8ff790d3afb505ea7562077002a5d196e180cc8de708862d236f2e5edb9dfe2ca637267a4a9b157dce0c461dc9d794eb89ac3fcaeadfe8" )] 18 | [assembly: InternalsVisibleTo( "Wintellect.Sterling.WP8.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a3b45c0ad256fd762ab7c2ff33a1b6ff2cde6292ea34689af322868b0ca96e85fabc3b565c2df4d44417dabddcf0b4872f38accd4045469f36dd176312472d2d26f91e0258008e5c5a8ff790d3afb505ea7562077002a5d196e180cc8de708862d236f2e5edb9dfe2ca637267a4a9b157dce0c461dc9d794eb89ac3fcaeadfe8" )] 19 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Serialization/BaseSerializer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace Wintellect.Sterling.Core.Serialization 5 | { 6 | public abstract class BaseSerializer : ISterlingSerializer 7 | { 8 | /// 9 | /// Return true if this serializer can handle the object 10 | /// 11 | /// The target 12 | /// True if it can be serialized 13 | public abstract bool CanSerialize(Type targetType); 14 | 15 | /// 16 | /// Serialize the object 17 | /// 18 | /// The target 19 | /// The writer 20 | public abstract void Serialize(object target, BinaryWriter writer); 21 | 22 | /// 23 | /// Deserialize the object 24 | /// 25 | /// The type of the object 26 | /// A reader to deserialize from 27 | /// The deserialized object 28 | public abstract object Deserialize(Type type, BinaryReader reader); 29 | 30 | /// 31 | /// Return true 32 | /// 33 | /// The type 34 | /// True if it can handle it 35 | public bool CanSerialize() 36 | { 37 | return CanSerialize(typeof (T)); 38 | } 39 | 40 | /// 41 | /// Typed deserialization 42 | /// 43 | /// The type 44 | /// The reader 45 | /// The type 46 | public T Deserialize(BinaryReader reader) 47 | { 48 | return (T)Deserialize(typeof (T), reader); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Serialization/ISterlingSerializer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | 4 | namespace Wintellect.Sterling.Core.Serialization 5 | { 6 | /// 7 | /// Serializer for sterling 8 | /// 9 | public interface ISterlingSerializer 10 | { 11 | /// 12 | /// Return true if this serializer can handle the object 13 | /// 14 | /// The target 15 | /// True if it can be serialized 16 | bool CanSerialize(Type targetType); 17 | 18 | /// 19 | /// Serialize the object 20 | /// 21 | /// The target 22 | /// The writer 23 | void Serialize(object target, BinaryWriter writer); 24 | 25 | /// 26 | /// Deserialize the object 27 | /// 28 | /// The type of the object 29 | /// A reader to deserialize from 30 | /// The deserialized object 31 | object Deserialize(Type type, BinaryReader reader); 32 | 33 | /// 34 | /// Return true 35 | /// 36 | /// The type 37 | /// True if it can handle it 38 | bool CanSerialize(); 39 | 40 | /// 41 | /// Typed deserialization 42 | /// 43 | /// The type 44 | /// The reader 45 | /// The type 46 | T Deserialize(BinaryReader reader); 47 | } 48 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Serialization/SerializationCache.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Serialization 4 | { 5 | /// 6 | /// Cache for serialization of properties 7 | /// 8 | internal class SerializationCache 9 | { 10 | public SerializationCache(Type propertyType, string propertyName, 11 | Action setter, Func getter) 12 | { 13 | PropType = propertyType; 14 | SetMethod = setter; 15 | GetMethod = getter; 16 | PropertyName = propertyName; 17 | } 18 | 19 | /// 20 | /// Property type 21 | /// 22 | public Type PropType { get; private set; } 23 | 24 | /// 25 | /// The setter for the type 26 | /// 27 | public Action SetMethod { get; private set; } 28 | 29 | /// 30 | /// The getter for the type 31 | /// 32 | public Func GetMethod { get; private set; } 33 | 34 | /// 35 | /// The name of the property. 36 | /// 37 | public string PropertyName { get; private set; } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Serialization/SterlingIgnoreAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Core.Serialization 4 | { 5 | /// 6 | /// Attribute to tag a property, class, etc. that should not be serialized 7 | /// 8 | [AttributeUsage(AttributeTargets.Property | AttributeTargets.Class | AttributeTargets.Field | AttributeTargets.Enum | AttributeTargets.Struct, AllowMultiple = false)] 9 | public class SterlingIgnoreAttribute : Attribute 10 | { 11 | 12 | } 13 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/SterlingDefaultLogger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Diagnostics; 3 | using System.Text; 4 | 5 | namespace Wintellect.Sterling.Core 6 | { 7 | /// 8 | /// Default logger (debug) for Sterling 9 | /// 10 | public class SterlingDefaultLogger 11 | { 12 | private Guid _guid = Guid.Empty; 13 | private readonly SterlingLogLevel _minimumLevel; 14 | private readonly ISterlingDatabase _database; 15 | 16 | /// 17 | /// Create 18 | /// 19 | /// Minimum level to debug 20 | public SterlingDefaultLogger( ISterlingDatabase database, SterlingLogLevel minimumLevel) 21 | { 22 | _database = database; 23 | _minimumLevel = minimumLevel; 24 | 25 | if (Debugger.IsAttached) 26 | { 27 | _guid = _database.LogManager.RegisterLogger(_Log); 28 | } 29 | } 30 | 31 | /// 32 | /// Detach the logger 33 | /// 34 | public void Detach() 35 | { 36 | if (!_guid.Equals(Guid.Empty)) 37 | { 38 | _database.LogManager.UnhookLogger(_guid); 39 | } 40 | } 41 | 42 | /// 43 | /// 44 | /// 45 | /// 46 | /// 47 | /// 48 | private void _Log(SterlingLogLevel logLevel, string message, Exception exception) 49 | { 50 | if (!Debugger.IsAttached || (int) logLevel < (int) _minimumLevel) return; 51 | 52 | var sb = new StringBuilder(string.Format("{0}::Sterling::{1}::{2}", 53 | DateTime.Now, 54 | logLevel, 55 | message)); 56 | 57 | var local = exception; 58 | 59 | while (local != null) 60 | { 61 | sb.Append(local); 62 | local = local.InnerException; 63 | } 64 | 65 | Debug.WriteLine(sb.ToString()); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/SterlingEngine.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using Wintellect.Sterling.Core.Database; 4 | 5 | namespace Wintellect.Sterling.Core 6 | { 7 | /// 8 | /// Wrapper for the sterling database engine 9 | /// 10 | public class SterlingEngine : IDisposable 11 | { 12 | private Lazy _database = null; 13 | 14 | /// 15 | /// The database engine 16 | /// 17 | public ISterlingDatabase SterlingDatabase 18 | { 19 | get { return _database.Value; } 20 | } 21 | 22 | public ISterlingPlatformAdapter PlatformAdapter { get; private set; } 23 | 24 | public void Reset() 25 | { 26 | _database = new Lazy( () => new SterlingDatabase( this ) ); 27 | } 28 | 29 | /// 30 | /// Constructor takes in the database 31 | /// 32 | public SterlingEngine( ISterlingPlatformAdapter platform ) 33 | { 34 | this.PlatformAdapter = platform; 35 | _database = new Lazy( () => new SterlingDatabase( this ) ); 36 | } 37 | 38 | public void Activate() 39 | { 40 | _database.Value.Activate(); 41 | } 42 | 43 | /// 44 | /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. 45 | /// 46 | public void Dispose() 47 | { 48 | _database.Value.Deactivate(); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/SterlingFactory.cs: -------------------------------------------------------------------------------- 1 | using Wintellect.Sterling.Core.Database; 2 | 3 | namespace Wintellect.Sterling.Core 4 | { 5 | /// 6 | /// Factory to retrieve the sterling manager 7 | /// 8 | internal static class SterlingFactory 9 | { 10 | /// 11 | /// Instance of the database 12 | /// 13 | private static ISterlingDatabase _database; 14 | 15 | /// 16 | /// The log manager 17 | /// 18 | private static LogManager _logManager; 19 | 20 | static SterlingFactory() 21 | { 22 | Initialize(); 23 | } 24 | 25 | internal static void Initialize() 26 | { 27 | _logManager = new LogManager(); 28 | _database = new SterlingDatabase(_logManager); 29 | } 30 | 31 | /// 32 | /// Gets the database engine 33 | /// 34 | /// The instance of the database engine 35 | public static ISterlingDatabase GetDatabaseEngine() 36 | { 37 | return _database; 38 | } 39 | 40 | /// 41 | /// Logger 42 | /// 43 | /// The logger 44 | internal static LogManager GetLogger() 45 | { 46 | return _logManager; 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/SterlingLicense.txt: -------------------------------------------------------------------------------- 1 | For the latest version of Sterling, visit: 2 | 3 | http://sterling.codeplex.com/ 4 | 5 | Sterling is licensed under the following agreement: 6 | 7 | Microsoft Public License (Ms-PL) 8 | 9 | This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software. 10 | 11 | 1. Definitions 12 | 13 | The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law. 14 | 15 | A "contribution" is the original software, or any additions or changes to the software. 16 | 17 | A "contributor" is any person that distributes its contribution under this license. 18 | 19 | "Licensed patents" are a contributor's patent claims that read directly on its contribution. 20 | 21 | 2. Grant of Rights 22 | 23 | (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create. 24 | 25 | (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software. 26 | 27 | 3. Conditions and Limitations 28 | 29 | (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks. 30 | 31 | (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically. 32 | 33 | (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software. 34 | 35 | (D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license. 36 | 37 | (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement. -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/SterlingLogLevel.cs: -------------------------------------------------------------------------------- 1 | namespace Wintellect.Sterling.Core 2 | { 3 | /// 4 | /// Log levels for sterling 5 | /// 6 | public enum SterlingLogLevel 7 | { 8 | Verbose, 9 | Information, 10 | Warning, 11 | Error, 12 | Critical 13 | } 14 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/VersionInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Version information for an assembly consists of the following four values: 6 | // 7 | // Major Version 8 | // Minor Version 9 | // Build Number 10 | // Revision 11 | // 12 | // You can specify all the values or you can default the Revision and Build Numbers 13 | // by using the '*' as shown below: 14 | [assembly: AssemblyVersion("2.0.0.0")] 15 | [assembly: AssemblyFileVersion("2.0.0.0")] 16 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Core/Wintellect.Sterling.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Core/Wintellect.Sterling.snk -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Azure/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Resources; 4 | using System.Reflection; 5 | using System.Runtime.CompilerServices; 6 | using System.Runtime.InteropServices; 7 | 8 | [assembly: AssemblyTitle( "Wintellect.Sterling.Server" )] 9 | [assembly: AssemblyDescription( "Sterling NoSQL Database .NET 4.5 Edition" )] 10 | [assembly: AssemblyConfiguration( "" )] 11 | 12 | [assembly: InternalsVisibleTo( "Wintellect.Sterling.Server.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a3b45c0ad256fd762ab7c2ff33a1b6ff2cde6292ea34689af322868b0ca96e85fabc3b565c2df4d44417dabddcf0b4872f38accd4045469f36dd176312472d2d26f91e0258008e5c5a8ff790d3afb505ea7562077002a5d196e180cc8de708862d236f2e5edb9dfe2ca637267a4a9b157dce0c461dc9d794eb89ac3fcaeadfe8" )] 13 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Azure/TableStorage/Lock.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | 6 | using Wintellect.Sterling.Core; 7 | 8 | namespace Wintellect.Sterling.Server.Azure.TableStorage 9 | { 10 | internal static class Lock 11 | { 12 | private static readonly Dictionary _pathLocks = new Dictionary(); 13 | 14 | public static AsyncLock GetLock( string path ) 15 | { 16 | var hash = path.GetHashCode(); 17 | 18 | lock ( _pathLocks ) 19 | { 20 | AsyncLock aLock = null; 21 | 22 | if ( _pathLocks.TryGetValue( hash, out aLock ) == false ) 23 | { 24 | aLock = _pathLocks[ hash ] = new AsyncLock(); 25 | } 26 | 27 | return aLock; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Azure/TableStorage/SterlingFileSystemException.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | using Wintellect.Sterling.Core.Exceptions; 4 | 5 | namespace Wintellect.Sterling.Server.Azure.TableStorage 6 | { 7 | public class SterlingFileSystemException : SterlingException 8 | { 9 | public SterlingFileSystemException(Exception ex) : base(string.Format("An exception occurred accessing the file system: {0}", ex), ex) 10 | { 11 | 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Azure/Wintellect.Sterling.Server.Azure.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wintellect.Sterling.Server.Azure", "Wintellect.Sterling.Server.Azure.csproj", "{E0783B3C-E09B-437F-B9DE-29E45ACCDF55}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Any CPU = Debug|Any CPU 9 | Release|Any CPU = Release|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {E0783B3C-E09B-437F-B9DE-29E45ACCDF55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {E0783B3C-E09B-437F-B9DE-29E45ACCDF55}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {E0783B3C-E09B-437F-B9DE-29E45ACCDF55}.Release|Any CPU.ActiveCfg = Release|Any CPU 15 | {E0783B3C-E09B-437F-B9DE-29E45ACCDF55}.Release|Any CPU.Build.0 = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Azure/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Database/TestField.cs: -------------------------------------------------------------------------------- 1 | 2 | #if NETFX_CORE 3 | using Wintellect.Sterling.WinRT.WindowsStorage; 4 | using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 5 | #elif SILVERLIGHT 6 | using Microsoft.Phone.Testing; 7 | using Wintellect.Sterling.WP8.IsolatedStorage; 8 | using Microsoft.VisualStudio.TestTools.UnitTesting; 9 | #else 10 | using Wintellect.Sterling.Server.FileSystem; 11 | using Microsoft.VisualStudio.TestTools.UnitTesting; 12 | #endif 13 | 14 | using Wintellect.Sterling.Core; 15 | using Wintellect.Sterling.Core.Database; 16 | 17 | namespace Wintellect.Sterling.Test.Database 18 | { 19 | public class TestObjectField 20 | { 21 | public int Key; 22 | public string Data; 23 | } 24 | 25 | public class TestObjectFieldDatabase : BaseDatabaseInstance 26 | { 27 | protected override System.Collections.Generic.List RegisterTables() 28 | { 29 | return new System.Collections.Generic.List 30 | { 31 | CreateTableDefinition(dataDefinition => dataDefinition.Key) 32 | }; 33 | } 34 | } 35 | 36 | #if SILVERLIGHT 37 | [Tag("Field")] 38 | [Tag("Database")] 39 | #endif 40 | [TestClass] 41 | public class TestFieldAltDriver : TestField 42 | { 43 | protected override ISterlingDriver GetDriver() 44 | { 45 | #if NETFX_CORE 46 | return new WindowsStorageDriver(); 47 | #elif SILVERLIGHT 48 | return new IsolatedStorageDriver(); 49 | #elif AZURE_DRIVER 50 | return new Wintellect.Sterling.Server.Azure.TableStorage.Driver(); 51 | #else 52 | return new FileSystemDriver(); 53 | #endif 54 | } 55 | } 56 | 57 | #if SILVERLIGHT 58 | [Tag("Field")] 59 | [Tag("Database")] 60 | #endif 61 | [TestClass] 62 | public class TestField : TestBase 63 | { 64 | private SterlingEngine _engine; 65 | private ISterlingDatabaseInstance _databaseInstance; 66 | 67 | public TestContext TestContext { get; set; } 68 | 69 | [TestInitialize] 70 | public void TestInit() 71 | { 72 | _engine = Factory.NewEngine(); 73 | _engine.Activate(); 74 | _databaseInstance = _engine.SterlingDatabase.RegisterDatabase( TestContext.TestName, GetDriver() ); 75 | _databaseInstance.PurgeAsync().Wait(); 76 | } 77 | 78 | [TestMethod] 79 | public void TestData() 80 | { 81 | var testNull = new TestObjectField {Key = 1, Data = "data"}; 82 | 83 | _databaseInstance.SaveAsync( testNull ).Wait(); 84 | 85 | var loadedTestNull = _databaseInstance.LoadAsync( 1 ).Result; 86 | 87 | // The values in the deserialized class should be populated. 88 | Assert.IsNotNull(loadedTestNull); 89 | Assert.IsNotNull(loadedTestNull.Data); 90 | Assert.IsNotNull(loadedTestNull.Key); 91 | } 92 | 93 | [TestCleanup] 94 | public void TestCleanup() 95 | { 96 | _databaseInstance.PurgeAsync().Wait(); 97 | _engine.Dispose(); 98 | _databaseInstance = null; 99 | } 100 | 101 | } 102 | 103 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Database/TestPurge.cs: -------------------------------------------------------------------------------- 1 | 2 | #if NETFX_CORE 3 | using Wintellect.Sterling.WinRT.WindowsStorage; 4 | using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 5 | #elif SILVERLIGHT 6 | using Microsoft.Phone.Testing; 7 | using Wintellect.Sterling.WP8.IsolatedStorage; 8 | using Microsoft.VisualStudio.TestTools.UnitTesting; 9 | #else 10 | using Wintellect.Sterling.Server.FileSystem; 11 | using Microsoft.VisualStudio.TestTools.UnitTesting; 12 | #endif 13 | 14 | using System.Linq; 15 | 16 | using Wintellect.Sterling.Core; 17 | using Wintellect.Sterling.Test.Helpers; 18 | 19 | namespace Wintellect.Sterling.Test.Database 20 | { 21 | #if SILVERLIGHT 22 | [Tag("Purge")] 23 | #endif 24 | [TestClass] 25 | public class TestPurgeAltDriver : TestPurge 26 | { 27 | protected override ISterlingDriver GetDriver() 28 | { 29 | #if NETFX_CORE 30 | return new WindowsStorageDriver(); 31 | #elif SILVERLIGHT 32 | return new IsolatedStorageDriver(); 33 | #elif AZURE_DRIVER 34 | return new Wintellect.Sterling.Server.Azure.TableStorage.Driver(); 35 | #else 36 | return new FileSystemDriver(); 37 | #endif 38 | } 39 | } 40 | 41 | #if SILVERLIGHT 42 | [Tag("Purge")] 43 | #endif 44 | [TestClass] 45 | public class TestPurge : TestBase 46 | { 47 | private SterlingEngine _engine; 48 | private ISterlingDatabaseInstance _databaseInstance; 49 | 50 | public TestContext TestContext { get; set; } 51 | 52 | [TestInitialize] 53 | public void TestInit() 54 | { 55 | _engine = Factory.NewEngine(); 56 | _engine.Activate(); 57 | _databaseInstance = _engine.SterlingDatabase.RegisterDatabase( TestContext.TestName, GetDriver() ); 58 | } 59 | 60 | [TestCleanup] 61 | public void TestCleanup() 62 | { 63 | _databaseInstance.PurgeAsync().Wait(); 64 | _engine.Dispose(); 65 | _databaseInstance = null; 66 | } 67 | 68 | [TestMethod] 69 | public void TestPurgeAction() 70 | { 71 | // save a few objects 72 | var sample = TestModel.MakeTestModel(); 73 | _databaseInstance.SaveAsync( sample ).Wait(); 74 | _databaseInstance.SaveAsync( TestModel.MakeTestModel() ).Wait(); 75 | _databaseInstance.SaveAsync( TestModel.MakeTestModel() ).Wait(); 76 | 77 | _databaseInstance.PurgeAsync().Wait(); 78 | 79 | // query should be empty 80 | Assert.IsFalse(_databaseInstance.Query().Any(), "Purge failed: key list still exists."); 81 | 82 | // load should be empty 83 | var actual = _databaseInstance.LoadAsync( sample.Key ).Result; 84 | 85 | Assert.IsNull(actual, "Purge failed: was able to load item."); 86 | } 87 | } 88 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Database/TestRegistration.cs: -------------------------------------------------------------------------------- 1 | #if SILVERLIGHT 2 | using Microsoft.Phone.Testing; 3 | #endif 4 | #if NETFX_CORE 5 | using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 6 | #else 7 | using Microsoft.VisualStudio.TestTools.UnitTesting; 8 | #endif 9 | using Wintellect.Sterling.Core; 10 | using Wintellect.Sterling.Core.Exceptions; 11 | using Wintellect.Sterling.Test.Helpers; 12 | 13 | namespace Wintellect.Sterling.Test.Database 14 | { 15 | #if SILVERLIGHT 16 | [Tag("DatabaseRegistration")] 17 | #endif 18 | [TestClass] 19 | public class TestRegistration 20 | { 21 | [TestMethod] 22 | public void TestDatabaseRegistration() 23 | { 24 | using (var engine = Factory.NewEngine()) 25 | { 26 | var db = engine.SterlingDatabase; 27 | 28 | // test not activated yet 29 | var raiseError = false; 30 | 31 | try 32 | { 33 | db.RegisterDatabase( "register" ); 34 | } 35 | catch(SterlingNotReadyException) 36 | { 37 | raiseError = true; 38 | } 39 | 40 | Assert.IsTrue(raiseError, "Sterling did not throw activation error."); 41 | 42 | engine.Activate(); 43 | 44 | var testDb2 = db.RegisterDatabase( "register" ); 45 | 46 | Assert.IsNotNull(testDb2, "Database registration returned null."); 47 | Assert.IsInstanceOfType(testDb2, typeof(TestDatabaseInstance), "Incorrect database type returned."); 48 | 49 | Assert.AreEqual("register", testDb2.Name, "Incorrect database name."); 50 | 51 | // test bad database (no table definitions) 52 | raiseError = false; 53 | 54 | try 55 | { 56 | db.RegisterDatabase( "register" ); 57 | } 58 | catch (SterlingDuplicateTypeException) 59 | { 60 | raiseError = true; 61 | } 62 | 63 | Assert.IsTrue(raiseError, "Sterling did not catch the duplicate type registration."); 64 | } 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Database/TestSerializers.cs: -------------------------------------------------------------------------------- 1 |  2 | #if NETFX_CORE 3 | using Wintellect.Sterling.WinRT.WindowsStorage; 4 | using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 5 | #elif SILVERLIGHT 6 | using Microsoft.Phone.Testing; 7 | using Wintellect.Sterling.WP8.IsolatedStorage; 8 | using Microsoft.VisualStudio.TestTools.UnitTesting; 9 | #else 10 | using Wintellect.Sterling.Server.FileSystem; 11 | using Microsoft.VisualStudio.TestTools.UnitTesting; 12 | #endif 13 | 14 | using Wintellect.Sterling.Core; 15 | using Wintellect.Sterling.Test.Helpers; 16 | 17 | namespace Wintellect.Sterling.Test.Database 18 | { 19 | #if SILVERLIGHT 20 | [Tag("Serializers")] 21 | #endif 22 | [TestClass] 23 | public class TestSerializersAltDriver : TestSerializers 24 | { 25 | protected override ISterlingDriver GetDriver() 26 | { 27 | #if NETFX_CORE 28 | return new WindowsStorageDriver(); 29 | #elif SILVERLIGHT 30 | return new IsolatedStorageDriver(); 31 | #elif AZURE_DRIVER 32 | return new Wintellect.Sterling.Server.Azure.TableStorage.Driver(); 33 | #else 34 | return new FileSystemDriver(); 35 | #endif 36 | } 37 | } 38 | 39 | #if SILVERLIGHT 40 | [Tag("Serializers")] 41 | #endif 42 | [TestClass] 43 | public class TestSerializers : TestBase 44 | { 45 | private SterlingEngine _engine; 46 | private ISterlingDatabaseInstance _databaseInstance; 47 | 48 | public TestContext TestContext { get; set; } 49 | 50 | [TestInitialize] 51 | public void TestInit() 52 | { 53 | _engine = Factory.NewEngine(); 54 | _engine.SterlingDatabase.RegisterSerializer(); 55 | _engine.Activate(); 56 | _databaseInstance = _engine.SterlingDatabase.RegisterDatabase( TestContext.TestName, GetDriver() ); 57 | } 58 | 59 | [TestCleanup] 60 | public void TestCleanup() 61 | { 62 | _databaseInstance.PurgeAsync().Wait(); 63 | _engine.Dispose(); 64 | _databaseInstance = null; 65 | } 66 | 67 | [TestMethod] 68 | public void TestNullList() 69 | { 70 | var expected = TestClassWithStruct.MakeTestClassWithStruct(); 71 | var key = _databaseInstance.SaveAsync( expected ).Result; 72 | var actual = _databaseInstance.LoadAsync(key).Result; 73 | Assert.IsNotNull(actual, "Save/load failed: model is null."); 74 | Assert.AreEqual(expected.ID, actual.ID, "Save/load failed: key mismatch."); 75 | Assert.IsNotNull(actual.Structs, "Save/load failed: list not initialized."); 76 | Assert.AreEqual(expected.Structs.Count, actual.Structs.Count, "Save/load failed: list size mismatch."); 77 | Assert.AreEqual(expected.Structs[0].Date, actual.Structs[0].Date, "Save/load failed: date mismatch."); 78 | Assert.AreEqual(expected.Structs[0].Value, actual.Structs[0].Value, "Save/load failed: value mismatch."); 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Database/TestTruncate.cs: -------------------------------------------------------------------------------- 1 | 2 | #if NETFX_CORE 3 | using Wintellect.Sterling.WinRT.WindowsStorage; 4 | using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 5 | #elif SILVERLIGHT 6 | using Microsoft.Phone.Testing; 7 | using Wintellect.Sterling.WP8.IsolatedStorage; 8 | using Microsoft.VisualStudio.TestTools.UnitTesting; 9 | #else 10 | using Wintellect.Sterling.Server.FileSystem; 11 | using Microsoft.VisualStudio.TestTools.UnitTesting; 12 | #endif 13 | 14 | using System.Linq; 15 | 16 | using Wintellect.Sterling.Test.Helpers; 17 | using Wintellect.Sterling.Core; 18 | 19 | namespace Wintellect.Sterling.Test.Database 20 | { 21 | #if SILVERLIGHT 22 | [Tag("Truncate")] 23 | #endif 24 | [TestClass] 25 | public class TestTruncateAltDriver : TestTruncate 26 | { 27 | protected override ISterlingDriver GetDriver() 28 | { 29 | #if NETFX_CORE 30 | return new WindowsStorageDriver(); 31 | #elif SILVERLIGHT 32 | return new IsolatedStorageDriver(); 33 | #elif AZURE_DRIVER 34 | return new Wintellect.Sterling.Server.Azure.TableStorage.Driver(); 35 | #else 36 | return new FileSystemDriver(); 37 | #endif 38 | } 39 | } 40 | 41 | #if SILVERLIGHT 42 | [Tag("Truncate")] 43 | #endif 44 | [TestClass] 45 | public class TestTruncate : TestBase 46 | { 47 | private SterlingEngine _engine; 48 | private ISterlingDatabaseInstance _databaseInstance; 49 | 50 | public TestContext TestContext { get; set; } 51 | 52 | [TestInitialize] 53 | public void TestInit() 54 | { 55 | _engine = Factory.NewEngine(); 56 | _engine.Activate(); 57 | _databaseInstance = _engine.SterlingDatabase.RegisterDatabase( TestContext.TestName, GetDriver() ); 58 | } 59 | 60 | [TestCleanup] 61 | public void TestCleanup() 62 | { 63 | _databaseInstance.PurgeAsync().Wait(); 64 | _engine.Dispose(); 65 | _databaseInstance = null; 66 | } 67 | 68 | [TestMethod] 69 | public void TestTruncateAction() 70 | { 71 | // save a few objects 72 | var sample = TestModel.MakeTestModel(); 73 | _databaseInstance.SaveAsync( sample ).Wait(); 74 | _databaseInstance.SaveAsync( TestModel.MakeTestModel() ).Wait(); 75 | _databaseInstance.SaveAsync( TestModel.MakeTestModel() ).Wait(); 76 | 77 | _databaseInstance.TruncateAsync(typeof(TestModel)).Wait(); 78 | 79 | // query should be empty 80 | Assert.IsFalse(_databaseInstance.Query().Any(), "Truncate failed: key list still exists."); 81 | 82 | // load should be empty 83 | var actual = _databaseInstance.LoadAsync( sample.Key ).Result; 84 | 85 | Assert.IsNull(actual, "Truncate failed: was able to load item."); 86 | } 87 | } 88 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/EngineFactory.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | 4 | using Wintellect.Sterling.Core; 5 | 6 | namespace Wintellect.Sterling.Test 7 | { 8 | internal static class Factory 9 | { 10 | public static SterlingEngine NewEngine() 11 | { 12 | return new SterlingEngine( NewPlatformAdapter() ); 13 | } 14 | 15 | public static ISterlingPlatformAdapter NewPlatformAdapter() 16 | { 17 | return new Wintellect.Sterling.Server.PlatformAdapter(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/BadDatabaseInstance.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Wintellect.Sterling.Core; 3 | using Wintellect.Sterling.Core.Database; 4 | 5 | namespace Wintellect.Sterling.Test.Helpers 6 | { 7 | public class BadDatabaseInstance : BaseDatabaseInstance 8 | { 9 | /// 10 | /// Method called from the constructor to register tables 11 | /// 12 | /// The list of tables for the database 13 | protected override List RegisterTables() 14 | { 15 | return null; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/DupDatabaseInstance.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Wintellect.Sterling.Core; 3 | using Wintellect.Sterling.Core.Database; 4 | 5 | namespace Wintellect.Sterling.Test.Helpers 6 | { 7 | public class DupDatabaseInstance : BaseDatabaseInstance 8 | { 9 | /// 10 | /// Method called from the constructor to register tables 11 | /// 12 | /// The list of tables for the database 13 | protected override List RegisterTables() 14 | { 15 | return new List 16 | { 17 | CreateTableDefinition(testModel => testModel.Key), 18 | CreateTableDefinition(testModel => testModel.Data) 19 | }; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/ExceptionHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | 4 | namespace Wintellect.Sterling.Test.Helpers 5 | { 6 | public static class ExceptionHelper 7 | { 8 | public static string AsExceptionString(this Exception ex) 9 | { 10 | var exception = ex; 11 | var sb = new StringBuilder(); 12 | 13 | while (exception != null) 14 | { 15 | sb.Append(ex.ToString()); 16 | if (exception.InnerException == null) break; 17 | sb.Append(" - with inner exception: "); 18 | exception = exception.InnerException; 19 | } 20 | 21 | return sb.ToString(); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestAggregateListModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestAggregateListModel 6 | { 7 | private static int _nextId = 0; 8 | 9 | public TestAggregateListModel() 10 | { 11 | } 12 | 13 | public List Children { get; set; } 14 | public int ID { get; set; } 15 | 16 | public static TestAggregateListModel MakeTestAggregateListModel() 17 | { 18 | return new TestAggregateListModel() 19 | { 20 | ID = _nextId++, 21 | Children = new List() 22 | { 23 | new TestDerivedClassAModel(), 24 | new TestDerivedClassBModel(), 25 | new TestDerivedClassAModel() 26 | } 27 | }; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestAggregateModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestAggregateModel 6 | { 7 | public string Key { get; set; } 8 | 9 | public TestModel TestModelInstance { get; set; } 10 | public TestForeignModel TestForeignInstance { get; set; } 11 | public TestBaseClassModel TestBaseClassInstance { get; set; } 12 | 13 | public static TestAggregateModel MakeAggregateModel() 14 | { 15 | return new TestAggregateModel 16 | { 17 | Key = Guid.NewGuid().ToString(), 18 | TestModelInstance = TestModel.MakeTestModel(), 19 | TestForeignInstance = TestForeignModel.MakeForeignModel(), 20 | TestBaseClassInstance = new TestDerivedClassAModel() 21 | }; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestBaseClassModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public abstract class TestBaseClassModel 6 | { 7 | public Guid Key { get; set; } 8 | public String BaseProperty { get; set; } 9 | 10 | public TestBaseClassModel() 11 | { 12 | Key = Guid.NewGuid(); 13 | BaseProperty = "Base Property Value"; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestChangingTypeFirstVersionClass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestChangingTypeFirstVersionClass 6 | { 7 | public string Key { get; set; } 8 | 9 | public string Name { get; set; } 10 | 11 | public string PropertyOne { get; set; } 12 | 13 | public string PropertyTwo { get; set; } 14 | 15 | public string PropertyRemovedInSecondVersion { get; set; } 16 | 17 | public string PropertyRenamedInSecondVersion { get; set; } 18 | 19 | public static TestChangingTypeFirstVersionClass MakeChangingTypeFirstVersionClass() 20 | { 21 | return new TestChangingTypeFirstVersionClass 22 | { 23 | Key = Guid.NewGuid().ToString(), 24 | Name = "Name", 25 | PropertyOne = "One", 26 | PropertyTwo = "Two", 27 | PropertyRemovedInSecondVersion = "ToBeRemoved", 28 | PropertyRenamedInSecondVersion = "ToBeRenamed" 29 | }; 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestChangingTypeSecondVersionClass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestChangingTypeSecondVersionClass 6 | { 7 | public string Key { get; set; } 8 | 9 | public string Name { get; set; } 10 | 11 | public string PropertyTwo { get; set; } 12 | 13 | public string PropertyOne { get; set; } 14 | 15 | public string RenamedProperty { get; set; } 16 | } 17 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestClassWithArray.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestClassWithArray 6 | { 7 | private static int _id; 8 | 9 | public int ID { get; set; } 10 | public int[] ValueTypeArray { get; set; } 11 | public TestBaseClassModel[] BaseClassArray { get; set; } 12 | public TestModel[] ClassArray { get; set; } 13 | 14 | public static TestClassWithArray MakeTestClassWithArray() 15 | { 16 | return new TestClassWithArray() 17 | { 18 | ID = _id++, 19 | ValueTypeArray = new int[] { 1, 2, 3 }, 20 | BaseClassArray = new TestBaseClassModel[] { new TestDerivedClassAModel(), new TestDerivedClassBModel() }, 21 | ClassArray = new TestModel[] { TestModel.MakeTestModel() } 22 | }; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestClassWithDictionary.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Wintellect.Sterling.Test.Helpers 5 | { 6 | public class TestClassWithDictionary 7 | { 8 | private static int _id = 0; 9 | 10 | public int ID { get; set; } 11 | public Dictionary BaseDictionary { get; set; } 12 | public Dictionary DictionaryWithClassAsValue { get; set; } 13 | public Dictionary DictionaryWithBaseClassAsValue { get; set; } 14 | public Dictionary> DictionaryWithListAsValue { get; set; } 15 | 16 | public static TestClassWithDictionary MakeTestClassWithDictionary() 17 | { 18 | return new TestClassWithDictionary() 19 | { 20 | ID = _id++, 21 | BaseDictionary = new Dictionary() 22 | { 23 | { 1, 2 }, 24 | { 2, 3 } 25 | }, 26 | DictionaryWithBaseClassAsValue = new Dictionary() 27 | { 28 | { 1, new TestDerivedClassAModel() }, 29 | { 2, new TestDerivedClassBModel() } 30 | }, 31 | DictionaryWithClassAsValue = new Dictionary() 32 | { 33 | { 1, TestModel.MakeTestModel() }, 34 | { 2, TestModel.MakeTestModel() } 35 | }, 36 | DictionaryWithListAsValue = new Dictionary>() 37 | { 38 | { 1, new List() { TestModel.MakeTestModel(), TestModel.MakeTestModel() } } 39 | } 40 | }; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestClassWithStruct.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace Wintellect.Sterling.Test.Helpers 5 | { 6 | public class TestClassWithStruct 7 | { 8 | private static int _key = 1; 9 | 10 | public TestClassWithStruct() 11 | { 12 | Structs = new List(); 13 | } 14 | 15 | public int ID { get; set; } 16 | public List Structs { get; set; } 17 | 18 | public static TestClassWithStruct MakeTestClassWithStruct() 19 | { 20 | var retVal = new TestClassWithStruct {ID = _key++}; 21 | retVal.Structs.Add(new TestStruct { Date=DateTime.Now, Value = new Random().Next()}); 22 | return retVal; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestCompositeClass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestCompositeClass 6 | { 7 | public int Key1 { get; set; } 8 | public string Key2 { get; set; } 9 | public Guid Key3 { get; set; } 10 | public DateTime Key4 { get; set; } 11 | 12 | public string Data { get; set; } 13 | } 14 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestCompositeKeyClass.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestCompositeKeyClass 6 | { 7 | public TestCompositeKeyClass() 8 | { 9 | } 10 | 11 | public TestCompositeKeyClass(int key1, string key2, Guid key3, DateTime key4) 12 | { 13 | Key1 = key1; 14 | Key2 = key2; 15 | Key3 = key3; 16 | Key4 = key4; 17 | } 18 | 19 | public int Key1 { get; set; } 20 | public string Key2 { get; set; } 21 | public Guid Key3 { get; set; } 22 | public DateTime Key4 { get; set; } 23 | 24 | public override bool Equals(object obj) 25 | { 26 | var other = obj as TestCompositeKeyClass; 27 | if (other == null) 28 | { 29 | return false; 30 | } 31 | 32 | return other.Key1.Equals(Key1) && other.Key2.Equals(Key2) 33 | && other.Key3.Equals(Key3) && other.Key4.Equals(Key4); 34 | } 35 | 36 | public override int GetHashCode() 37 | { 38 | return string.Format("{0}{1}{2}{3}", Key1, Key2, Key3, Key4).GetHashCode(); 39 | } 40 | 41 | } 42 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestCompositeSerializer.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using Wintellect.Sterling.Core; 4 | using Wintellect.Sterling.Core.Serialization; 5 | 6 | namespace Wintellect.Sterling.Test.Helpers 7 | { 8 | public class TestCompositeSerializer : BaseSerializer 9 | { 10 | /// 11 | /// Return true if this serializer can handle the object 12 | /// 13 | /// The target 14 | /// True if it can be serialized 15 | public override bool CanSerialize(Type targetType) 16 | { 17 | return targetType.Equals(typeof(TestCompositeKeyClass)); 18 | } 19 | 20 | /// 21 | /// Serialize the object 22 | /// 23 | /// The target 24 | /// The writer 25 | public override void Serialize(object target, BinaryWriter writer) 26 | { 27 | var instance = (TestCompositeKeyClass)target; 28 | writer.Write(instance.Key1); 29 | writer.Write(instance.Key2); 30 | writer.Write(instance.Key3.ToByteArray()); 31 | writer.Write(instance.Key4.ToFileTimeUtc()); 32 | } 33 | 34 | /// 35 | /// Deserialize the object 36 | /// 37 | /// The type of the object 38 | /// A reader to deserialize from 39 | /// The deserialized object 40 | public override object Deserialize(Type type, BinaryReader reader) 41 | { 42 | return new TestCompositeKeyClass( 43 | reader.ReadInt32(), 44 | reader.ReadString(), 45 | new Guid(reader.ReadBytes(16)), 46 | DateTime.FromFileTimeUtc(reader.ReadInt64()).ToLocalTime()); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestDatabaseInstance.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Wintellect.Sterling.Core; 4 | using Wintellect.Sterling.Core.Database; 5 | 6 | namespace Wintellect.Sterling.Test.Helpers 7 | { 8 | public class TestDatabaseInstance : BaseDatabaseInstance 9 | { 10 | public const string DATAINDEX = "IndexData"; 11 | 12 | public static string GetCompositeKey(TestCompositeClass testClass) 13 | { 14 | if (testClass == null) 15 | return string.Empty; 16 | 17 | return string.Format("{0}-{1}-{2}-{3}", testClass.Key1, testClass.Key2, testClass.Key3, 18 | testClass.Key4); 19 | } 20 | 21 | 22 | /// 23 | /// Method called from the constructor to register tables 24 | /// 25 | /// The list of tables for the database 26 | protected override List RegisterTables() 27 | { 28 | return new List 29 | { 30 | CreateTableDefinition(testModel => testModel.Key) 31 | .WithIndex(DATAINDEX, t => t.Data) 32 | .WithIndex("IndexDateData", 33 | t => Tuple.Create(t.Date, t.Data)), 34 | CreateTableDefinition(t=>t.Id), 35 | CreateTableDefinition(t => t.Key), 36 | CreateTableDefinition(t => t.Key), 37 | CreateTableDefinition(t => t.ID), 38 | CreateTableDefinition(t => t.ID), 39 | CreateTableDefinition(t => t.Key), 40 | CreateTableDefinition(t => t.Key), 41 | CreateTableDefinition(t => t.ID), 42 | CreateTableDefinition(t => t.ID), 43 | CreateTableDefinition(t => t.ID), 44 | CreateTableDefinition(GetCompositeKey), 45 | CreateTableDefinition(t=>t.Id), 46 | CreateTableDefinition(t => t.Id), 47 | CreateTableDefinition(t => t.Id) 48 | 49 | }; 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestDatabaseInstanceComposite.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using Wintellect.Sterling.Core; 4 | using Wintellect.Sterling.Core.Database; 5 | 6 | namespace Wintellect.Sterling.Test.Helpers 7 | { 8 | public class TestDatabaseInstanceComposite : BaseDatabaseInstance 9 | { 10 | /// 11 | /// Method called from the constructor to register tables 12 | /// 13 | /// The list of tables for the database 14 | protected override List RegisterTables() 15 | { 16 | return new List 17 | { 18 | CreateTableDefinition(k=> 19 | new TestCompositeKeyClass(k.Key1, k.Key2, k.Key3, k.Key4)) 20 | }; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestDerivedClassAModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestDerivedClassAModel : TestBaseClassModel 6 | { 7 | public String PropertyA { get; set; } 8 | 9 | public TestDerivedClassAModel() 10 | : base() 11 | { 12 | PropertyA = "Property A value"; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestDerivedClassBModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestDerivedClassBModel : TestBaseClassModel 6 | { 7 | public String PropertyB { get; set; } 8 | 9 | public TestDerivedClassBModel() 10 | : base() 11 | { 12 | PropertyB = "Property B Value"; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestForeignModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestForeignModel 6 | { 7 | /// 8 | /// Key 9 | /// 10 | public Guid Key { get; set; } 11 | 12 | /// 13 | /// Data 14 | /// 15 | public string Data { get; set; } 16 | 17 | public static TestForeignModel MakeForeignModel() 18 | { 19 | return new TestForeignModel {Key = Guid.NewGuid(), Data = Guid.NewGuid().ToString()}; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestListModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestListModel 6 | { 7 | private static int _nextId = 0; 8 | 9 | public int ID { get; set; } 10 | 11 | public List Children { get; set; } 12 | 13 | public static TestListModel MakeTestListModel() 14 | { 15 | return new TestListModel 16 | { 17 | ID = _nextId++, 18 | Children = 19 | new List 20 | {TestModel.MakeTestModel(), TestModel.MakeTestModel(), TestModel.MakeTestModel()} 21 | }; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestModelAsList.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Wintellect.Sterling.Test.Helpers 4 | { 5 | public class TestModelAsListModel : List 6 | { 7 | private static int _nextId; 8 | 9 | public int Id { get; set; } 10 | 11 | public static TestModelAsListModel MakeTestModelAsList() 12 | { 13 | var model = new TestModelAsListModel 14 | { 15 | Id = ++_nextId 16 | }; 17 | model.AddRange(new[] { TestModel.MakeTestModel(), TestModel.MakeTestModel(), TestModel.MakeTestModel()}); 18 | return model; 19 | } 20 | 21 | public static TestModelAsListModel MakeTestModelAsListWithParentReference() 22 | { 23 | var model = new TestModelAsListModel 24 | { 25 | Id = ++_nextId 26 | }; 27 | model.AddRange(new[] { TestModel.MakeTestModel(model), TestModel.MakeTestModel(model), TestModel.MakeTestModel(model) }); 28 | return model; 29 | } 30 | 31 | public static TestModelAsListModel Parent { get; set; } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Helpers/TestSerializer.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.IO; 4 | using Wintellect.Sterling.Core; 5 | using Wintellect.Sterling.Core.Serialization; 6 | 7 | namespace Wintellect.Sterling.Test.Helpers 8 | { 9 | public struct TestStruct 10 | { 11 | public int Value; 12 | public DateTime Date; 13 | } 14 | 15 | public class TestSerializer : BaseSerializer 16 | { 17 | /// 18 | /// Return true if this serializer can handle the object 19 | /// 20 | /// The target 21 | /// True if it can be serialized 22 | public override bool CanSerialize(Type targetType) 23 | { 24 | return targetType.Equals(typeof (TestStruct)); 25 | } 26 | 27 | /// 28 | /// Serialize the object 29 | /// 30 | /// The target 31 | /// The writer 32 | public override void Serialize(object target, BinaryWriter writer) 33 | { 34 | var instance = (TestStruct) target; 35 | writer.Write(instance.Value); 36 | writer.Write(instance.Date.Ticks); 37 | } 38 | 39 | /// 40 | /// Deserialize the object 41 | /// 42 | /// The type of the object 43 | /// A reader to deserialize from 44 | /// The deserialized object 45 | public override object Deserialize(Type type, BinaryReader reader) 46 | { 47 | return new TestStruct {Value = reader.ReadInt32(), Date = new DateTime(reader.ReadInt64())}; 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Keys/TestTableKey.cs: -------------------------------------------------------------------------------- 1 |  2 | #if NETFX_CORE 3 | using Wintellect.Sterling.WinRT.WindowsStorage; 4 | using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 5 | #elif SILVERLIGHT 6 | using Microsoft.Phone.Testing; 7 | using Wintellect.Sterling.WP8.IsolatedStorage; 8 | using Microsoft.VisualStudio.TestTools.UnitTesting; 9 | #else 10 | using Wintellect.Sterling.Server.FileSystem; 11 | using Microsoft.VisualStudio.TestTools.UnitTesting; 12 | #endif 13 | 14 | using System; 15 | using System.Linq; 16 | 17 | using Wintellect.Sterling.Core; 18 | using Wintellect.Sterling.Core.Keys; 19 | using Wintellect.Sterling.Test.Helpers; 20 | 21 | namespace Wintellect.Sterling.Test.Keys 22 | { 23 | #if SILVERLIGHT 24 | [Tag("TableKey")] 25 | #endif 26 | [TestClass] 27 | public class TestTableKey 28 | { 29 | [TestMethod] 30 | public void TestTableKeyFunctionality() 31 | { 32 | var list = new[] {TestModel.MakeTestModel(), TestModel.MakeTestModel()}; 33 | 34 | Func getter = i => (from t in list where t.Key.Equals(i) select t).FirstOrDefault(); 35 | 36 | var key1 = new TableKey(list[0].Key, getter); 37 | var key2 = new TableKey(list[1].Key, getter); 38 | 39 | Assert.AreEqual(key1.Key, list[0].Key, "Key mismatch."); 40 | Assert.AreEqual(key2.Key, list[1].Key, "Key mismatch."); 41 | 42 | Assert.IsFalse(key1.LazyValue.IsValueCreated, "Lazy model already created."); 43 | var testModel1 = key1.LazyValue.Value; 44 | Assert.IsTrue(key1.LazyValue.IsValueCreated, "Lazy value created was not set."); 45 | Assert.AreSame(list[0], testModel1, "First key returned invalid instance."); 46 | Assert.AreSame(list[1], key2.LazyValue.Value, "Second key return invalid instance."); 47 | } 48 | 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Resources; 4 | using System.Reflection; 5 | using System.Runtime.CompilerServices; 6 | using System.Runtime.InteropServices; 7 | 8 | [assembly: AssemblyTitle( "Wintellect.Sterling.Server.Test" )] 9 | [assembly: AssemblyDescription( "Sterling NoSQL Database .NET 4.5 Tests" )] 10 | [assembly: AssemblyConfiguration( "" )] 11 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/TestBase.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using Wintellect.Sterling.Core; 8 | 9 | namespace Wintellect.Sterling.Test 10 | { 11 | public abstract class TestBase 12 | { 13 | protected virtual ISterlingDriver GetDriver() 14 | { 15 | return new MemoryDriver(); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server.Test/readme.txt: -------------------------------------------------------------------------------- 1 |  2 | To run unit tests against the Azure Table Storage driver, set the AZURE_DRIVER conditional compile directive in the test project settings. 3 | 4 | You'll also need to install the Azure SDK and manually start the storage emulator. 5 | 6 | Find the Azure SDK here: http://www.windowsazure.com/en-us/downloads/ 7 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/FileSystem/PathLock.cs: -------------------------------------------------------------------------------- 1 | 2 | using System; 3 | using System.Collections; 4 | using System.Collections.Generic; 5 | using Wintellect.Sterling.Core; 6 | 7 | namespace Wintellect.Sterling.Server.FileSystem 8 | { 9 | internal static class PathLock 10 | { 11 | private static readonly Dictionary _pathLocks = new Dictionary(); 12 | 13 | public static AsyncLock GetLock( string path ) 14 | { 15 | var hash = path.GetHashCode(); 16 | 17 | lock ( _pathLocks ) 18 | { 19 | AsyncLock aLock = null; 20 | 21 | if ( _pathLocks.TryGetValue( hash, out aLock ) == false ) 22 | { 23 | aLock = _pathLocks[ hash ] = new AsyncLock(); 24 | } 25 | 26 | return aLock; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/FileSystem/SterlingFileSystemException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Wintellect.Sterling.Core.Exceptions; 3 | 4 | namespace Wintellect.Sterling.Server.FileSystem 5 | { 6 | public class SterlingFileSystemException : SterlingException 7 | { 8 | public SterlingFileSystemException(Exception ex) : base(string.Format("An exception occurred accessing the file system: {0}", ex), ex) 9 | { 10 | 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/PlatformAdapter.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Reflection; 7 | using System.Text; 8 | using System.Threading; 9 | using System.Threading.Tasks; 10 | using System.Windows.Media.Imaging; 11 | using Wintellect.Sterling.Core; 12 | 13 | namespace Wintellect.Sterling.Server 14 | { 15 | public class PlatformAdapter : ISterlingPlatformAdapter 16 | { 17 | public PlatformAdapter() 18 | { 19 | } 20 | 21 | public bool IsAssignableFrom( Type target, Type test ) 22 | { 23 | return target.IsAssignableFrom( test ); 24 | } 25 | 26 | public bool IsSubclassOf( Type target, Type test ) 27 | { 28 | return target.IsSubclassOf( test ); 29 | } 30 | 31 | public bool IsEnum( Type target ) 32 | { 33 | return target.IsEnum; 34 | } 35 | 36 | public IEnumerable GetFields( Type type ) 37 | { 38 | return type.GetFields(); 39 | } 40 | 41 | public IEnumerable GetProperties( Type type ) 42 | { 43 | return type.GetProperties(); 44 | } 45 | 46 | public MethodInfo GetGetMethod( PropertyInfo property ) 47 | { 48 | return property.GetGetMethod(); 49 | } 50 | 51 | public MethodInfo GetSetMethod( PropertyInfo property ) 52 | { 53 | return property.GetSetMethod(); 54 | } 55 | 56 | public IEnumerable GetCustomAttributes( Type target, Type attributeType, bool inherit ) 57 | { 58 | return target.GetCustomAttributes( attributeType, inherit ).Cast(); 59 | } 60 | 61 | public void Sleep( int milliseconds ) 62 | { 63 | Thread.Sleep( milliseconds ); 64 | } 65 | 66 | public Tuple, Func> GetBitmapSerializer() 67 | { 68 | return null; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Resources; 4 | using System.Reflection; 5 | using System.Runtime.CompilerServices; 6 | using System.Runtime.InteropServices; 7 | 8 | [assembly: AssemblyTitle( "Wintellect.Sterling.Server" )] 9 | [assembly: AssemblyDescription( "Sterling NoSQL Database .NET 4.5 Edition" )] 10 | [assembly: AssemblyConfiguration( "" )] 11 | 12 | [assembly: InternalsVisibleTo( "Wintellect.Sterling.Server.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a3b45c0ad256fd762ab7c2ff33a1b6ff2cde6292ea34689af322868b0ca96e85fabc3b565c2df4d44417dabddcf0b4872f38accd4045469f36dd176312472d2d26f91e0258008e5c5a8ff790d3afb505ea7562077002a5d196e180cc8de708862d236f2e5edb9dfe2ca637267a4a9b157dce0c461dc9d794eb89ac3fcaeadfe8" )] 13 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/Wintellect.Sterling.Server.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wintellect.Sterling.Core", "..\Wintellect.Sterling.Core\Wintellect.Sterling.Core.csproj", "{7B8F46DA-A437-45C4-B54A-87B418D5701F}" 5 | EndProject 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wintellect.Sterling.Server", "Wintellect.Sterling.Server.csproj", "{549440CA-6C2C-437D-BF6A-B86EB2335551}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wintellect.Sterling.Server.Test", "..\Wintellect.Sterling.Server.Test\Wintellect.Sterling.Server.Test.csproj", "{64E0478A-7E7D-4791-8A9B-35FD0E5C6744}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wintellect.Sterling.Server.Azure", "..\Wintellect.Sterling.Server.Azure\Wintellect.Sterling.Server.Azure.csproj", "{E0783B3C-E09B-437F-B9DE-29E45ACCDF55}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Release|Any CPU = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {7B8F46DA-A437-45C4-B54A-87B418D5701F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {7B8F46DA-A437-45C4-B54A-87B418D5701F}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {7B8F46DA-A437-45C4-B54A-87B418D5701F}.Release|Any CPU.ActiveCfg = Release|Any CPU 21 | {7B8F46DA-A437-45C4-B54A-87B418D5701F}.Release|Any CPU.Build.0 = Release|Any CPU 22 | {549440CA-6C2C-437D-BF6A-B86EB2335551}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {549440CA-6C2C-437D-BF6A-B86EB2335551}.Debug|Any CPU.Build.0 = Debug|Any CPU 24 | {549440CA-6C2C-437D-BF6A-B86EB2335551}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {549440CA-6C2C-437D-BF6A-B86EB2335551}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {64E0478A-7E7D-4791-8A9B-35FD0E5C6744}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 27 | {64E0478A-7E7D-4791-8A9B-35FD0E5C6744}.Debug|Any CPU.Build.0 = Debug|Any CPU 28 | {64E0478A-7E7D-4791-8A9B-35FD0E5C6744}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {64E0478A-7E7D-4791-8A9B-35FD0E5C6744}.Release|Any CPU.Build.0 = Release|Any CPU 30 | {E0783B3C-E09B-437F-B9DE-29E45ACCDF55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 31 | {E0783B3C-E09B-437F-B9DE-29E45ACCDF55}.Debug|Any CPU.Build.0 = Debug|Any CPU 32 | {E0783B3C-E09B-437F-B9DE-29E45ACCDF55}.Release|Any CPU.ActiveCfg = Release|Any CPU 33 | {E0783B3C-E09B-437F-B9DE-29E45ACCDF55}.Release|Any CPU.Build.0 = Release|Any CPU 34 | EndGlobalSection 35 | GlobalSection(SolutionProperties) = preSolution 36 | HideSolutionNode = FALSE 37 | EndGlobalSection 38 | EndGlobal 39 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/Wintellect.Sterling.Server.sln.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | True 3 | C:\Users\Peter\Documents\GitHub\SterlingDB\Wintellect.Sterling.Server\Wintellect.Sterling.Server.sln.DotSettings 4 | True 5 | 4 6 | False 7 | True 8 | 3 -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/Microsoft.Data.Edm.5.0.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/Microsoft.Data.Edm.5.0.2.nupkg -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/Microsoft.Data.Edm.5.0.2.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.Data.Edm 5 | 5.0.2 6 | EdmLib 7 | Microsoft Corporation 8 | Microsoft Corporation 9 | http://go.microsoft.com/?linkid=9809688 10 | http://go.microsoft.com/fwlink/?LinkId=220868 11 | http://static.tumblr.com/hgchgxz/9ualgdf98/icon.png 12 | true 13 | Classes to represent, construct, parse, serialize and validate entity data models. Targets .NET 4.0 or Silverlight 4.0. Localized for CHS, CHT, DEU, ESN, FRA, ITA, JPN, KOR and RUS. 14 | • Fixes NuGet packages to have explicit version dependencies 15 | • Fixes a bug where WCF Data Services client binaries did not work correctly on Silverlight hosted in Chrome 16 | • Fixes a bug where WCF Data Services client did not send the correct DataServiceVersion header when following a nextlink 17 | • Allows "True" and "False" to be recognized boolean values in ATOM (note that this is more relaxed than the OData spec, but there were known cases where servers were serializing "True" and "False") 18 | • Fixes a bug where EdmLib would fail validation for attribute names that are not SimpleIdentifiers 19 | • Fixes a bug where nullable action parameters were still required to be in the payload 20 | • Fixes a bug where the FeedAtomMetadata annotation wasn't being attached to the feed even when EnableAtomMetadataReading was set to true 21 | • Fixes a bug where projections involving more than eight columns would fail if the EF Oracle provider was being used 22 | • Fixes a bug where a DateTimeOffset could not be materialized from a v2 JSON Verbose value 23 | • Fixes a race condition in the WCF Data Services server bits when using reflection to get property values 24 | • Fixes an error message that wasn't getting localized correctly 25 | • Fixes a bug where the message quotas set in the client and server were not being propagated to ODataLib 26 | wcf data services odata odatalib edmlib spatial ado.net ef entity framework open protocol wcfds wcfdataservices dataservices 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/CHS/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/CHS/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/CHT/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/CHT/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/DEU/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/DEU/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/ESN/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/ESN/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/FRA/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/FRA/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/ITA/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/ITA/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/JPN/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/JPN/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/KOR/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/KOR/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/Microsoft.Data.Edm.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/Microsoft.Data.Edm.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/RUS/Microsoft.Data.Edm.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/net40/RUS/Microsoft.Data.Edm.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/CHS/Microsoft.Data.Edm.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/CHS/Microsoft.Data.Edm.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/CHT/Microsoft.Data.Edm.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/CHT/Microsoft.Data.Edm.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/DEU/Microsoft.Data.Edm.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/DEU/Microsoft.Data.Edm.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/ESN/Microsoft.Data.Edm.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/ESN/Microsoft.Data.Edm.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/FRA/Microsoft.Data.Edm.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/FRA/Microsoft.Data.Edm.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/ITA/Microsoft.Data.Edm.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/ITA/Microsoft.Data.Edm.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/JPN/Microsoft.Data.Edm.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/JPN/Microsoft.Data.Edm.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/KOR/Microsoft.Data.Edm.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/KOR/Microsoft.Data.Edm.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/Microsoft.Data.Edm.SL.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/Microsoft.Data.Edm.SL.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/RUS/Microsoft.Data.Edm.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.Edm.5.0.2/lib/sl4/RUS/Microsoft.Data.Edm.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/Microsoft.Data.OData.5.0.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/Microsoft.Data.OData.5.0.2.nupkg -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/Microsoft.Data.OData.5.0.2.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.Data.OData 5 | 5.0.2 6 | ODataLib 7 | Microsoft Corporation 8 | Microsoft Corporation 9 | http://go.microsoft.com/?linkid=9809688 10 | http://odata.codeplex.com/wikipage?title=ODataLib 11 | http://static.tumblr.com/hgchgxz/9ualgdf98/icon.png 12 | true 13 | Classes to serialize, deserialize and validate OData payloads. Enables construction of OData producers and consumers. Targets .NET 4.0 or Silverlight 4.0. 14 | Localized for CHS, CHT, DEU, ESN, FRA, ITA, JPN, KOR and RUS. 15 | • Fixes NuGet packages to have explicit version dependencies 16 | • Fixes a bug where WCF Data Services client binaries did not work correctly on Silverlight hosted in Chrome 17 | • Fixes a bug where WCF Data Services client did not send the correct DataServiceVersion header when following a nextlink 18 | • Allows "True" and "False" to be recognized boolean values in ATOM (note that this is more relaxed than the OData spec, but there were known cases where servers were serializing "True" and "False") 19 | • Fixes a bug where EdmLib would fail validation for attribute names that are not SimpleIdentifiers 20 | • Fixes a bug where nullable action parameters were still required to be in the payload 21 | • Fixes a bug where the FeedAtomMetadata annotation wasn't being attached to the feed even when EnableAtomMetadataReading was set to true 22 | • Fixes a bug where projections involving more than eight columns would fail if the EF Oracle provider was being used 23 | • Fixes a bug where a DateTimeOffset could not be materialized from a v2 JSON Verbose value 24 | • Fixes a race condition in the WCF Data Services server bits when using reflection to get property values 25 | • Fixes an error message that wasn't getting localized correctly 26 | • Fixes a bug where the message quotas set in the client and server were not being propagated to ODataLib 27 | wcf data services odata odatalib edmlib spatial ado.net ef entity framework open protocol wcfds wcfdataservices dataservices 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/CHS/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/CHS/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/CHT/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/CHT/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/DEU/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/DEU/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/ESN/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/ESN/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/FRA/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/FRA/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/ITA/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/ITA/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/JPN/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/JPN/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/KOR/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/KOR/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/Microsoft.Data.OData.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/Microsoft.Data.OData.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/RUS/Microsoft.Data.OData.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/net40/RUS/Microsoft.Data.OData.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/CHS/Microsoft.Data.OData.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/CHS/Microsoft.Data.OData.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/CHT/Microsoft.Data.OData.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/CHT/Microsoft.Data.OData.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/DEU/Microsoft.Data.OData.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/DEU/Microsoft.Data.OData.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/ESN/Microsoft.Data.OData.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/ESN/Microsoft.Data.OData.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/FRA/Microsoft.Data.OData.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/FRA/Microsoft.Data.OData.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/ITA/Microsoft.Data.OData.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/ITA/Microsoft.Data.OData.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/JPN/Microsoft.Data.OData.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/JPN/Microsoft.Data.OData.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/KOR/Microsoft.Data.OData.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/KOR/Microsoft.Data.OData.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/Microsoft.Data.OData.SL.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/Microsoft.Data.OData.SL.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/RUS/Microsoft.Data.OData.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.Data.OData.5.0.2/lib/sl4/RUS/Microsoft.Data.OData.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0/Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0/Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0.nupkg -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0/Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Microsoft.WindowsAzure.ConfigurationManager 5 | 1.8.0.0 6 | Windows Azure Configuration Manager 7 | Microsoft 8 | Microsoft 9 | http://go.microsoft.com/fwlink/?LinkID=235167 10 | http://go.microsoft.com/fwlink/?linkid=252450 11 | http://www.gravatar.com/avatar/c24270713c524575b0308e05c7e9ff61?s=128 12 | true 13 | Windows Azure Configuration Manager provides unified API to load the configuration settings regardless of where the application is hosted - whether on-premises or in a Cloud Service. 14 | Windows Azure Configuration Manager provides unified API to load the configuration settings regardless of where the application is hosted - whether on-premises or in a Cloud Service. 15 | Microsoft, Azure, Configuration, Configuration Manager, Cloud windowsazureofficial 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0/lib/net35-full/Microsoft.WindowsAzure.Configuration.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/Microsoft.WindowsAzure.ConfigurationManager.1.8.0.0/lib/net35-full/Microsoft.WindowsAzure.Configuration.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/System.Spatial.5.0.2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/System.Spatial.5.0.2.nupkg -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/System.Spatial.5.0.2.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | System.Spatial 5 | 5.0.2 6 | System.Spatial 7 | Microsoft Corporation 8 | Microsoft Corporation 9 | http://go.microsoft.com/?linkid=9809688 10 | http://go.microsoft.com/fwlink/?LinkId=220868 11 | http://static.tumblr.com/hgchgxz/9ualgdf98/icon.png 12 | true 13 | Contains a number of classes and canonical methods that facilitate geography and geometry spatial operations. Targets .NET 4.0 or Silverlight 4.0. Localized for CHS, CHT, DEU, ESN, FRA, ITA, JPN, KOR and RUS. 14 | • Fixes NuGet packages to have explicit version dependencies 15 | • Fixes a bug where WCF Data Services client binaries did not work correctly on Silverlight hosted in Chrome 16 | • Fixes a bug where WCF Data Services client did not send the correct DataServiceVersion header when following a nextlink 17 | • Allows "True" and "False" to be recognized boolean values in ATOM (note that this is more relaxed than the OData spec, but there were known cases where servers were serializing "True" and "False") 18 | • Fixes a bug where EdmLib would fail validation for attribute names that are not SimpleIdentifiers 19 | • Fixes a bug where nullable action parameters were still required to be in the payload 20 | • Fixes a bug where the FeedAtomMetadata annotation wasn't being attached to the feed even when EnableAtomMetadataReading was set to true 21 | • Fixes a bug where projections involving more than eight columns would fail if the EF Oracle provider was being used 22 | • Fixes a bug where a DateTimeOffset could not be materialized from a v2 JSON Verbose value 23 | • Fixes a race condition in the WCF Data Services server bits when using reflection to get property values 24 | • Fixes an error message that wasn't getting localized correctly 25 | • Fixes a bug where the message quotas set in the client and server were not being propagated to ODataLib 26 | wcf data services odata odatalib edmlib spatial ado.net ef entity framework open protocol wcfds wcfdataservices dataservices 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/CHS/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/CHS/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/CHT/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/CHT/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/DEU/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/DEU/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/ESN/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/ESN/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/FRA/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/FRA/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/ITA/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/ITA/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/JPN/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/JPN/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/KOR/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/KOR/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/RUS/System.Spatial.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/RUS/System.Spatial.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/System.Spatial.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/net40/System.Spatial.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/CHS/System.Spatial.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/CHS/System.Spatial.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/CHT/System.Spatial.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/CHT/System.Spatial.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/DEU/System.Spatial.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/DEU/System.Spatial.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/ESN/System.Spatial.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/ESN/System.Spatial.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/FRA/System.Spatial.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/FRA/System.Spatial.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/ITA/System.Spatial.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/ITA/System.Spatial.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/JPN/System.Spatial.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/JPN/System.Spatial.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/KOR/System.Spatial.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/KOR/System.Spatial.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/RUS/System.Spatial.SL.resources.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/RUS/System.Spatial.SL.resources.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/System.Spatial.SL.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/System.Spatial.5.0.2/lib/sl4/System.Spatial.SL.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/WindowsAzure.Storage.2.0.4.0/WindowsAzure.Storage.2.0.4.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/WindowsAzure.Storage.2.0.4.0/WindowsAzure.Storage.2.0.4.0.nupkg -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/WindowsAzure.Storage.2.0.4.0/WindowsAzure.Storage.2.0.4.0.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WindowsAzure.Storage 5 | 2.0.4.0 6 | Windows Azure Storage 7 | Microsoft 8 | Microsoft 9 | http://go.microsoft.com/fwlink/?LinkId=235170 10 | http://go.microsoft.com/fwlink/?LinkId=235168 11 | http://www.gravatar.com/avatar/c24270713c524575b0308e05c7e9ff61?s=128 12 | true 13 | This client library enables working with the Windows Azure storage services which include the blob service for storing binary and text data, the table service for storing structured non-relational data, and the queue service for storing messages that may be accessed by a client. 14 | For this release see notes - http://msdn.microsoft.com/en-us/library/windowsazure/jj721952.aspx 15 | Windows Azure Storage team's blog - http://blogs.msdn.com/b/windowsazurestorage/ 16 | A client library for working with Windows Azure storage services including blobs, tables, and queues. 17 | Microsoft, Azure, Storage, Table, Blob, Queue, Scalable, windowsazureofficial 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/WindowsAzure.Storage.2.0.4.0/lib/net40/Microsoft.WindowsAzure.Storage.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.Server/packages/WindowsAzure.Storage.2.0.4.0/lib/net40/Microsoft.WindowsAzure.Storage.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.Server/packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Assets/AlignmentGrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Assets/AlignmentGrid.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Assets/ApplicationIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Assets/ApplicationIcon.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Assets/Tiles/FlipCycleTileLarge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Assets/Tiles/FlipCycleTileLarge.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Assets/Tiles/FlipCycleTileMedium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Assets/Tiles/FlipCycleTileMedium.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Assets/Tiles/FlipCycleTileSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Assets/Tiles/FlipCycleTileSmall.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Assets/Tiles/IconicTileMediumLarge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Assets/Tiles/IconicTileMediumLarge.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Assets/Tiles/IconicTileSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Assets/Tiles/IconicTileSmall.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/EngineFactory.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | 4 | using Wintellect.Sterling.Core; 5 | 6 | namespace Wintellect.Sterling.Test 7 | { 8 | internal static class Factory 9 | { 10 | public static SterlingEngine NewEngine() 11 | { 12 | return new SterlingEngine( NewPlatformAdapter() ); 13 | } 14 | 15 | public static ISterlingPlatformAdapter NewPlatformAdapter() 16 | { 17 | return new Wintellect.Sterling.WP8.PlatformAdapter(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/LocalizedStrings.cs: -------------------------------------------------------------------------------- 1 | using Wintellect.Sterling.Test.Resources; 2 | 3 | namespace Wintellect.Sterling.Test 4 | { 5 | /// 6 | /// Provides access to string resources. 7 | /// 8 | public class LocalizedStrings 9 | { 10 | private static AppResources _localizedResources = new AppResources(); 11 | 12 | public AppResources LocalizedResources { get { return _localizedResources; } } 13 | } 14 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/MainPage.xaml: -------------------------------------------------------------------------------- 1 |  15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/MainPage.xaml.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Net; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Navigation; 9 | using Microsoft.Phone.Controls; 10 | using Microsoft.Phone.Shell; 11 | using Wintellect.Sterling.Test.Resources; 12 | 13 | using Microsoft.VisualStudio.TestTools.UnitTesting; 14 | using Microsoft.Phone.Testing; 15 | 16 | namespace Wintellect.Sterling.Test 17 | { 18 | public partial class MainPage : PhoneApplicationPage 19 | { 20 | public MainPage() 21 | { 22 | InitializeComponent(); 23 | this.Content = UnitTestSystem.CreateTestPage(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Properties/AppManifest.xml: -------------------------------------------------------------------------------- 1 |  4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Resources; 4 | using System.Reflection; 5 | using System.Runtime.CompilerServices; 6 | using System.Runtime.InteropServices; 7 | 8 | [assembly: AssemblyTitle( "Wintellect.Sterling.WP8 Test" )] 9 | [assembly: AssemblyDescription( "Sterling NoSQL Database Windows Phone 8 Tests" )] 10 | [assembly: AssemblyConfiguration( "" )] 11 | 12 | [assembly: AssemblyKeyFile( "..\\..\\..\\Wintellect.Sterling.Core\\Wintellect.Sterling.snk" )] // must be manually added for WP8 13 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Properties/WMAppManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | Assets\ApplicationIcon.png 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | Assets\Tiles\FlipCycleTileSmall.png 21 | 0 22 | Assets\Tiles\FlipCycleTileMedium.png 23 | Wintellect.Sterling.WP8.Test 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/README_FIRST.txt: -------------------------------------------------------------------------------- 1 | For the Windows Phone toolkit make sure that you have 2 | marked the icons in the "Toolkit.Content" folder as content. That way they 3 | can be used as the icons for the ApplicationBar control. -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Cancel.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Check.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Delete.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Email.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Play.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Save.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8.Test/Toolkit.Content/ApplicationBar.Select.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8.Test/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/PlatformAdapter.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Collections.Generic; 4 | using System.Reflection; 5 | using System.Linq; 6 | 7 | using Wintellect.Sterling.Core; 8 | using System.Threading; 9 | using System.IO; 10 | using System.Windows.Media.Imaging; 11 | 12 | namespace Wintellect.Sterling.WP8 13 | { 14 | public class PlatformAdapter : ISterlingPlatformAdapter 15 | { 16 | public PlatformAdapter() 17 | { 18 | } 19 | 20 | public bool IsAssignableFrom( Type target, Type test ) 21 | { 22 | return target.IsAssignableFrom( test ); 23 | } 24 | 25 | public bool IsSubclassOf( Type target, Type test ) 26 | { 27 | return target.IsSubclassOf( test ); 28 | } 29 | 30 | public bool IsEnum( Type target ) 31 | { 32 | return target.IsEnum; 33 | } 34 | 35 | public IEnumerable GetFields( Type type ) 36 | { 37 | return type.GetFields(); 38 | } 39 | 40 | public IEnumerable GetProperties( Type type ) 41 | { 42 | return type.GetProperties(); 43 | } 44 | 45 | public MethodInfo GetGetMethod( PropertyInfo property ) 46 | { 47 | return property.GetGetMethod(); 48 | } 49 | 50 | public MethodInfo GetSetMethod( PropertyInfo property ) 51 | { 52 | return property.GetSetMethod(); 53 | } 54 | 55 | public IEnumerable GetCustomAttributes( Type target, Type attributeType, bool inherit ) 56 | { 57 | return target.GetCustomAttributes( attributeType, inherit ).Cast(); 58 | } 59 | 60 | public void Sleep( int milliseconds ) 61 | { 62 | Thread.Sleep( milliseconds ); 63 | } 64 | 65 | public Tuple, Func> GetBitmapSerializer() 66 | { 67 | return Tuple.Create( typeof( WriteableBitmap ), 68 | (Action) ( ( bw, obj ) => 69 | { 70 | var bitmap = (WriteableBitmap) obj; 71 | bw.Write( bitmap.PixelWidth ); 72 | bw.Write( bitmap.PixelHeight ); 73 | var count = bitmap.Pixels.Length * sizeof( int ); 74 | var pixels = new byte[ count ]; 75 | Buffer.BlockCopy( bitmap.Pixels, 0, pixels, 0, count ); 76 | bw.Write( pixels, 0, pixels.Length ); 77 | } ), 78 | (Func) ( br => 79 | { 80 | var width = br.ReadInt32(); 81 | var height = br.ReadInt32(); 82 | var bitmap = new WriteableBitmap( width, height ); 83 | var count = bitmap.Pixels.Length * sizeof( int ); 84 | var pixels = new byte[ count ]; 85 | br.Read( pixels, 0, count ); 86 | Buffer.BlockCopy( pixels, 0, bitmap.Pixels, 0, count ); 87 | return bitmap; 88 | } ) ); 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Resources; 4 | using System.Reflection; 5 | using System.Runtime.CompilerServices; 6 | using System.Runtime.InteropServices; 7 | 8 | [assembly: AssemblyTitle( "Wintellect.Sterling.WP8" )] 9 | [assembly: AssemblyDescription( "Sterling NoSQL Database Windows Phone 8 Edition" )] 10 | [assembly: AssemblyConfiguration( "" )] 11 | 12 | [assembly: InternalsVisibleTo( "Wintellect.Sterling.WP8.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a3b45c0ad256fd762ab7c2ff33a1b6ff2cde6292ea34689af322868b0ca96e85fabc3b565c2df4d44417dabddcf0b4872f38accd4045469f36dd176312472d2d26f91e0258008e5c5a8ff790d3afb505ea7562077002a5d196e180cc8de708862d236f2e5edb9dfe2ca637267a4a9b157dce0c461dc9d794eb89ac3fcaeadfe8" )] 13 | 14 | [assembly: AssemblyKeyFile( "..\\..\\..\\Wintellect.Sterling.Core\\Wintellect.Sterling.snk" )] // must be manually added for WP8 15 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/Wintellect.Sterling.WP8.sln.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | True 3 | C:\Users\Peter\Documents\GitHub\SterlingDB\Wintellect.Sterling.WP8\Wintellect.Sterling.WP8.sln.DotSettings 4 | True 5 | 2 6 | True 7 | 1 -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/WPToolkitTestFx.4.2012.11.14.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/WPToolkitTestFx.4.2012.11.14.nupkg -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/WPToolkitTestFx.4.2012.11.14.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WPToolkitTestFx 5 | 4.2012.11.14 6 | Windows Phone Toolkit Test Framework 7 | Microsoft 8 | Microsoft 9 | http://phone.codeplex.com/license 10 | http://phone.codeplex.com/ 11 | false 12 | Windows Phone Toolkit Test Framework provides an easy way to integrate unit tests for your Windows Phone apps. 13 | This update includes WP7.1 and WP8.0 versions of the package. 14 | It has a dependency on WPToolkit package. 15 | http://phone.codeplex.com/license 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Email.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Play.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Save.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/lib/README_FIRST.TXT: -------------------------------------------------------------------------------- 1 | Windows Phone Toolkit Test Framework(WPToolkitTestFx) package has a dependency on the Windows Phone Toolkit(WPtoolkit) package. -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/lib/sl4-wp71/Microsoft.Phone.Toolkit.Testing.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/lib/sl4-wp71/Microsoft.Phone.Toolkit.Testing.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/lib/sl4-wp71/Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/lib/sl4-wp71/Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/lib/wp8/Microsoft.Phone.Toolkit.Testing.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/lib/wp8/Microsoft.Phone.Toolkit.Testing.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/lib/wp8/Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPToolkitTestFx.4.2012.11.14/lib/wp8/Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/WPtoolkit.4.2012.10.30.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/WPtoolkit.4.2012.10.30.nupkg -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/WPtoolkit.4.2012.10.30.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WPtoolkit 5 | 4.2012.10.30 6 | Windows Phone toolkit 7 | Microsoft 8 | Microsoft 9 | http://phone.codeplex.com/license 10 | http://phone.codeplex.com/ 11 | false 12 | Windows Phone toolkit provides a collection of controls, extension methods and page animations to help create beautiful and consistent Windows Phone user interfaces and make common progamming tasks easier. Documentation and source are on CodePlex at http://phone.codeplex.com. 13 | Release notes - http://phone.codeplex.com/releases/view/96743 14 | 15 | Includes - 16 | 17 | Refactored project to support Windows Phone 7.1, 8.0 and more with maximum code sharing. 18 | 19 | WP8 Map API extensions, including Modern PushPin control 20 | 21 | LongListMultiSelector control, including Grid view multiselect. 22 | Control themes updated to match WP8 UI 23 | 24 | Large number of RTL bugs fixed now that RTL is a fully supported feature in WP8 25 | 26 | 25+ bugs fixed 27 | Contains all the fixes, improvements and new controls that were part of the September 2012 release 28 | 29 | WP8 specific - 30 | Removed LongListSelector as it’s now part of the SDK 31 | Removed Tuple.cs 32 | 33 | Removed PerformanceProgressBar (though we are taking the suggestion that we should add it back as a descendent of ProgressBar for backcompat) 34 | 35 | Removed GestureListener 36 | http://phone.codeplex.com/license 37 | en-US 38 | wptoolkit toolkit windowsphone wp7 wp7dev phone tk wp7tk controls mango wp8 apollo 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/content/README_FIRST.txt: -------------------------------------------------------------------------------- 1 | For the Windows Phone toolkit make sure that you have 2 | marked the icons in the "Toolkit.Content" folder as content. That way they 3 | can be used as the icons for the ApplicationBar control. -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Cancel.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Check.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Delete.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Select.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/lib/sl3-wp/Microsoft.Phone.Controls.Toolkit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/lib/sl3-wp/Microsoft.Phone.Controls.Toolkit.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/lib/sl4-windowsphone71/Microsoft.Phone.Controls.Toolkit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/lib/sl4-windowsphone71/Microsoft.Phone.Controls.Toolkit.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/lib/wp8/Microsoft.Phone.Controls.Toolkit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WP8/packages/WPtoolkit.4.2012.10.30/lib/wp8/Microsoft.Phone.Controls.Toolkit.dll -------------------------------------------------------------------------------- /Wintellect.Sterling.WP8/packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT.Test/EngineFactory.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | 4 | using Wintellect.Sterling.Core; 5 | 6 | namespace Wintellect.Sterling.Test 7 | { 8 | internal static class Factory 9 | { 10 | public static SterlingEngine NewEngine() 11 | { 12 | return new SterlingEngine( NewPlatformAdapter() ); 13 | } 14 | 15 | public static ISterlingPlatformAdapter NewPlatformAdapter() 16 | { 17 | return new Wintellect.Sterling.WinRT.PlatformAdapter(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT.Test/Images/UnitTestLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WinRT.Test/Images/UnitTestLogo.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT.Test/Images/UnitTestSmallLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WinRT.Test/Images/UnitTestSmallLogo.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT.Test/Images/UnitTestSplashScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WinRT.Test/Images/UnitTestSplashScreen.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT.Test/Images/UnitTestStoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WinRT.Test/Images/UnitTestStoreLogo.png -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT.Test/Package.appxmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 7 | 8 | 9 | Wintellect.Sterling.WinRT.Test 10 | Josh 11 | Images\UnitTestStoreLogo.png 12 | Wintellect.Sterling.WinRT.Test 13 | 14 | 15 | 16 | 6.2.1 17 | 6.2.1 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 28 | 35 | 36 | 37 | 38 | 39 | 42 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT.Test/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Resources; 4 | using System.Reflection; 5 | using System.Runtime.CompilerServices; 6 | using System.Runtime.InteropServices; 7 | 8 | [assembly: AssemblyTitle( "Wintellect.Sterling.WinRT.Test" )] 9 | [assembly: AssemblyDescription( "Sterling NoSQL Database Windows Store Tests" )] 10 | [assembly: AssemblyConfiguration( "" )] 11 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT.Test/WindowsStorage/TestStorageHelper.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.IO; 4 | using System.Text; 5 | using System.Runtime.Serialization; 6 | 7 | using Microsoft.VisualStudio.TestPlatform.UnitTestFramework; 8 | 9 | using Wintellect.Sterling.WinRT.WindowsStorage; 10 | 11 | namespace Wintellect.Sterling.Test.WindowsStorage 12 | { 13 | [TestClass] 14 | public class TestStorageHelper 15 | { 16 | [DataContract] 17 | private class MyClass 18 | { 19 | [DataMember] 20 | public string Name { get; set; } 21 | [DataMember] 22 | public int Age { get; set; } 23 | } 24 | 25 | [TestMethod] 26 | public void TestReadWriteBinaryFile() 27 | { 28 | var obj = new MyClass { Name = "Joe", Age = 87 }; 29 | var json = StorageHelper.Serialize( obj ); 30 | 31 | using ( var writer = StorageHelper.GetWriterForFileAsync( "joe.bin" ).Result ) 32 | { 33 | writer.Write( json ); 34 | } 35 | 36 | MyClass obj2 = null; 37 | 38 | using ( var reader = StorageHelper.GetReaderForFileAsync( "joe.bin" ).Result ) 39 | { 40 | var json2 = reader.ReadString(); 41 | obj2 = StorageHelper.Deserialize( json2 ); 42 | } 43 | 44 | Assert.AreEqual( obj.Name, obj2.Name ); 45 | Assert.AreEqual( obj.Age, obj2.Age ); 46 | } 47 | 48 | [TestMethod] 49 | public void TestEnsureFolderOneLevel() 50 | { 51 | StorageHelper.EnsureFolderExistsAsync( "one" ).Wait(); 52 | 53 | var one = StorageHelper.GetFolderAsync( "one" ).Result; 54 | 55 | Assert.AreEqual( "one", one.Name ); 56 | } 57 | 58 | [TestMethod] 59 | public void TestEnsureFolderMultipleLevel() 60 | { 61 | StorageHelper.EnsureFolderExistsAsync( "/one/two/three/four" ).Wait(); 62 | 63 | var four = StorageHelper.GetFolderAsync( "/one/two/three/four" ).Result; 64 | 65 | Assert.AreEqual( "four", four.Name ); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT.Test/Wintellect.Sterling.pfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/Wintellect.Sterling.WinRT.Test/Wintellect.Sterling.pfx -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 |  2 | using System; 3 | using System.Resources; 4 | using System.Reflection; 5 | using System.Runtime.CompilerServices; 6 | using System.Runtime.InteropServices; 7 | 8 | [assembly: AssemblyTitle( "Wintellect.Sterling.WinRT" )] 9 | [assembly: AssemblyDescription( "Sterling NoSQL Database Windows Store Edition" )] 10 | [assembly: AssemblyConfiguration( "" )] 11 | 12 | [assembly: InternalsVisibleTo( "Wintellect.Sterling.WinRT.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100a3b45c0ad256fd762ab7c2ff33a1b6ff2cde6292ea34689af322868b0ca96e85fabc3b565c2df4d44417dabddcf0b4872f38accd4045469f36dd176312472d2d26f91e0258008e5c5a8ff790d3afb505ea7562077002a5d196e180cc8de708862d236f2e5edb9dfe2ca637267a4a9b157dce0c461dc9d794eb89ac3fcaeadfe8" )] 13 | -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT/WindowsStorage/PathLock.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using Wintellect.Sterling.Core; 4 | 5 | namespace Wintellect.Sterling.WinRT.WindowsStorage 6 | { 7 | internal static class PathLock 8 | { 9 | private static readonly Dictionary _pathLocks = new Dictionary(); 10 | 11 | public static AsyncLock GetLock(string path) 12 | { 13 | var hash = path.GetHashCode(); 14 | 15 | lock (((ICollection)_pathLocks).SyncRoot) 16 | { 17 | AsyncLock alock = null; 18 | 19 | if (_pathLocks.TryGetValue( hash, out alock ) == false ) 20 | { 21 | alock = _pathLocks[ hash ] = new AsyncLock(); 22 | } 23 | 24 | return alock; 25 | } 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Wintellect.Sterling.WinRT/Wintellect.Sterling.WinRT.sln.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | True 3 | C:\Users\Peter\Documents\GitHub\SterlingDB\Wintellect.Sterling.WinRT\Wintellect.Sterling.WinRT.sln.DotSettings 4 | True 5 | 3 6 | True 7 | 2 -------------------------------------------------------------------------------- /packages/WPToolkitTestFx.4.2012.11.14/WPToolkitTestFx.4.2012.11.14.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPToolkitTestFx.4.2012.11.14/WPToolkitTestFx.4.2012.11.14.nupkg -------------------------------------------------------------------------------- /packages/WPToolkitTestFx.4.2012.11.14/WPToolkitTestFx.4.2012.11.14.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WPToolkitTestFx 5 | 4.2012.11.14 6 | Windows Phone Toolkit Test Framework 7 | Microsoft 8 | Microsoft 9 | http://phone.codeplex.com/license 10 | http://phone.codeplex.com/ 11 | false 12 | Windows Phone Toolkit Test Framework provides an easy way to integrate unit tests for your Windows Phone apps. 13 | This update includes WP7.1 and WP8.0 versions of the package. 14 | It has a dependency on WPToolkit package. 15 | http://phone.codeplex.com/license 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Email.png -------------------------------------------------------------------------------- /packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Play.png -------------------------------------------------------------------------------- /packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPToolkitTestFx.4.2012.11.14/content/Toolkit.Content/ApplicationBar.Save.png -------------------------------------------------------------------------------- /packages/WPToolkitTestFx.4.2012.11.14/lib/README_FIRST.TXT: -------------------------------------------------------------------------------- 1 | Windows Phone Toolkit Test Framework(WPToolkitTestFx) package has a dependency on the Windows Phone Toolkit(WPtoolkit) package. -------------------------------------------------------------------------------- /packages/WPToolkitTestFx.4.2012.11.14/lib/sl4-wp71/Microsoft.Phone.Toolkit.Testing.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPToolkitTestFx.4.2012.11.14/lib/sl4-wp71/Microsoft.Phone.Toolkit.Testing.dll -------------------------------------------------------------------------------- /packages/WPToolkitTestFx.4.2012.11.14/lib/sl4-wp71/Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPToolkitTestFx.4.2012.11.14/lib/sl4-wp71/Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll -------------------------------------------------------------------------------- /packages/WPToolkitTestFx.4.2012.11.14/lib/wp8/Microsoft.Phone.Toolkit.Testing.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPToolkitTestFx.4.2012.11.14/lib/wp8/Microsoft.Phone.Toolkit.Testing.dll -------------------------------------------------------------------------------- /packages/WPToolkitTestFx.4.2012.11.14/lib/wp8/Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPToolkitTestFx.4.2012.11.14/lib/wp8/Microsoft.VisualStudio.QualityTools.UnitTesting.Phone.dll -------------------------------------------------------------------------------- /packages/WPtoolkit.4.2012.10.30/WPtoolkit.4.2012.10.30.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPtoolkit.4.2012.10.30/WPtoolkit.4.2012.10.30.nupkg -------------------------------------------------------------------------------- /packages/WPtoolkit.4.2012.10.30/WPtoolkit.4.2012.10.30.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WPtoolkit 5 | 4.2012.10.30 6 | Windows Phone toolkit 7 | Microsoft 8 | Microsoft 9 | http://phone.codeplex.com/license 10 | http://phone.codeplex.com/ 11 | false 12 | Windows Phone toolkit provides a collection of controls, extension methods and page animations to help create beautiful and consistent Windows Phone user interfaces and make common progamming tasks easier. Documentation and source are on CodePlex at http://phone.codeplex.com. 13 | Release notes - http://phone.codeplex.com/releases/view/96743 14 | 15 | Includes - 16 | 17 | Refactored project to support Windows Phone 7.1, 8.0 and more with maximum code sharing. 18 | 19 | WP8 Map API extensions, including Modern PushPin control 20 | 21 | LongListMultiSelector control, including Grid view multiselect. 22 | Control themes updated to match WP8 UI 23 | 24 | Large number of RTL bugs fixed now that RTL is a fully supported feature in WP8 25 | 26 | 25+ bugs fixed 27 | Contains all the fixes, improvements and new controls that were part of the September 2012 release 28 | 29 | WP8 specific - 30 | Removed LongListSelector as it’s now part of the SDK 31 | Removed Tuple.cs 32 | 33 | Removed PerformanceProgressBar (though we are taking the suggestion that we should add it back as a descendent of ProgressBar for backcompat) 34 | 35 | Removed GestureListener 36 | http://phone.codeplex.com/license 37 | en-US 38 | wptoolkit toolkit windowsphone wp7 wp7dev phone tk wp7tk controls mango wp8 apollo 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /packages/WPtoolkit.4.2012.10.30/content/README_FIRST.txt: -------------------------------------------------------------------------------- 1 | For the Windows Phone toolkit make sure that you have 2 | marked the icons in the "Toolkit.Content" folder as content. That way they 3 | can be used as the icons for the ApplicationBar control. -------------------------------------------------------------------------------- /packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Cancel.png -------------------------------------------------------------------------------- /packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Check.png -------------------------------------------------------------------------------- /packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Delete.png -------------------------------------------------------------------------------- /packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPtoolkit.4.2012.10.30/content/Toolkit.Content/ApplicationBar.Select.png -------------------------------------------------------------------------------- /packages/WPtoolkit.4.2012.10.30/lib/sl3-wp/Microsoft.Phone.Controls.Toolkit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPtoolkit.4.2012.10.30/lib/sl3-wp/Microsoft.Phone.Controls.Toolkit.dll -------------------------------------------------------------------------------- /packages/WPtoolkit.4.2012.10.30/lib/sl4-windowsphone71/Microsoft.Phone.Controls.Toolkit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPtoolkit.4.2012.10.30/lib/sl4-windowsphone71/Microsoft.Phone.Controls.Toolkit.dll -------------------------------------------------------------------------------- /packages/WPtoolkit.4.2012.10.30/lib/wp8/Microsoft.Phone.Controls.Toolkit.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Wintellect/SterlingDB/b4f61a0d9df5096a4df440aeebd5632950d1a068/packages/WPtoolkit.4.2012.10.30/lib/wp8/Microsoft.Phone.Controls.Toolkit.dll -------------------------------------------------------------------------------- /packages/repositories.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | --------------------------------------------------------------------------------