import com.google.common.annotations.Beta;
import com.google.common.util.concurrent.Futures;
+import java.io.IOException;
import javax.xml.parsers.SAXParser;
import javax.xml.transform.dom.DOMSource;
import org.opendaylight.yangtools.util.xml.UntrustedXML;
import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceRegistry;
import org.opendaylight.yangtools.yang.model.repo.util.SchemaSourceTransformer;
import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
*/
@Beta
public final class YinTextToDomTransformer extends SchemaSourceTransformer<YinTextSchemaSource, YinDomSchemaSource> {
-
- @Deprecated
- public static final Transformation<YinTextSchemaSource, YinDomSchemaSource> TRANSFORMATION = input -> {
- final Document doc = UntrustedXML.newDocumentBuilder().newDocument();
- final SAXParser parser = UntrustedXML.newSAXParser();
- final DefaultHandler handler = new StatementSourceReferenceHandler(doc, null);
- parser.parse(input.openStream(), handler);
-
- return Futures.immediateCheckedFuture(YinDomSchemaSource.create(input.getIdentifier(), new DOMSource(doc)));
- };
-
private YinTextToDomTransformer(final SchemaRepository provider, final SchemaSourceRegistry consumer) {
- super(provider, YinTextSchemaSource.class, consumer, YinDomSchemaSource.class, TRANSFORMATION);
+ super(provider, YinTextSchemaSource.class, consumer, YinDomSchemaSource.class,
+ input -> Futures.immediateCheckedFuture(transformSource(input)));
}
public static YinTextToDomTransformer create(final SchemaRepository provider, final SchemaSourceRegistry consumer) {
return new YinTextToDomTransformer(provider, consumer);
}
+ public static YinDomSchemaSource transformSource(final YinTextSchemaSource source) throws SAXException, IOException {
+ final Document doc = UntrustedXML.newDocumentBuilder().newDocument();
+ final SAXParser parser = UntrustedXML.newSAXParser();
+ final DefaultHandler handler = new StatementSourceReferenceHandler(doc, null);
+ parser.parse(source.openStream(), handler);
+ return YinDomSchemaSource.create(source.getIdentifier(), new DOMSource(doc));
+ }
+
}