@Override
    public CoinbaseSpotPriceHistory deserialize(JsonParser jp, DeserializationContext ctxt)
        throws IOException, JsonProcessingException {

      final List<CoinbaseHistoricalSpotPrice> historicalPrices =
          new ArrayList<CoinbaseHistoricalSpotPrice>();

      // If there is a better way to get to the actual String returned please replace this section.
      final Reader reader = (Reader) ctxt.getParser().getTokenLocation().getSourceRef();
      reader.reset();
      final StringBuilder historyStringBuilder = new StringBuilder();
      for (int c = reader.read(); c > 0; c = reader.read()) historyStringBuilder.append((char) c);

      // Parse in reverse because they are inconsistent with the number of decimals for the rates
      // which makes it difficult to differentiate from the following year. Going in reverse
      // we can rely on the comma.
      final String entireHistoryString = historyStringBuilder.reverse().toString();
      final Matcher matcher = historicalRateStringPatternInReverse.matcher(entireHistoryString);
      while (matcher.find()) {
        final String rateString = new StringBuilder(matcher.group(1)).reverse().toString();
        final BigDecimal spotRate = new BigDecimal(rateString);
        final String timestampString = new StringBuilder(matcher.group(2)).reverse().toString();
        final Date timestamp = DateUtils.fromISO8601DateString(timestampString);

        final CoinbaseHistoricalSpotPrice historicalSpotPrice =
            new CoinbaseHistoricalSpotPrice(timestamp, spotRate);
        historicalPrices.add(historicalSpotPrice);
      }
      Collections.sort(historicalPrices, Collections.reverseOrder());
      return new CoinbaseSpotPriceHistory(historicalPrices);
    }
 @Override
 public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property)
     throws JsonMappingException {
   // May need to resolve types for delegate-based creators:
   JsonDeserializer<Object> delegate = null;
   if (_valueInstantiator != null) {
     AnnotatedWithParams delegateCreator = _valueInstantiator.getDelegateCreator();
     if (delegateCreator != null) {
       JavaType delegateType = _valueInstantiator.getDelegateType(ctxt.getConfig());
       delegate = findDeserializer(ctxt, delegateType, property);
     }
   }
   JsonDeserializer<?> valueDeser = _valueDeserializer;
   if (valueDeser == null) {
     // #125: May have a content converter
     valueDeser = findConvertingContentDeserializer(ctxt, property, valueDeser);
     if (valueDeser == null) {
       // And we may also need to get deserializer for String
       valueDeser =
           ctxt.findContextualValueDeserializer(_collectionType.getContentType(), property);
     }
   } else { // if directly assigned, probably not yet contextual, so:
     valueDeser = ctxt.handleSecondaryContextualization(valueDeser, property);
   }
   if (isDefaultDeserializer(valueDeser)) {
     valueDeser = null;
   }
   return withResolved(delegate, valueDeser);
 }
 protected final String _locateTypeId(
     JsonParser paramJsonParser, DeserializationContext paramDeserializationContext)
     throws IOException {
   if (!paramJsonParser.isExpectedStartArrayToken()) {
     if (this._defaultImpl != null) {
       return this._idResolver.idFromBaseType();
     }
     throw paramDeserializationContext.wrongTokenException(
         paramJsonParser,
         JsonToken.START_ARRAY,
         "need JSON Array to contain As.WRAPPER_ARRAY type information for class "
             + baseTypeName());
   }
   if (paramJsonParser.nextToken() == JsonToken.VALUE_STRING) {
     paramDeserializationContext = paramJsonParser.getText();
     paramJsonParser.nextToken();
     return paramDeserializationContext;
   }
   if (this._defaultImpl != null) {
     return this._idResolver.idFromBaseType();
   }
   throw paramDeserializationContext.wrongTokenException(
       paramJsonParser,
       JsonToken.VALUE_STRING,
       "need JSON String that contains type id (for subtype of " + baseTypeName() + ")");
 }
