< prev index next >

src/java.xml.bind/share/classes/javax/xml/bind/ModuleUtil.java

Print this page




 113                 }
 114 
 115             }
 116         } finally {
 117             in.close();
 118         }
 119         return null;
 120     }
 121 
 122     /**
 123      * Implementation may be defined in other module than {@code java.xml.bind}. In that case openness
 124      * {@linkplain Module#isOpen open} of classes should be delegated to implementation module.
 125      *
 126      * @param classes used to resolve module for {@linkplain Module#addOpens(String, Module)}
 127      * @param factorySPI used to resolve {@link Module} of the implementation.
 128      *
 129      * @throws JAXBException if ony of a classes package is not open to {@code java.xml.bind} module.
 130      */
 131     static void delegateAddOpensToImplModule(Class[] classes, Class<?> factorySPI) throws JAXBException {
 132         final Module implModule = factorySPI.getModule();
 133         if (!implModule.isNamed()) {
 134             return;
 135         }
 136 
 137         Module jaxbModule = JAXBContext.class.getModule();
 138 
 139         for (Class cls : classes) {
 140             final Module classModule = cls.getModule();
 141             final String packageName = cls.getPackageName();
 142             //no need for unnamed
 143             if (!classModule.isNamed()) {
 144                 continue;
 145             }
 146             //report error if they are not open to java.xml.bind
 147             if (!classModule.isOpen(packageName, jaxbModule)) {
 148                 throw new JAXBException(Messages.format(Messages.JAXB_CLASSES_NOT_OPEN,
 149                                                         packageName, cls.getName(), classModule.getName()));
 150             }
 151             //propagate openness to impl module
 152             classModule.addOpens(packageName, implModule);
 153             if (logger.isLoggable(Level.FINE)) {
 154                 logger.log(Level.FINE, "Propagating openness of package {0} in {1} to {2}.",
 155                            new String[]{ packageName, classModule.getName(), implModule.getName() });


 113                 }
 114 
 115             }
 116         } finally {
 117             in.close();
 118         }
 119         return null;
 120     }
 121 
 122     /**
 123      * Implementation may be defined in other module than {@code java.xml.bind}. In that case openness
 124      * {@linkplain Module#isOpen open} of classes should be delegated to implementation module.
 125      *
 126      * @param classes used to resolve module for {@linkplain Module#addOpens(String, Module)}
 127      * @param factorySPI used to resolve {@link Module} of the implementation.
 128      *
 129      * @throws JAXBException if ony of a classes package is not open to {@code java.xml.bind} module.
 130      */
 131     static void delegateAddOpensToImplModule(Class[] classes, Class<?> factorySPI) throws JAXBException {
 132         final Module implModule = factorySPI.getModule();



 133 
 134         Module jaxbModule = JAXBContext.class.getModule();
 135 
 136         for (Class cls : classes) {
 137             final Module classModule = cls.getModule();
 138             final String packageName = cls.getPackageName();
 139             //no need for unnamed
 140             if (!classModule.isNamed()) {
 141                 continue;
 142             }
 143             //report error if they are not open to java.xml.bind
 144             if (!classModule.isOpen(packageName, jaxbModule)) {
 145                 throw new JAXBException(Messages.format(Messages.JAXB_CLASSES_NOT_OPEN,
 146                                                         packageName, cls.getName(), classModule.getName()));
 147             }
 148             //propagate openness to impl module
 149             classModule.addOpens(packageName, implModule);
 150             if (logger.isLoggable(Level.FINE)) {
 151                 logger.log(Level.FINE, "Propagating openness of package {0} in {1} to {2}.",
 152                            new String[]{ packageName, classModule.getName(), implModule.getName() });
< prev index next >