Skip to content

Commit f7ca800

Browse files
authored
Merge pull request #303 from msgpack/fix/#296-1.1
Fix #296 with new compatibility options
2 parents e6b43e4 + b7ff7d2 commit f7ca800

File tree

45 files changed

+1743
-326
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1743
-326
lines changed

CHANGES.txt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -753,3 +753,17 @@ Release 1.0.0 2018-6-14
753753
* Fix map keys order emitted by asymmetric (serialization only) serializer are inconsistent across platform.
754754
* Fix Unity build does not honor serialization related attributes correctly.
755755
* Fix internal inconsitency between serialization related attributes detection and their parameter retrieval.
756+
757+
Release 1.0.1 2018-09-09
758+
759+
BUG FIXES
760+
* Fix conversion from DateTime[Offset] to Timestamp failure for before Unix epoc. #296
761+
762+
Release 1.1
763+
764+
BUG FIXES
765+
* Fix conversion from DateTime[Offset] to Timestamp failure for before Unix epoc. #296 (port from 1.0.x branch)
766+
767+
NEW FEATURE
768+
* Allow programatically ignoring arbitary members via BindingOptions. Thank you @ShrenikOne #282
769+
* To prevent accidental Timestamp serialization in existing code, SerializationContext.ConfigureClassic(SerializationCompatibilityLevel) and SerializationContext.CreateClassicContext(SerializationCompatibilityLevel) are added. #296