Beispiel #4
0
 @Override
 public Integer deserialize(JsonParser parser, DeserializationContext context)
     throws IOException {
   JsonToken t = parser.getCurrentToken();
   if (t == JsonToken.VALUE_NUMBER_INT
       || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
     return rangeCheckedInteger(parser, context);
   }
   if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
     String text = parser.getText().trim();
     try {
       int len = text.length();
       if (len > 9) {
         return rangeCheckedInteger(parser, context);
       }
       if (len == 0) {
         return null;
       }
       return Integer.valueOf(NumberInput.parseInt(text));
     } catch (IllegalArgumentException iae) {
       throw context.weirdStringException(_valueClass, "not a valid Integer value"); // NOSONAR
     }
   }
   if (t == JsonToken.VALUE_NULL) {
     return null;
   }
   // Otherwise, no can do:
   throw context.mappingException(_valueClass);
 }
 public String[] deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext)
 {
   if (!paramJsonParser.isExpectedStartArrayToken())
     return handleNonArray(paramJsonParser, paramDeserializationContext);
   ObjectBuffer localObjectBuffer = paramDeserializationContext.leaseObjectBuffer();
   Object[] arrayOfObject = localObjectBuffer.resetAndStart();
   int i = 0;
   JsonToken localJsonToken = paramJsonParser.nextToken();
   String str;
   if (localJsonToken != JsonToken.END_ARRAY)
     if (localJsonToken == JsonToken.VALUE_NULL)
     {
       str = null;
       label53: if (i < arrayOfObject.length)
         break label122;
       arrayOfObject = localObjectBuffer.appendCompletedChunk(arrayOfObject);
     }
   label122: for (int j = 0; ; j = i)
   {
     i = j + 1;
     arrayOfObject[j] = str;
     break;
     str = _parseString(paramJsonParser, paramDeserializationContext);
     break label53;
     String[] arrayOfString = (String[])localObjectBuffer.completeAndClearBuffer(arrayOfObject, i, String.class);
     paramDeserializationContext.returnObjectBuffer(localObjectBuffer);
     return arrayOfString;
   }
 }
