in jaxb-api-2.0/src/main/java/javax/xml/bind/ContextFinder.java [33:66]
public static JAXBContext find(String contextPath, ClassLoader classLoader, Map properties) throws JAXBException {
String className = null;
if (contextPath == null || contextPath.length() == 0) {
throw new JAXBException("Invalid contextPath");
}
String[] packages = contextPath.split(":");
if (packages == null || packages.length == 0) {
throw new JAXBException("Invalid contextPath");
}
for (String pkg : packages) {
String url = pkg.replace('.', '/') + "/jaxb.properties";
className = loadClassNameFromProperties(url, classLoader);
if (className != null) {
break;
}
}
if (className == null) {
className = System.getProperty(JAXB_CONTEXT_PROPERTY);
}
if (className == null) {
String url = "META-INF/services/" + JAXB_CONTEXT_PROPERTY;
className = loadClassName(url, classLoader);
}
if (className == null) {
className = PLATFORM_DEFAULT_FACTORY_CLASS;
}
Class spi = loadSpi(className, classLoader);
try {
Method m = spi.getMethod("createContext", new Class[] { String.class, ClassLoader.class, Map.class });
return (JAXBContext) m.invoke(null, new Object[] { contextPath, classLoader, properties });
} catch (Throwable t) {
throw new JAXBException("Unable to create context", t);
}
}