Sync.Test.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@
297297
"base": "MsgPack.UnitTest.Uwp",
298298
"globs": [
299299
{"type": "include", "path": "../../src/MsgPack/Tuple`n.cs"},
300+
{"type": "remove", "path": "./Assets/**/*.cs"},
300301
{"type": "remove", "path": "../MsgPack.UnitTest/AssertEx.cs"},
301302
{"type": "remove", "path": "../MsgPack.UnitTest/gen/**/*.cs"},
302303
{"type": "include", "path": "../MsgPack.UnitTest/gen35/**/*.cs"},

appveyor-release.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ image: Visual Studio 2017
33
branches:
44
only:
55
- master
6-
- 0.7
7-
- 0.8
8-
- 0.9
6+
- /[0-9]+\.[0-9]+(\.[xX])?/
97
configuration: Release
108
assembly_info:
119
patch: true

build/Build.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ if ( $buildConfig -eq 'Release' )
158158
{
159159
Write-Host "Build NuGet packages..."
160160

161-
& $msbuild ../src/MsgPack/MsgPack.csproj /t:pack /v:minimal /p:Configuration=$buildConfig /p:IncludeSource=true /p:NuspecProperties=version=$env:PackageVersion
161+
& $msbuild ../src/MsgPack/MsgPack.csproj /t:pack /v:minimal /p:Configuration=$buildConfig /p:IncludeSource=true /p:IncludeSymbols=true /p:NuspecProperties=version=$env:PackageVersion
162162

163163
Move-Item ../bin/*.nupkg ../dist/
164164
Copy-Item ../bin/* ./MsgPack-CLI/ -Recurse -Exclude @("*.vshost.*")

src/MsgPack.Silverlight.5/MsgPack.Silverlight.5.csproj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,9 @@
245245
<Compile Include="..\MsgPack\Serialization\ReflectionExtensions.ConstructorDelegate.cs">
246246
<Link>Serialization\ReflectionExtensions.ConstructorDelegate.cs</Link>
247247
</Compile>
248+
<Compile Include="..\MsgPack\Serialization\BindingOptions.cs">
249+
<Link>Serialization\BindingOptions.cs</Link>
250+
</Compile>
248251
<Compile Include="..\MsgPack\Serialization\CollectionDetailedKind.cs">
249252
<Link>Serialization\CollectionDetailedKind.cs</Link>
250253
</Compile>
@@ -671,11 +674,11 @@
671674
<Compile Include="..\MsgPack\Serialization\ResolveSerializerEventArgs.cs">
672675
<Link>Serialization\ResolveSerializerEventArgs.cs</Link>
673676
</Compile>
677+
<Compile Include="..\MsgPack\Serialization\SerializationCompatibilityLevel.cs">
678+
<Link>Serialization\SerializationCompatibilityLevel.cs</Link>
679+
</Compile>
674680
<Compile Include="..\MsgPack\Serialization\SerializationCompatibilityOptions.cs">
675681
<Link>Serialization\SerializationCompatibilityOptions.cs</Link>
676-
</Compile>
677-
<Compile Include="..\MsgPack\Serialization\BindingOptions.cs">
678-
<Link>Serialization\BindingOptions.cs</Link>
679682
</Compile>
680683
<Compile Include="..\MsgPack\Serialization\SerializationContext.cs">
681684
<Link>Serialization\SerializationContext.cs</Link>

src/MsgPack.Silverlight.WindowsPhone/MsgPack.Silverlight.WindowsPhone.csproj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,9 @@
216216
<Compile Include="..\MsgPack\ReflectionAbstractions.cs">
217217
<Link>ReflectionAbstractions.cs</Link>
218218
</Compile>
219+
<Compile Include="..\MsgPack\Serialization\BindingOptions.cs">
220+
<Link>Serialization\BindingOptions.cs</Link>
221+
</Compile>
219222
<Compile Include="..\MsgPack\Serialization\CollectionDetailedKind.cs">
220223
<Link>Serialization\CollectionDetailedKind.cs</Link>
221224
</Compile>
@@ -678,11 +681,11 @@
678681
<Compile Include="..\MsgPack\Serialization\ResolveSerializerEventArgs.cs">
679682
<Link>Serialization\ResolveSerializerEventArgs.cs</Link>
680683
</Compile>
684+
<Compile Include="..\MsgPack\Serialization\SerializationCompatibilityLevel.cs">
685+
<Link>Serialization\SerializationCompatibilityLevel.cs</Link>
686+
</Compile>
681687
<Compile Include="..\MsgPack\Serialization\SerializationCompatibilityOptions.cs">
682688
<Link>Serialization\SerializationCompatibilityOptions.cs</Link>
683-
</Compile>
684-
<Compile Include="..\MsgPack\Serialization\BindingOptions.cs">
685-
<Link>Serialization\BindingOptions.cs</Link>
686689
</Compile>
687690
<Compile Include="..\MsgPack\Serialization\SerializationContext.cs">
688691
<Link>Serialization\SerializationContext.cs</Link>

src/MsgPack.Unity.Full/MsgPack.Unity.Full.csproj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,9 @@
220220
<Compile Include="..\MsgPack\Serialization\Tracer.cs">
221221
<Link>Serialization\Tracer.cs</Link>
222222
</Compile>
223+
<Compile Include="..\MsgPack\Serialization\BindingOptions.cs">
224+
<Link>Serialization\BindingOptions.cs</Link>
225+
</Compile>
223226
<Compile Include="..\MsgPack\Serialization\CollectionDetailedKind.cs">
224227
<Link>Serialization\CollectionDetailedKind.cs</Link>
225228
</Compile>
@@ -649,11 +652,11 @@
649652
<Compile Include="..\MsgPack\Serialization\ResolveSerializerEventArgs.cs">
650653
<Link>Serialization\ResolveSerializerEventArgs.cs</Link>
651654
</Compile>
655+
<Compile Include="..\MsgPack\Serialization\SerializationCompatibilityLevel.cs">
656+
<Link>Serialization\SerializationCompatibilityLevel.cs</Link>
657+
</Compile>
652658
<Compile Include="..\MsgPack\Serialization\SerializationCompatibilityOptions.cs">
653659
<Link>Serialization\SerializationCompatibilityOptions.cs</Link>
654-
</Compile>
655-
<Compile Include="..\MsgPack\Serialization\BindingOptions.cs">
656-
<Link>Serialization\BindingOptions.cs</Link>
657660
</Compile>
658661
<Compile Include="..\MsgPack\Serialization\SerializationContext.cs">
659662
<Link>Serialization\SerializationContext.cs</Link>

src/MsgPack.Unity/MsgPack.Unity.csproj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,13 +234,13 @@
234234
</Compile>
235235
<Compile Include="..\MsgPack\ReflectionAbstractions.cs">
236236
<Link>ReflectionAbstractions.cs</Link>
237-
</Compile>
238-
<Compile Include="..\MsgPack\Serialization\BindingOptions.cs">
239-
<Link>Serialization\BindingOptions.cs</Link>
240237
</Compile>
241238
<Compile Include="..\MsgPack\Serialization\Tracer.cs">
242239
<Link>Serialization\Tracer.cs</Link>
243240
</Compile>
241+
<Compile Include="..\MsgPack\Serialization\BindingOptions.cs">
242+
<Link>Serialization\BindingOptions.cs</Link>
243+
</Compile>
244244
<Compile Include="..\MsgPack\Serialization\CollectionDetailedKind.cs">
245245
<Link>Serialization\CollectionDetailedKind.cs</Link>
246246
</Compile>
@@ -658,6 +658,9 @@
658658
<Compile Include="..\MsgPack\Serialization\ResolveSerializerEventArgs.cs">
659659
<Link>Serialization\ResolveSerializerEventArgs.cs</Link>
660660
</Compile>
661+
<Compile Include="..\MsgPack\Serialization\SerializationCompatibilityLevel.cs">
662+
<Link>Serialization\SerializationCompatibilityLevel.cs</Link>
663+
</Compile>
661664
<Compile Include="..\MsgPack\Serialization\SerializationCompatibilityOptions.cs">
662665
<Link>Serialization\SerializationCompatibilityOptions.cs</Link>
663666
</Compile>

src/MsgPack.Uwp/MsgPack.Uwp.csproj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,9 @@
244244
<Compile Include="..\MsgPack\ReflectionAbstractions.cs">
245245
<Link>ReflectionAbstractions.cs</Link>
246246
</Compile>
247+
<Compile Include="..\MsgPack\Serialization\BindingOptions.cs">
248+
<Link>Serialization\BindingOptions.cs</Link>
249+
</Compile>
247250
<Compile Include="..\MsgPack\Serialization\CollectionDetailedKind.cs">
248251
<Link>Serialization\CollectionDetailedKind.cs</Link>
249252
</Compile>
@@ -721,11 +724,11 @@
721724
<Compile Include="..\MsgPack\Serialization\ResolveSerializerEventArgs.cs">
722725
<Link>Serialization\ResolveSerializerEventArgs.cs</Link>
723726
</Compile>
727+
<Compile Include="..\MsgPack\Serialization\SerializationCompatibilityLevel.cs">
728+
<Link>Serialization\SerializationCompatibilityLevel.cs</Link>
729+
</Compile>
724730
<Compile Include="..\MsgPack\Serialization\SerializationCompatibilityOptions.cs">
725731
<Link>Serialization\SerializationCompatibilityOptions.cs</Link>
726-
</Compile>
727-
<Compile Include="..\MsgPack\Serialization\BindingOptions.cs">
728-
<Link>Serialization\BindingOptions.cs</Link>
729732
</Compile>
730733
<Compile Include="..\MsgPack\Serialization\SerializationContext.cs">
731734
<Link>Serialization\SerializationContext.cs</Link>

src/MsgPack/Serialization/BindingOptions.cs

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
//
2222
#endregion -- License Terms --
2323

24-
2524
using System;
2625
using System.Collections.Generic;
2726
using System.Linq;
@@ -34,9 +33,9 @@ namespace MsgPack.Serialization
3433
public class BindingOptions
3534
{
3635
/// <summary>
37-
/// Private mapping of types & their member skip list, which needs to ignore as part of serialization.
36+
/// Private mapping of types &amp; their member skip list, which needs to ignore as part of serialization.
3837
/// </summary>
39-
private readonly IDictionary<Type, IEnumerable<string>> typeIgnoringMembersMap = new Dictionary<Type, IEnumerable<string>>();
38+
private readonly IDictionary<Type, IEnumerable<string>> _typeIgnoringMembersMap = new Dictionary<Type, IEnumerable<string>>();
4039

4140
/// <summary>
4241
/// Sets the member skip list for a specific target type.
@@ -45,15 +44,15 @@ public class BindingOptions
4544
/// <param name="memberSkipList">The member skip list.</param>
4645
public void SetIgnoringMembers( Type targetType, IEnumerable<string> memberSkipList )
4746
{
48-
lock ( this.typeIgnoringMembersMap )
47+
lock ( this._typeIgnoringMembersMap )
4948
{
50-
if ( this.typeIgnoringMembersMap.ContainsKey( targetType ) )
49+
if ( this._typeIgnoringMembersMap.ContainsKey( targetType ) )
5150
{
52-
this.typeIgnoringMembersMap[ targetType ] = memberSkipList;
51+
this._typeIgnoringMembersMap[ targetType ] = memberSkipList;
5352
}
5453
else
5554
{
56-
this.typeIgnoringMembersMap.Add( targetType, memberSkipList );
55+
this._typeIgnoringMembersMap.Add( targetType, memberSkipList );
5756
}
5857
}
5958
}
@@ -65,11 +64,11 @@ public void SetIgnoringMembers( Type targetType, IEnumerable<string> memberSkipL
6564
/// <returns>Returns member skip list for a specific target type.</returns>
6665
public IEnumerable<string> GetIgnoringMembers( Type targetType )
6766
{
68-
lock ( this.typeIgnoringMembersMap )
67+
lock ( this._typeIgnoringMembersMap )
6968
{
70-
if ( this.typeIgnoringMembersMap.ContainsKey( targetType ) )
69+
if ( this._typeIgnoringMembersMap.ContainsKey( targetType ) )
7170
{
72-
return this.typeIgnoringMembersMap[ targetType ];
71+
return this._typeIgnoringMembersMap[ targetType ];
7372
}
7473
else
7574
{
@@ -84,9 +83,9 @@ public IEnumerable<string> GetIgnoringMembers( Type targetType )
8483
/// <returns>Returns all registered types specific ignoring members.</returns>
8584
public IDictionary<Type, IEnumerable<string>> GetAllIgnoringMembers()
8685
{
87-
lock ( this.typeIgnoringMembersMap )
86+
lock ( this._typeIgnoringMembersMap )
8887
{
89-
return this.typeIgnoringMembersMap.ToDictionary( item => item.Key, item => ( IEnumerable<string> )item.Value.ToArray() );
88+
return this._typeIgnoringMembersMap.ToDictionary( item => item.Key, item => ( IEnumerable<string> )item.Value.ToArray() );
9089
}
9190
}
9291
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#region -- License Terms --
2+
//
3+
// MessagePack for CLI
4+
//
5+
// Copyright (C) 2018 FUJIWARA, Yusuke and contributors
6+
//
7+
// Licensed under the Apache License, Version 2.0 (the "License");
8+
// you may not use this file except in compliance with the License.
9+
// You may obtain a copy of the License at
10+
//
11+
// http://www.apache.org/licenses/LICENSE-2.0
12+
//
13+
// Unless required by applicable law or agreed to in writing, software
14+
// distributed under the License is distributed on an "AS IS" BASIS,
15+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
// See the License for the specific language governing permissions and
17+
// limitations under the License.
18+
//
19+
// Contributors:
20+
// Samuel Cragg
21+
//
22+
#endregion -- License Terms --
23+
24+
namespace MsgPack.Serialization
25+
{
26+
/// <summary>
27+
/// Represents compatibility level.
28+
/// </summary>
29+
public enum SerializationCompatibilityLevel
30+
{
31+
/// <summary>
32+
/// Use latest feature. Almost backward compatible, but some compatibities are broken.
33+
/// </summary>
34+
Latest = 0,
35+
36+
/// <summary>
37+
/// Compatible for version 0.5.x or former.
38+
/// </summary>
39+
Version0_5,
40+
41+
/// <summary>
42+
/// Compatible for version 0.6.x, 0.7.x, 0.8.x, and 0.9.x.
43+
/// </summary>
44+
Version0_9
45+
}
46+
}

0 commit comments

Comments
 (0)