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

org.codehaus.jackson.map.DeserializationContext 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;

import java.io.IOException;
import java.util.*;

import org.codehaus.jackson.*;
import org.codehaus.jackson.map.util.ArrayBuilders;
import org.codehaus.jackson.map.util.ObjectBuffer;
import org.codehaus.jackson.node.JsonNodeFactory;
import org.codehaus.jackson.type.JavaType;

/**
 * Context for deserialization process. Used to allow passing in configuration
 * settings and reusable temporary objects (scrap arrays, containers).
 */
public abstract class DeserializationContext
{
    protected final DeserializationConfig _config;

    /**
     * @since 1.7
     */
    protected final int _featureFlags;
    
    /*
    /**********************************************************
    /* Life-cycle
    /**********************************************************
     */
    
    protected DeserializationContext(DeserializationConfig config)
    {
        _config = config;
        _featureFlags = config._featureFlags;
    }

    /*
    /**********************************************************
    /* Configuration methods
    /**********************************************************
     */

    /**
     * Method for accessing configuration setting object for
     * currently active deserialization.
     */
    public DeserializationConfig getConfig() { return _config; }

    /**
     * Returns provider that can be used for dynamically locating
     * other deserializers during runtime.
     * 
     * @since 1.5
     */
    public DeserializerProvider getDeserializerProvider() {
        // will be overridden by impl class
        return null;
    }
    
    /**
     * Convenience method for checking whether specified on/off
     * feature is enabled
     */
    public boolean isEnabled(DeserializationConfig.Feature feat) {
        /* 03-Dec-2010, tatu: minor shortcut; since this is called quite often,
         *   let's use a local copy of feature settings:
         */
        return (_featureFlags & feat.getMask()) != 0;
    }

    /**
     * Convenience method for accessing the default Base64 encoding
     * used for decoding base64 encoded binary content.
     * Same as calling:
     *
     *  getConfig().getBase64Variant();
     *
*/ public Base64Variant getBase64Variant() { return _config.getBase64Variant(); } /** * Accessor for getting access to the underlying JSON parser used * for deserialization. */ public abstract JsonParser getParser(); public final JsonNodeFactory getNodeFactory() { return _config.getNodeFactory(); } /* /********************************************************** /* Methods for accessing reusable/recyclable helper objects /********************************************************** */ /** * Method that can be used to get access to a reusable ObjectBuffer, * useful for efficiently constructing Object arrays and Lists. * Note that leased buffers should be returned once deserializer * is done, to allow for reuse during same round of deserialization. */ public abstract ObjectBuffer leaseObjectBuffer(); /** * Method to call to return object buffer previously leased with * {@link #leaseObjectBuffer}. * * @param buf Returned object buffer */ public abstract void returnObjectBuffer(ObjectBuffer buf); /** * Method for accessing object useful for building arrays of * primitive types (such as int[]). */ public abstract ArrayBuilders getArrayBuilders(); /* /********************************************************** /* Parsing methods that may use reusable/-cyclable objects /********************************************************** */ /** * Convenience method for parsing a Date from given String, using * currently configured date format (accessed using * {@link DeserializationConfig#getDateFormat()}). *

* Implementation will handle thread-safety issues related to * date formats such that first time this method is called, * date format is cloned, and cloned instance will be retained * for use during this deserialization round. */ public abstract java.util.Date parseDate(String dateStr) throws IllegalArgumentException; /** * Convenience method for constructing Calendar instance set * to specified time, to be modified and used by caller. */ public abstract Calendar constructCalendar(Date d); /* /********************************************************** /* Methods for problem handling, reporting /********************************************************** */ /** * Method deserializers can call to inform configured {@link DeserializationProblemHandler}s * of an unrecognized property. * * @return True if there was a configured problem handler that was able to handle the * proble * * @since 1.5 */ public abstract boolean handleUnknownProperty(JsonParser jp, JsonDeserializer deser, Object instanceOrClass, String propName) throws IOException, JsonProcessingException; /** * Helper method for constructing generic mapping exception for specified type */ public abstract JsonMappingException mappingException(Class targetClass); /** * Helper method for constructing generic mapping exception with specified * message and current location information * * @since 1.7 */ public JsonMappingException mappingException(String message) { return JsonMappingException.from(getParser(), message); } /** * Helper method for constructing instantiation exception for specified type, * to indicate problem with physically constructing instance of * specified class (missing constructor, exception from constructor) */ public abstract JsonMappingException instantiationException(Class instClass, Exception e); public abstract JsonMappingException instantiationException(Class instClass, String msg); /** * Helper method for constructing exception to indicate that input JSON * String was not in recognized format for deserializing into given type. */ public abstract JsonMappingException weirdStringException(Class instClass, String msg); /** * Helper method for constructing exception to indicate that input JSON * Number was not suitable for deserializing into given type. */ public abstract JsonMappingException weirdNumberException(Class instClass, String msg); /** * Helper method for constructing exception to indicate that given JSON * Object field name was not in format to be able to deserialize specified * key type. */ public abstract JsonMappingException weirdKeyException(Class keyClass, String keyValue, String msg); /** * Helper method for indicating that the current token was expected to be another * token. */ public abstract JsonMappingException wrongTokenException(JsonParser jp, JsonToken expToken, String msg); /** * Helper method for constructing exception to indicate that JSON Object * field name did not map to a known property of type being * deserialized. * * @param instanceOrClass Either value being populated (if one has been * instantiated), or Class that indicates type that would be (or * have been) instantiated */ public abstract JsonMappingException unknownFieldException(Object instanceOrClass, String fieldName); /** * Helper method for constructing exception to indicate that given * type id (parsed from JSON) could not be converted to a Java type. * * @since 1.5 */ public abstract JsonMappingException unknownTypeException(JavaType baseType, String id); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy