Merge "Omaha #3441 Fixed OGC JaxbManager" into omaha_14.4.1

Former-commit-id: ec80fc443b [formerly 7384b2fc9f] [formerly 4bc3e91a2e] [formerly ec80fc443b [formerly 7384b2fc9f] [formerly 4bc3e91a2e] [formerly 73a5b5a7f4 [formerly 4bc3e91a2e [formerly 99aa79a2deeccf11872f69ca4500b8899596807f]]]]
Former-commit-id: 73a5b5a7f4
Former-commit-id: 544374d035 [formerly ca9fa1ad29] [formerly 80a913d07846e5c0d5c8f7dd0707ce7d8577ba63 [formerly 0548266bfd]]
Former-commit-id: 551c50d105edb0b8172cbbee2ac86237eba4b308 [formerly bbdf0e3a00]
Former-commit-id: 2c9f89cf10
This commit is contained in:
Richard Peter 2014-07-24 13:47:44 -05:00 committed by Gerrit Code Review
commit 0289a6a571

View file

@ -19,10 +19,13 @@
*/
package com.raytheon.uf.edex.ogc.common.jaxb;
import java.io.File;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.parsers.ParserConfigurationException;
@ -30,6 +33,7 @@ import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Node;
import com.raytheon.uf.common.serialization.JAXBManager;
import com.raytheon.uf.common.serialization.SerializationException;
import com.sun.xml.bind.api.JAXBRIContext;
import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
@ -45,6 +49,7 @@ import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
* Mar 30, 2011 bclement Initial creation
* Aug 18, 2013 #2097 dhladky extended JAXBManager
* Jul 15, 2014 3373 bclement rewritten to use JAXBManager
* Jul 23, 2014 dhladky restored JAXBElement unwrapping lost in re-write.
*
* </pre>
*
@ -141,7 +146,7 @@ public class OgcJaxbManager extends JAXBManager {
*/
public Object unmarshal(Node node) throws JAXBException {
JAXBContext ctx = getJaxbContext();
return marshStrategy.unmarshal(ctx, node);
return extractJaxbElement(marshStrategy.unmarshal(ctx, node));
}
/**
@ -156,5 +161,47 @@ public class OgcJaxbManager extends JAXBManager {
JAXBContext ctx = getJaxbContext();
return marshStrategy.marshalToNode(ctx, obj);
}
/**
* Override of JAXB manager, pulls Objects out of JAXBElement
* @param xml
* @return
* @throws JAXBException
*/
public Object unmarshalFromXml(String xml) throws JAXBException {
return extractJaxbElement(super.unmarshalFromXml(xml));
}
/**
* Override of JAXB manager, pulls Objects out of JAXBElement
* @param InputStream
* @return
* @throws SerializationException
*/
public Object unmarshalFromInputStream(InputStream is) throws SerializationException {
return extractJaxbElement(super.unmarshalFromInputStream(is));
}
/**
* OGC override of internalUnmarshalFromXmlFile
* @param file
* the file to unmarshal and object from.
* @return the object from the file
* @throws SerializationException
*/
protected Object internalUnmarshalFromXmlFile(File file)
throws SerializationException {
return extractJaxbElement(super.internalUnmarshalFromXmlFile(file));
}
/**
* Extracts the Object from the JAXBElement wrapper
*/
private Object extractJaxbElement(Object o) {
if (o instanceof JAXBElement<?>) {
o = ((JAXBElement<?>) o).getValue();
}
return o;
}
}