Commit Graph

705 Commits

Author SHA1 Message Date
Jesse Wilson
70abd0ba87 Finishing touches on JsonElementWriter 2011-10-01 00:42:28 +00:00
Jesse Wilson
349c01e861 JsonElementWriter NaN, -Infinity, Infinity 2011-10-01 00:35:51 +00:00
Jesse Wilson
ed2b25ddef Don't serialize nulls in JsonElementWriter if setSerializeNulls(false) 2011-10-01 00:22:33 +00:00
Jesse Wilson
9b7b49bf0f Implement JsonElementWriter.close() 2011-10-01 00:12:36 +00:00
Inderjeet Singh
d3f927eb42 Pure refactorings:
Replaced DEFAULT_SERIALIZERS, DEFAULT_DESERIALIZERS and DEFAULT_INSTANCE_CREATORS with a single EMPTY_MAP.
Removed obsoleted TODO from Gson.
made ParameterizedTypeHandlerMap.makeUnmodifiable a builder method that returns this instance.
2011-09-30 17:56:40 +00:00
Inderjeet Singh
47a36fd095 Fixed Eclipse warnings 2011-09-30 17:08:35 +00:00
Jesse Wilson
bb7f0b6bb0 Adopt JsonElementWriter in GSON.
Add setSerializeNulls() to JsonWriter, so nulls can be skipped from serialization. This does not yet impact JsonElementWriter.

One change in behavior: if the only value is skipped, we now emit "null" rather than "".
2011-09-30 07:08:44 +00:00
Jesse Wilson
364de80611 Stream to a DOM 2011-09-30 06:32:33 +00:00
Jesse Wilson
d26c818918 New streaming writer writes to DOMs 2011-09-30 06:26:46 +00:00
Jesse Wilson
6c0566bd22 Start using JsonElementReader in TypeAdapter.
Also fix strict handling of NaN and Infinity
2011-09-30 03:47:30 +00:00
Jesse Wilson
1bb01055f0 Tests for JsonElementReader.close 2011-09-30 03:31:44 +00:00
Jesse Wilson
9ce9c62b44 Tests for JsonElementReader 2011-09-30 03:25:41 +00:00
Jesse Wilson
bd2a0ac466 Support JsonReader API on DOM objects.
This still needs test coverage & documentation but it appears to work!
2011-09-30 00:44:37 +00:00
Inderjeet Singh
423d18feb5 Revised test to take into account known problems with JsonElement that holds BigInteger values. 2011-09-29 22:18:16 +00:00
Inderjeet Singh
2541e658f7 Fixed com.google.gson.functional.VersioningTest.testIgnoreLaterVersionClassDeserialization by changing Gson behavior incompatibly (but more consistent).
GSON 1.x applies different rules for versioning for classes vs fields. So, if you deserialize a
   JSON into a field that is supposed to be skipped, the field is set to null (or default value). 
   However, if you deserialize it to a top-level class, a default instance is returned.
GSON 2.x returns null for the top-level class.
2011-09-29 22:15:37 +00:00
Jesse Wilson
8b21c7770b Use the same behavior in all situations when an InstanceCreator returns a subclass.
Previously we would set the field if the created instance is being assigned to a field of another object. We wouldn't set it when the created instance is a collection element or the top-level object.
2011-09-29 16:38:24 +00:00
Jesse Wilson
4d0775ce8e Let the runtime throw on circular references 2011-09-28 19:38:43 +00:00
Jesse Wilson
46e65a77c5 Convert RuntimeTypeAdapter to a TypeAdapterFactory; this avoids the need for serializeDefault() 2011-09-28 19:14:46 +00:00
Jesse Wilson
2236c95c37 Death to serializeDefault and deserializeDefault 2011-09-28 18:00:34 +00:00
Inderjeet Singh
cebda2b119 Fixed MapTest.testInterfaceTypeMapWithSerializer. This test for relying on JsonElement.toString() to have same behavior as gson.toJson(JsonElement). However, gson.toJson() skips nulls by default whereas JsonElement.toString() does not. 2011-09-27 15:38:02 +00:00
Inderjeet Singh
2780a2a9bf Fixed eclipse warnings. 2011-09-16 06:03:16 +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
fd502f4e79 removed unused method. 2011-09-16 05:41:04 +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
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
Jesse Wilson
51a9596d06 Make Dates test slightly more robust to time of day issues. The test still fails outside of PST when run as a part of a larger suite because GSON captures a static snapshot of the system time zone at GSON-creation time. 2011-09-12 06:02: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
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
2ee89879e1 New failing test to show that JsonPrimitive.equals() is broken for values that are out of 'long' range 2011-09-09 07:58:52 +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
Jesse Wilson
9424949245 Don't unwrap single-element String arrays 2011-09-09 05:41:35 +00:00
Jesse Wilson
da67003eef GSON 1.x uses arbitrary precision for primitive type conversion (so -122.08e-2132 != 0)
GSON 2.x uses double precision (so -122.08e-2132 == 0)
2011-09-09 05:23:01 +00:00
Jesse Wilson
a7e9ac3612 Don't support oversized values like 30-character integers 2011-09-09 05:11:59 +00:00
Jesse Wilson
e19672d0a3 Throw the right exceptions when primitives fail to parse. 2011-09-09 05:04:24 +00:00
Jesse Wilson
9db0c53217 Adapt bytes 2011-09-09 04:39:29 +00:00
Jesse Wilson
f67940cb63 Retire two old bad features
- overriding primitive type adapters
 - auto unwrapping of single element arrays
2011-09-09 04:20:25 +00:00
Jesse Wilson
3aeb70e030 Adapter for Object.class 2011-09-09 03:31:16 +00:00
Inderjeet Singh
9b6954decd Additional tests to verify handling of bytes. 2011-08-26 01:11:50 +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
aa067056c3 Restore support for long serialization policy. 2011-08-04 22:57:36 +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
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
Jesse Wilson
60e6ed912d Promote MiniGson to gson.internal.bind 2011-08-03 00:25:10 +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
Joel Leitch
7dca724292 Fixing import order. 2011-07-12 04:15:46 +00:00
Jesse Wilson
807aa97ee7 Don't use ambiguous timezone names.
Fixes bug 331.
2011-07-01 22:00:45 +00:00
Jesse Wilson
937019651a Trailing comma tests 2011-07-01 21:36:05 +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
5f4e88f62a More tests to ensure that serialization works for parameterized types like A<B<C<D>>> without the need to specify type in toJson() 2011-06-25 20:14:09 +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
ef2f73180b added tests to illustrate and validate that Gson can serialize parameterized types without the need of explicit type token. 2011-06-25 19:43:05 +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
c9ee7adcc5 Start using JsonNull.INSTANCE everywhere and remove creation method. 2011-06-03 19:02:28 +00:00
Inderjeet Singh
60e7c481fd Added complex map serialization tests in case the Map is defined with TypeVariables. 2011-05-30 09:38:38 +00:00
Inderjeet Singh
f2eb76eac9 removed deprecation warnings by using JsonNull.INSTANCE 2011-05-25 16:48:39 +00:00
Inderjeet Singh
b85daafb08 suppressed unchecked warning 2011-05-11 21:43:47 +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
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
4efeef1893 Make test a little more complex to show it actually fixed the bug. 2011-04-20 22:32:13 +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
cf3615e38c Adding tests to verify 294. 2011-04-19 22:18:25 +00:00
Inderjeet Singh
e60274ed35 Added tests to ensure that subclass objects that are of a parameterized type are serialized per their declared type in lists or maps. 2011-04-19 20:49:48 +00:00
Inderjeet Singh
40045dc2e4 Added tests to ensure that subclass objects are serialized per their real type in lists or maps.
Currently, this doesnt happen for List and hence the test is marked as disabled.
2011-04-19 20:26:16 +00:00
Joel Leitch
d2cf574e86 Adding unit-tests to verify bugs. 2011-04-15 06:33: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
Joel Leitch
97d00f4930 Add test to verify issue 309. 2011-04-13 16:14:54 +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
49e7ee05fc Fix method name by making it singular. 2011-04-11 18:44:19 +00:00
Inderjeet Singh
4bd261ae06 Made FieldNamingStrategy2 and its corresponding builder method package-private. 2011-04-07 17:41:35 +00:00
Inderjeet Singh
05ae10a144 removed the constructor in FieldAttributes that was only used in tests. 2011-04-06 00:51:01 +00:00
Joel Leitch
ddb0c8c825 Minor formatting fixes. 2011-04-06 00:43:57 +00:00
Inderjeet Singh
c8bd121db2 Renamed $Preconditions to $Gson$Preconditions and $Types to $Gson$Types.
Marked the two private classes in $Types as final.
2011-04-06 00:26:57 +00:00
Joel Leitch
b4eb810347 Comments for r766. 2011-04-06 00:02:40 +00:00
Joel Leitch
f36c1bc222 Very minor cleanup. 2011-04-04 23:17:43 +00:00
Joel Leitch
2fb8c92812 Use more specific type for map serialization if possible. 2011-04-04 23:13:31 +00:00
Inderjeet Singh
542a17c3bc Incorporated comments from r710 2011-04-04 22:48:34 +00:00
Inderjeet Singh
56b7ab1b71 Incorporated feedback from r718 2011-04-04 22:23:51 +00:00
Inderjeet Singh
feb9617bf0 Incorporated comments from r726 2011-04-04 22:09:51 +00:00
Inderjeet Singh
a147164852 incorporated feedback on r721 2011-04-04 21:43:24 +00:00
Inderjeet Singh
1a9a54dcc2 incorporated review comments from r768 2011-04-04 21:27:37 +00:00
Joel Leitch
21ddfc9b12 Show default serialization and deserialization works with subclasses of an enum type. 2011-04-04 19:19:46 +00:00
Joel Leitch
5af0b16641 Updating Map tests. 2011-04-04 19:07:20 +00:00
Inderjeet Singh
9c894c7485 switched from accessing field to an accessor method for access in tests.
Strangely, this fixes the broken tests in the continuous build.
2011-03-31 18:57:55 +00:00
Inderjeet Singh
5bc80cd693 Moved Cache, LruCache, Pair, Primitives and UnsafeAllocator to com.google.gson and made them package private. 2011-03-30 13:59:06 +00:00
Jesse Wilson
46a8e9b411 Test to demonstrate that we've fixed issue 302.
http://code.google.com/p/google-gson/issues/detail?id=302
2011-03-29 21:48:03 +00:00
Jesse Wilson
f718784f33 Use the date format for java.sql.Date and java.sql.Timestamp.
Fixes issue 230.
2011-03-29 21:36:19 +00:00
Jesse Wilson
4efb133b4a bling bling
Prefix internal classes with $ to prevent them from interfering with IDE's auto import functionality.
2011-03-29 21:24:26 +00:00
Joel Leitch
454f58a7b1 Adding in instance creator to instantiate the concrete Collection or Map class if known, otherwise fallback to a default instance.
Also, added some caching as part of the default constructor lookups.
2011-03-29 16:57:28 +00:00
Inderjeet Singh
337d89cf3f Removed ObjectNavigatorFactory 2011-03-24 20:19:41 +00:00
Inderjeet Singh
13dc7b6f02 Made ObjectNavigator a reusable object. We now use just one instance of ObjectNavigator instead of creating one for each field/object. 2011-03-24 18:41:45 +00:00
Inderjeet Singh
005c93e383 removed unused no-args constructors 2011-03-23 18:48:03 +00:00
Joel Leitch
861e047a62 Create an "internals" package for classes that we do not want to share, but is needed across multiple pacakges.
As well, move non-Gson specific classes, such as Preconditions, to this new "internals" package.
2011-03-21 22:30:35 +00:00
Jesse Wilson
657688ca79 Test that the date format is honored, even in a collection.
http://code.google.com/p/google-gson/issues/detail?id=230
2011-03-21 22:10:33 +00:00
Jesse Wilson
e96b241556 Test that we can serialize classes whose fields are concrete collections. 2011-03-21 21:49:38 +00:00
Joel Leitch
279c0e87ed Update Precondition checks and have it throw a NPE instead. 2011-03-16 07:23:44 +00:00
Joel Leitch
a9507250f9 Add test for multiple calls to register complex map key serialization. 2011-03-15 15:41:19 +00:00
Joel Leitch
ba0cd254a9 Clean up warnings. 2011-03-15 15:38:17 +00:00
Joel Leitch
e57ef0908b Add method to GsonBuilder to enable complex key serialization of maps. 2011-03-15 15:37:41 +00:00
Inderjeet Singh
0c35edab65 Fixed the bug where copyOf() for a ParameterizedTypeHandlerMap was failing when hierarchical type adapters for a sub class and its base class were present.
Fixed previously broken tests to verify the behavior that a hierarchical type adapter for a sub-class can be registered after registering a hierarchical type adapter for the base-class. The vice-versa is not allowed as it would result in hiding the sub-class hierarchical type adapter.
2011-03-14 23:22:50 +00:00
Jesse Wilson
912add0779 (Failing) test cases for registering competing types. 2011-03-14 22:14:35 +00:00
Inderjeet Singh
e26a6d5c18 removed the wrapping (regarding exception handling) of some primitive deserializers (numbers and boolean).
Added a number of additional tests that cover the cases of attempts to deserialize JsonObjects or arrays as primitives that must fail.
2011-03-11 22:14:18 +00:00
Inderjeet Singh
52288d7127 rawtypes -> unchecked
Fixed spurious eclipse warnings on deprecation, missing classes or parameters, etc.
2011-02-24 22:47:55 +00:00
Inderjeet Singh
4be9767a28 removed unused imports 2011-02-24 20:18:03 +00:00
Jesse Wilson
3d006c90a2 equals & hashCode for subclasses of JsonElement.
Resolves issue 64.
2011-02-15 00:14:20 +00:00
Joel Leitch
69661216a3 Minor clean-up of warnings (in 1.5) and added new test for non-Empty maps. 2011-02-11 18:22:58 +00:00
Joel Leitch
451a9dbe66 Add ability to allocate memory for an object without the use of the default constructor. 2011-02-11 18:22:07 +00:00
Jesse Wilson
b649f2768c Support unquoted single word strings in lenient mode!
Fixes issue 282.
2011-02-10 01:36:27 +00:00
Jesse Wilson
6e81cfdbb4 Locale-awareness for date parsing and formatting:
- always format in en_US for best interchange
 - always parse in en_US, system locale and ISO-8601
