Commit Graph

443 Commits

Author SHA1 Message Date
Inderjeet Singh
d20df34b8b Converted Calendar/GregorianCalendar type adapters to the new style. 2011-09-20 00:08:33 +00:00
Inderjeet Singh
4402240294 Converted Number type adapter to the new style. 2011-09-19 17:02:02 +00:00
Inderjeet Singh
2780a2a9bf Fixed eclipse warnings. 2011-09-16 06:03:16 +00:00
Inderjeet Singh
b5f8ef6e16 Converted CharacterTypeAdapter to the new style. 2011-09-16 05:58:41 +00:00
Inderjeet Singh
882c14a367 Added support in Gson for serializing/deserializing from primitive char.
Created a new class for character/char tests, PrimitiveCharacterTest. This is the start of breaking down PrimitiveTest into smaller chunks.
When MiniGson can not find a type adapter for a type, revised the message to say can't handle instead of can't serialize.
2011-09-16 05:52:32 +00:00
Inderjeet Singh
c71e61cf48 Converted EnumTypeAdapter to new style.
Got rid of default Hierarchy Serializer/Deserializers from DefaultTypeAdapters.
Got rid of methods for gettting default serializers/deserializers/instance creators. Instead we reuse the static final instances.
Fixed warnings in TypeAdapters where a parameterized type T was hiding the parameterized T in methods.
Removed support to unwrap single element array of enums into enum values. Also removed the test that verifies this behavior.
2011-09-16 05:40:05 +00:00
Inderjeet Singh
915c5d4d6f Converted BitSetTypeAdapter to the new style. 2011-09-16 05:02:30 +00:00
Joel Leitch
b90b43ea47 A few minor fixes and one incompatible Java 1.6 API call. 2011-09-16 04:55:52 +00:00
Inderjeet Singh
6b2c275b5c Deleted Long, Float and Double serializers from legacy DefaultTypeAdapters. This stuff is not invoked anymore as the MiniGson takes care of it. 2011-09-16 04:06:33 +00:00
Inderjeet Singh
4a6c084ef7 removed JDK 1.5 incompatible use of @Overrides annotation on overridden interface methods. 2011-09-16 03:27:48 +00:00
Jesse Wilson
a98d6eae47 Fix the map type adapter to support array serialization natively. 2011-09-12 05:51:17 +00:00
Jesse Wilson
d43cf5ea35 obsolete class! 2011-09-11 23:03:22 +00:00
Jesse Wilson
25c6ae177b Down to 22 failing tests.
Consolidated all of the different code paths that we use to construct instances. We now have an ObjectConstructor class that knows what type it constructs; this means that we don't need to ever do reflection to lookup a constructor at construction time.

Cleaned up some buggy type adapters, particularly around handling of null.

Removed dead code for object graph navigation.

Moved some classes into 'internal' so they are visible to the 'bind' subpackage.

Turned some TypeAdapterFactory/TypeAdapter pairs inside out so that the TypeAdapter is now the inner class. This is necessary so that the factories can take parameters.

Added an API to request the 'next' type adapter for a type. This allows type adapters to compose other type adapters. We're using this in two places:
 - where the user has excluded a type from serialization but not deserialization, we need to use the "default" deserialization but interpose null on serialization. We create a type adapter that delegates for one and returns null for the other.
 - similarly when a DOM type serializer is registered but no deserializer, or vice versa.
This is the biggest change to the MiniGson core.

For backwards compatibility, return null for the empty string.

Simplify JsonSerializationContext/JsonDeserializationContext to simply call through to GSON. SerializeDefault is currently unsupported.

More useful error messages when calling getAsBoolean on a JsonNull.