Beispiel #6
0
 @Override
 protected Byte _parseByte(JsonParser jp, DeserializationContext ctxt) throws IOException {
   JsonToken t = jp.getCurrentToken();
   Integer value = null;
   if (t == JsonToken.VALUE_NUMBER_INT
       || t == JsonToken.VALUE_NUMBER_FLOAT) { // coercing should work too
     value = jp.getIntValue();
   } else if (t == JsonToken.VALUE_STRING) { // let's do implicit re-parse
     String text = jp.getText().trim();
     try {
       int len = text.length();
       if (len == 0) {
         return getEmptyValue();
       }
       value = NumberInput.parseInt(text);
     } catch (IllegalArgumentException iae) {
       throw ctxt.weirdStringException(_valueClass, "not a valid Byte value"); // NOSONAR
     }
   }
   if (value != null) {
     // So far so good: but does it fit?
     if (value < Byte.MIN_VALUE || value > Byte.MAX_VALUE) {
       throw ctxt.weirdStringException(
           _valueClass, "overflow, value can not be represented as 8-bit value");
     }
     return (byte) (int) value;
   }
   if (t == JsonToken.VALUE_NULL) {
     return getNullValue();
   }
   throw ctxt.mappingException(_valueClass, t);
 }
 /**
  * Contextualization is needed to see whether we can "inline" deserialization of String values, or
  * if we have to use separate value deserializer.
  */
 @Override
 public JsonDeserializer<?> createContextual(DeserializationContext ctxt, BeanProperty property)
     throws JsonMappingException {
   JsonDeserializer<?> deser = _elementDeserializer;
   // May have a content converter
   deser = findConvertingContentDeserializer(ctxt, property, deser);
   JavaType type = ctxt.constructType(String.class);
   if (deser == null) {
     deser = ctxt.findContextualValueDeserializer(type, property);
   } else { // if directly assigned, probably not yet contextual, so:
     deser = ctxt.handleSecondaryContextualization(deser, property, type);
   }
   // One more thing: allow unwrapping?
   Boolean unwrapSingle =
       findFormatFeature(
           ctxt, property, String[].class, JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
   // Ok ok: if all we got is the default String deserializer, can just forget about it
   if ((deser != null) && isDefaultDeserializer(deser)) {
     deser = null;
   }
   if ((_elementDeserializer == deser) && (_unwrapSingle == unwrapSingle)) {
     return this;
   }
   return new StringArrayDeserializer(deser, unwrapSingle);
 }
  @Override
  public LocalDate deserialize(JsonParser parser, DeserializationContext context)
      throws IOException {
    switch (parser.getCurrentToken()) {
      case START_ARRAY:
        if (parser.nextToken() == JsonToken.END_ARRAY) {
          return null;
        }
        int year = parser.getIntValue();

        parser.nextToken();
        int month = parser.getIntValue();

        parser.nextToken();
        int day = parser.getIntValue();

        if (parser.nextToken() != JsonToken.END_ARRAY) {
          throw context.wrongTokenException(parser, JsonToken.END_ARRAY, "Expected array to end.");
        }
        return LocalDate.of(year, month, day);

      case VALUE_STRING:
        String string = parser.getText().trim();
        if (string.length() == 0) {
          return null;
        }
        return LocalDate.parse(string, ISO_DATE_OPTIONAL_TIME);
    }
    throw context.wrongTokenException(parser, JsonToken.START_ARRAY, "Expected array or string.");
  }
 protected Converter<Object, Object> findConverter(DeserializationContext ctxt, Annotated a)
     throws JsonMappingException {
   Object convDef = ctxt.getAnnotationIntrospector().findDeserializationConverter(a);
   if (convDef == null) {
     return null;
   }
   return ctxt.converterInstance(a, convDef);
 }
 @Override
 public ObjectIdResolver newForDeserialization(Object c) {
   DeserializationContext context = (DeserializationContext) c;
   @SuppressWarnings("unchecked")
   Map<Object, WithCustomResolution> pool =
       (Map<Object, WithCustomResolution>) context.getAttribute(POOL_KEY);
   return new PoolResolver(pool);
 }
 /**
  * Helper method called to check if a class or method has annotation that tells which class to use
  * for deserialization. Returns null if no such annotation found.
  */
 protected JsonDeserializer<Object> findDeserializerFromAnnotation(
     DeserializationContext ctxt, Annotated ann) throws JsonMappingException {
   Object deserDef = ctxt.getAnnotationIntrospector().findDeserializer(ann);
   if (deserDef == null) {
     return null;
   }
   JsonDeserializer<Object> deser = ctxt.deserializerInstance(ann, deserDef);
   // One more thing however: may need to also apply a converter:
   return findConvertingDeserializer(ctxt, ann, deser);
 }
 private final boolean[] handleNonArray(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext)
 {
   if ((paramJsonParser.getCurrentToken() == JsonToken.VALUE_STRING) && (paramDeserializationContext.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) && (paramJsonParser.getText().length() == 0))
     return null;
   if (!paramDeserializationContext.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY))
     throw paramDeserializationContext.mappingException(this._valueClass);
   boolean[] arrayOfBoolean = new boolean[1];
   arrayOfBoolean[0] = _parseBooleanPrimitive(paramJsonParser, paramDeserializationContext);
   return arrayOfBoolean;
 }
