@Override public T deserializeInline( JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params, IdentityDeserializationInfo identityInfo, TypeDeserializationInfo typeInfo, String typeInformation, Map<String, String> bufferedProperties ) { throw ctx.traceError( "Cannot deserialize into a bean when not using an AbstractBeanJsonDeserializer" ); }
/** * Trace an error with current reader state and returns a corresponding exception. * * @param message error message * * @return a {@link JsonDeserializationException} with the given message */ public JsonDeserializationException traceError( String message ) { return traceError( message, null ); }
/** {@inheritDoc} */ @Override public final Object readId( JsonReader reader, JsonDeserializationContext ctx ) { throw ctx.traceError( "readId() is not supported by PropertyIdentitySerializationInfo" ); } }
private InternalDeserializer<T, ? extends JsonDeserializer<T>> getDeserializer( JsonReader reader, JsonDeserializationContext ctx, Class typeClass ) { if ( typeClass == getDeserializedType() ) { return this; } SubtypeDeserializer deserializer = subtypeClassToDeserializer.get( typeClass ); if ( null == deserializer ) { throw ctx.traceError( "No deserializer found for the type " + typeClass.getName(), reader ); } return deserializer; }
/** * Trace an error with current reader state and returns a corresponding exception. * * @param cause cause of the error * @param reader current reader * * @return a {@link JsonDeserializationException} if we wrap the exceptions, the cause otherwise */ public RuntimeException traceError( RuntimeException cause, JsonReader reader ) { RuntimeException exception = traceError( cause ); traceReaderInfo( reader ); return exception; }
private BeanPropertyDeserializer<T, ?> getPropertyDeserializer( String propertyName, JsonDeserializationContext ctx, boolean ignoreUnknown ) { BeanPropertyDeserializer<T, ?> property = deserializers.get( propertyName ); if ( null == property ) { if ( !ignoreUnknown && ctx.isFailOnUnknownProperties() && null == anySetterDeserializer ) { throw ctx.traceError( "Unknown property '" + propertyName + "'" ); } } return property; }
private InternalDeserializer<T, ? extends JsonDeserializer<T>> getDeserializer( JsonReader reader, JsonDeserializationContext ctx, TypeDeserializationInfo typeInfo, String typeInformation ) { Class typeClass = typeInfo.getTypeClass( typeInformation ); if ( null == typeClass ) { throw ctx.traceError( "Could not find the type associated to " + typeInformation, reader ); } return getDeserializer( reader, ctx, typeClass ); }
/** * <p>doDeserializeNonArray</p> * * @param reader a {@link com.github.nmorel.gwtjackson.client.stream.JsonReader} object. * @param ctx a {@link com.github.nmorel.gwtjackson.client.JsonDeserializationContext} object. * @param params a {@link com.github.nmorel.gwtjackson.client.JsonDeserializerParameters} object. * @return a T object. */ protected T doDeserializeNonArray( JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params ) { if ( ctx.isAcceptSingleValueAsArray() ) { return doDeserializeSingleArray( reader, ctx, params ); } else { throw ctx.traceError( "Cannot deserialize an array out of " + reader.peek() + " token", reader ); } }
/** {@inheritDoc} */ @Override public void setBackReference( String referenceName, Object reference, T value, JsonDeserializationContext ctx ) { if ( null == value ) { return; } JsonDeserializer<T> deserializer = getDeserializer( null, ctx, value.getClass() ).getDeserializer(); if ( deserializer.getClass() != getClass() ) { // we test if it's not this deserializer to avoid an infinite loop deserializer.setBackReference( referenceName, reference, value, ctx ); return; } BackReferenceProperty backReferenceProperty = backReferenceDeserializers.get( referenceName ); if ( null == backReferenceProperty ) { throw ctx.traceError( "The back reference '" + referenceName + "' does not exist" ); } backReferenceProperty.setBackReference( value, reference, ctx ); } }
/** {@inheritDoc} */ @Override protected char[] doDeserializeNonArray( JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params ) { if ( JsonToken.STRING == reader.peek() ) { return reader.nextString().toCharArray(); } else if ( ctx.isAcceptSingleValueAsArray() ) { return doDeserializeSingleArray( reader, ctx, params ); } else { throw ctx.traceError( "Cannot deserialize a char[] out of " + reader.peek() + " token", reader ); } }
throw ctx.traceError( "Unwrap root value is enabled but the input is not a JSON Object", reader ); throw ctx.traceError( "Unwrap root value is enabled but the JSON Object is empty", reader ); throw ctx.traceError( "Unwrap root value is enabled but the name '" + name + "' don't match the expected rootName " + "'" + rootName + "'", reader ); throw ctx.traceError( e, reader );
/** {@inheritDoc} */ @Override public Iterable<T> doDeserialize( JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params ) { if ( JsonToken.BEGIN_ARRAY == reader.peek() ) { Collection<T> result = new ArrayList<T>(); reader.beginArray(); while ( JsonToken.END_ARRAY != reader.peek() ) { result.add( deserializer.deserialize( reader, ctx, params ) ); } reader.endArray(); return result; } else if ( ctx.isAcceptSingleValueAsArray() ) { Collection<T> result = new ArrayList<T>(); result.add( deserializer.deserialize( reader, ctx, params ) ); return result; } else { throw ctx.traceError( "Cannot deserialize a java.lang.Iterable out of " + reader.peek() + " token", reader ); } } }
@Override protected Key<T> doDeserialize( JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params ) { reader.beginObject(); if ( !KeyConstant.RAW.equals( reader.nextName() ) ) { throw ctx.traceError( "Missing " + KeyConstant.RAW + " property.", reader ); } com.google.appengine.api.datastore.Key raw = RawKeyJsonDeserializer.getInstance().deserialize( reader, ctx, params ); reader.endObject(); return Key.create( raw ); } }
throw ctx.traceError( "Unknown " + nextName + " property.", reader ); throw ctx.traceError( "Missing " + RawKeyConstant.ID + " property.", reader ); } else if ( id != 0 ) { return KeyFactory.createKey( parent, kind, id );
@Override protected Ref<T> doDeserialize( JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params ) { reader.beginObject(); Key<T> key = null; T value = null; while ( reader.hasNext() ) { String nextName = reader.nextName(); if ( RefConstant.KEY.equals( nextName ) ) { key = KeyJsonDeserializer.<T>getInstance().deserialize( reader, ctx, params ); } else if ( RefConstant.VALUE.equals( nextName ) ) { value = deserializer.deserialize( reader, ctx, params ); } } reader.endObject(); if ( key == null ) { throw ctx.traceError( "Missing " + RefConstant.KEY + " property.", reader ); } return new DeadRef<T>( key, value ); } }
/** {@inheritDoc} */ @Override protected byte[] doDeserializeNonArray( JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params ) { if ( JsonToken.STRING == reader.peek() ) { return Base64Utils.fromBase64( reader.nextString() ); } else if ( ctx.isAcceptSingleValueAsArray() ) { return doDeserializeSingleArray( reader, ctx, params ); } else { throw ctx.traceError( "Cannot deserialize a byte[] out of " + reader.peek() + " token", reader ); } }
/** {@inheritDoc} */ @Override public C doDeserialize( JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params ) { if ( JsonToken.BEGIN_ARRAY == reader.peek() ) { C result = newCollection(); reader.beginArray(); while ( JsonToken.END_ARRAY != reader.peek() ) { T element = deserializer.deserialize( reader, ctx, params ); if ( isNullValueAllowed() || null != element ) { result.add( element ); } } reader.endArray(); return result; } else if ( ctx.isAcceptSingleValueAsArray() ) { C result = newCollection(); result.add( deserializer.deserialize( reader, ctx, params ) ); return result; } else { throw ctx.traceError( "Cannot deserialize a java.util.Collection out of " + reader.peek() + " token", reader ); } }
/** * Build the {@link ImmutableCollection}. It delegates the element addition to an abstract method because the * {@link ImmutableCollection.Builder} is not visible in the emulated class. * * @param reader {@link JsonReader} used to read the JSON input * @param ctx Context for the full deserialization process * @param params Parameters for this deserialization */ protected void buildCollection( JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params ) { if ( JsonToken.BEGIN_ARRAY == reader.peek() ) { reader.beginArray(); while ( JsonToken.END_ARRAY != reader.peek() ) { T element = deserializer.deserialize( reader, ctx, params ); if ( isNullValueAllowed() || null != element ) { addToCollection( element ); } } reader.endArray(); } else if ( ctx.isAcceptSingleValueAsArray() ) { addToCollection( deserializer.deserialize( reader, ctx, params ) ); } else { throw ctx.traceError( "Cannot deserialize a com.google.common.collect.ImmutableCollection out of " + reader .peek() + " token", reader ); } }
/** {@inheritDoc} */ @Override public Object deserializeWrapped( JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params, IdentityDeserializationInfo identityInfo, TypeDeserializationInfo typeInfo, String typeInformation ) { switch ( reader.peek() ) { case NUMBER: return NumberJsonDeserializer.getInstance().doDeserialize( reader, ctx, params ); case STRING: return StringJsonDeserializer.getInstance().doDeserialize( reader, ctx, params ); case BOOLEAN: return BooleanJsonDeserializer.getInstance().doDeserialize( reader, ctx, params ); case BEGIN_ARRAY: if ( null == listJsonDeserializer ) { listJsonDeserializer = ArrayListJsonDeserializer.newInstance( this ); } return listJsonDeserializer.doDeserialize( reader, ctx, params ); case BEGIN_OBJECT: if ( null == mapJsonDeserializer ) { mapJsonDeserializer = LinkedHashMapJsonDeserializer.newInstance( StringKeyDeserializer.getInstance(), this ); } return mapJsonDeserializer.doDeserialize( reader, ctx, params ); case NULL: reader.nextNull(); return null; default: throw ctx.traceError( "Unexpected token " + reader.peek() + " for java.lang.Object deserialization", reader ); } }
/** {@inheritDoc} */ @Override public Serializable deserializeWrapped( JsonReader reader, JsonDeserializationContext ctx, JsonDeserializerParameters params, IdentityDeserializationInfo identityInfo, TypeDeserializationInfo typeInfo, String typeInformation ) { switch ( reader.peek() ) { case NUMBER: return NumberJsonDeserializer.getInstance().doDeserialize( reader, ctx, params ); case STRING: return StringJsonDeserializer.getInstance().doDeserialize( reader, ctx, params ); case BOOLEAN: return BooleanJsonDeserializer.getInstance().doDeserialize( reader, ctx, params ); case BEGIN_ARRAY: if ( null == listJsonDeserializer ) { listJsonDeserializer = ArrayListJsonDeserializer.newInstance( this ); } return listJsonDeserializer.doDeserialize( reader, ctx, params ); case BEGIN_OBJECT: if ( null == mapJsonDeserializer ) { mapJsonDeserializer = LinkedHashMapJsonDeserializer.newInstance( StringKeyDeserializer.getInstance(), this ); } return mapJsonDeserializer.doDeserialize( reader, ctx, params ); case NULL: reader.nextNull(); return null; default: throw ctx.traceError( "Unexpected token " + reader.peek() + " for java.io.Serializable deserialization", reader ); } }