summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java
diff options
context:
space:
mode:
Diffstat (limited to 'branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java')
-rw-r--r--branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java17
1 files changed, 11 insertions, 6 deletions
diff --git a/branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java b/branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java
index 00e99aaacd..827a1684bc 100644
--- a/branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java
+++ b/branches/sca-java-1.3.2/modules/databinding-jaxb-axiom/src/main/java/org/apache/tuscany/sca/databinding/jaxb/axiom/OMElement2JAXB.java
@@ -16,7 +16,6 @@
* specific language governing permissions and limitations
* under the License.
*/
-
package org.apache.tuscany.sca.databinding.jaxb.axiom;
import java.security.AccessController;
@@ -51,15 +50,21 @@ public class OMElement2JAXB extends BaseTransformer<OMElement, Object> implement
try {
return AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
public Object run() throws JAXBException, XMLStreamException {
+ Unmarshaller unmarshaller = null;
+ XMLStreamReader reader = null;
+ Object result = null;
// Marshalling directly to the output stream is faster than marshalling through the
// XMLStreamWriter.
// Take advantage of this optimization if there is an output stream.
JAXBContext jaxbContext = JAXBContextHelper.createJAXBContext(context, false);
- Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
- XMLStreamReader reader = source.getXMLStreamReaderWithoutCaching();
- Object result =
- unmarshaller.unmarshal(reader, JAXBContextHelper.getJavaType(context.getTargetDataType()));
- reader.close();
+ try {
+ unmarshaller = JAXBContextHelper.getUnmarshaller(jaxbContext);
+ reader = source.getXMLStreamReaderWithoutCaching();
+ result = unmarshaller.unmarshal(reader, JAXBContextHelper.getJavaType(context.getTargetDataType()));
+ } finally {
+ reader.close();
+ JAXBContextHelper.releaseJAXBUnmarshaller(jaxbContext, unmarshaller);
+ }
return JAXBContextHelper.createReturnValue(jaxbContext, context.getTargetDataType(), result);
}
});