Remove currently unused MemoryRefStack. We might need this back again, though wiring it back in will be much more difficult because we don't interject ourselves between the users' various type adapters.
2011-09-11 07:04:56 +00:00
Jesse Wilson
cdd5d80b85 Support writing maps with non-string keys 2011-09-09 08:17:20 +00:00
Jesse Wilson
f50cce6d14 Don't call deserializers with null 2011-09-09 08:13:50 +00:00
Jesse Wilson
ee9ffa808a If the reflective type isn't as expected, fail with a JsonSyntaxException 2011-09-09 08:10:57 +00:00
Jesse Wilson
1bb48694f4 Permit the null key, which is written as "null" 2011-09-09 08:10:21 +00:00
Jesse Wilson
d22e11b184 Let the user override the byte[] type adapter 2011-09-09 08:04:28 +00:00
Jesse Wilson
2f0c617d8d Use floating point comparison for all non-integral Number types (such as LazilyParsedNumber) 2011-09-09 08:01:51 +00:00
Jesse Wilson
e756608568 Forbid custom serializers for primitive types (so we can avoid boxing in the reflective and array adapters) 2011-09-09 06:26:21 +00:00
Inderjeet Singh
fede584b98 Gson 2.0 converts JSON with type Object.class into something meaningful such as a Collection of primitives or Maps. Updated tests for the new behavior.
Changed $Gson$Types.getCollectionElementType to handle wild-card sub-classes of collections and raw collections.
2011-09-09 06:23:17 +00:00
Inderjeet Singh
6f6d3b221e Added support for constructing Queues and SortedSet while handling collections. 2011-09-09 05:49:30 +00:00
Jesse Wilson
f3c0a96f44 Support incoming nulls in all default type adapters 2011-09-09 05:46:50 +00:00
Jesse Wilson
99801915aa More code through the same fromJson path 2011-09-09 05:40:34 +00:00
Jesse Wilson
e19672d0a3 Throw the right exceptions when primitives fail to parse. 2011-09-09 05:04:24 +00:00
Inderjeet Singh
ba283925ae Deleted unneeded Long deserializer. 2011-09-09 05:02:19 +00:00
Jesse Wilson
9db0c53217 Adapt bytes 2011-09-09 04:39:29 +00:00
Inderjeet Singh
a8133efeb8 removed old-style Collections type adapter since the new one covers all cases. 2011-09-09 04:22:57 +00:00
Inderjeet Singh
ea9c0236c7 Converted InetAddress type adapter to new style. 2011-09-09 04:02:12 +00:00
Jesse Wilson
0aab1d0659 Support calling private constructors 2011-09-09 03:42:03 +00:00
Jesse Wilson
4f6a36d68f Support reading nulls into strings 2011-09-09 03:40:39 +00:00
Jesse Wilson
6029afb72d Use MiniGson's list adapters 2011-09-09 03:35:11 +00:00
Jesse Wilson
3aeb70e030 Adapter for Object.class 2011-09-09 03:31:16 +00:00
Inderjeet Singh
9fb39c89ea Switched Locale type adapter to new-style. 2011-08-26 03:14:01 +00:00
Inderjeet Singh
f9976f4b01 Switched Short, URI, URL, UUID, StringBuilder and StringBuffer type adapters to new-style. 2011-08-26 02:33:54 +00:00
Inderjeet Singh
bafc43afae removed unneeded exception catch clause. 2011-08-19 03:16:51 +00:00
Inderjeet Singh
84c71409da Removed Gson type adapters for boolean, integer, float, double, String, BigDecimal and BigInteger.
Switched Gson.fromJson() methods to use miniGson directly instead of using a DOM.
2011-08-19 03:13:06 +00:00
Joel Leitch
a85f9b81b0 Wrap IOException into a JsonIoException instead of RuntimeException. 2011-08-19 02:35:29 +00:00
Jesse Wilson
ff88ac32f2 Use MiniGSON for deserialization. 2011-08-12 18:24:20 +00:00
Joel Leitch
70965eae03 Adding new type adapters for BigInteger and BigDecimal types. 2011-08-12 02:20:48 +00:00
Inderjeet Singh
57ea7ff9f3 Restored this behavior for serialization: (as verified in CustomSerializerTest)
First preference: a type adapter registered for the runtime type
Second preference: a type adapter registered for the declared type
Third preference: reflective type adapter for the runtime type (if it is a sub class of the declared type)
Fourth preference: reflective type adapter for the declared type
2011-08-12 02:18:02 +00:00
Inderjeet Singh
f7121ad87d Restored this behavior:
If a type adapter is registered for a base class, then a field of that type is serialized with the type adapter instead of using the run-time type.
This fixes: CustomSerializerTest.testBaseClassSerializerInvokedForBaseClassFieldsHoldingSubClassInstances
2011-08-12 01:59:22 +00:00
Inderjeet Singh
ad5ff0f2d9 Created a wrapper for runtime type determination. 2011-08-05 00:41:24 +00:00
Jesse Wilson
fc99556f22 Support type exclusion strategies. 2011-08-05 00:25:49 +00:00
Inderjeet Singh
e9a971f680 Revised getRuntimeTypeIfMoreSpecific to ignore the parent and just focus on the value.
All uses of this method have already made a determination about the parent.
2011-08-05 00:13:01 +00:00
Inderjeet Singh
64dc53ffc4 Added support for runtime type determination while serializing collections and its subclasses.
This currently doesn't work since Gson register a hierarchy type adapter for Collections that takes precedence over this.
2011-08-04 23:55:52 +00:00
Jesse Wilson
e04d3fa882 Don't look for instance fields on interfaces. 2011-08-04 23:53:10 +00:00
Jesse Wilson
1885ba7dec Restore support for serializeSpecialFloatingPointValues. 2011-08-04 23:12:49 +00:00
Inderjeet Singh
6e3bf07300 Added support for runtime type determination while serializing array elements.
Created a utility class Reflection to hold methods to find Runtime type and creating new Instances.
2011-08-04 23:02:06 +00:00
Jesse Wilson
aa067056c3 Restore support for long serialization policy. 2011-08-04 22:57:36 +00:00
Inderjeet Singh
5fc2db9e72 Parity with Gson behavior where we use runtime type of an object while serializing instead of the declared type of the field. 2011-08-04 22:27:25 +00:00
Inderjeet Singh
2813385c33 Parity with Gson behavior where we use runtime type of an object while serializing instead of the declared type of the field. 2011-08-03 03:19:43 +00:00
Inderjeet Singh
5c620c7e0a Changed Gson behavior to reject duplicate fields in a class. 2011-08-03 03:05:12 +00:00
Inderjeet Singh
f1f8b666ec Implemented support for FieldNamingPolicy with MiniGson. 2011-08-03 02:51:59 +00:00
Inderjeet Singh
d70fb90ef7 Added methods to convert to JsonElement in TypeAdapter.
Using lenient mode while working with Gson.
Handling nulls while invoking legacy Gson type adapters.
2011-08-03 02:40:18 +00:00
Inderjeet Singh
566c27cf21 Adapted legacy Gson adapters into mini Gson. 2011-08-03 02:17:42 +00:00
Jesse Wilson
98aa124589 Unsafe allocation for reflective type adapters. 2011-08-03 01:25:51 +00:00
Inderjeet Singh
b922500c23 For efficiency, calling setAccessible on all fields of a class in one method call instead of doing it individually. 2011-08-03 01:25:02 +00:00
Inderjeet Singh
f276d13827 Added support for deserialization exclusion strategy. 2011-08-03 01:19:26 +00:00
Inderjeet Singh
3331dcdab0 Using serializationExclusionStrategy while navigating through fields to decide which ones to skip. 2011-08-03 00:47:36 +00:00
Jesse Wilson
37abcf3637 Break 203 tests and adopt the new stream binding internally. Test fixes coming soon... 2011-08-03 00:28:02 +00:00
Jesse Wilson
60e6ed912d Promote MiniGson to gson.internal.bind 2011-08-03 00:25:10 +00:00
Jesse Wilson
161b4babe8 Fix a pair of relatively benign off-by-one bugs. These only manifest if the source Reader returns characters one-at-a-time. 2011-07-22 15:50:26 +00:00
Jesse Wilson
befcfd908b Skip a byte order mark (BOM) if it exists.
http://code.google.com/p/android/issues/detail?id=18508
2011-07-20 18:57:30 +00:00
Jesse Wilson
415437810a Include line and column position in error messages. 2011-07-18 19:26:02 +00:00
Jesse Wilson
9cf579ef01 Use Streams instead of Escaper.
Fixes issue 345.
2011-07-12 23:50:00 +00:00
Jesse Wilson
d3a4b48ad9 Unconditionally escape unicode newline characters.
Fixes issue 341.
2011-07-12 16:05:22 +00:00
Inderjeet Singh
62675b7f46 Added serializeDefault and deserializeDefault methods in contexts that only invoke system type adapters on the top-level object.
With this, the RuntimeTypeAdapterTest passes.
2011-07-01 21:29:20 +00:00
Inderjeet Singh
d347128e6f Implemented support for serializing objects of type Bar<Foo> without the need to specify their type explicitly in toJson method. 2011-06-25 20:04:14 +00:00
Inderjeet Singh
9196b23251 Refactoring: Separated type handler maps into two types: one for system-specified handlers and one for user-specified. system-specified handlers are the ones that Gson comes with (DefaultTypeAdapters). 2011-06-24 21:52:59 +00:00
Jesse Wilson
f74dffc6fd Add deepCopy to JsonArray and JsonObject.
Resolves issue 301.
2011-06-17 21:46:28 +00:00
Joel Leitch
aa89773008 Quick fix for threading issue. Should maybe look into synchronizing this method instead. 2011-06-07 01:28:30 +00:00
Joel Leitch
533ea1755d Fix typo 2011-06-03 19:05:53 +00:00
Joel Leitch
c9ee7adcc5 Start using JsonNull.INSTANCE everywhere and remove creation method. 2011-06-03 19:02:28 +00:00
Inderjeet Singh
8fd4072f9b fixed javadocs 2011-06-03 19:01:08 +00:00
Inderjeet Singh
61b9a2cb17 Moved field creation to the field declaration to avoid inadvertent change from LinkedHashMap to something else. 2011-05-30 09:01:45 +00:00
Inderjeet Singh
9531c662da suppressed deprecation warning. 2011-05-30 06:47:21 +00:00
Inderjeet Singh
44faec1eb1 removed the methods that return null for various getAs methods per discussions with Jesse and Joel. 2011-05-27 17:58:39 +00:00
Inderjeet Singh
e79bcde8bf Using JsonNull.INSTANCE instead of JsonNull.createJsonNull() method 2011-05-25 16:55:57 +00:00
Inderjeet Singh
5d31558428 eliminated maven compilation problems with JDK 5 2011-05-25 16:13:36 +00:00
Inderjeet Singh
540d36e4bd API Change: Implemented various getAs methods to return null. 2011-05-25 07:08:21 +00:00
Inderjeet Singh
5e2bc1b8f0 New Public API: Exposed the singleton instance for JsonNull. 2011-05-25 07:01:36 +00:00
Joel Leitch
572421b771 Open object construction in JsonDeserializationContext to leverage the same object construction as default gson deserialization. 2011-05-20 21:50:39 +00:00
Inderjeet Singh
0bcd1b341f Revised Gson to refuse to deserialize floating point numbers into integer types.
This is probably a break from the past: previous versions of Gson allowed truncating a floating point into a long or int. However, it wasn't consistent in this behavior. It disallowed converting a BigDecimal value into BigInteger, int or long. Refusing to deserialize such values is aligned with fail-fast approach of uncovering bugs.
2011-05-04 23:26:22 +00:00
Jesse Wilson
ce79e16f7a StringPooling. This makes things up to 20% faster on dalvikvm for some data sets. 2011-04-28 22:08:06 +00:00
Inderjeet Singh
824635158c Parsing numbers lazily as a performance enhancement.
This avoids needing to parse number if the equivalent object field doesn't exist.
It also avoids the performance penalty of trying to parse it eagerly as a big decimal, float etc.
2011-04-28 21:57:29 +00:00
Joel Leitch
f291c4d33e Fix a bunch of preserve-type issues:
- Issue 205
- Issue 294
- Issue 318
2011-04-20 22:27:51 +00:00
Joel Leitch
e345feb438 Comments from r821 2011-04-14 18:54:09 +00:00
Joel Leitch
c894fb6c23 Default support for BitSet. As well, provide more flexibility on getAsBoolean for a JsonPrimitive. 2011-04-14 02:42:47 +00:00
Inderjeet Singh
5552d17d05 removed assembly-descriptor.xml from Gson jar 2011-04-13 18:26:51 +00:00
Inderjeet Singh
9bfe443950 marked package private classes final 2011-04-13 15:57:11 +00:00
Joel Leitch
1c3d08794d Fixed typo. 2011-04-13 07:49:30 +00:00
Joel Leitch
5770be4ed2 More fixes to JavaDoc. 2011-04-12 22:03:15 +00:00
Joel Leitch
4917fc7f76 Lift restriction on naming when using the "@SerializedNamed" annotation.
Fix for Issue 290.
2011-04-12 17:29:19 +00:00
Joel Leitch
ecf137fec3 More fixes to JavaDoc. 2011-04-11 19:01:07 +00:00
Joel Leitch
c5c7c5bb64 More fixes to JavaDoc. 2011-04-11 18:52:29 +00:00
Joel Leitch
49e7ee05fc Fix method name by making it singular. 2011-04-11 18:44:19 +00:00
Joel Leitch
c266097310 Fix minor JavaDoc issue. 2011-04-11 18:33:46 +00:00
Joel Leitch
457b37f08e Replace var-args with single parameter. 2011-04-11 18:09:59 +00:00
Joel Leitch
854b92a78f Comments from r789 2011-04-07 18:00:12 +00:00