blob: 925ff14e05666612ae43d94ff6cb679aba072755 [file] [log] [blame]
package org.codehaus.jackson.map;
import java.io.IOException;
import org.codehaus.jackson.JsonProcessingException;
/**
* This is the class that can be registered (via
* {@link DeserializationConfig} object owner by
* {@link ObjectMapper}) to get calledn when a potentially
* recoverable problem is encountered during deserialization
* process. Handlers can try to resolve the problem, throw
* an exception or do nothing.
*<p>
* Default implementations for all methods implemented minimal
* "do nothing" functionality, which is roughly equivalent to
* not having a registered listener at all. This allows for
* only implemented handler methods one is interested in, without
* handling other cases.
*
* @author tatu
*/
public abstract class DeserializationProblemHandler
{
/**
* Method called when a Json Map ("Object") entry with an unrecognized
* name is encountered.
* Content (supposedly) matching the property are accessible via
* parser that can be obtained from passed deserialization context.
* Handler can also choose to skip the content; if so, it MUST return
* true to indicate it did handle property succesfully.
* Skipping is usually done like so:
*<pre>
* ctxt.getParser().skipChildren();
*</pre>
*<p>
* Note: version 1.2 added new deserialization feature
* (<code>DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES</code>).
* It will only have effect <b>after</b> handler is called, and only
* if handler did <b>not</b> handle the problem.
*
* @param beanOrClass Either bean instance being deserialized (if one
* has been instantiated so far); or Class that indicates type that
* will be instantiated (if no instantiation done yet: for example
* when bean uses non-default constructors)
*
* @return True if the problem was succesfully resolved (and content available
* used or skipped); false if listen
*/
public boolean handleUnknownProperty(DeserializationContext ctxt, JsonDeserializer<?> deserializer,
Object beanOrClass, String propertyName)
throws IOException, JsonProcessingException
{
return false;
}
}