Improve SAXTransformerFactory instantiation 08/39408/3
authorRobert Varga <rovarga@cisco.com>
Wed, 25 May 2016 12:56:22 +0000 (14:56 +0200)
committerRobert Varga <rovarga@cisco.com>
Thu, 26 May 2016 13:48:57 +0000 (15:48 +0200)
This is just a correctness fix to follow the API contract.

Change-Id: Ia69b5b0d8d6b1ed8165cdeabbb4ff4278b9bfa12
Signed-off-by: Robert Varga <rovarga@cisco.com>
netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/handler/NetconfEXIToMessageDecoder.java

index eeaee5d39219229324b1566ddd1b119fc12e1282..22c8137b576b6e91553c6aa502e53a920fd72f43 100644 (file)
@@ -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)}