Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package com.fasterxml.jackson.databind.ext;
 
 
 
Base for serializers that allows parsing DOM Documents from JSON Strings. Nominal type can be either org.w3c.dom.Node or org.w3c.dom.Document.
public abstract class DOMDeserializer<T> extends FromStringDeserializer<T>
    private static final long serialVersionUID = 1L;
    private final static DocumentBuilderFactory _parserFactory;
    static {
         = DocumentBuilderFactory.newInstance();
        // yup, only cave men do XML without recognizing namespaces...
        .setNamespaceAware(true);
    }
    protected DOMDeserializer(Class<T> cls) { super(cls); }
    @Override
    public abstract T _deserialize(String valueDeserializationContext ctxt);
    protected final Document parse(String valuethrows IllegalArgumentException
    {
        try {
            return .newDocumentBuilder().parse(new InputSource(new StringReader(value)));
        } catch (Exception e) {
            throw new IllegalArgumentException("Failed to parse JSON String as XML: "+e.getMessage(), e);
        }
    }
    /*
    /**********************************************************
    /* Concrete deserializers
    /**********************************************************
     */
    
    public static class NodeDeserializer extends DOMDeserializer<Node>
    {
        private static final long serialVersionUID = 1L;
        public NodeDeserializer() { super(Node.class); }
        @Override
        public Node _deserialize(String valueDeserializationContext ctxtthrows IllegalArgumentException {
            return parse(value);
        }
    }    
    public static class DocumentDeserializer extends DOMDeserializer<Document>
    {
        private static final long serialVersionUID = 1L;
        public DocumentDeserializer() { super(Document.class); }
        @Override
        public Document _deserialize(String valueDeserializationContext ctxtthrows IllegalArgumentException {
            return parse(value);
        }
    }    
New to GrepCode? Check out our FAQ X