Inderjeet Singh
c53e255105
Fixed typo as mentioned in issue 565
2014-03-26 18:07:59 +00:00
Inderjeet Singh
edf66083e6
renamed @Adapt to @JsonAdapter
2014-03-26 17:59:54 +00:00
Inderjeet Singh
7f6a096030
renamed JsonAdapter annotation to Adapt annotation.
2014-03-09 23:08:54 +00:00
Inderjeet Singh
6e8d3cd65e
Created threadsafe implementation of JsonAdapter invocation. Also fixed a bug where runtime generated typeadapters were being carried over from a toJson/fromJson call to the next.
2014-03-09 23:00:53 +00:00
Inderjeet Singh
e280ffd7e2
Fixed broken test to ensure that a field JsonAdapter annotation supersedes the class JsonAdapter annotation.
...
Added a map in Gson to keep track of TypeAdapters which are generated by Gson.
2014-03-09 08:36:24 +00:00
Inderjeet Singh
0922af5be6
removed invalid imports
2014-03-09 08:23:05 +00:00
Inderjeet Singh
67af0dd8f8
Added javadoc comment in JsonAdapter explaining the usage for fields.
...
Added a (broken) test the ensure a field annotation for JsonAdapter supersedes a class annotation.
2014-03-09 08:21:06 +00:00
Inderjeet Singh
f88eee094c
removed some eclipse warnings
2014-03-09 07:33:08 +00:00
Inderjeet Singh
b9998e511f
deleted support for the magic GSON_TYPE_ADAPTER field
2014-03-09 07:30:37 +00:00
Inderjeet Singh
bf549f0589
Added support for JsonAdapter annotation on fields
2014-03-09 07:28:04 +00:00
Inderjeet Singh
67d512ee7d
Created a JsonAdapter annotation that can be applied to classes to indicate their TypeAdapter.
2014-03-08 22:37:19 +00:00
Inderjeet Singh
7c97ac2944
Updated Gson version to 2.3-SNAPSHOT since this is a new feature.
...
Added support for a magic field GSON_TYPE_ADAPTER in a class. This adapter is automatically invoked if present.
The field must be present in the class (not in any super-type), and must be strongly typed as TypeAdapter<T>.
2014-03-08 20:08:13 +00:00
Inderjeet Singh
b2a9d872db
deleted redundant and invalid precondition.
2014-03-08 19:33:24 +00:00
Inderjeet Singh
c3d0f200b3
Fixed a bug where an inner static class was incorrectly marked as non-static while creating parameterized types.
2014-03-08 19:12:24 +00:00
Jesse Wilson
1840466704
Fix a nasty bug where elements in LinkedHashTreeMap could be dropped.
...
The underlying problem is that the doubleCapacity function would drop the parent links when all nodes ended up on the same side in a doubling. This was caused by the fact that the AvlIterator was destructive on parent nodes, and we weren't putting them back together with the AvlBuilder. This removes an incorrect optimization and fixes the problem.
Also move LinkedHashTreeMap back into main from test.
2013-05-14 21:43:20 +00:00
Joel Leitch
8834343861
Moving broken class to "test" package for now and disabling broken test.
2013-05-13 21:01:33 +00:00
Joel Leitch
2d5cab1b7b
Fix hashing in LinkedHashTreeMap, but it still does not work :(
2013-05-13 20:40:07 +00:00
Joel Leitch
3f4bc4cd10
Remove unused import
2013-05-13 20:38:35 +00:00
Joel Leitch
e4508227c5
Added test to use BigDecimal to parse number when requesting it as a long.
2013-05-13 20:37:33 +00:00
Joel Leitch
f29d5bc37b
Create a LinkedTreeMap based on the LinkedHashTreeMap; however, removed all the hashing from it as resorted to a single tree. The insertion order is still preserved.
2013-05-03 16:11:16 +00:00
Inderjeet Singh
6347e9b9c6
ensuring that LinkedHashTreeMap.contains() returns false when non-Comparable() keys are passed to it
2013-04-12 21:10:21 +00:00
Inderjeet Singh
6f0a6a4662
made inner classes static and final
2013-04-12 20:20:53 +00:00
Inderjeet Singh
ae034b5ca2
eliminated eclipse warnings by adding a default label to switch.
2013-04-12 20:14:50 +00:00
Inderjeet Singh
26016ca66e
removed eclipse warnings, unused fields. Made inner classes static where possible.
2013-04-12 20:09:08 +00:00
Joel Leitch
70f9280cb6
Remove usage of StringPool as it appears to slow things down and avoid Java String intern for the common cases.
2013-04-08 18:36:23 +00:00
Inderjeet Singh
edd6c19670
deleted unused enum and reordered imports
2013-04-04 21:40:05 +00:00
Joel Leitch
af6aa5f782
Use the LinkedHashTreeMap instead of LinkedTreeMap and delete the LinkedTreeMap version.
2013-04-04 21:31:23 +00:00
Inderjeet Singh
7d53113ebc
fixed https://code.google.com/p/google-gson/issues/detail?id=509 by adding construction for EnumSet
2013-04-04 21:15:50 +00:00
Jesse Wilson
63142f621c
Use the right method name in error messages.
...
Fixes issue 498.
2013-02-04 16:05:00 +00:00
Jesse Wilson
6a69c603c0
Permit serialization of "Class" fields, but only if they're null.
2013-02-04 15:52:51 +00:00
Joel Leitch
edf326e756
Tag member fields as transient since a LinkedHashMap is used for serialization.
2013-01-15 20:04:26 +00:00
Joel Leitch
6dc6b4be92
Fix object leak from ThreadLocal.
2013-01-14 22:05:28 +00:00
Joel Leitch
84201c015f
Do not peek during a "skipValue" if a value has already been peeked.
2013-01-14 18:38:46 +00:00
Joel Leitch
3f2efac95e
Stop blowing up on a null key, but rather return that the element is not found.
2013-01-09 23:37:38 +00:00
Joel Leitch
b0531e1649
Ensure "excluder" is added prior to user defined type adapters/factories.
...
- Added test expose bad behaviour.
2012-12-20 19:41:33 +00:00
Joel Leitch
6d90f0d894
Make JsonElement TypeAdapterFactory a type hierarchy factory.
2012-12-20 07:57:17 +00:00
Joel Leitch
040bae34d7
Allowing instance creators to be registered with the raw type only (without specifying type parameters).
2012-10-24 20:40:44 +00:00
Jesse Wilson
af4879dbb7
Move interceptors from 'alpha' to 'extras'.
...
This makes the feature less risky to use! It now uses our
TypeAdapterFactory infrastructure rather than relying on
parallel infrastructure.
2012-10-23 17:36:30 +00:00
Jesse Wilson
1e18dce002
Don't subclass ThreadLocal.
...
This attempts to address issue 402, wherein subclassing ThreadLocal is pinning a reference to a class, which transitively pins the entire application in containers like Tomcat.
2012-10-23 02:41:34 +00:00
Jesse Wilson
22c835f2bc
Fix compile warnings
2012-10-23 02:40:14 +00:00
Inderjeet Singh
fd4fbe4132
Added support for collections, maps, and arbitrary depth of type adapters for Intercept annotation.
...
Added more tests for the features.
2012-10-18 02:37:43 +00:00
Inderjeet Singh
c25278b4d6
Created an alpha package that holds experimental feature.
...
Added support for JsonPostDeserializer that allows you to invoke postDeserialize methods on an Gson deserialized object.
2012-10-11 03:20:36 +00:00
Joel Leitch
14f16e2d0c
Adding Red-Black Tree implementation and tying it into the Gson bindings.
2012-10-11 03:15:49 +00:00
Jesse Wilson
2fef83799d
Optimizations and bug fixes for LinkedHashTreeMap.
...
The most interesting optimization is to replace ArrayDeque with a manual linked list that reuses the nodes 'parent' field. These optimizations save about 20%.
2012-09-17 03:30:20 +00:00
Jesse Wilson
aceadaecf1
Add a hashing layer to LinkedTreeMap. Instead of having 1 root node, the class now has several root nodes, one for each hash bucket in a hash table.
...
Compared to LinkedTreeMap, this is slower for small (size=5) maps: 124% slower to get() and 33% slower to create and populate. It's a win for large (size=500) maps: 46% faster to get() but 8% slower to create and populate. And it's a big win for very large (size=50,000) maps: 81% faster to get() and 46% faster to create and populate.
http://microbenchmarks.appspot.com/run/limpbizkit@gmail.com/com.google.common.collect.MapBenchmark
I'm going to follow this up with some simple optimizations: caching local fields and simplifying access. That should narrow the performance gap.
2012-09-17 00:19:44 +00:00
Jesse Wilson
a0493b9732
New code that can split an AVL tree into two AVL trees.
...
This is in preparation for a new feature where LinkedTreeMap will have multiple roots, each in its own hash bucket.
2012-09-15 06:13:33 +00:00
Jesse Wilson
01bd0d92e2
Tests for LinkedTreeMap with incompatible keys.
2012-09-12 05:06:48 +00:00
Jesse Wilson
a6ab854302
Fix a bug where we were unlinking nodes that shouldn't have been unlinked.
...
Found by Guava's awesome collections test suite!
2012-09-12 04:41:58 +00:00
Jesse Wilson
93e38901df
Draft of LinkedTreeMap. Its ordered like a LinkedHashMap but it doesn't do any hashing for DoS resistance.
...
Not yet adopted in our code.
Known critical bugs:
- throws ClassCastException when get() is called with a non-comparable key
- throws NullPointerException on get(null)
2012-09-10 20:04:38 +00:00
Jesse Wilson
084047d80b
Reintroduce string pooling in JsonReader.
...
This makes Hotspot slower. From my before/after measurements using ParseBenchmark, times in microseconds:
TWEETS: 350 -> 370 (+6%)
READER_SHORT: 77 -> 76 (-1%)
READER_LONG: 870 -> 940 (+8%)
But it makes Dalvik faster by a greater margin. These before/after measurements use times in milliseconds:
TWEETS: 25 -> 20 (-20%)
READER_SHORT: 5.6 -> 4.7 (-16%)
READER_LONG: 52 -> 47 (-10%)
It's a net win because we're saving a greater fraction of time, and because we're helping the platform that needs the most help. We're paying microseconds on Hotspot to gain milliseconds on Dalvik.
2012-09-10 16:13:33 +00:00