package com.oracle.svm.hosted.xml;
import com.oracle.svm.core.annotate.AutomaticFeature;
import com.oracle.svm.core.jdk.JNIRegistrationUtil;
import org.graalvm.nativeimage.hosted.Feature;
import static com.oracle.svm.hosted.xml.XMLParsersRegistration.DOMImplementationRegistryClasses;
import static com.oracle.svm.hosted.xml.XMLParsersRegistration.DOMParserClasses;
import static com.oracle.svm.hosted.xml.XMLParsersRegistration.DatatypeFactoryClasses;
import static com.oracle.svm.hosted.xml.XMLParsersRegistration.SAXParserClasses;
import static com.oracle.svm.hosted.xml.XMLParsersRegistration.StAXParserClasses;
import static com.oracle.svm.hosted.xml.XMLParsersRegistration.TransformerClassesAndResources;
@AutomaticFeature
public class JavaxXmlClassAndResourcesLoaderFeature extends JNIRegistrationUtil implements Feature {
@Override
public void beforeAnalysis(BeforeAnalysisAccess access) {
access.registerReachabilityHandler(new SAXParserClasses()::registerConfigs,
method(access, "javax.xml.parsers.SAXParserFactory", "newInstance"));
access.registerReachabilityHandler(new DOMParserClasses()::registerConfigs,
method(access, "javax.xml.parsers.DocumentBuilderFactory", "newInstance"));
access.registerReachabilityHandler(new StAXParserClasses()::registerConfigs,
method(access, "javax.xml.stream.FactoryFinder", "find", Class.class, String.class));
access.registerReachabilityHandler(new TransformerClassesAndResources()::registerConfigs,
method(access, "javax.xml.transform.FactoryFinder", "find", Class.class, String.class));
access.registerReachabilityHandler(new DOMImplementationRegistryClasses()::registerConfigs,
method(access, "org.w3c.dom.bootstrap.DOMImplementationRegistry", "newInstance"));
access.registerReachabilityHandler(new DatatypeFactoryClasses()::registerConfigs,
method(access, "javax.xml.datatype.DatatypeFactory", "newInstance"));
}
}