aboutsummaryrefslogtreecommitdiffhomepage
path: root/csharp/src/Google.Protobuf
Commit message (Collapse)AuthorAge
* Rename Preconditions to ProtoPreconditionsGravatar Jon Skeet2016-02-04
| | | | (Generated code changes in next commit.)
* Generated code for GeneratedCodeInfo changeGravatar Jon Skeet2016-02-04
|
* Rename GeneratedCodeInfo to GeneratedClrTypeInfoGravatar Jon Skeet2016-02-04
| | | | | | | Recently, descriptor.proto gained a GeneratedCodeInfo message, which means the generated code conflicts with our type. Unfortunately this affects codegen as well, although this is a part of the public API which is very unlikely to affect hand-written code. Generated code changes in next commit.
* Ensure that FieldMask, Timestamp and Duration ToString() calls don't throwGravatar Jon Skeet2016-01-20
| | | | | | | | | | | | | The usage of ICustomDiagnosticMessage here is non-essential - ToDiagnosticString doesn't actually get called by ToString() in this case, due to JsonFormatter code. It was intended to make it clearer that it *did* have a custom format... but then arguably I should do the same for Value, Struct, Any etc. Moving some of the code out of JsonFormatter and into Duration/Timestamp/FieldMask likewise feels somewhat nice, somewhat nasty... basically there are JSON-specific bits of formatting, but also domain-specific bits of computation. <sigh> Thoughts welcome.
* Merge pull request #1096 from jskeet/custom-to-stringGravatar Jan Tattermusch2016-01-19
|\ | | | | Introduce ICustomDiagnosticMessage to allow for custom string formatting
* | Make sure thatGravatar Jon Skeet2016-01-15
| | | | | | | | | | | | "valueField": null is parsed appropriately, i.e. that it remembers that the field is set.
* | Reject JSON containing the same oneof field twiceGravatar Jon Skeet2016-01-15
| |
* | Change handling of unknown enums: we now write out the value as a number.Gravatar Jon Skeet2016-01-15
| |
* | Extra strictness for FieldMask conversionGravatar Jon Skeet2016-01-15
| |
* | Allow the original field name (rather than camel-cased) when parsing JSONGravatar Jon Skeet2016-01-15
| |
* | Fixes to JSON timestamp/duration representationsGravatar Jon Skeet2016-01-15
| |
* | Prohibit null values in repeated and map fields in JSONGravatar Jon Skeet2016-01-15
| |
* | Throw a better exception when invalid base64 is detected in JSONGravatar Jon Skeet2016-01-15
| |
* | Support (and test) numeric enum parsing in JSONGravatar Jon Skeet2016-01-15
| |
* | Fix handling of repeated wrappersGravatar Jon Skeet2016-01-15
| | | | | | | | | | Previously we were incorrectly packing wrapper types. This also refactors FieldCodec a bit as well, using more C# 6-ness.
* | JSON conformance test fixesGravatar Jon Skeet2016-01-13
| | | | | | | | | | - Spot an Any without a type URL - In the conformance test runner, catch exceptions due to generally-invalid JSON
| * Introduce ICustomDiagnosticMessage to allow for custom string formattingGravatar Jon Skeet2016-01-13
|/ | | | This fixes issue #933, effectively.
* Prohibit null values in map fieldsGravatar Jon Skeet2016-01-11
| | | | | On deserialization, missing values for message types are replaced with a "default" message.
* Merge pull request #1098 from jskeet/wkt-jsonGravatar Jan Tattermusch2016-01-08
|\ | | | | Ensure all formatted well-known-type values are valid JSON
* \ Merge pull request #1088 from jskeet/codec-pruningGravatar Jan Tattermusch2016-01-08
|\ \ | | | | | | Remove unused method in FieldCodec.
| | * Ensure all formatted well-known-type values are valid JSONGravatar Jon Skeet2016-01-06
| | | | | | | | | | | | | | | | | | | | | This involves quoting timestamp/duration/field-mask values, even when they're not in fields. It's better for consistency. Fixes issue #1097.
* | | Improve number handling in JSON parsingGravatar Jon Skeet2016-01-06
| |/ |/| | | | | | | | | - Tighten up on Infinity/NaN handling in terms of whitespace handling (and test casing) - Validate that values are genuinely integers when they've been parsed from a JSON number (ignoring the fact that 1.0000000000000000001 == 1 as a double...) - Allow exponents and decimal points in string representations
| * Remove unused method in FieldCodec.Gravatar Jon Skeet2016-01-05
|/ | | | (The method was last used a very long time ago, if ever.)
* add reference generator dependencyGravatar Jan Tattermusch2015-12-17
|
* Merge pull request #1049 from jskeet/any-formatGravatar Jon Skeet2015-12-17
|\ | | | | Handle Any formatting for diagnostic purposes
* | make nuget package support CoreCLRGravatar Jan Tattermusch2015-12-16
| |
| * Generated code changes from previous commit.Gravatar Jon Skeet2015-12-15
| |
| * Make ToString() valid without a type registryGravatar Jon Skeet2015-12-15
|/ | | | | | | | | | | | | | | This addresses issue #1008, by creating a JsonFormatter which is private and only different to JsonFormatter.Default in terms of reference equality. Other plausible designs: - The same, but expose the diagnostic-only formatter - Add something to settings to say "I don't have a type registry at all" - Change the behaviour of JsonFormatter.Default (bad idea IMO, as we really *don't* want the result of this used as regular JSON to be parsed) Note that just trying to find a separate fix to issue #933 and using that to override Any.ToString() differently wouldn't work for messages that *contain* an Any. Generated code changes follow in the next commit.
* Handle JSON parsing for Any.Gravatar Jon Skeet2015-12-02
| | | | This required a rework of the tokenizer to allow for a "replaying" tokenizer, basically in case the @type value comes after the data itself. This rework is nice in some ways (all the pushback and object depth logic in one place) but is a little fragile in terms of token push-back when using the replay tokenizer. It'll be fine for the scenario we need it for, but we should be careful...
* JSON formatting for Any.Gravatar Jon Skeet2015-12-02
|
* Generated code changes for previous commit (basically ↵Gravatar Jon Skeet2015-11-22
| | | | InternalBuildGeneratedFileFrom => FromGeneratedCode)
* Tidy up reflection in advance of attempting to implement DynamicMessage.Gravatar Jon Skeet2015-11-22
| | | | | | | | | There are corner cases where MessageDescriptor.{ClrType,Parser} will return null, and these are now documented. However, normally they *should* be implemented, even for descriptors of for dynamic messages. Ditto FieldDescriptor.Accessor. We'll still need a fair amount of work to implement dynamic messages, but this change means that the public API will be remain intact. Additionally, this change starts making use of C# 6 features in the files that it touches. This is far from exhaustive, and later PRs will have more. Generated code changes coming in the next commit.
* Added the type registry in advance of implementing Any support.Gravatar Jon Skeet2015-11-21
| | | | Biting off just this bit first as I don't need the changes from a previous PR for this part.
* Finished an implementation commentGravatar Jon Skeet2015-11-19
|
* Generated code from previous commit.Gravatar Jon Skeet2015-11-19
|
* Introduce a Parser property into MessageDescriptor, and populate it from ↵Gravatar Jon Skeet2015-11-19
| | | | | | generated types. Generated code coming in next commit - in a subsequent PR I want to do a bit of renaming and redocumenting around this, in anticipation of DynamicMessage.
* Generated code changes and manual changes for previous commit.Gravatar Jon Skeet2015-11-09
|
* Generated code for previous commit.Gravatar Jon Skeet2015-11-06
|
* Merge pull request #941 from jskeet/recursion-limitGravatar Jan Tattermusch2015-11-05
|\ | | | | Add recursion limit handling to JSON parsing.
| * Reimplement JSON recursion by detecting the depth in the tokenizer.Gravatar Jon Skeet2015-11-05
| | | | | | | | Added a TODO around a possible change to the tokenizer API, changing PushBack(token) into just Rewind() or something similar.
* | Merge pull request #940 from jskeet/json-namesGravatar Jon Skeet2015-11-05
|\ \ | | | | | | Move the creation of the "fields by JSON name" dictionary to the descriptor
* | | Created a new exception for JSON failures.Gravatar Jon Skeet2015-11-05
| | | | | | | | | | | | | | | | | | This is only thrown directly by JsonTokenizer, but surfaces from JsonParser as well. I've added doc comments to hopefully make everything clear. The exception is actually thrown by the reader within JsonTokenizer, in anticipation of keeping track of the location within the document, but that change is not within this PR.
| | * Add recursion limit handling to JSON parsing.Gravatar Jon Skeet2015-11-04
| |/ |/| | | | | Fixes issue #932.
| * Move the creation of the "fields by JSON name" dictionary to the descriptor.Gravatar Jon Skeet2015-11-04
|/
* Implement JSON parsing in C#.Gravatar Jon Skeet2015-11-03
| | | | | | | | | | This includes all the well-known types except Any. Some aspects are likely to require further work when the details of the JSON parsing expectations are hammered out in more detail. Some of these have "ignored" tests already. Note that the choice *not* to use Json.NET was made for two reasons: - Going from 0 dependencies to 1 dependency is a big hit, and there's not much benefit here - Json.NET parses more leniently than we'd want; accommodating that would be nearly as much work as writing the tokenizer This only really affects the JsonTokenizer, which could be replaced by Json.NET. The JsonParser code would be about the same length with Json.NET... but I wouldn't be as confident in it.
* Make BytesString.Unsafe internal (which it should have been all along)Gravatar Jon Skeet2015-11-02
|
* Fix clearing wrapper type fields with reflection.Gravatar Jon Skeet2015-10-30
| | | | The nullable value type fields already worked, but the use of the CLR property concealed the difference between string and StringWrapper fields.
* Generated code for previous commit (oneof case contributing to hash code and ↵Gravatar Jon Skeet2015-10-24
| | | | equality).
* Merge pull request #846 from jskeet/tostringGravatar Jon Skeet2015-10-07
|\ | | | | Support ToString in RepeatedField and MapField.
| * Support ToString in RepeatedField and MapField.Gravatar Jon Skeet2015-10-01
| | | | | | | | | | | | This changes how we approach JSON formatting in general - instead of looking at the field a value came from, we just look at the type of the value. It's possible this *could* be slightly inefficient, but if we start caring about JSON performance deeply, we'll probably want to rewrite all of this anyway. It's definitely simpler this way. When we support dynamic messages, we'll need to modify JsonFormatter to handle enum values, as they won't come be "real" .NET enums at that point. It shouldn't be hard to do though.