Commit Graph

526 Commits

Author SHA1 Message Date
Jan Tattermusch
fda9049ead remove leading whitespace in C# xml comments 2016-12-12 12:41:26 +01:00
Michael Darakananda
bb77cbf05a update descriptor.proto's go_package
This change has already been made in google's repo.
Replicating the change here to unblock work on genproto.
2016-12-07 18:15:17 +11:00
Joshua Haberman
f1ce60e7b4 Factored Conformance and Benchmark test messages into shared test schema. (#1971)
* Factored Conformance test messages into shared test schema.

* Updated benchmarks to use new proto3 message locations.

* Fixed include path.

* Conformance: fixed include of Python test messages.

* Make maven in Rakefile use --batch-mode.

* Revert changes to benchmarks.

On second thought I think a separate schema for
CPU benchmarking makes sense.

* Try regenerating C# protos for new test protos.

* Removed benchmark messages from test proto.

* Added Jon Skeet's fixes for C#.

* Removed duplicate/old test messages C# file.

* C# fixes for test schema move.

* Fixed C# to use the correct TestAllTypes message.

* Fixes for Objective C test schema move.

* Added missing EXTRA_DIST file.
2016-12-03 11:51:25 -05:00
Thomas Van Lenten
f813bd9f8f Add a swift_prefix file option.
Swift generators should default to CamelCasing the proto package and prefixing
symbols with that, but this option allows developers to override that behavior
with something custom if they desire.

Fixes https://github.com/google/protobuf/issues/1833
2016-11-30 13:48:16 -05:00
Adam Cozzette
db35fe735a Add a "u" suffix to tag numbers in generated code
This seems to be necessary to prevent warnings in some compiler
configurations, particularly for tag numbers that are too large to fit
in a signed 32-bit int.
2016-11-22 16:23:55 -08:00
Julien Brianceau
3c0e0ce2b0 Fix csharp/src/Google.Protobuf.Test/project.json
This change fixes the following Chromium presubmit error:

  third_party/protobuf/csharp/src/Google.Protobuf.Test/project.json could
  not be parsed: Expecting property name: line 25 column 3 (char 482)
2016-11-14 22:32:15 +01:00
Msp
089aaa996a Fix message for InvalidProtocolBufferException 2016-11-04 23:54:34 +05:30
Jon Skeet
50a37e0135 Change JSON field name formatting
This affects cases with leading capital letters.

This breaks compatibility with previous C# releases, but
fixes compatibility with other implementations.

See #2278 for details.
2016-11-03 18:05:59 +00:00
Bo Yang
89db7ce02b Add script to build Google.Protobuf.Tools for csharp. 2016-10-10 11:44:21 -07:00
Bo Yang
e62d1f13f2 Add back removed descriptor field. 2016-10-10 11:44:21 -07:00
Feng Xiao
f933d10fbe Update version number.
[skip ci]

Change-Id: I1ba6f6372a08b5796570851336e1a548602f60da
2016-10-10 11:44:21 -07:00
Bo Yang
93007e15ff Bump library veriosn to 3.1 2016-10-10 11:43:48 -07:00
Bo Yang
15f4db6cb1 Bump version number to 3.1.0-alpha-1. 2016-10-10 11:24:31 -07:00
Jan Tattermusch
da7c026ce1 Update README.md 2016-09-22 11:07:37 +02:00
Jisi Liu
58860c021f Merge remote-tracking branch 'origin/3.0.x' into merge 2016-09-14 09:37:48 -07:00
Guillaume Turri
9b8da104c1 Rm check on dependency in the C# reflection API (#2051)
This check adds a few constraints on the way to build a project when we have
a proto file which imports another one. In particular, on projects which
build both C# and Java, it's easy to end up with exceptions like

    Expected: included.proto but was src/main/protobuf/included.proto

A user may work around this issue, but it may add unnecessary constraints
on the layout of the project.

According to f3504cf3b1 (diff-ecb0b909ed572381a1c8d1994f09a948R309)
it has already been considered to get rid of this check, for
similar considerations, and because it doesn't exist in the Java code
2016-09-05 09:29:03 +01:00
Jisi Liu
6e11540b32 Bump version number to 3.0.2 2016-09-02 11:57:49 -07:00
Thomas Van Lenten
e389165586 Add more JSON tests around underscores (#1963)
Add more JSON tests around underscores
2016-08-16 09:02:27 -04:00
Jon Skeet
f9d93f358d Regenerate conformance files to include extra oneof fields.
This should fix the failures in the conformance tests - although
it highlights the problem that we need to do this when changing
the conformance.proto file...
2016-08-15 16:45:27 +01:00
Jisi Liu
169d0ca43c Merge pull request #1893 from google/3.0.0-GA
Merge 3.0.0-GA into master
2016-07-29 14:27:53 -07:00
Jon Skeet
4e169bf0e5 Bring C#'s ToPascalCase method in line with C++.
(This still doesn't fix the conformance tests, but at least
we're now consistent with the C++ code.)
2016-07-27 10:51:12 -07:00
Jon Skeet
a8aae8989c Bring C#'s ToPascalCase method in line with C++.
(This still doesn't fix the conformance tests, but at least
we're now consistent with the C++ code.)
2016-07-27 10:49:13 +01:00
Jisi Liu
fb7a7c5f1f Bump version number for GA 2016-07-25 12:07:56 -07:00
Jon Skeet
b5ce5251fd Move to dotnet cli for building, and .NET Core (netstandard1.0) as target platform (#1727)
This also updates the version number to 3.0.0-beta4
2016-07-14 22:16:35 +01:00
Jon Skeet
5e0de1ebee Remove the overload for Add(RepeatedField<T>)
We now just perform the optimization within AddRange itself.

This is a breaking change in terms of "drop in the DLL", but is
source compatible, which should be fine.
2016-07-14 22:14:51 +01:00
Jon Skeet
2ee1e52380 Optimize AddRange for sequences implementing ICollection
(Also fix a few more C# 6-isms.)
2016-07-14 22:14:51 +01:00
Jon Skeet
b053b9211b Implement RepeatedField.AddRange.
This fixes issue #1730.
2016-07-14 22:14:51 +01:00
Jon Skeet
d9334ea8d9 Improve exception throwing implementation in collections 2016-07-14 22:14:51 +01:00
Feng Xiao
c2ebdec355 Update version number in AssemblyInfo.cs. 2016-07-14 10:46:24 -07:00
Feng Xiao
932f94e16e Update version number to 3.0.0-beta-4 2016-07-13 16:08:47 -07:00
Feng Xiao
443eb27c7c Update generated files. 2016-07-13 15:37:29 -07:00
Jos Hickson
790e6afb72 Fixed out-of-date documentation for CodedInputStream.ReadEnum. (#1581) 2016-07-10 21:31:35 +01:00
Jon Skeet
3560cc9ede Merge pull request #1702 from lukebakken/csharp-nuget-doc-update
Modify csharp README since there are now two NuGet packages
2016-07-10 21:30:31 +01:00
Jon Skeet
3df146e198 Remove unnecessary reflection call
This is the only call to TypeExtensions.IsValueType, so we can remove
that method, making the whole type conditionally compiled out for .NET 3.5
2016-07-08 18:21:25 +01:00
Jon Skeet
c53484539c Changes to generated code from previous commit 2016-07-04 08:22:18 +01:00
detlevschwabe
dc0aeaa903 Adding conditional compiler symbol to support .NET 3.5 (#1713)
* Adding condition compiler symbol to support .NET 3.5
2016-06-28 06:31:42 +01:00
Jon Skeet
0421238cc1 Expose JsonFormatter.WriteValue.
This isn't useful to most users, but can be handy in advanced use cases,
as requested in #1465.
2016-06-23 12:31:10 +01:00
Luke Bakken
80694669e4 Modify csharp README since there are now two NuGet packages 2016-06-22 07:39:05 -07:00
Jon Skeet
e3f6e2b870 Remove ordering guarantees in the MapField documentation
This doesn't currently change the ordering in the implementation, but allows us to do so in the future.
We also need to change
https://developers.google.com/protocol-buffers/docs/reference/csharp-generated#singular
which states "Finally, unlike Dictionary<TKey, TValue>, MapField<TKey, TValue> preserves insertion order of entries."
(We can just remove that sentence, I think.)
2016-06-21 07:22:48 +01:00
Jisi Liu
c8be6ee00c Merge pull request #1542 from google/beta-3
Merge Beta 3 release branch into master
2016-05-16 13:46:16 -07:00
Jisi Liu
017d390d65 Fix csharp version 2016-05-11 15:09:43 -07:00
Jon Skeet
7cc9cb407b Move test for standalone BoolValue to JsonParserTest
Also added a standalone formatter test, for confidence.
Have validated that undoing the change in 835fb947 breaks the tests
(i.e. we are still testing that the change is required).
2016-05-11 18:07:03 +01:00
Jos Hickson
835fb947cc Fixed parsing of BoolValue. 2016-05-11 15:36:02 +01:00
Jisi Liu
5dea2017db Update version numbers for other languages 2016-05-10 15:43:39 -07:00
Jon Skeet
5b5e369b18 Merge pull request #1471 from jskeet/any-host
Allow custom type URL prefixes in Any.Pack
2016-05-06 06:29:03 +01:00
Jon Skeet
61307b86f5 Allow custom type URL prefixes in Any.Pack
(And likewise ignore the prefix in unpack.)

Fixes issue #1459.
2016-04-29 10:20:03 +01:00
Jisi Liu
12fdeb9b41 Merge branch 'master' of github.com:google/protobuf 2016-04-28 14:43:08 -07:00
Jon Skeet
c588ac42a2 Regenerate well-known types for C#
(There are documentation changes and new fields in descriptor.proto that have resulted
in changes to the serialized descriptor, but no breaking changes for C#.)
2016-04-20 17:19:42 +01:00
Jon Skeet
790f4c8e37 Use the original name in JSON formatting.
(JSON parsing already does the right thing.)
2016-04-20 03:46:02 +01:00
Jon Skeet
84ea2c7a81 Regenerate all C# code and make it compile
JSON tests fail, as we're not using OriginalNameAttribute yet.
2016-04-20 03:46:00 +01:00
Jon Skeet
75626ed79c Add C# codegen changes to enum value names (mostly C++)
Overview of changes:
- A new C#-specific command-line option, legacy_enum_values to revert to the old behavior
- When legacy_enum_values isn't specified, we strip the enum name as a prefix, and PascalCase the value name
- A new attribute within the C# code so that we can always tell the original in-proto name

Regenerating the C# code with legacy_enum_values leads to code which still compiles and works - but
there's more still to do.
2016-04-20 03:45:59 +01:00
Jon Skeet
46e088e2b6 Remove duplicate test cases.
(NCrunch noticed these.)
2016-04-01 17:18:45 +01:00
Jan Tattermusch
099ff1ea14 Merge pull request #1369 from jskeet/tools-nuspec
Introduce a new nuget package, Google.Protobuf.Tools, basically to contain protoc on multiple platforms.
2016-03-31 17:44:40 -07:00
Jon Skeet
dfd47600d1 Remove duplicate line 2016-03-31 10:46:55 +01:00
Jon Skeet
ca0461c186 Introduce a new nuget package, Google.Protobuf.Tools, basically to contain protoc on multiple platforms.
I've moved both protoc.exe and the proto files out of Google.Protobuf.
The .proto files aren't a slam-dunk, but it feels like they belong with protoc as you'd *use* them with protoc.
It's not clear to me whether we really need both an x86 and x64 version of protoc.exe, as x86 would work on 64-bit Windows anyway. Discuss :)
2016-03-31 07:12:17 +01:00
Jon Skeet
71e8dca083 Refactoring of FieldDescriptor
This makes no externally visible behavioral changes. Internally and non-behaviorally:

- We use a field (compiler-generated) to store the JsonName to avoid recomputing it repeatedly
- The documentation for JsonName is updated to reflect the meaning better
- Readonly autoprops and expression-bodied properties used where possible
2016-03-30 09:42:37 +01:00
alien
6f8dd2115b Code review fixes 2016-03-29 20:56:32 +03:00
alien
0d32ab37fa csharp: add support for the json_name option
Conflicts:
	csharp/src/Google.Protobuf/JsonFormatter.cs
2016-03-18 22:59:50 +03:00
avgweb
ad2d775e1b Replace StringBuilder with TextWriter in JsonFormatter 2016-03-06 17:50:02 -08:00
Jon Skeet
f222a9a5e6 Fix copy/paste typo in CodedInputStreamTest 2016-03-01 07:30:40 +00:00
Jon Skeet
c0cf71bec9 Implement IDisposable for CodedInputStream and CodedOutputStream
This fixes issue #679 and issue #1282.
(The .gitignore change is just around ncrunch; I can put it in a separate PR if you really want.)
2016-02-29 11:51:56 +00:00
Jon Skeet
42371463de Require VS2015 in the solution file 2016-02-22 13:04:01 +00:00
Jan Tattermusch
c003abb40d Merge pull request #1240 from jskeet/validate_group
Validate that end-group tags match their corresponding start-group tags
2016-02-18 14:38:06 -08:00
Jon Skeet
abc09f795e Merge pull request #1239 from jskeet/call_generate_protos
Generate C# code whenever descriptor.proto changes
2016-02-18 06:45:51 +00:00
Jon Skeet
0262e04dbb Add more tests around merging wrappers
This was in an attempt to fix the wrapper handling corner case, but it's really fiddly.
2016-02-15 14:17:02 +00:00
Jon Skeet
9bdc848832 Validate that end-group tags match their corresponding start-group tags
This detects:
- An end-group tag with the wrong field number (doesn't match the start-group field)
- An end-group tag with no preceding start-group tag

Fixes issue #688.
2016-02-15 11:58:01 +00:00
Jon Skeet
957e877d52 Generate C# code whenever descriptor.proto changes
This is a start to fixing issue #1212. It won't help for test protos,
conformance etc, but it will definitely be better than nothing, and
would have highlighted a change in descriptor.proto which broken C#
earlier.
2016-02-15 10:33:13 +00:00
Jan Tattermusch
2d3f79f7d6 Merge pull request #1218 from jskeet/nuspec-dependencies
nuspec dependency fixes
2016-02-11 10:38:35 -08:00
Jan Tattermusch
95c4100230 Add a link 2016-02-10 08:16:45 -08:00
Jan Tattermusch
d40e3a1623 Use checked-in key to build ReleaseSigned 2016-02-09 15:59:05 -08:00
Jan Tattermusch
82f210cbac add private key for strong name assemblies 2016-02-09 15:53:16 -08:00
Jon Skeet
f1c5754f0f nuspec dependency fixes
Explicitly don't add any dependencies for "old" platforms, to avoid unnecessary
dependencies in those cases.

Fixes issue #1203.
2016-02-08 11:25:07 +00:00
Jon Skeet
045b528d4a Generated code changes from previous commit 2016-02-04 15:02:59 +00:00
Jon Skeet
7762f163a4 Rename Preconditions to ProtoPreconditions
(Generated code changes in next commit.)
2016-02-04 14:50:43 +00:00
Jon Skeet
b6159965ec Generated code for GeneratedCodeInfo change 2016-02-04 07:08:55 +00:00
Jon Skeet
a3ea9d1203 Rename GeneratedCodeInfo to GeneratedClrTypeInfo
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.
2016-02-04 07:05:49 +00:00
Jon Skeet
0809de8e9f Clarify readme 2016-02-03 09:45:48 +00:00
Jan Tattermusch
b13874d59e Merge pull request #1158 from jskeet/nonnormalized-tostring
Ensure that FieldMask, Timestamp and Duration ToString() calls don't throw
2016-01-26 08:43:45 -08:00
Jon Skeet
3878d84662 Fix mistakes in highest-representable float64 integers 2016-01-21 10:49:57 +00:00
Jon Skeet
dd43dcca8c Ensure that FieldMask, Timestamp and Duration ToString() calls don't throw
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.
2016-01-20 18:43:00 +00:00
Jan Tattermusch
8c5260b21b Merge pull request #1096 from jskeet/custom-to-string
Introduce ICustomDiagnosticMessage to allow for custom string formatting
2016-01-19 19:38:16 -08:00
Jon Skeet
030c268489 Fix broken test 2016-01-15 17:34:10 +00:00
Jon Skeet
b1ea15f7a5 Make sure that
"valueField": null

is parsed appropriately, i.e. that it remembers that the field is set.
2016-01-15 14:18:16 +00:00
Jon Skeet
8866d6a80e Reject JSON containing the same oneof field twice 2016-01-15 13:54:17 +00:00
Jon Skeet
52db5139c4 Change handling of unknown enums: we now write out the value as a number. 2016-01-15 13:45:53 +00:00
Jon Skeet
f437b67f60 Extra strictness for FieldMask conversion 2016-01-15 12:02:07 +00:00
Jon Skeet
022a9b2675 Allow the original field name (rather than camel-cased) when parsing JSON 2016-01-15 11:39:54 +00:00
Jon Skeet
1fc485928f Fixes to JSON timestamp/duration representations 2016-01-15 11:39:27 +00:00
Jon Skeet
c74676f070 Report serialization errors in conformance tests 2016-01-15 10:55:57 +00:00
Jon Skeet
888e71bdfc Prohibit null values in repeated and map fields in JSON 2016-01-15 10:55:36 +00:00
Jon Skeet
1a34ac03be Throw a better exception when invalid base64 is detected in JSON 2016-01-15 10:43:06 +00:00
Jon Skeet
730c38ad8c Support (and test) numeric enum parsing in JSON 2016-01-15 10:41:56 +00:00
Jon Skeet
f262611ff6 Fix handling of repeated wrappers
Previously we were incorrectly packing wrapper types.
This also refactors FieldCodec a bit as well, using more C# 6-ness.
2016-01-15 10:13:56 +00:00
Jon Skeet
f2fe50bfc5 JSON conformance test fixes
- Spot an Any without a type URL
- In the conformance test runner, catch exceptions due to generally-invalid JSON
2016-01-13 14:05:06 +00:00
Jon Skeet
5dba7d7b4c Introduce ICustomDiagnosticMessage to allow for custom string formatting
This fixes issue #933, effectively.
2016-01-13 10:58:49 +00:00
Jan Tattermusch
73c003c309 Merge pull request #1089 from jskeet/map-null
Prohibit null values in maps
2016-01-12 20:55:47 -08:00
Dongjoon Hyun
7b08d49e9d Fix typos in README.md/CHANGES.txt 2016-01-11 14:52:01 -08:00
Jon Skeet
9e4f354f14 Prohibit null values in map fields
On deserialization, missing values for message types
are replaced with a "default" message.
2016-01-11 09:34:43 +00:00
Jan Tattermusch
6d1d415133 Merge pull request #1098 from jskeet/wkt-json
Ensure all formatted well-known-type values are valid JSON
2016-01-08 16:58:47 -08:00
Jan Tattermusch
698f61688c Merge pull request #1088 from jskeet/codec-pruning
Remove unused method in FieldCodec.
2016-01-08 16:50:05 -08:00
Jon Skeet
b4a58173f2 Ensure all formatted well-known-type values are valid JSON
This involves quoting timestamp/duration/field-mask values, even when they're not in fields.
It's better for consistency.

Fixes issue #1097.
2016-01-06 12:05:31 +00:00
Jon Skeet
aa431a0481 Improve number handling in JSON parsing
- 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
2016-01-06 11:16:10 +00:00
Jon Skeet
9f10c4576a Remove unused method in FieldCodec.
(The method was last used a very long time ago, if ever.)
2016-01-05 14:36:14 +00:00
Jon Skeet
d49b9c81ec Fix C# source generation shell script and remove out of date notes
The conformance tests now use types which are part of src/google/protobuf, so we need to include src in the proto path.
The notes around "fix-ups" have been out of date for some time now.
2016-01-04 14:02:00 +00:00
Jan Tattermusch
00ace95ae3 add reference generator dependency 2015-12-17 09:37:56 -08:00
Jon Skeet
afbc89a263 Merge pull request #1049 from jskeet/any-format
Handle Any formatting for diagnostic purposes
2015-12-17 13:10:16 +00:00
Jan Tattermusch
33106681a5 Merge pull request #1051 from jtattermusch/support_coreclr
Make nuget package support coreCLR
2015-12-16 13:14:02 -08:00
Jan Tattermusch
52139f9fde make nuget package support CoreCLR 2015-12-16 09:21:09 -08:00
Jon Skeet
a4dc5968b1 Add JSON parsing to conformance tests. 2015-12-16 08:58:58 +00:00
Jon Skeet
adee6fe332 Generated code changes from previous commit. 2015-12-15 09:24:04 +00:00
Jon Skeet
aabc6c411a Make ToString() valid without a type registry
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.
2015-12-15 09:23:38 +00:00
Jon Skeet
3de2fced6b Handle JSON parsing for Any.
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...
2015-12-02 07:54:34 +00:00
Jon Skeet
567579b505 JSON formatting for Any. 2015-12-02 07:26:55 +00:00
Jon Skeet
a2667aafd8 Generated code changes for previous commit (basically InternalBuildGeneratedFileFrom => FromGeneratedCode) 2015-11-22 16:30:36 +00:00
Jon Skeet
72ec33676f Tidy up reflection in advance of attempting to implement DynamicMessage.
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.
2015-11-22 16:25:44 +00:00
Jon Skeet
f7e43c6f80 Added the type registry in advance of implementing Any support.
Biting off just this bit first as I don't need the changes from a previous PR for this part.
2015-11-21 03:34:58 +00:00
Jan Tattermusch
956a770adc Merge pull request #988 from gabikliot/CSharp-SampleUsage-Big-Fix
Fixed a bug in CSharp SampleUsage.
2015-11-19 20:02:18 -08:00
Gabriel Kliot
bdec990703 Removed redundant comment. 2015-11-19 08:05:05 -08:00
Jon Skeet
360feda5f7 Finished an implementation comment 2015-11-19 09:40:49 +00:00
Jon Skeet
eadd4caa09 Generated code from previous commit. 2015-11-19 09:38:49 +00:00
Jon Skeet
2a15051a1e Introduce a Parser property into MessageDescriptor, and populate it from 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.
2015-11-19 08:50:28 +00:00
Gabriel Kliot
09d03dfc7e Fixed a bug in CSharp SampleUsage. 2015-11-18 23:09:05 -08:00
Jon Skeet
284bb452e4 Generated code changes and manual changes for previous commit. 2015-11-09 09:22:45 +00:00
Jon Skeet
cff900e8f9 Generated code for previous commit. 2015-11-06 18:38:31 +00:00
Jan Tattermusch
ffe25c76ea Merge pull request #941 from jskeet/recursion-limit
Add recursion limit handling to JSON parsing.
2015-11-05 18:41:05 -08:00
Jon Skeet
6fa17e7597 Reimplement JSON recursion by detecting the depth in the tokenizer.
Added a TODO around a possible change to the tokenizer API, changing PushBack(token) into just Rewind() or something similar.
2015-11-05 19:44:26 +00:00
Jon Skeet
3a72a1eeaf Merge pull request #940 from jskeet/json-names
Move the creation of the "fields by JSON name" dictionary to the descriptor
2015-11-05 17:09:37 +00:00
Jon Skeet
0fb39c4afe Created a new exception for JSON failures.
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.
2015-11-05 10:40:22 +00:00
Jon Skeet
3d257a9dc1 Add recursion limit handling to JSON parsing.
Fixes issue #932.
2015-11-04 11:30:22 +00:00
Jon Skeet
6a94273549 Move the creation of the "fields by JSON name" dictionary to the descriptor. 2015-11-04 09:09:14 +00:00
Jon Skeet
fb2488225f Implement JSON parsing in C#.
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.
2015-11-03 19:05:11 +00:00
Jon Skeet
885406abcf Make BytesString.Unsafe internal (which it should have been all along) 2015-11-02 09:59:06 +00:00
Jon Skeet
f5a0a7feeb Fix clearing wrapper type fields with reflection.
The nullable value type fields already worked, but the use of the CLR property concealed the difference between string and StringWrapper fields.
2015-10-30 09:37:01 +00:00
Jon Skeet
55313c9c5d Generated code for previous commit (oneof case contributing to hash code and equality). 2015-10-24 06:46:02 +01:00
Jon Skeet
964627ece0 Include the oneof-case in equality and hash code generated code.
The included C# test will fail until the regenerated code is used, which is in the next commit.
2015-10-24 06:45:20 +01:00
Jon Skeet
c34ed5c9bf Merge pull request #846 from jskeet/tostring
Support ToString in RepeatedField and MapField.
2015-10-07 17:08:25 +01:00
Jon Skeet
9ed6d4da37 Support ToString in RepeatedField and MapField.
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.
2015-10-01 13:07:47 +01:00
Jon Skeet
18e0a2e5ec Generated code from previous commit. 2015-10-01 10:38:01 +01:00
Jon Skeet
6bbbdfa24c Fix typo in oneof case enum comment 2015-09-30 06:59:38 +01:00
Jon Skeet
e2c823027e Generated code changes for previous commit. 2015-09-29 14:34:31 +01:00
Jon Skeet
b0888a42ad Generated code for previous commit 2015-09-29 13:37:30 +01:00
Jon Skeet
2212f56bcd Added documentation to generated code.
There are now summaries for:
- The Types nested class (which holds nested types)
- The file descriptor class for each proto
- The enum generated for each oneof

(Also fixed two typos.)

Generated code in next commit.
2015-09-29 13:37:15 +01:00
Jan Tattermusch
97a1c1e08d Merge pull request #785 from jskeet/csharp-directories
Generate C# directory hierarchy with new option
2015-09-23 14:31:31 -07:00
Jon Skeet
e50461d809 Pack/Unpack implementation for Any.
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.)
2015-09-04 12:43:26 +01:00
Jon Skeet
9489817df2 Regenerated code. Most changes are whitespace, removing trailing spaces.
Other changes are due to the well-known types changing without us regenerating.
2015-09-01 15:47:48 +01:00
Jon Skeet
5eb1fac983 Generate a directory hierarchy based on namespace (C#)
This introduces a new C# option, base_namespace.
If the option is not specified, the behaviour is as before: no directories are generated.
If the option *is* specified, all C# namespaces must be relative to the base namespace, and the directories are generated relative to that namespace.

Example:
- Any.proto declares csharp_namespace = "Google.Protobuf.WellKnownTypes"
- We build with --csharp_out=Google.Protobuf --csharp_opt=base_namespace=Google.Protobuf
- The Any.cs file is generated in Google.Protobuf/WellKnownTypes (where it currently lives)

We need a change to descriptor.proto before this will all work (it wasn't in the right C# namespace) but that needs the other descriptors to be regenerated too. See next commit...
2015-09-01 15:05:03 +01:00
Jan Tattermusch
8fca6f83c6 Update README.md for C# 2015-08-26 15:26:34 -07:00
Jon Skeet
b1b98e4b79 Merge pull request #738 from jtattermusch/include_descriptor_proto
Include descriptor.proto in nuget package
2015-08-26 06:44:26 +01:00
Jan Tattermusch
295047518c include descriptor.proto in nuget package 2015-08-25 18:43:01 -07:00
Jon Skeet
31d119af22 Remove extraneous TODO 2015-08-25 17:51:17 +01:00