Beispiel #13
0
    protected void addBeanProps(DeserializationContext deserializationcontext, BeanDescription beandescription, BeanDeserializerBuilder beandeserializerbuilder)
        throws JsonMappingException
    {
        SettableBeanProperty asettablebeanproperty[];
        Iterator iterator1;
        boolean flag;
        asettablebeanproperty = beandeserializerbuilder.getValueInstantiator().getFromObjectArguments(deserializationcontext.getConfig());
        Object obj = deserializationcontext.getAnnotationIntrospector();
        Object obj2 = ((AnnotationIntrospector) (obj)).findIgnoreUnknownProperties(beandescription.getClassInfo());
        if (obj2 != null)
        {
            beandeserializerbuilder.setIgnoreUnknownProperties(((Boolean) (obj2)).booleanValue());
        }
        obj = ArrayBuilders.arrayToSet(((AnnotationIntrospector) (obj)).findPropertiesToIgnore(beandescription.getClassInfo()));
        for (obj2 = ((Set) (obj)).iterator(); ((Iterator) (obj2)).hasNext(); beandeserializerbuilder.addIgnorable((String)((Iterator) (obj2)).next())) { }
        obj2 = beandescription.findAnySetter();
        if (obj2 != null)
        {
            beandeserializerbuilder.setAnySetter(constructAnySetter(deserializationcontext, beandescription, ((AnnotatedMethod) (obj2))));
        }
        if (obj2 == null)
        {
            obj2 = beandescription.getIgnoredPropertyNames();
            if (obj2 != null)
            {
                for (obj2 = ((Collection) (obj2)).iterator(); ((Iterator) (obj2)).hasNext(); beandeserializerbuilder.addIgnorable((String)((Iterator) (obj2)).next())) { }
            }
        }
        if (deserializationcontext.isEnabled(MapperFeature.USE_GETTERS_AS_SETTERS) && deserializationcontext.isEnabled(MapperFeature.AUTO_DETECT_GETTERS))
        {
            flag = true;
        } else
        {
            flag = false;
        }
        obj = filterBeanProps(deserializationcontext, beandescription, beandeserializerbuilder, beandescription.findProperties(), ((Set) (obj)));
        obj2 = obj;
        if (_factoryConfig.hasDeserializerModifiers())
        {
            Iterator iterator = _factoryConfig.deserializerModifiers().iterator();
            do
            {
                obj2 = obj;
                if (!iterator.hasNext())
                {
                    break;
                }
                obj = ((BeanDeserializerModifier)iterator.next()).updateProperties(deserializationcontext.getConfig(), beandescription, ((List) (obj)));
            } while (true);
        }
        iterator1 = ((List) (obj2)).iterator();
_L7:
        if (!iterator1.hasNext()) goto _L2; else goto _L1
 @Override
 public JsonDeserializer<Object> createBuilderBasedDeserializer(
     DeserializationContext ctxt,
     JavaType valueType,
     BeanDescription beanDesc,
     Class<?> builderClass)
     throws JsonMappingException {
   // First: need a BeanDescription for builder class
   JavaType builderType = ctxt.constructType(builderClass);
   BeanDescription builderDesc = ctxt.getConfig().introspectForBuilder(builderType);
   return buildBuilderBasedDeserializer(ctxt, valueType, builderDesc);
 }
  @Override
  public EnumMap<?, ?> deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
    // Ok: must point to START_OBJECT
    if (jp.getCurrentToken() != JsonToken.START_OBJECT) {
      return _deserializeFromEmpty(jp, ctxt);
    }
    EnumMap result = constructMap();
    final JsonDeserializer<Object> valueDes = _valueDeserializer;
    final TypeDeserializer typeDeser = _valueTypeDeserializer;

    while ((jp.nextToken()) == JsonToken.FIELD_NAME) {
      String keyName = jp.getCurrentName(); // just for error message
      // but we need to let key deserializer handle it separately, nonetheless
      Enum<?> key = (Enum<?>) _keyDeserializer.deserializeKey(keyName, ctxt);
      if (key == null) {
        if (!ctxt.isEnabled(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL)) {
          throw ctxt.weirdStringException(
              keyName,
              _enumClass,
              "value not one of declared Enum instance names for " + _mapType.getKeyType());
        }
        /* 24-Mar-2012, tatu: Null won't work as a key anyway, so let's
         *  just skip the entry then. But we must skip the value as well, if so.
         */
        jp.nextToken();
        jp.skipChildren();
        continue;
      }
      // And then the value...
      JsonToken t = jp.nextToken();
      /* note: MUST check for nulls separately: deserializers will
       * not handle them (and maybe fail or return bogus data)
       */
      Object value;

      try {
        if (t == JsonToken.VALUE_NULL) {
          value = valueDes.getNullValue(ctxt);
        } else if (typeDeser == null) {
          value = valueDes.deserialize(jp, ctxt);
        } else {
          value = valueDes.deserializeWithType(jp, ctxt, typeDeser);
        }
      } catch (Exception e) {
        wrapAndThrow(e, result, keyName);
        return null;
      }
      result.put(key, value);
    }
    return result;
  }
  /** Offlined version used when we do not use the default deserialization method. */
  protected final String[] _deserializeCustom(
      JsonParser p, DeserializationContext ctxt, String[] old) throws IOException {
    final ObjectBuffer buffer = ctxt.leaseObjectBuffer();
    int ix;
    Object[] chunk;

    if (old == null) {
      ix = 0;
      chunk = buffer.resetAndStart();
    } else {
      ix = old.length;
      chunk = buffer.resetAndStart(old, ix);
    }

    final JsonDeserializer<String> deser = _elementDeserializer;

    try {
      while (true) {
        /* 30-Dec-2014, tatu: This may look odd, but let's actually call method
         *   that suggest we are expecting a String; this helps with some formats,
         *   notably XML. Note, however, that while we can get String, we can't
         *   assume that's what we use due to custom deserializer
         */
        String value;
        if (p.nextTextValue() == null) {
          JsonToken t = p.getCurrentToken();
          if (t == JsonToken.END_ARRAY) {
            break;
          }
          // Ok: no need to convert Strings, but must recognize nulls
          value =
              (t == JsonToken.VALUE_NULL) ? deser.getNullValue(ctxt) : deser.deserialize(p, ctxt);
        } else {
          value = deser.deserialize(p, ctxt);
        }
        if (ix >= chunk.length) {
          chunk = buffer.appendCompletedChunk(chunk);
          ix = 0;
        }
        chunk[ix++] = value;
      }
    } catch (Exception e) {
      // note: pass String.class, not String[].class, as we need element type for error info
      throw JsonMappingException.wrapWithPath(e, String.class, ix);
    }
    String[] result = buffer.completeAndClearBuffer(chunk, ix, String.class);
    ctxt.returnObjectBuffer(buffer);
    return result;
  }
 private final byte[] handleNonArray(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext)
 {
   if ((paramJsonParser.getCurrentToken() == JsonToken.VALUE_STRING) && (paramDeserializationContext.isEnabled(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT)) && (paramJsonParser.getText().length() == 0))
     return null;
   if (!paramDeserializationContext.isEnabled(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY))
     throw paramDeserializationContext.mappingException(this._valueClass);
   JsonToken localJsonToken = paramJsonParser.getCurrentToken();
   if ((localJsonToken == JsonToken.VALUE_NUMBER_INT) || (localJsonToken == JsonToken.VALUE_NUMBER_FLOAT));
   for (int i = paramJsonParser.getByteValue(); ; i = 0)
   {
     return new byte[] { i };
     if (localJsonToken != JsonToken.VALUE_NULL)
       throw paramDeserializationContext.mappingException(this._valueClass.getComponentType());
   }
 }
 public ObjectNode deserialize(JsonParser jsonparser, DeserializationContext deserializationcontext)
 {
     if (jsonparser.getCurrentToken() == JsonToken.START_OBJECT)
     {
         jsonparser.nextToken();
         return deserializeObject(jsonparser, deserializationcontext, deserializationcontext.getNodeFactory());
     }
     if (jsonparser.getCurrentToken() == JsonToken.FIELD_NAME)
     {
         return deserializeObject(jsonparser, deserializationcontext, deserializationcontext.getNodeFactory());
     } else
     {
         throw deserializationcontext.mappingException(com/fasterxml/jackson/databind/node/ObjectNode);
     }
 }
  @Override
  public String[] deserialize(JsonParser p, DeserializationContext ctxt, String[] intoValue)
      throws IOException {
    // Ok: must point to START_ARRAY (or equivalent)
    if (!p.isExpectedStartArrayToken()) {
      String[] arr = handleNonArray(p, ctxt);
      if (arr == null) {
        return intoValue;
      }
      final int offset = intoValue.length;
      String[] result = new String[offset + arr.length];
      System.arraycopy(intoValue, 0, result, 0, offset);
      System.arraycopy(arr, 0, result, offset, arr.length);
      return result;
    }

    if (_elementDeserializer != null) {
      return _deserializeCustom(p, ctxt, intoValue);
    }
    final ObjectBuffer buffer = ctxt.leaseObjectBuffer();
    int ix = intoValue.length;
    Object[] chunk = buffer.resetAndStart(intoValue, ix);

    try {
      while (true) {
        String value = p.nextTextValue();
        if (value == null) {
          JsonToken t = p.getCurrentToken();
          if (t == JsonToken.END_ARRAY) {
            break;
          }
          if (t != JsonToken.VALUE_NULL) {
            value = _parseString(p, ctxt);
          }
        }
        if (ix >= chunk.length) {
          chunk = buffer.appendCompletedChunk(chunk);
          ix = 0;
        }
        chunk[ix++] = value;
      }
    } catch (Exception e) {
      throw JsonMappingException.wrapWithPath(e, chunk, buffer.bufferedSize() + ix);
    }
    String[] result = buffer.completeAndClearBuffer(chunk, ix, String.class);
    ctxt.returnObjectBuffer(buffer);
    return result;
  }
 @Override
 public JSONObject deserialize(JsonParser jp, DeserializationContext ctxt)
     throws IOException, JsonProcessingException {
   JSONObject ob = new JSONObject();
   JsonToken t = jp.getCurrentToken();
   if (t == JsonToken.START_OBJECT) {
     t = jp.nextToken();
   }
   for (; t == JsonToken.FIELD_NAME; t = jp.nextToken()) {
     String fieldName = jp.getCurrentName();
     t = jp.nextToken();
     try {
       switch (t) {
         case START_ARRAY:
           ob.put(fieldName, JSONArrayDeserializer.instance.deserialize(jp, ctxt));
           continue;
         case START_OBJECT:
           ob.put(fieldName, deserialize(jp, ctxt));
           continue;
         case VALUE_STRING:
           ob.put(fieldName, jp.getText());
           continue;
         case VALUE_NULL:
           ob.put(fieldName, JSONObject.NULL);
           continue;
         case VALUE_TRUE:
           ob.put(fieldName, Boolean.TRUE);
           continue;
         case VALUE_FALSE:
           ob.put(fieldName, Boolean.FALSE);
           continue;
         case VALUE_NUMBER_INT:
           ob.put(fieldName, jp.getNumberValue());
           continue;
         case VALUE_NUMBER_FLOAT:
           ob.put(fieldName, jp.getNumberValue());
           continue;
         case VALUE_EMBEDDED_OBJECT:
           ob.put(fieldName, jp.getEmbeddedObject());
           continue;
       }
     } catch (JSONException e) {
       throw ctxt.mappingException("Failed to construct JSONObject: " + e.getMessage());
     }
     throw ctxt.mappingException("Urecognized or unsupported JsonToken type: " + t);
   }
   return ob;
 }
  /**
   * Method called to construct fallback {@link SettableAnyProperty} for handling unknown bean
   * properties, given a method that has been designated as such setter.
   */
  protected SettableAnyProperty constructAnySetter(
      DeserializationContext ctxt, BeanDescription beanDesc, AnnotatedMethod setter)
      throws JsonMappingException {
    if (ctxt.canOverrideAccessModifiers()) {
      setter.fixAccess(); // to ensure we can call it
    }
    // we know it's a 2-arg method, second arg is the value
    JavaType type = beanDesc.bindingsForBeanType().resolveType(setter.getGenericParameterType(1));
    BeanProperty.Std property =
        new BeanProperty.Std(setter.getName(), type, beanDesc.getClassAnnotations(), setter);
    type = resolveType(ctxt, beanDesc, type, setter);

    /* AnySetter can be annotated with @JsonClass (etc) just like a
     * regular setter... so let's see if those are used.
     * Returns null if no annotations, in which case binding will
     * be done at a later point.
     */
    JsonDeserializer<Object> deser = findDeserializerFromAnnotation(ctxt, setter);
    if (deser != null) {
      return new SettableAnyProperty(property, setter, type, deser);
    }
    /* Otherwise, method may specify more specific (sub-)class for
     * value (no need to check if explicit deser was specified):
     */
    type = modifyTypeByAnnotation(ctxt, setter, type);
    return new SettableAnyProperty(property, setter, type, null);
  }
 public static PropertyBasedCreator construct(
     DeserializationContext ctxt,
     ValueInstantiator valueInstantiator,
     SettableBeanProperty[] srcProps)
     throws JsonMappingException {
   int len = srcProps.length;
   SettableBeanProperty[] creatorProps = new SettableBeanProperty[len];
   Object[] defaultValues = null;
   for (int i = 0; i < len; i++) {
     SettableBeanProperty prop = srcProps[i];
     if (!prop.hasValueDeserializer()) {
       prop =
           prop.withValueDeserializer(ctxt.findContextualValueDeserializer(prop.getType(), prop));
     }
     creatorProps[i] = prop;
     JsonDeserializer<?> deser = prop.getValueDeserializer();
     Object nullValue = deser == null ? null : deser.getNullValue();
     if (nullValue == null && prop.getType().isPrimitive()) {
       nullValue = ClassUtil.defaultValue(prop.getType().getRawClass());
     }
     if (nullValue != null) {
       if (defaultValues == null) {
         defaultValues = new Object[len];
       }
       defaultValues[i] = nullValue;
     }
   }
   return new PropertyBasedCreator(valueInstantiator, creatorProps, defaultValues);
 }
 public float[] deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext)
 {
   if (!paramJsonParser.isExpectedStartArrayToken())
     return handleNonArray(paramJsonParser, paramDeserializationContext);
   ArrayBuilders.FloatBuilder localFloatBuilder = paramDeserializationContext.getArrayBuilders().getFloatBuilder();
   Object localObject = (float[])localFloatBuilder.resetAndStart();
   int i = 0;
   float f;
   int j;
   if (paramJsonParser.nextToken() != JsonToken.END_ARRAY)
   {
     f = _parseFloatPrimitive(paramJsonParser, paramDeserializationContext);
     if (i < localObject.length)
       break label108;
     float[] arrayOfFloat = (float[])localFloatBuilder.appendCompletedChunk(localObject, i);
     j = 0;
     localObject = arrayOfFloat;
   }
   while (true)
   {
     i = j + 1;
     localObject[j] = f;
     break;
     return (float[])localFloatBuilder.completeAndClearBuffer(localObject, i);
     label108: j = i;
   }
 }
  @Override
  public T deserialize(final JsonParser jp, final DeserializationContext ctxt)
      throws IOException, JsonProcessingException {

    client = (ODataClient) ctxt.findInjectableValue(ODataClient.class.getName(), null, null);
    return doDeserialize(jp, ctxt);
  }
 public short[] deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext)
 {
   if (!paramJsonParser.isExpectedStartArrayToken())
     return handleNonArray(paramJsonParser, paramDeserializationContext);
   ArrayBuilders.ShortBuilder localShortBuilder = paramDeserializationContext.getArrayBuilders().getShortBuilder();
   Object localObject = (short[])localShortBuilder.resetAndStart();
   int i = 0;
   int j;
   int k;
   if (paramJsonParser.nextToken() != JsonToken.END_ARRAY)
   {
     j = _parseShortPrimitive(paramJsonParser, paramDeserializationContext);
     if (i < localObject.length)
       break label108;
     short[] arrayOfShort = (short[])localShortBuilder.appendCompletedChunk(localObject, i);
     k = 0;
     localObject = arrayOfShort;
   }
   while (true)
   {
     i = k + 1;
     localObject[k] = j;
     break;
     return (short[])localShortBuilder.completeAndClearBuffer(localObject, i);
     label108: k = i;
   }
 }
 public boolean[] deserialize(JsonParser paramJsonParser, DeserializationContext paramDeserializationContext)
 {
   if (!paramJsonParser.isExpectedStartArrayToken())
     return handleNonArray(paramJsonParser, paramDeserializationContext);
   ArrayBuilders.BooleanBuilder localBooleanBuilder = paramDeserializationContext.getArrayBuilders().getBooleanBuilder();
   Object localObject = (boolean[])localBooleanBuilder.resetAndStart();
   int i = 0;
   boolean bool;
   int j;
   if (paramJsonParser.nextToken() != JsonToken.END_ARRAY)
   {
     bool = _parseBooleanPrimitive(paramJsonParser, paramDeserializationContext);
     if (i < localObject.length)
       break label108;
     boolean[] arrayOfBoolean = (boolean[])localBooleanBuilder.appendCompletedChunk(localObject, i);
     j = 0;
     localObject = arrayOfBoolean;
   }
   while (true)
   {
     i = j + 1;
     localObject[j] = bool;
     break;
     return (boolean[])localBooleanBuilder.completeAndClearBuffer(localObject, i);
     label108: j = i;
   }
 }
  /*
   * (non-Javadoc)
   *
   * @see
   * org.codehaus.jackson.map.JsonDeserializer#deserialize(org.codehaus.jackson
   * .JsonParser, org.codehaus.jackson.map.DeserializationContext)
   */
  @Override
  public NamedErlangFunction deserialize(JsonParser jp, DeserializationContext ctxt)
      throws IOException, JsonProcessingException {

    JsonToken token = jp.getCurrentToken();

    if (JsonToken.START_OBJECT.equals(token)) {

      String mod = null;
      String fun = null;

      while (!JsonToken.END_OBJECT.equals(token)) {
        String field = jp.getCurrentName();

        if (Constants.FL_SCHEMA_FUN_MOD.equals(field)) {
          jp.nextToken();
          mod = jp.getText();
        } else if (Constants.FL_SCHEMA_FUN_FUN.equals(field)) {
          jp.nextToken();
          fun = jp.getText();
        }
        token = jp.nextToken();
      }
      if (mod != null && fun != null) {
        return new NamedErlangFunction(mod, fun);
      } else {
        return null;
      }
    }
    throw ctxt.mappingException(NamedErlangFunction.class);
  }
  /** Method that will construct a regular bean property setter using the given setter method. */
  protected SettableBeanProperty constructSetterlessProperty(
      DeserializationContext ctxt, BeanDescription beanDesc, BeanPropertyDefinition propDef)
      throws JsonMappingException {
    final AnnotatedMethod getter = propDef.getGetter();
    // need to ensure it is callable now:
    if (ctxt.canOverrideAccessModifiers()) {
      getter.fixAccess();
    }

    /* 26-Jan-2012, tatu: Alas, this complication is still needed to handle
     *   (or at least work around) local type declarations...
     */
    JavaType type = getter.getType(beanDesc.bindingsForBeanType());
    /* First: does the Method specify the deserializer to use?
     * If so, let's use it.
     */
    JsonDeserializer<Object> propDeser = findDeserializerFromAnnotation(ctxt, getter);
    type = modifyTypeByAnnotation(ctxt, getter, type);
    TypeDeserializer typeDeser = type.getTypeHandler();
    SettableBeanProperty prop =
        new SetterlessProperty(propDef, type, typeDeser, beanDesc.getClassAnnotations(), getter);
    if (propDeser != null) {
      prop = prop.withValueDeserializer(propDeser);
    }
    return prop;
  }
 protected T _deserializeEmbedded(
     Object paramObject, DeserializationContext paramDeserializationContext) throws IOException {
   throw paramDeserializationContext.mappingException(
       "Don't know how to convert embedded Object of type "
           + paramObject.getClass().getName()
           + " into "
           + this._valueClass.getName());
 }
 public JsonDeserializer<?> createContextual(
     DeserializationContext deserializationContext, BeanProperty beanProperty) {
   if (this._delegateDeserializer != null) {
     JsonDeserializer handleSecondaryContextualization =
         deserializationContext.handleSecondaryContextualization(
             this._delegateDeserializer, beanProperty);
     if (handleSecondaryContextualization != this._delegateDeserializer) {
       return withDelegate(this._converter, this._delegateType, handleSecondaryContextualization);
     }
     return this;
   }
   JavaType inputType = this._converter.getInputType(deserializationContext.getTypeFactory());
   return withDelegate(
       this._converter,
       inputType,
       deserializationContext.findContextualValueDeserializer(inputType, beanProperty));
 }