2011-02-10 01:06:22 +00:00
Joel Leitch
114633fbf9 Provide a means to add serialization or deserialization specific exclusion strategies. 2011-02-04 03:09:41 +00:00
Inderjeet Singh
ea48a1debf Fixed issue 175 by adding default type adapters for StringBuilder and StringBuffer. 2011-01-31 23:14:02 +00:00
Inderjeet Singh
a09c3ab1c5 Added tests to validate issue 272. The tests currently pass so it is not a valid bug. 2011-01-24 22:40:42 +00:00
Joel Leitch
b883f8f4aa Add new "Mode" enum and carry mode through Gson so exclusion strategies know whether it is currently serializing or deserializing.
Deprecate old ExclusionStrategy code since this new approach is more powerful.
2011-01-22 22:15:06 +00:00
Inderjeet Singh
2b9f81e8b5 Registering default type hierarchy adapters first and allow users to override them.
This allows the default EnumTypeAdapter to be overridden for a specific hierachy adapter for Enum with anonymized sub-classes.
2011-01-19 23:28:28 +00:00
Jesse Wilson
fd0f526fb0 Basic functional test for type hierarchy adapter. 2011-01-19 23:25:27 +00:00
Jesse Wilson
a526da7cdd Tests that demonstrate that type variables work.
Fixes issue 168.
2011-01-19 22:24:10 +00:00
Inderjeet Singh
edc71130c4 removed unneeded suppression of warnings. 2011-01-19 07:34:44 +00:00
Inderjeet Singh
ce3520f5b5 disabling an assert that was causing failed test.
Per Jesse, this assertion is too difficult to support reliably.
2011-01-13 07:35:11 +00:00
Jesse Wilson
37dc0f8d3e Type adapter for maps. Supports both complex and non-complex keys. 2011-01-12 00:17:21 +00:00
Joel Leitch
bd3e680f94 Fixing rollback. 2011-01-11 22:24:14 +00:00
Joel Leitch
fa7f8cc2eb Rolling back test deletion. 2011-01-11 22:21:41 +00:00
Joel Leitch
1e2fbd81f5 Adding default type adapter for InetAddress. 2011-01-10 23:03:48 +00:00
Joel Leitch
3926afbd30 Removing unused files with the new Types class. 2011-01-10 22:47:42 +00:00
Inderjeet Singh
0e5f6704cd Added sonatype oss as parent for the pom. Diabled repository management with-in POM per instructions at: https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide 2011-01-10 22:47:36 +00:00
Inderjeet Singh
8380d28e6f removed compiler warnings 2010-12-06 19:47:41 +00:00
Jesse Wilson
883ce465d5 Second half of adopting Guice's types code.
This removes a bunch of unnecessary public APIs and looks more like the GSON code that existed before this whole exercise. We no longer use TypeToken.isAssignable. I wrote a test that demonstrates at least one problem with that method, so I've deprecated it. We should be able to remove it release-after-next; nobody should be using this method anyway.

There are still some things that are public that shouldn't be. In particular there's some APIs in Types that are needed by TypeToken, which is unfortunately in a different package. Traditionally the fix is to create an 'internal' package and make the shared code public in the internal package. I'm not sure what we want to do for GSON; we could also use reflection (yuck) or duplicate the code (yuck).
2010-12-03 18:12:26 +00:00
Jesse Wilson
d1ddab2e6f Swap out GSON's type mechanics with the Type resolution code from Guice.
The most significant impact of this change is that fields whose types are type parameters should now GSONify just fine. For example, consider the class below.

abstract class Foo<A, B> {
   A a;
   B b;
   List<A> list;
   Map<A, List<B>> map;
}
class RealFoo extends Foo<String, Integer> {...}

This is a reasonable checkpoint but some work still needs to be done for this. In particular, the level of visibility of methods in TypeToken and Type should be reconsidered; we're exposing more than we need to!
2010-12-03 08:07:13 +00:00
Inderjeet Singh
d87eed510b Fixed compilation problem since we dropped registerTypeHierarchyAdapter method 2010-11-24 23:14:30 +00:00
Inderjeet Singh
98ff894863 removed unnecessary else clause. 2010-11-22 23:14:51 +00:00
Joel Leitch
56344cf067 Remove duplicate test. 2010-11-16 22:18:28 +00:00
Joel Leitch
0a3f5fa801 Required strings to be quoted even in lenient mode.
As far as Inderjeet and I can tell, this is consistent with Gson 1.5.
2010-11-16 22:14:40 +00:00
Inderjeet Singh
279649986e Added a test to ensure that Gson handles repeated invocation of itself correctly.
Revised proto maven configuration to use Gson 1.6
2010-11-15 22:56:01 +00:00
Inderjeet Singh
eac1505670 Removed eclipse warnings about unneeded else statements and rawtypes/unchecked access. 2010-11-11 07:29:55 +00:00
Joel Leitch
32afd1a4e4 Fixing parsing of unquoted strings to be (somewhat) consistent with previous versions of Gson. The difference with this version is that Gson will throw a more specific exception rather than JsonParseException. 2010-11-10 02:02:57 +00:00
Jesse Wilson
103edb9c36 Don't return null on an unexpected EOF unless the document is empty. This brings us back to compatibility with GSON 1.5. 2010-11-08 19:16:05 +00:00
Joel Leitch
6a951b427e Adding new tests (two of which are disabled, but prepping for 1.7). 2010-11-05 22:57:44 +00:00
Inderjeet Singh
7b99419aea Removed compiler warnings. 2010-11-03 23:14:42 +00:00
Inderjeet Singh
83539c534c removed compiler warnings.
Added default serial version id for MalformedJsonException.
2010-11-03 13:28:09 +00:00
Inderjeet Singh
82a1a9511e removed a System.out.println from a test. 2010-11-03 01:25:57 +00:00
Inderjeet Singh
200bccef21 Added tests for issue 249 2010-11-03 00:15:03 +00:00
Joel Leitch
c6a4f55d1a Fix for Issue #40. 2010-11-02 03:32:39 +00:00
Jesse Wilson
dea7ab89fe Restore pretty printing. The pretty printing format isn't as compact as the previous format - for example arrays of integers are printed one-per-line, whereas the previous format compacted these to all sit on the same line. 2010-11-01 23:03:41 +00:00
Inderjeet Singh
43f2a0012b Removed JavaCC parser definition and its generated classes. 2010-11-01 22:57:39 +00:00
Jesse Wilson
20d895ff95 Fix primitive wrapping and casting.
Issue: 235
2010-11-01 22:36:30 +00:00
Joel Leitch
d0977c2e3a Exposing the declaring class for the field wrapped by FieldAttributes. 2010-11-01 22:31:48 +00:00
Inderjeet Singh
d3eda04f33 Added support for deserializing from null input to a null value.
Added toString() method to ObjectTypePair.
2010-10-22 16:06:59 +00:00
Inderjeet Singh
2b1f3eec15 Removed a bunch of unused code and unnecessary else statements. 2010-09-28 13:42:43 +00:00
Jesse Wilson
4c53c0640e Exhaustive test coverage for mixed streaming & binding. 2010-09-03 07:24:59 +00:00
Jesse Wilson
4e28bf3a39 Check in a passing test for issue 204. 2010-09-03 06:44:41 +00:00
Jesse Wilson
202bbfeef0 Fixing the Java 1.5 build. 2010-09-02 09:29:26 +00:00
Jesse Wilson
747e3c3051 Support mixed streaming and databinding with new APIs. 2010-09-02 00:15:23 +00:00
Jesse Wilson
ffdf0e7012 Fix some test problems.
JsonWriter was using suboptimal escape characters for newlines etc: unicode escapes rather than \x escapes.

