1. 17 Dec, 2015 1 commit
  2. 16 Dec, 2015 1 commit
  3. 15 Dec, 2015 2 commits
    • Jon Skeet's avatar
      Generated code changes from previous commit. · adee6fe3
      Jon Skeet authored
      adee6fe3
    • Jon Skeet's avatar
      Make ToString() valid without a type registry · aabc6c41
      Jon Skeet authored
      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.
      aabc6c41
  4. 02 Dec, 2015 2 commits
    • Jon Skeet's avatar
      Handle JSON parsing for Any. · 3de2fced
      Jon Skeet authored
      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...
      3de2fced
    • Jon Skeet's avatar
      JSON formatting for Any. · 567579b5
      Jon Skeet authored
      567579b5
  5. 22 Nov, 2015 2 commits
    • Jon Skeet's avatar
      Generated code changes for previous commit (basically… · a2667aaf
      Jon Skeet authored
      Generated code changes for previous commit (basically InternalBuildGeneratedFileFrom => FromGeneratedCode)
      a2667aaf
    • Jon Skeet's avatar
      Tidy up reflection in advance of attempting to implement DynamicMessage. · 72ec3367
      Jon Skeet authored
      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.
      72ec3367
  6. 21 Nov, 2015 1 commit
  7. 19 Nov, 2015 3 commits
  8. 09 Nov, 2015 1 commit
  9. 06 Nov, 2015 1 commit
  10. 05 Nov, 2015 2 commits
    • Jon Skeet's avatar
      Reimplement JSON recursion by detecting the depth in the tokenizer. · 6fa17e75
      Jon Skeet authored
      Added a TODO around a possible change to the tokenizer API, changing PushBack(token) into just Rewind() or something similar.
      6fa17e75
    • Jon Skeet's avatar
      Created a new exception for JSON failures. · 0fb39c4a
      Jon Skeet authored
      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.
      0fb39c4a
  11. 04 Nov, 2015 2 commits
  12. 03 Nov, 2015 1 commit
    • Jon Skeet's avatar
      Implement JSON parsing in C#. · fb248822
      Jon Skeet authored
      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.
      fb248822
  13. 02 Nov, 2015 1 commit
  14. 30 Oct, 2015 1 commit
  15. 24 Oct, 2015 1 commit
  16. 01 Oct, 2015 2 commits
    • Jon Skeet's avatar
      Support ToString in RepeatedField and MapField. · 9ed6d4da
      Jon Skeet authored
      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.
      9ed6d4da
    • Jon Skeet's avatar
      Generated code from previous commit. · 18e0a2e5
      Jon Skeet authored
      18e0a2e5
  17. 30 Sep, 2015 1 commit
  18. 29 Sep, 2015 3 commits
  19. 04 Sep, 2015 1 commit
    • Jon Skeet's avatar
      Pack/Unpack implementation for Any. · e50461d8
      Jon Skeet authored
      We still need the JSON representation, which relies on something like a DescriptorPool to fetch message types from based on the type URL. That will come a bit later.
      (The DescriptorPool comment in this commit is just a note which will prove useful if we use DescriptorPool itself.)
      e50461d8
  20. 01 Sep, 2015 1 commit
  21. 26 Aug, 2015 3 commits
  22. 25 Aug, 2015 1 commit
    • Jon Skeet's avatar
      Change where we rename Descriptor.cs to DescriptorProtoFile.cs. · ca89a1a1
      Jon Skeet authored
      We now do this in protoc instead of the generation simpler.
      
      Benefits:
      - Generation script is simpler
      - Detection is simpler as we now only need to care about one filename
      - The embedded descriptor knows itself as "google/protobuf/descriptor.proto" avoiding dependency issues
      
      This PR also makes the "invalid dependency" exception clearer in terms of expected and actual dependencies.
      ca89a1a1
  23. 14 Aug, 2015 1 commit
  24. 13 Aug, 2015 1 commit
    • Jon Skeet's avatar
      Allow public access to descriptor.proto as a dependency. · a39ababb
      Jon Skeet authored
      With this in place, generating APIs on github.com/google/googleapis works - previously annotations.proto failed.
      Currently there's no access to the annotations (stored as extensions) but we could potentially expose those at a later date.
      a39ababb
  25. 10 Aug, 2015 3 commits
  26. 08 Aug, 2015 1 commit