All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.codehaus.jackson.map.deser.PropertyValueBuffer Maven / Gradle / Ivy

Go to download

Data Mapper package is a high-performance data binding package built on Jackson JSON processor

There is a newer version: 1.9.13
Show newest version
package org.codehaus.jackson.map.deser;

import org.codehaus.jackson.JsonParser;
import org.codehaus.jackson.map.DeserializationContext;

/**
 * Simple container used for temporarily buffering a set of
 * {@link PropertyValue}s.
 * Using during construction of beans (and Maps) that use Creators, 
 * and hence need buffering before instance (that will have properties
 * to assign values to) is constructed.
 */
public final class PropertyValueBuffer
{
    final JsonParser _parser;
    final DeserializationContext _context;
    
    /**
     * Buffer used for storing creator parameters for constructing
     * instance
     */
    final Object[] _creatorParameters;

    /**
     * Number of creator parameters we are still missing.
     *

* NOTE: assumes there are no duplicates, for now. */ private int _paramsNeeded; /** * If we get non-creator parameters before or between * creator parameters, those need to be buffered. Buffer * is just a simple linked list */ private PropertyValue _buffered; public PropertyValueBuffer(JsonParser jp, DeserializationContext ctxt, int paramCount) { _parser = jp; _context = ctxt; _paramsNeeded = paramCount; _creatorParameters = new Object[paramCount]; } protected final Object[] getParameters() { return _creatorParameters; } protected PropertyValue buffered() { return _buffered; } /** * @return True if we have received all creator parameters */ public boolean assignParameter(int index, Object value) { _creatorParameters[index] = value; return --_paramsNeeded <= 0; } public void bufferProperty(SettableBeanProperty prop, Object value) { _buffered = new PropertyValue.Regular(_buffered, value, prop); } public void bufferAnyProperty(SettableAnyProperty prop, String propName, Object value) { _buffered = new PropertyValue.Any(_buffered, value, prop, propName); } public void bufferMapProperty(Object key, Object value) { _buffered = new PropertyValue.Map(_buffered, value, key); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy