// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.fasterxml.jackson.databind.deser.std; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.databind.AnnotationIntrospector; import com.fasterxml.jackson.databind.BeanProperty; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.KeyDeserializer; import com.fasterxml.jackson.databind.deser.ContextualDeserializer; import com.fasterxml.jackson.databind.deser.ContextualKeyDeserializer; import com.fasterxml.jackson.databind.deser.ResolvableDeserializer; import com.fasterxml.jackson.databind.deser.SettableBeanProperty; import com.fasterxml.jackson.databind.deser.UnresolvedForwardReference; import com.fasterxml.jackson.databind.deser.ValueInstantiator; import com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator; import com.fasterxml.jackson.databind.deser.impl.PropertyValueBuffer; import com.fasterxml.jackson.databind.deser.impl.ReadableObjectId; import com.fasterxml.jackson.databind.jsontype.TypeDeserializer; import com.fasterxml.jackson.databind.util.ArrayBuilders; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; // Referenced classes of package com.fasterxml.jackson.databind.deser.std: // ContainerDeserializerBase public class MapDeserializer extends ContainerDeserializerBase implements ContextualDeserializer, ResolvableDeserializer { static final class MapReferring extends com.fasterxml.jackson.databind.deser.impl.ReadableObjectId.Referring { private final MapReferringAccumulator _parent; public final Object key; public final Map next = new LinkedHashMap(); public void handleResolvedForwardReference(Object obj, Object obj1) throws IOException { _parent.resolveForwardReference(obj, obj1); } MapReferring(MapReferringAccumulator mapreferringaccumulator, UnresolvedForwardReference unresolvedforwardreference, Class class1, Object obj) { super(unresolvedforwardreference, class1); _parent = mapreferringaccumulator; key = obj; } } private static final class MapReferringAccumulator { private List _accumulator; private Map _result; private final Class _valueType; public com.fasterxml.jackson.databind.deser.impl.ReadableObjectId.Referring handleUnresolvedReference(UnresolvedForwardReference unresolvedforwardreference, Object obj) { unresolvedforwardreference = new MapReferring(this, unresolvedforwardreference, _valueType, obj); _accumulator.add(unresolvedforwardreference); return unresolvedforwardreference; } public void put(Object obj, Object obj1) { if (_accumulator.isEmpty()) { _result.put(obj, obj1); return; } else { ((MapReferring)_accumulator.get(_accumulator.size() - 1)).next.put(obj, obj1); return; } } public void resolveForwardReference(Object obj, Object obj1) throws IOException { Iterator iterator = _accumulator.iterator(); MapReferring mapreferring; for (Map map = _result; iterator.hasNext(); map = mapreferring.next) { mapreferring = (MapReferring)iterator.next(); if (mapreferring.hasId(obj)) { iterator.remove(); map.put(mapreferring.key, obj1); map.putAll(mapreferring.next); return; } } throw new IllegalArgumentException((new StringBuilder()).append("Trying to resolve a forward reference with id [").append(obj).append("] that wasn't previously seen as unresolved.").toString()); } public MapReferringAccumulator(Class class1, Map map) { _accumulator = new ArrayList(); _valueType = class1; _result = map; } } private static final long serialVersionUID = 1L; protected JsonDeserializer _delegateDeserializer; protected final boolean _hasDefaultCreator; protected HashSet _ignorableProperties; protected final KeyDeserializer _keyDeserializer; protected final JavaType _mapType; protected PropertyBasedCreator _propertyBasedCreator; protected boolean _standardStringKey; protected final JsonDeserializer _valueDeserializer; protected final ValueInstantiator _valueInstantiator; protected final TypeDeserializer _valueTypeDeserializer; public MapDeserializer(JavaType javatype, ValueInstantiator valueinstantiator, KeyDeserializer keydeserializer, JsonDeserializer jsondeserializer, TypeDeserializer typedeserializer) { super(javatype); _mapType = javatype; _keyDeserializer = keydeserializer; _valueDeserializer = jsondeserializer; _valueTypeDeserializer = typedeserializer; _valueInstantiator = valueinstantiator; _hasDefaultCreator = valueinstantiator.canCreateUsingDefault(); _delegateDeserializer = null; _propertyBasedCreator = null; _standardStringKey = _isStdKeyDeser(javatype, keydeserializer); } protected MapDeserializer(MapDeserializer mapdeserializer) { super(mapdeserializer._mapType); _mapType = mapdeserializer._mapType; _keyDeserializer = mapdeserializer._keyDeserializer; _valueDeserializer = mapdeserializer._valueDeserializer; _valueTypeDeserializer = mapdeserializer._valueTypeDeserializer; _valueInstantiator = mapdeserializer._valueInstantiator; _propertyBasedCreator = mapdeserializer._propertyBasedCreator; _delegateDeserializer = mapdeserializer._delegateDeserializer; _hasDefaultCreator = mapdeserializer._hasDefaultCreator; _ignorableProperties = mapdeserializer._ignorableProperties; _standardStringKey = mapdeserializer._standardStringKey; } protected MapDeserializer(MapDeserializer mapdeserializer, KeyDeserializer keydeserializer, JsonDeserializer jsondeserializer, TypeDeserializer typedeserializer, HashSet hashset) { super(mapdeserializer._mapType); _mapType = mapdeserializer._mapType; _keyDeserializer = keydeserializer; _valueDeserializer = jsondeserializer; _valueTypeDeserializer = typedeserializer; _valueInstantiator = mapdeserializer._valueInstantiator; _propertyBasedCreator = mapdeserializer._propertyBasedCreator; _delegateDeserializer = mapdeserializer._delegateDeserializer; _hasDefaultCreator = mapdeserializer._hasDefaultCreator; _ignorableProperties = hashset; _standardStringKey = _isStdKeyDeser(_mapType, keydeserializer); } private void handleUnresolvedReference(JsonParser jsonparser, MapReferringAccumulator mapreferringaccumulator, Object obj, UnresolvedForwardReference unresolvedforwardreference) throws JsonMappingException { if (mapreferringaccumulator == null) { throw JsonMappingException.from(jsonparser, "Unresolved forward reference but no identity info.", unresolvedforwardreference); } else { jsonparser = mapreferringaccumulator.handleUnresolvedReference(unresolvedforwardreference, obj); unresolvedforwardreference.getRoid().appendReferring(jsonparser); return; } } public Map _deserializeUsingCreator(JsonParser jsonparser, DeserializationContext deserializationcontext) throws IOException { Object obj; Object obj1; PropertyBasedCreator propertybasedcreator; PropertyValueBuffer propertyvaluebuffer; JsonDeserializer jsondeserializer; TypeDeserializer typedeserializer; propertybasedcreator = _propertyBasedCreator; propertyvaluebuffer = propertybasedcreator.startBuilding(jsonparser, deserializationcontext, null); jsondeserializer = _valueDeserializer; typedeserializer = _valueTypeDeserializer; if (jsonparser.isExpectedStartObjectToken()) { obj = jsonparser.nextFieldName(); } else if (jsonparser.hasToken(JsonToken.FIELD_NAME)) { obj = jsonparser.getCurrentName(); } else { obj = null; } _L7: if (obj == null) { break MISSING_BLOCK_LABEL_273; } obj1 = jsonparser.nextToken(); if (_ignorableProperties == null || !_ignorableProperties.contains(obj)) goto _L2; else goto _L1 _L1: jsonparser.skipChildren(); _L4: obj = jsonparser.nextFieldName(); continue; /* Loop/switch isn't completed */ _L2: Object obj3; obj3 = propertybasedcreator.findCreatorProperty(((String) (obj))); if (obj3 != null) { if (propertyvaluebuffer.assignParameter(((SettableBeanProperty) (obj3)), ((SettableBeanProperty) (obj3)).deserialize(jsonparser, deserializationcontext))) { jsonparser.nextToken(); try { obj1 = (Map)propertybasedcreator.build(deserializationcontext, propertyvaluebuffer); } // Misplaced declaration of an exception variable catch (JsonParser jsonparser) { wrapAndThrow(jsonparser, _mapType.getRawClass(), ((String) (obj))); return null; } _readAndBind(jsonparser, deserializationcontext, ((Map) (obj1))); return ((Map) (obj1)); } continue; /* Loop/switch isn't completed */ } obj3 = _keyDeserializer.deserializeKey(((String) (obj)), deserializationcontext); if (obj1 != JsonToken.VALUE_NULL) { break; /* Loop/switch isn't completed */ } obj1 = jsondeserializer.getNullValue(deserializationcontext); obj = obj1; _L5: propertyvaluebuffer.bufferMapProperty(obj3, obj); if (true) goto _L4; else goto _L3 _L3: label0: { if (typedeserializer != null) { break label0; } Object obj2; try { obj2 = jsondeserializer.deserialize(jsonparser, deserializationcontext); } // Misplaced declaration of an exception variable catch (JsonParser jsonparser) { wrapAndThrow(jsonparser, _mapType.getRawClass(), ((String) (obj))); return null; } obj = obj2; } goto _L5 obj2 = jsondeserializer.deserializeWithType(jsonparser, deserializationcontext, typedeserializer); obj = obj2; goto _L5 jsonparser = (Map)propertybasedcreator.build(deserializationcontext, propertyvaluebuffer); return jsonparser; jsonparser; wrapAndThrow(jsonparser, _mapType.getRawClass(), null); return null; if (true) goto _L7; else goto _L6 _L6: } protected final boolean _isStdKeyDeser(JavaType javatype, KeyDeserializer keydeserializer) { if (keydeserializer != null) { if ((javatype = javatype.getKeyType()) != null && ((javatype = javatype.getRawClass()) != java/lang/String && javatype != java/lang/Object || !isDefaultKeyDeserializer(keydeserializer))) { return false; } } return true; } protected final void _readAndBind(JsonParser jsonparser, DeserializationContext deserializationcontext, Map map) throws IOException { Object obj; Object obj1; MapReferringAccumulator mapreferringaccumulator; JsonDeserializer jsondeserializer; TypeDeserializer typedeserializer; Object obj2; boolean flag; KeyDeserializer keydeserializer = _keyDeserializer; jsondeserializer = _valueDeserializer; typedeserializer = _valueTypeDeserializer; mapreferringaccumulator = null; if (jsondeserializer.getObjectIdReader() != null) { flag = true; } else { flag = false; } if (flag) { mapreferringaccumulator = new MapReferringAccumulator(_mapType.getContentType().getRawClass(), map); } if (!jsonparser.isExpectedStartObjectToken()) goto _L2; else goto _L1 _L1: obj = jsonparser.nextFieldName(); _L7: if (obj == null) goto _L4; else goto _L3 _L3: obj2 = keydeserializer.deserializeKey(((String) (obj)), deserializationcontext); obj1 = jsonparser.nextToken(); if (_ignorableProperties == null || !_ignorableProperties.contains(obj)) goto _L6; else goto _L5 _L5: jsonparser.skipChildren(); _L11: obj = jsonparser.nextFieldName(); goto _L7 _L2: obj = jsonparser.getCurrentToken(); if (obj != JsonToken.END_OBJECT) goto _L8; else goto _L4 _L4: return; _L8: if (obj != JsonToken.FIELD_NAME) { throw deserializationcontext.mappingException(_mapType.getRawClass(), jsonparser.getCurrentToken()); } obj = jsonparser.getCurrentName(); goto _L7 _L6: if (obj1 != JsonToken.VALUE_NULL) goto _L10; else goto _L9 _L9: obj1 = jsondeserializer.getNullValue(deserializationcontext); _L12: if (!flag) { break MISSING_BLOCK_LABEL_258; } try { mapreferringaccumulator.put(obj2, obj1); } // Misplaced declaration of an exception variable catch (Object obj) { handleUnresolvedReference(jsonparser, mapreferringaccumulator, obj2, ((UnresolvedForwardReference) (obj))); } catch (Exception exception) { wrapAndThrow(exception, map, ((String) (obj))); } goto _L11 _L10: if (typedeserializer != null) { break MISSING_BLOCK_LABEL_244; } obj1 = jsondeserializer.deserialize(jsonparser, deserializationcontext); goto _L12 obj1 = jsondeserializer.deserializeWithType(jsonparser, deserializationcontext, typedeserializer); goto _L12 map.put(obj2, obj1); goto _L11 } protected final void _readAndBindStringMap(JsonParser jsonparser, DeserializationContext deserializationcontext, Map map) throws IOException { Object obj; Object obj1; MapReferringAccumulator mapreferringaccumulator; JsonDeserializer jsondeserializer; TypeDeserializer typedeserializer; boolean flag; jsondeserializer = _valueDeserializer; typedeserializer = _valueTypeDeserializer; mapreferringaccumulator = null; if (jsondeserializer.getObjectIdReader() != null) { flag = true; } else { flag = false; } if (flag) { mapreferringaccumulator = new MapReferringAccumulator(_mapType.getContentType().getRawClass(), map); } if (!jsonparser.isExpectedStartObjectToken()) goto _L2; else goto _L1 _L1: obj = jsonparser.nextFieldName(); _L7: if (obj == null) goto _L4; else goto _L3 _L3: obj1 = jsonparser.nextToken(); if (_ignorableProperties == null || !_ignorableProperties.contains(obj)) goto _L6; else goto _L5 _L5: jsonparser.skipChildren(); _L11: obj = jsonparser.nextFieldName(); goto _L7 _L2: obj = jsonparser.getCurrentToken(); if (obj != JsonToken.END_OBJECT) goto _L8; else goto _L4 _L4: return; _L8: if (obj != JsonToken.FIELD_NAME) { throw deserializationcontext.mappingException(_mapType.getRawClass(), jsonparser.getCurrentToken()); } obj = jsonparser.getCurrentName(); goto _L7 _L6: if (obj1 != JsonToken.VALUE_NULL) goto _L10; else goto _L9 _L9: obj1 = jsondeserializer.getNullValue(deserializationcontext); _L12: if (!flag) { break MISSING_BLOCK_LABEL_242; } try { mapreferringaccumulator.put(obj, obj1); } // Misplaced declaration of an exception variable catch (Object obj1) { handleUnresolvedReference(jsonparser, mapreferringaccumulator, obj, ((UnresolvedForwardReference) (obj1))); } catch (Exception exception) { wrapAndThrow(exception, map, ((String) (obj))); } goto _L11 _L10: if (typedeserializer != null) { break MISSING_BLOCK_LABEL_228; } obj1 = jsondeserializer.deserialize(jsonparser, deserializationcontext); goto _L12 obj1 = jsondeserializer.deserializeWithType(jsonparser, deserializationcontext, typedeserializer); goto _L12 map.put(obj, obj1); goto _L11 } public JsonDeserializer createContextual(DeserializationContext deserializationcontext, BeanProperty beanproperty) throws JsonMappingException { Object obj1 = _keyDeserializer; Object obj; Object obj2; Object obj3; HashSet hashset; if (obj1 == null) { obj = deserializationcontext.findKeyDeserializer(_mapType.getKeyType(), beanproperty); } else { obj = obj1; if (obj1 instanceof ContextualKeyDeserializer) { obj = ((ContextualKeyDeserializer)obj1).createContextual(deserializationcontext, beanproperty); } } obj2 = _valueDeserializer; obj1 = obj2; if (beanproperty != null) { obj1 = findConvertingContentDeserializer(deserializationcontext, beanproperty, ((JsonDeserializer) (obj2))); } obj2 = _mapType.getContentType(); if (obj1 == null) { obj1 = deserializationcontext.findContextualValueDeserializer(((JavaType) (obj2)), beanproperty); } else { obj1 = deserializationcontext.handleSecondaryContextualization(((JsonDeserializer) (obj1)), beanproperty, ((JavaType) (obj2))); } obj3 = _valueTypeDeserializer; obj2 = obj3; if (obj3 != null) { obj2 = ((TypeDeserializer) (obj3)).forProperty(beanproperty); } hashset = _ignorableProperties; deserializationcontext = deserializationcontext.getAnnotationIntrospector(); obj3 = hashset; if (deserializationcontext != null) { obj3 = hashset; if (beanproperty != null) { beanproperty = beanproperty.getMember(); obj3 = hashset; if (beanproperty != null) { beanproperty = deserializationcontext.findPropertiesToIgnore(beanproperty, false); obj3 = hashset; if (beanproperty != null) { int i; int j; if (hashset == null) { deserializationcontext = new HashSet(); } else { deserializationcontext = new HashSet(hashset); } j = beanproperty.length; i = 0; do { obj3 = deserializationcontext; if (i >= j) { break; } deserializationcontext.add(beanproperty[i]); i++; } while (true); } } } } return withResolved(((KeyDeserializer) (obj)), ((TypeDeserializer) (obj2)), ((JsonDeserializer) (obj1)), ((HashSet) (obj3))); } public volatile Object deserialize(JsonParser jsonparser, DeserializationContext deserializationcontext) throws IOException, JsonProcessingException { return deserialize(jsonparser, deserializationcontext); } public volatile Object deserialize(JsonParser jsonparser, DeserializationContext deserializationcontext, Object obj) throws IOException, JsonProcessingException { return deserialize(jsonparser, deserializationcontext, (Map)obj); } public Map deserialize(JsonParser jsonparser, DeserializationContext deserializationcontext) throws IOException { if (_propertyBasedCreator != null) { return _deserializeUsingCreator(jsonparser, deserializationcontext); } if (_delegateDeserializer != null) { return (Map)_valueInstantiator.createUsingDelegate(deserializationcontext, _delegateDeserializer.deserialize(jsonparser, deserializationcontext)); } if (!_hasDefaultCreator) { throw deserializationcontext.instantiationException(getMapClass(), "No default constructor found"); } Object obj = jsonparser.getCurrentToken(); if (obj != JsonToken.START_OBJECT && obj != JsonToken.FIELD_NAME && obj != JsonToken.END_OBJECT) { if (obj == JsonToken.VALUE_STRING) { return (Map)_valueInstantiator.createFromString(deserializationcontext, jsonparser.getText()); } else { return (Map)_deserializeFromEmpty(jsonparser, deserializationcontext); } } obj = (Map)_valueInstantiator.createUsingDefault(deserializationcontext); if (_standardStringKey) { _readAndBindStringMap(jsonparser, deserializationcontext, ((Map) (obj))); return ((Map) (obj)); } else { _readAndBind(jsonparser, deserializationcontext, ((Map) (obj))); return ((Map) (obj)); } } public Map deserialize(JsonParser jsonparser, DeserializationContext deserializationcontext, Map map) throws IOException { jsonparser.setCurrentValue(map); JsonToken jsontoken = jsonparser.getCurrentToken(); if (jsontoken != JsonToken.START_OBJECT && jsontoken != JsonToken.FIELD_NAME) { throw deserializationcontext.mappingException(getMapClass()); } if (_standardStringKey) { _readAndBindStringMap(jsonparser, deserializationcontext, map); return map; } else { _readAndBind(jsonparser, deserializationcontext, map); return map; } } public Object deserializeWithType(JsonParser jsonparser, DeserializationContext deserializationcontext, TypeDeserializer typedeserializer) throws IOException, JsonProcessingException { return typedeserializer.deserializeTypedFromObject(jsonparser, deserializationcontext); } public JsonDeserializer getContentDeserializer() { return _valueDeserializer; } public JavaType getContentType() { return _mapType.getContentType(); } public final Class getMapClass() { return _mapType.getRawClass(); } public JavaType getValueType() { return _mapType; } public boolean isCachable() { return _valueDeserializer == null && _keyDeserializer == null && _valueTypeDeserializer == null && _ignorableProperties == null; } public void resolve(DeserializationContext deserializationcontext) throws JsonMappingException { if (_valueInstantiator.canCreateUsingDelegate()) { JavaType javatype = _valueInstantiator.getDelegateType(deserializationcontext.getConfig()); if (javatype == null) { throw new IllegalArgumentException((new StringBuilder()).append("Invalid delegate-creator definition for ").append(_mapType).append(": value instantiator (").append(_valueInstantiator.getClass().getName()).append(") returned true for 'canCreateUsingDelegate()', but null for 'getDelegateType()'").toString()); } _delegateDeserializer = findDeserializer(deserializationcontext, javatype, null); } if (_valueInstantiator.canCreateFromObjectWith()) { SettableBeanProperty asettablebeanproperty[] = _valueInstantiator.getFromObjectArguments(deserializationcontext.getConfig()); _propertyBasedCreator = PropertyBasedCreator.construct(deserializationcontext, _valueInstantiator, asettablebeanproperty); } _standardStringKey = _isStdKeyDeser(_mapType, _keyDeserializer); } public void setIgnorableProperties(String as[]) { if (as == null || as.length == 0) { as = null; } else { as = ArrayBuilders.arrayToSet(as); } _ignorableProperties = as; } protected MapDeserializer withResolved(KeyDeserializer keydeserializer, TypeDeserializer typedeserializer, JsonDeserializer jsondeserializer, HashSet hashset) { if (_keyDeserializer == keydeserializer && _valueDeserializer == jsondeserializer && _valueTypeDeserializer == typedeserializer && _ignorableProperties == hashset) { return this; } else { return new MapDeserializer(this, keydeserializer, jsondeserializer, typedeserializer, hashset); } } protected void wrapAndThrow(Throwable throwable, Object obj) throws IOException { wrapAndThrow(throwable, obj, null); } }