--- old/src/java.xml.bind/share/classes/javax/xml/bind/ContextFinder.java 2017-10-24 14:21:31.148129961 +0100 +++ new/src/java.xml.bind/share/classes/javax/xml/bind/ContextFinder.java 2017-10-24 14:21:30.848129962 +0100 @@ -182,6 +182,9 @@ Map properties) throws JAXBException { try { + + ModuleUtil.delegateAddOpensToImplModule(contextPathClasses, spFactory); + /* * javax.xml.bind.context.factory points to a class which has a * static method called 'createContext' that @@ -215,8 +218,6 @@ throw handleClassCastException(context.getClass(), JAXBContext.class); } - ModuleUtil.delegateAddOpensToImplModule(contextPathClasses, spFactory); - return (JAXBContext) context; } catch (InvocationTargetException x) { // throw if it is exception not to be wrapped @@ -274,6 +275,7 @@ Map properties, Class spFactory) throws JAXBException { try { + ModuleUtil.delegateAddOpensToImplModule(classes, spFactory); Method m = spFactory.getMethod("createContext", Class[].class, Map.class); Object obj = instantiateProviderIfNecessary(spFactory); @@ -282,7 +284,6 @@ // the cast would fail, so generate an exception with a nice message throw handleClassCastException(context.getClass(), JAXBContext.class); } - ModuleUtil.delegateAddOpensToImplModule(classes, spFactory); return (JAXBContext) context; } catch (NoSuchMethodException | IllegalAccessException e) { @@ -328,9 +329,8 @@ JAXBContextFactory.class, logger, EXCEPTION_HANDLER); if (obj != null) { - JAXBContext context = obj.createContext(contextPath, classLoader, properties); ModuleUtil.delegateAddOpensToImplModule(contextPathClasses, obj.getClass()); - return context; + return obj.createContext(contextPath, classLoader, properties); } // to ensure backwards compatibility @@ -385,9 +385,8 @@ ServiceLoaderUtil.firstByServiceLoader(JAXBContextFactory.class, logger, EXCEPTION_HANDLER); if (factory != null) { - JAXBContext context = factory.createContext(classes, properties); ModuleUtil.delegateAddOpensToImplModule(classes, factory.getClass()); - return context; + return factory.createContext(classes, properties); } // to ensure backwards compatibility