JsonObjectTest was banning empty and whitespace-only keys. These values are permitted as of r585.
2010-09-02 00:10:26 +00:00
Jesse Wilson
78d1011ec5 Test escaping HTML characters! 2010-09-02 00:03:18 +00:00
Jesse Wilson
486820f515 Fix some test problems.
JsonWriter was using suboptimal escape characters for newlines etc: unicode escapes rather than \x escapes.

JsonObjectTest was banning empty and whitespace-only keys. These values are permitted as of r585.
2010-08-28 08:18:13 +00:00
Jesse Wilson
7e1e4eab07 Remove the constraint that map keys mustn't be the empty string.
See bug 227.
2010-08-28 05:02:33 +00:00
Jesse Wilson
69ecb9465a Test case demonstrating that issue 212 is fixed. We got comment parsing support for free when we switched to JsonReader. 2010-08-27 07:33:33 +00:00
Jesse Wilson
d5741b321f Don't exclude enum constants, even if they are anonymous.
See issue 226.
2010-08-27 07:26:35 +00:00
Jesse Wilson
eb7b1e4ac7 Test attempting (and failing) to reproduce issue 215. 2010-08-27 07:10:00 +00:00
Jesse Wilson
7a7bbf754c Use JsonReader internally rather than JsonParserJavacc.
For raw parsing (ie. new JsonParser().parse()) the parse time has improved substantially. For example, JsonParserJavacc parsed my 48KiB buzz feed in 4.8ms. JsonReader parses the same feed in 0.9ms.

http://microbenchmarks.appspot.com/run/limpbizkit@gmail.com/com.google.gson.GsonBenchmark/430001
2010-08-27 05:59:18 +00:00
Jesse Wilson
765a9f1ecd Brand new classes for streaming JSON efficiently.
Notable features:
 - Efficiency. The parser is faster than the current javacc parser. It's also faster than popular libraries for JSON streaming.
 - Toggle lenient/strict
 - Toggle pretty/compact
 - Friendly error messages on bad JSON
 - GSON-quality Javadoc
 - Non-execute prefix handling

