X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=netconf%2Fnetconf-netty-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetconf%2Fnettyutil%2Fhandler%2FNetconfEXICodec.java;h=415afe3d0abad056a01a6b6301ec05f972177025;hb=refs%2Fheads%2Fmaster;hp=383e8b7d50d2eb87e3ffeb5cbfe9e8b5d9703991;hpb=647e61052064693a422d48be8046272934916ac9;p=netconf.git diff --git a/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/handler/NetconfEXICodec.java b/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/handler/NetconfEXICodec.java index 383e8b7d50..415afe3d0a 100644 --- a/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/handler/NetconfEXICodec.java +++ b/netconf/netconf-netty-util/src/main/java/org/opendaylight/netconf/nettyutil/handler/NetconfEXICodec.java @@ -5,33 +5,26 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.nettyutil.handler; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; -import com.siemens.ct.exi.EXIFactory; -import com.siemens.ct.exi.api.sax.SAXEncoder; -import com.siemens.ct.exi.api.sax.SAXFactory; -import com.siemens.ct.exi.exceptions.EXIException; import org.opendaylight.netconf.nettyutil.handler.exi.EXIParameters; +import org.opendaylight.netconf.shaded.exificient.core.EXIFactory; +import org.opendaylight.netconf.shaded.exificient.core.exceptions.EXIException; +import org.opendaylight.netconf.shaded.exificient.main.api.sax.SAXEncoder; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; -import org.xml.sax.XMLReader; public final class NetconfEXICodec { /** * OpenEXI does not allow us to directly prevent resolution of external entities. In order * to prevent XXE attacks, we reuse a single no-op entity resolver. */ - private static final EntityResolver ENTITY_RESOLVER = new EntityResolver() { - @Override - public InputSource resolveEntity(final String publicId, final String systemId) { - return new InputSource(); - } - }; + private static final EntityResolver ENTITY_RESOLVER = (publicId, systemId) -> new InputSource(); /** * Since we have a limited number of options we can have, instantiating a weak cache @@ -45,24 +38,23 @@ public final class NetconfEXICodec { } }); - private final SAXFactory exiFactory; + private final ThreadLocalSAXFactory exiFactory; private NetconfEXICodec(final EXIFactory exiFactory) { - this.exiFactory = new SAXFactory(Preconditions.checkNotNull(exiFactory)); + this.exiFactory = new ThreadLocalSAXFactory(requireNonNull(exiFactory)); } public static NetconfEXICodec forParameters(final EXIParameters parameters) { return CODECS.getUnchecked(parameters); } - XMLReader getReader() throws EXIException { - final XMLReader reader = exiFactory.createEXIReader(); + ThreadLocalSAXDecoder getReader() throws EXIException { + final ThreadLocalSAXDecoder reader = exiFactory.createEXIReader(); reader.setEntityResolver(ENTITY_RESOLVER); return reader; } SAXEncoder getWriter() throws EXIException { - final SAXEncoder writer = exiFactory.createEXIWriter(); - return writer; + return exiFactory.createEXIWriter(); } }