diff options
| author | Rob Mensching <rob@firegiant.com> | 2017-12-06 11:21:42 -0800 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2017-12-06 11:21:42 -0800 |
| commit | ca376995792d2e2a1a7f39760989496702a8f603 (patch) | |
| tree | d9d2f35647d8fe77a91a63740d0ad267c32547b2 /src/WixToolset.Data/IntermediateFieldValue.cs | |
| parent | 53e877183abe0dbbb623c39380101bc369e9f265 (diff) | |
| download | wix-ca376995792d2e2a1a7f39760989496702a8f603.tar.gz wix-ca376995792d2e2a1a7f39760989496702a8f603.tar.bz2 wix-ca376995792d2e2a1a7f39760989496702a8f603.zip | |
Fix handling of long values and baseUri in path fields
Diffstat (limited to 'src/WixToolset.Data/IntermediateFieldValue.cs')
| -rw-r--r-- | src/WixToolset.Data/IntermediateFieldValue.cs | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/WixToolset.Data/IntermediateFieldValue.cs b/src/WixToolset.Data/IntermediateFieldValue.cs index 2064afec..88bfb910 100644 --- a/src/WixToolset.Data/IntermediateFieldValue.cs +++ b/src/WixToolset.Data/IntermediateFieldValue.cs | |||
| @@ -45,7 +45,7 @@ namespace WixToolset.Data | |||
| 45 | return value.AsString(); | 45 | return value.AsString(); |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | internal static IntermediateFieldValue Deserialize(JsonObject jsonObject) | 48 | internal static IntermediateFieldValue Deserialize(JsonObject jsonObject, Uri baseUri, IntermediateFieldType type) |
| 49 | { | 49 | { |
| 50 | var context = jsonObject.GetValueOrDefault<string>("context"); | 50 | var context = jsonObject.GetValueOrDefault<string>("context"); |
| 51 | if (!jsonObject.TryGetValue("data", out var data)) | 51 | if (!jsonObject.TryGetValue("data", out var data)) |
| @@ -55,26 +55,30 @@ namespace WixToolset.Data | |||
| 55 | 55 | ||
| 56 | var value = data; | 56 | var value = data; |
| 57 | 57 | ||
| 58 | if (data is JsonObject jsonData) | 58 | if (data is string) |
| 59 | { | 59 | { |
| 60 | Uri baseUri = null; | 60 | } |
| 61 | 61 | else if (data is long) | |
| 62 | if (jsonData.TryGetValue("baseUri", out var baseUriValue) && baseUriValue is string) | 62 | { |
| 63 | if (type == IntermediateFieldType.Number) | ||
| 63 | { | 64 | { |
| 64 | baseUri = new Uri((string)baseUriValue); | 65 | value = Convert.ToInt32(data); |
| 65 | } | 66 | } |
| 67 | } | ||
| 68 | else if (data is JsonObject jsonData) | ||
| 69 | { | ||
| 66 | jsonData.TryGetValue("embeddedIndex", out var embeddedIndex); | 70 | jsonData.TryGetValue("embeddedIndex", out var embeddedIndex); |
| 67 | 71 | ||
| 68 | value = new IntermediateFieldPathValue | 72 | value = new IntermediateFieldPathValue |
| 69 | { | 73 | { |
| 70 | BaseUri = baseUri, | 74 | BaseUri = (embeddedIndex == null) ? null : baseUri, |
| 71 | EmbeddedFileIndex = (int?)embeddedIndex, | 75 | EmbeddedFileIndex = (embeddedIndex == null) ? null : (int?)Convert.ToInt32(embeddedIndex), |
| 72 | Path = jsonData.GetValueOrDefault<string>("path"), | 76 | Path = jsonData.GetValueOrDefault<string>("path"), |
| 73 | }; | 77 | }; |
| 74 | } | 78 | } |
| 75 | 79 | ||
| 76 | var previousValueJson = jsonObject.GetValueOrDefault<JsonObject>("prev"); | 80 | var previousValueJson = jsonObject.GetValueOrDefault<JsonObject>("prev"); |
| 77 | var previousValue = (previousValueJson == null) ? null : IntermediateFieldValue.Deserialize(previousValueJson); | 81 | var previousValue = (previousValueJson == null) ? null : IntermediateFieldValue.Deserialize(previousValueJson, baseUri, type); |
| 78 | 82 | ||
| 79 | return new IntermediateFieldValue | 83 | return new IntermediateFieldValue |
| 80 | { | 84 | { |
| @@ -97,10 +101,7 @@ namespace WixToolset.Data | |||
| 97 | { | 101 | { |
| 98 | var jsonData = new JsonObject(); | 102 | var jsonData = new JsonObject(); |
| 99 | 103 | ||
| 100 | if (pathField.BaseUri != null) | 104 | // pathField.BaseUri is set during load, not saved. |
| 101 | { | ||
| 102 | jsonData.Add("baseUri", pathField.BaseUri.AbsoluteUri); | ||
| 103 | } | ||
| 104 | 105 | ||
| 105 | if (pathField.EmbeddedFileIndex.HasValue) | 106 | if (pathField.EmbeddedFileIndex.HasValue) |
| 106 | { | 107 | { |