This doesn't wire JsonReader up into Gson just yet. That's coming soon...
2010-08-26 08:44:02 +00:00
Joel Leitch
3fc4bcc061 Minor test fixes. Explicitly fail test if the expected exception was not thrown. 2010-08-21 03:19:17 +00:00
Inderjeet Singh
de0f8da151 replaced unchecked suppressed warnings token with more specific rawtypes.
removed unused imports.
2010-08-20 16:27:46 +00:00
Inderjeet Singh
ed838ec104 replaced unchecked suppressed warnings token with more specific rawtypes 2010-08-20 16:20:37 +00:00
Jesse Wilson
bc5b836103 Test demonstrating a bug reported in issue 182, wherein malformed JSON is emitted when an property name contains a double-quote. 2010-08-20 05:45:51 +00:00
Jesse Wilson
8b5cc3256d Test demonstrating a bug reported in issue 178, wherein malformed JSON is emitted when a map key contains a double-quote. 2010-08-20 05:43:17 +00:00
Inderjeet Singh
dc60cb1931 Made FieldNamingStrategy2 is package protected class.
Made type hierarchy adapter registration package protected.
Marked some of the classes final.
Minor changes in the performance tests.
2010-08-19 00:10:42 +00:00
Joel Leitch
89c18452ae Ensure date with pattern is not override with the "default" date type adapter when a custom JsonSerializer/JsonDeserializer is registered. 2010-08-18 23:58:52 +00:00
Inderjeet Singh
c3f61ee5ad Added a test to reproduce bug described in http://groups.google.com/group/google-gson/browse_thread/thread/9591c539e3c19d59
Seems like an invalid bug report as Gson can deserialize primitive values in Integer fields.
2010-07-19 23:32:24 +00:00
Inderjeet Singh
b2af57d288 Added checks to ensure that typeHierarchyAdapter being registered doesn't hide a previously existing one.
Fixed a bug where registerIfAbsent was adding type adapters in the reverse order of priority.
Added toString() to Pair.
2010-06-24 21:51:18 +00:00
Inderjeet Singh
8aedbc84db Added a new GsonBuilder option to register a type adapter for a type hierarchy instead of a single type.
Upgraded Gson version to 1.5 since a new API call is being added.
2010-06-21 23:26:06 +00:00
Joel Leitch
9cd72ca7fb Add new tests with SerializedName annotation that contains a space in the name. 2010-05-28 02:13:11 +00:00
Joel Leitch
ba0154867d Add support to allow spaces in the JSON field name. 2010-05-26 17:40:19 +00:00
Joel Leitch
389f918bb8 Add new performance test for large objects (many fields). 2010-05-19 21:29:58 +00:00
Joel Leitch
9c7bfc677a Allow cache size to be configured. 2010-05-19 20:47:27 +00:00
Joel Leitch
bf2a0e4e0b Adding tests to ensure the adapter from the old to new naming strategy is working properly. 2010-01-10 03:27:59 +00:00
Joel Leitch
9816426bba Add new Cache interface and LRU Cache implementation to cache field annotations per "Class" (rather than per instance). This results in a significant speed-up (approx. 3X) when serializing/deserializing the same classes over and over again. 2010-01-10 00:32:21 +00:00
Joel Leitch
e3af076ff2 Deprecate the FieldNamingStrategy interface and replace it with FieldNamingStrategy2. This is the first step to help make it easy to cache field annotations across all instances of a class, etc. 2010-01-09 22:43:27 +00:00
Inderjeet Singh
7079799890 Fixed issue 167 by adding support for TreeSet deserialization. Added tests for serialization/deserialization of treesets. 2010-01-08 19:14:42 +00:00
Inderjeet Singh
058f7344db Revised the setup for date/time tests to use PST time-zone. This fixes bug 184 by ensuring that tests are run in PST time-zone. 2010-01-08 18:53:39 +00:00
Inderjeet Singh
15fa10943c Fixed serializers and deserializers for java.sql Date and Time to ensure that Date does't serialize time, and time does't serialize the date portion. 2009-12-04 18:15:00 +00:00
Inderjeet Singh
ebf24fbda5 Fixed issue 134 by adding support for java.sql Date and Timestamp classses. 2009-12-04 01:21:13 +00:00
Inderjeet Singh
fff9147988 Added some tests to measure serialization and deserialization performance of Gson based on the discussion in http://groups.google.com/group/google-gson/browse_thread/thread/7a50b17a390dfaeb
Surprising just marking a field as exposed halves the performance.
2009-10-20 00:04:34 +00:00
Joel Leitch
102f8b3a71 Adding a few more assert to the InstanceCreatorTest to ensure that the default values are set for sub class fields. 2009-10-09 21:23:51 +00:00
Joel Leitch
d87d3f807f Added functional tests for user defined exclusion strategy.
Added test to ensure empty/null properties are added for the JsonObject.
2009-10-09 21:12:07 +00:00
Inderjeet Singh
bc1e5c5c99 Ensured that custom deserializer is invoked with actual type returned for field values.
Fixed a bug where a top-level object was constructed with default values even when the custom deserializer tried to set it to null.
2009-10-09 19:41:33 +00:00
Inderjeet Singh
338758a0d3 implemented support for deserialization to deserialize to more specific type if an instance creator returns a sub-class. 2009-10-09 18:16:16 +00:00
Joel Leitch
de6af4411b Minor fixes. 2009-10-09 15:43:50 +00:00
Inderjeet Singh
60ef777efc Fixed custom serilization invocation to correctly handle nulls returned by custom serializer. 2009-10-09 15:28:05 +00:00
Inderjeet Singh
e37add7836 Implemented some code review comments from r482 2009-10-09 01:35:45 +00:00
Inderjeet Singh
2bddd575b3 Code review changes from r476 2009-10-08 23:23:52 +00:00
Joel Leitch
dc5922e703 Addresses comments in r481 (except for the interface change....leaving FieldAttributes as a class).
Change the exclusion order in ObjectNavigator to exclude a top-level class (if exclusion strategy suggests class should be skipped) even if it is marked with a custom (de)serializer.
2009-10-08 20:51:40 +00:00
Inderjeet Singh
e9c156b016 Added inheritance tests using toJson() method as well. 2009-10-08 19:32:15 +00:00
Inderjeet Singh
b634804533 Ensured that a base class custom serializer is run when the type is specified explicitly during serialization. For all other situations, ensured that the actual type of the object is taken into consideration while serializing. First a custom handler corresponding to the actual type is looked up, then a custom handler for the specified type.
Created some serialization specific tests regarding custom serializers. Revised some tests to use toJsonTree for better asserts instead of string matching.
2009-10-08 19:28:53 +00:00
Joel Leitch
839b0c2f94 Refactored exclusion strategies so that they can easily be exposed as part of the public API. 2009-10-07 09:23:14 +00:00
Joel Leitch
c892738fbb Re-enabling the ' (apostrophe) escaping with valid JSON escaping. 2009-10-07 03:48:29 +00:00
Inderjeet Singh
536a968b32 Disabled escaping of single quote since it is valid for JSON (though invalid for JavaScript).
Added null checks in contexts since the custom type adapter can pass nulls.
2009-10-06 17:10:52 +00:00
Inderjeet Singh
d416361ac5 Added a test to ensure Gson can use JSON fields to store type information. 2009-10-06 04:25:28 +00:00
Inderjeet Singh
ae85e6cce6 A test to ensure that null values override default values when nulls are present in input Json during deserialization. 2009-10-06 01:55:44 +00:00
Inderjeet Singh
1da3ef9891 Ensured that a custom handler is not visited during deserialization.
Ensured that JsonTreeNavigator can handle null values as children of JsonObject. This is now possible since Gson exposes toJson(JsonElement) method to which the user can pass a JsonElement with null values.
2009-10-06 01:15:28 +00:00
Inderjeet Singh
ff74224815 Revised equals and hashcode of ObjectTypePair to ensure reference equality of object instead of value equality. Improved JavaDocs for various 1.4 API methods. 2009-10-05 18:17:52 +00:00
Inderjeet Singh
2716d96516 Revised ancestor stack to use both object and type 2009-10-03 04:45:12 +00:00
Joel Leitch
fbf834c3f6 Implemented suggests from r469 code review. 2009-10-02 20:33:37 +00:00
Joel Leitch
b28864eaa0 Remove unused import. 2009-10-02 20:22:43 +00:00
Joel Leitch
912db55ba6 Added test for hasNext on JsonStreamParser. 2009-10-02 19:39:09 +00:00
Joel Leitch
0c2106f2ff Adding test for new field naming policies from r456 code review. 2009-10-02 19:12:15 +00:00
Inderjeet Singh
40ca8b0537 Added copyright header per code review suggestion from r424 2009-10-02 18:46:56 +00:00
Inderjeet Singh
c64b79c0f9 Implemented suggestions from the code review of r436: throwing NoSuchElementException in case the stream hits EOF. 2009-10-01 18:34:11 +00:00
Inderjeet Singh
3b1056c097 Renamed JsonParserAsync to JsonStreamParser as that is a more appropriate name.
Added a TODO in JsonSerializationVisitor per code review of r453.
2009-10-01 17:46:28 +00:00
Inderjeet Singh
8567fe6c10 Implementing code review comment from r428: Using Polymorphism for exclusion strategies for expose annotations. 2009-10-01 01:37:57 +00:00
Inderjeet Singh
907082102d Added code to ensure that circular reference situations with custom handlers are detected.
Split CircularReferenceTest out of ObjectTest.
2009-09-29 20:43:31 +00:00
Joel Leitch
933a3e5150 Allow serialization of nulls in a "List<Object>" type. 2009-09-29 20:34:35 +00:00
Joel Leitch
e5ed1cc59a Added some more tests. 2009-09-29 20:24:48 +00:00
Joel Leitch
e73ad007a4 Added test that serialize interfaces. 2009-09-29 19:03:49 +00:00
Joel Leitch
ad4ff6996b Adding new default field naming policy 2009-09-29 18:44:56 +00:00
Joel Leitch
553a619ebd Allow dashes as part of the field name. 2009-09-29 18:40:08 +00:00
Inderjeet Singh
e9a2a1d0f7 Fixed Issue 153 by using a stack to keep track of first elements at any level. 2009-09-29 17:52:49 +00:00
Inderjeet Singh
3e7ebf8556 Fixed issue 156.
Added support for serializing an object field (or array elements) as per its actual type.
Refactored inheritance related tests into its own test class. Added regression tests for issue 156.
2009-09-25 19:54:25 +00:00
Joel Leitch
8297437610 Reverting r499. 2009-09-23 19:25:50 +00:00
Joel Leitch
0e17041c8b Added another test to JsonParserTest. 2009-09-23 19:21:09 +00:00
Joel Leitch
c6f762f36b Fix Warnings 2009-09-23 19:09:01 +00:00
Joel Leitch
b0f50bb4be Return a "JsonNull" object for empty whitespace input into the JsonParser. 2009-09-23 19:00:05 +00:00
Inderjeet Singh
fdcd3945c5 Fixed issue 147.
Integral values (byte, short, integer, long, BigInteger) are now comparable to each other.
Floating point values (float, double, BigDecimal) are now comparable to each other.
2009-09-23 18:54:01 +00:00
Joel Leitch
50eb582657 Ensure that the JsonElement.toString() will always generate valid JSON (even when control characters/whitespace characters are used). 2009-09-23 18:28:03 +00:00
Inderjeet Singh
3b0f8f4340 Removed all the JDK warnings about unused fields in test classes or unused constructors for use by Gson or instanceof calls on parameterized types. 2009-09-23 17:45:16 +00:00
Joel Leitch
18b301dfeb - Serializing of Object arrays.
- Fixed incorrect warning
2009-09-22 19:04:27 +00:00
Inderjeet Singh
82771f006c removed Java 1.5 warnings 2009-08-31 17:51:47 +00:00
Inderjeet Singh
cbcf7defa3 Updated Grammar for matching JsonArray to be left-associative rather than right-associative. Gson can now parse arrays of size over 11MB instead of 80KB which was the prior limit. Thanks for the tip, kenotron. 2009-08-22 01:03:27 +00:00
Inderjeet Singh
f4f596ec3d Made JsonParser implement Iterator 2009-08-12 21:01:42 +00:00
Inderjeet Singh
41a1f8b89e Added tests in response to http://groups.google.com/group/google-gson/browse_thread/thread/41478d30b9f100b5 2009-08-10 17:47:11 +00:00
Inderjeet Singh
b7cbfc5c34 Fixed Issue 141 by adding new APIs for writing out JSON string representation for JsonElements. 2009-08-07 20:58:41 +00:00
Inderjeet Singh
03a3cc83c3 Attempt to reproduce issue 140 2009-08-07 01:12:41 +00:00
Inderjeet Singh
64172d1dac Added support to serialize and deserialize array of java.lang.Object when the content is a primitive type. 2009-07-27 23:24:23 +00:00
Inderjeet Singh
d8095c72fd minor improvements to the test 2009-07-14 01:08:04 +00:00
Inderjeet Singh
eac1beacc9 Added performance tests for byte array serialization and deserialization. 2009-07-13 22:27:55 +00:00
Inderjeet Singh
4f0728f6a0 Fixed issue 126 by ensuring that parameterized type deduction is not done for transient fields. 2009-06-02 18:02:15 +00:00
Inderjeet Singh
6d50bcea87 Added serialize and deserialize parameters to the Expose annotation that control whether a field gets exposed during serialization or deserialization. 2009-05-19 23:47:53 +00:00
Joel Leitch
376385ac0e Add a single quote to the HTML set of characters that should be escaped. 2009-05-19 19:49:25 +00:00
Joel Leitch
cd9bd71092 Allow JS Keywords as field name. These names are quoted anyways (and are valid according to the JSON spec) so it should not cause any issues. 2009-05-19 17:59:32 +00:00
Joel Leitch
abf4ab2d78 Fix project so it still compiles with JDK 1.5. 2009-05-19 17:51:02 +00:00
Inderjeet Singh
6e59e502c2 Refactored the Async parser interface out of JsonParser into a new class JsonParserAsync. Updated the JsonParser to detect Eof and return a null instead of throwing a ParseException. 2009-05-14 20:18:45 +00:00
Inderjeet Singh
0127891081 Added a new API method in JsonParser to allow reading of multiple JSON objects on a stream asynchronously. 2009-05-08 22:22:34 +00:00
Inderjeet Singh
b44bbbf5e7 Added an API method to create a tree of JsonElement from an object. 2009-04-03 21:33:01 +00:00
Joel Leitch
c8cb35e025 Adding copyright statement to JsonParserTest. 2009-04-01 16:56:40 +00:00
Inderjeet Singh
2034090b15 Changed version to 1.3
Made JsonParser.parse a non-static method.
2009-03-31 17:53:23 +00:00
Inderjeet Singh
8965d31ce9 made DEBUG final per the naming conventions. 2009-03-30 19:55:05 +00:00
Inderjeet Singh
e340801d25 Moved enum-related tests under EnumTest class. 2009-03-30 18:36:55 +00:00
Inderjeet Singh
4f727df749 Throwing JsonParseException when the user expected class doesn't match the JSON input during deserialization. 2009-03-27 23:17:46 +00:00
Joel Leitch
c9cb05fc72 Do not leak out a ClassCastException to our clients. 2009-03-27 19:43:33 +00:00
Inderjeet Singh
68f3899c1a Updated the security token to make generated Json non-executable. Removed the unneeded <data> element at the end. 2009-03-20 18:02:35 +00:00
Inderjeet Singh
b2b2e5dc0a Implemented enhancement request from issue 42 by supporting a new GsonBuilder setting generateNonExecutableJson() that prefixes the generated JSON with some special text that makes the output non-executable javascript. Gson now recognizes this special text in the input while parsing the JSON in fromJson and filters it out, if present. 2009-03-17 21:15:10 +00:00
Inderjeet Singh
1c5785be57 Tests to reproduce issue 95. The tests currently pass so the bug will be marked as invalid. 2009-03-12 20:54:00 +00:00
Inderjeet Singh
4fc6400f5c Fixed the test that broke while fixing issue 100 in r394 by using a TreeSet for SortedSets and HashSet for other kind of sets. 2009-03-12 18:17:14 +00:00
Inderjeet Singh
a595032a90 Fixed issue 100 by adding support for deserialization of collections of elements that do not implement Comparable. 2009-03-12 01:59:48 +00:00
Inderjeet Singh
3d1f7251c1 Added tests to reproduce issue 103. The tests pass at the moment, so we need more information in the bugreport. 2009-03-12 01:04:30 +00:00
Inderjeet Singh
809e3b5e21 Fixed bug 106 by adding custom serialization support for Gregorian Calendar. 2009-03-11 21:46:58 +00:00
Inderjeet Singh
16be7167ec Updated Gson grammar to support floating point numbers without a +/- after the E. So, 1.234567899E8 is now accepted by Gson as a valid floating point number. This fixed the bug http://code.google.com/p/google-gson/issues/detail?id=94
Also, updated Gson to use Javacc 4.2.
2009-03-05 23:05:29 +00:00
Inderjeet Singh
18005bbae1 using consistent method name prefixes. 2009-03-03 22:37:26 +00:00
Inderjeet Singh
2c25fdd850 Added a test to measure performance of Gson on large collections. Gson's parser handled a collection of 1.4 million objects for serialization. For deserialization, the numbers were lower and Gson parser gave a stack overflow beyond a collection of 87,000 objects. 2009-03-03 22:20:59 +00:00
Inderjeet Singh
da8a1feee8 Added tests for the bugreport http://code.google.com/p/google-gson/issues/detail?id=99 2009-03-03 21:09:07 +00:00
Inderjeet Singh
d4a53ee2fc Added tests to verify JsonParser and related methods in Gson. 2009-02-07 00:20:30 +00:00
Inderjeet Singh
2c7cc620d4 Exposed API for JsonParser and added methods to Gson to deserialize from a parse tree. 2009-02-04 01:56:28 +00:00
Joel Leitch
764e4d9aca Performance fixes after doing some profiling. 2009-01-20 08:38:21 +00:00
Joel Leitch
6a80791f13 Code cleanup and some minor performance fixes. 2009-01-20 01:36:54 +00:00
Joel Leitch
d34fb916cb Added tests for enum serialization and derserialization. 2009-01-20 00:52:54 +00:00
Joel Leitch
47b67390fa Set the DEBUG bit back to false. 2009-01-17 22:34:57 +00:00
Joel Leitch
f4f92a699d Added test for pretty printing of Maps. 2009-01-17 22:32:59 +00:00
Joel Leitch
6620786642 Added Copyright statement. 2009-01-11 06:18:08 +00:00
Joel Leitch
e2cfc0cc19 Update GsonBuilder API to accept an enum for the serialize Long as string. This will be useful if/when we implement support to serialize a long type as an array of integers. 2009-01-11 06:11:29 +00:00
Joel Leitch
90a4619034 Minor fixes for pretty printing. 2009-01-11 05:01:23 +00:00
Joel Leitch
02decace26 Added the ability to deserialize a Map "key" object from a String into a complex Java type. 2009-01-06 07:09:19 +00:00
Inderjeet Singh
970446e997 replaced system.out.println with a real assertion in the test. 2008-12-31 01:15:15 +00:00
Inderjeet Singh
cc334475b0 Fixed issue 87 by adding support for deserialization of java.util.Properties 2008-12-31 01:01:57 +00:00
Inderjeet Singh
6fe2fdf7a0 test to reproduce issue 87 2008-12-31 00:43:40 +00:00
Inderjeet Singh
3690d362b9 incorporated feedback from r358 2008-12-30 22:42:36 +00:00
Inderjeet Singh
e839336eea Incorporated comments from the code review r355 2008-12-30 19:03:43 +00:00
Inderjeet Singh
05f54f3552 Incorporated code review comments from r350 2008-12-30 18:54:33 +00:00
Joel Leitch
73d93e3322 Provide a setting to allow a client to skip the escaping of special HTML characters.
As well, remove the "/" from the list of special HTML characters since it is causing some incompatibilities.
2008-12-28 23:05:22 +00:00
Joel Leitch
458f2baa2f Added special serialization of "Long". Now the client has the ability to output a long field as a JSON "String". This is useful for JavaScript clients that need to handle long values.
As well, this change does a major clean up of the custom type adapter handling and ParameterizedTypeMap creation.
2008-12-28 03:23:36 +00:00
Joel Leitch
54a480774d Add the ability to configure Gson to exclude serializing and deserializing of all "Inner Classes". 2008-12-28 02:00:31 +00:00
Inderjeet Singh
bc6ec50db9 incorporated fixes from code review of r341 2008-12-23 18:24:13 +00:00
Inderjeet Singh
e0195fcc54 code review changes from r342
Enabled escaping of /
2008-12-23 18:18:14 +00:00
Inderjeet Singh
51881c7f4a Added a GsonBuilder setting to enable serialization of special double types, NaN, Infinity, and -Infinity. 2008-12-20 01:26:14 +00:00
Inderjeet Singh
362a94ec74 Added deserialization support for Double NaN, Infinity, and -Infinity 2008-12-19 22:21:35 +00:00
Inderjeet Singh
f33a84c223 Added tests for ensuring that control characters are escaped by Gson. 2008-12-19 20:58:58 +00:00
Inderjeet Singh
e4fdea0fc1 Updated Gson escaper to not escape unicode characters. This is in response to Issue 80. 2008-12-19 20:41:53 +00:00
Inderjeet Singh
53f7d26b6d removed tests for serialization of BigDecimal NaN, positive and negative infinity since BigDecimal can not be created with these values. 2008-12-19 17:46:24 +00:00
Inderjeet Singh
f7e4d5e4bb Added checks to ensure that we do not serialize NaN or postiive or negative infinity for BigDecimal. 2008-12-18 23:56:38 +00:00
Inderjeet Singh
6dbdb272c0 Added checks to ensure that we do not serialize NaN or postiive or negative infinity for floats. 2008-12-18 23:41:44 +00:00
Joel Leitch
17256b8ce5 Added tests for JsonPrimitive object creation with a char type.
Suggestion from r321 code review.
2008-12-18 20:06:20 +00:00
Inderjeet Singh
cbc6b4d939 Added checks to ensure that we do not serialize NaN or postiive or negative infinity for doubles. 2008-12-18 20:00:27 +00:00
Inderjeet Singh
de713614af incorporated feedback from code review of r295 2008-12-18 18:59:30 +00:00
Joel Leitch
fc65667d2f Add support for wildcard type on Maps, Collections and other parameterized types. 2008-12-14 07:12:04 +00:00
Joel Leitch
8e1c6a2b37 Ensure that BigDecimals fields are properly converted into its string representation. 2008-12-14 05:56:41 +00:00
Joel Leitch
ea79cd6812 Allow booleans and number to be deserialized into a "String" field/object. 2008-12-14 04:42:16 +00:00
Joel Leitch
0b5f3dc825 Added UUID as a default type supported by Gson. 2008-12-13 20:42:31 +00:00
Joel Leitch
11a29b63b0 Implemented suggested changes from r324 code review. 2008-12-02 23:41:04 +00:00
Joel Leitch
b9e81f93c1 Fixed warnings and updated some JavaDoc. 2008-12-01 01:40:11 +00:00
Joel Leitch
50dd475eb8 Added more tests involving Since and Until versioning. 2008-12-01 00:23:35 +00:00
Joel Leitch
6f59bc3bfe Added "Until" type version. This new annotation allows you to remove members from the JSON output beginning at a certain version number.
This new annotation work in conjunction with the "@Since" annotation.
2008-12-01 00:10:04 +00:00
Joel Leitch
5ae7e1f803 Adding new convenience method to JsonObject for adding Booleans and Characters. 2008-11-30 23:36:29 +00:00
Joel Leitch
b90228dcc0 Enable serialization of nulls within Maps. 2008-11-30 23:01:14 +00:00
Joel Leitch
a82c400dc8 Fix warnings. 2008-11-30 00:47:07 +00:00
Joel Leitch
c9e48097ec Do not overwrite a duplicate field value during seriailzation if one those fields is null. 2008-11-27 00:50:50 +00:00
Joel Leitch
d6d1daeedd Submitting @Expose tests with interfaces. 2008-11-26 21:46:55 +00:00
Inderjeet Singh
59be02d4de Added support for accepting Object field names without quotes. Issue 41. 2008-11-26 17:52:46 +00:00
Inderjeet Singh
7334a33d14 Test to verify support for object member names without quotes (see Issue 41). 2008-11-26 17:49:35 +00:00
Joel Leitch
2effd57976 Deserialization will no longer call the default constructor or InstanceCreator if the object being deserialized has a custom deserializer. 2008-11-25 18:42:47 +00:00
Inderjeet Singh
1e7f3ebe7a tests to verify correct serialization and deserialization of = char. 2008-11-25 17:53:12 +00:00
Joel Leitch
0c98c2f8d1 More lenient parsing of Numbers and Booleans. Basically, can deserialize properly formatted stringr representations of numbers and booleans. 2008-11-20 19:40:12 +00:00
Joel Leitch
2250afe825 Allow serialization of Object in collections. This used to be supported before restructuring the Collection type handling. 2008-11-20 01:06:21 +00:00
Joel Leitch
3df2d44e40 Adding a "remove" method to the JsonObject class. Created a unit test to ensure it is functioning properly. 2008-11-19 01:22:21 +00:00
Joel Leitch
d5319d9e84 Parse all JSON numbers as either BigDecimal or BigInteger. From there we can properly convert into the proper primitive type if need be. This reduces the chance of losing precision with floating point numbers. 2008-11-18 20:26:15 +00:00
Joel Leitch
628a2c5b86 Added default serializer/deserializer for "Number" 2008-11-18 20:05:02 +00:00
Joel Leitch
788d2bfbbb Fix parsing of double and big decimals that have an exponent but no fraction part. 2008-11-18 19:55:14 +00:00
Joel Leitch
e101ed1623 Adding the JavaDoc for Google Gson version 1.2.3 2008-11-15 17:38:06 +00:00
Joel Leitch
b6f767bf05 Fix warning in code 2008-11-15 05:13:05 +00:00
Joel Leitch
cf2a457af7 Removed the TypeAdapter object from GSON now that the primitive objects and fields are created by a custom Type Adapter. 2008-11-15 05:11:28 +00:00
Joel Leitch
0d8150fe52 Major restructuring of Primitve type serialization and deserializtion. From the end-user's point of view there should be no difference other than the user can now override the default serialization/deserialization their own custom type adapter (not sure if there is a real use-case out there for this).
This restructuring greatly cleans up the code and reduces some complexity; however, there is more that can be done to clean this up (i.e. get rid of "InstanceCreators" for primitive Type Adapters).
2008-11-15 02:26:57 +00:00
Inderjeet Singh
7e360b95e7 Added tests to verify that custom serializer and deserializers for byte[] types works. 2008-11-14 23:55:57 +00:00
Inderjeet Singh
ad1c1a731d Added more tests in response to Issue 70. 2008-11-14 22:11:12 +00:00
Inderjeet Singh
dfad0a3612 Added tests in response to Issue 70. 2008-11-14 21:59:59 +00:00
Inderjeet Singh
9a69560d9f During serialization, we now dont call custom serializers the field is null.
During deserialization, we do not call custom deserializer if the field is to be set to null. Moreover, changed the logic to set fields to null only if explicitly indicated in the incoming Json. This is different from past behavior where all fields not mentioned in incoming Json were set to null. Now they are set to whatever the default constructor will do.
2008-11-14 20:52:57 +00:00
Inderjeet Singh
bc2c25f235 Removed ExceptionWrapper from serializers.
This is done since it is improper to throw a parse exception from serializers. Moreover, the serializers dont deal with external input, they deal with classes, so they need not guard against spurious input.
2008-11-14 02:17:19 +00:00
Inderjeet Singh
9245bebdba For the Collection and Map types, using ObjectConstructor to create instance instead of hard-coding a specific type.
This helps is handling cases where the user is using their own subclass of Collection or Map.

