From a656b5f9eaffaeb255e6bf539264bab20253c4e1 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 25 May 2016 14:56:22 +0200 Subject: [PATCH] Improve SAXTransformerFactory instantiation This is just a correctness fix to follow the API contract. Change-Id: Ia69b5b0d8d6b1ed8165cdeabbb4ff4278b9bfa12 Signed-off-by: Robert Varga --- .../handler/NetconfEXIToMessageDecoder.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/handler/NetconfEXIToMessageDecoder.java b/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/handler/NetconfEXIToMessageDecoder.java index eeaee5d392..22c8137b57 100644 --- a/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/handler/NetconfEXIToMessageDecoder.java +++ b/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/handler/NetconfEXIToMessageDecoder.java @@ -17,6 +17,8 @@ import java.io.IOException; import java.io.InputStream; import java.util.List; import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.TransformerFactoryConfigurationError; import javax.xml.transform.dom.DOMResult; import javax.xml.transform.sax.SAXTransformerFactory; import javax.xml.transform.sax.TransformerHandler; @@ -32,7 +34,16 @@ import org.xml.sax.SAXException; public final class NetconfEXIToMessageDecoder extends ByteToMessageDecoder { private static final Logger LOG = LoggerFactory.getLogger(NetconfEXIToMessageDecoder.class); - private static final SAXTransformerFactory FACTORY = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); + private static final SAXTransformerFactory FACTORY; + static { + final TransformerFactory f = SAXTransformerFactory.newInstance(); + if (!f.getFeature(SAXTransformerFactory.FEATURE)) { + throw new TransformerFactoryConfigurationError(String.format("Factory %s is not a SAXTransformerFactory", f)); + } + + FACTORY = (SAXTransformerFactory)f; + } + /** * This class is not marked as shared, so it can be attached to only a single channel, * which means that {@link #decode(ChannelHandlerContext, ByteBuf, List)} -- 2.36.6