/* * Hibernate Validator, declare and validate application constraints * * License: Apache License, Version 2.0 * See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>. */ package org.hibernate.validator.internal.util.privilegedactions; import java.security.PrivilegedExceptionAction; import javax.xml.bind.JAXBElement; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import javax.xml.stream.XMLEventReader; /** * Unmarshals the given source. * * @author Gunnar Morling */ public final class Unmarshal<T> implements PrivilegedExceptionAction<JAXBElement<T>> { private final Unmarshaller unmarshaller; private final XMLEventReader xmlEventReader; private final Class<T> clazz; public static <T> Unmarshal<T> action(Unmarshaller unmarshaller, XMLEventReader xmlEventReader, Class<T> clazz) { return new Unmarshal<T>( unmarshaller, xmlEventReader, clazz ); } private Unmarshal(Unmarshaller unmarshaller, XMLEventReader xmlEventReader, Class<T> clazz) { this.unmarshaller = unmarshaller; this.xmlEventReader = xmlEventReader; this.clazz = clazz; } @Override public JAXBElement<T> run() throws JAXBException { return unmarshaller.unmarshal( xmlEventReader, clazz ); } }