Updated ParameterizedTypeHandlerMap to return the handler corresponding to Map and Collection for subclasses if user has not specified a specific handler.

Fixed the logic in JsonTreeNavigator to not output a comma if the first field of an object was null.
2008-11-14 02:11:46 +00:00
Inderjeet Singh
eaa43b76e4 Added a custom type adapter for Collection class. We will migrate the code to use it instead of special cases for collections all over. This type adapter is called at a few places already.
Also added tests for verifying that Gson can handle serialization and deserialization of sub types of Maps. The deserialization test fails currently.
2008-11-13 23:40:10 +00:00
Inderjeet Singh
cc90a68241 Fixed issue 68 by providing support to override default type adapters for
primitive types. Added a visitFieldUsingCustomHandler method to handle this in
the visitors.
2008-10-31 00:19:58 +00:00
Inderjeet Singh
70c7728218 Wrote a test that invokes a custom deserializer for a wrapper primitive type. 2008-10-30 18:26:16 +00:00
Inderjeet Singh
3f53e8b223 Added tests for Issue 68 2008-10-30 01:45:44 +00:00
Inderjeet Singh
c98d7bc340 Fixed issue 66 to allow escaped slash ( \/) as a valid Json escaped character.
Changed Gson version to 1.2.3.
2008-10-29 23:31:13 +00:00
Inderjeet Singh
3cd665b199 Added support for serialization of raw maps.
Also, refactored tests for maps in MapTest class.
2008-10-21 22:37:41 +00:00
Inderjeet Singh
9dfa454f6d Fixed issue 63 where Gson could not operate in a thread-safe manner. Resolved the issue by recreating ObjectNavigatorFactory for each call instead of reusing the same object everywhere. This is needed since ObjectNavigatorFactory had MemoryRefStack that was incorrectly being shared across calls. 2008-10-20 20:09:42 +00:00
Inderjeet Singh
95861175a8 deleted unused variable. 2008-10-20 19:51:38 +00:00
Inderjeet Singh
0acb151941 A test to reproduce Gson concurrency bug. See issue 63. 2008-10-20 19:48:38 +00:00
Inderjeet Singh
9f5a2086de updated Gson version to 1.2.2
Added a test to ensure that CustomTypeAdapters are not applied automatically
for SubClasses.
2008-10-14 19:37:33 +00:00
Inderjeet Singh
745c8e2a83 Fixed issue 58 by disabling the use of field value actual type for all cases
except when it is marked as Object.
2008-10-14 18:55:59 +00:00
Inderjeet Singh
646d94d420 test for issue 58 2008-10-14 18:54:34 +00:00
Inderjeet Singh
5631132892 Fixed Issue 54 to enable serialization of fields that are declared of type
Object.
2008-10-13 21:12:41 +00:00
Inderjeet Singh
f6a278018e test for Issue 51 for inner classes serialization and deserialization. 2008-10-13 19:49:05 +00:00
Inderjeet Singh
add960644a disabled tests for issue 43 and 44 since those are deferred for a subsequent release. 2008-10-13 19:14:57 +00:00
Inderjeet Singh
2b9fd47b72 Fixed issue 53 where default date instances were not getting
serialized/deserialized properly. Added support for time style as well by using he default formatter that uses time style.
2008-10-13 18:40:20 +00:00
Inderjeet Singh
4d73459b7e moved performance tests under the metrics package and replaced the invalid JSON
string with \n with a valid one.
2008-10-10 23:22:27 +00:00
Inderjeet Singh
d61e754fb6 Added tests for explicit serialization of null array, collection and string
fields with serializeNulls set to true.
2008-10-10 22:31:19 +00:00
Inderjeet Singh
d74ecbfe82 Updated JsonParser to use Token to match strings instead of productions. This
enables Gson to handle much larger strings (~10s of MB) than previously
possible (<100kb). This also reduces memory and stack requirements, and
increases Gson performance as well.
2008-10-10 21:52:02 +00:00
Inderjeet Singh
1abf693b70 Fix for Issue 55 where GSON was unable to deserialize JSON with single quotes
(') used for field name/values. Gson now supports different fields with-in the
JSON to use either single quote or double quote. However, a single field name
or value must use ' or "" to delimit itself.
2008-10-10 02:53:54 +00:00
Inderjeet Singh
427c17a732 added a test for checking if GSON can parse JSON that uses single quotes
instead of double quotes for various field values.
2008-10-10 02:32:50 +00:00
Inderjeet Singh
3b8404dac5 refactored String related functional tests out in a separate test class. 2008-10-10 02:29:06 +00:00
Inderjeet Singh
0b9c739a7b added additional tests for the default deserialization of dates. 2008-10-06 22:00:04 +00:00
Joel Leitch
973696cbf5 Tests exposing bug 43 and 44. 2008-09-16 17:53:43 +00:00
Inderjeet Singh
57d1f32de5 moved gson as a project under trunk 2008-09-01 03:13:32 +00:00