< prev index next >

src/java.base/share/classes/java/lang/module/ModuleDescriptor.java

Print this page
rev 51958 : 8211122: Reduce the number of internal classes made accessible to jdk.unsupported
Reviewed-by: alanb, dfuchs, kvn
   1 /*
   2  * Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


2628         T[] a1 = (T[]) s1.toArray();
2629         T[] a2 = (T[]) s2.toArray();
2630         Arrays.sort(a1);
2631         Arrays.sort(a2);
2632         return Arrays.compare(a1, a2);
2633     }
2634 
2635     private static <E extends Enum<E>> long modsValue(Set<E> set) {
2636         long value = 0;
2637         for (Enum<E> e : set) {
2638             value += 1 << e.ordinal();
2639         }
2640         return value;
2641     }
2642 
2643     static {
2644         /**
2645          * Setup the shared secret to allow code in other packages access
2646          * private package methods in java.lang.module.
2647          */
2648         jdk.internal.misc.SharedSecrets
2649             .setJavaLangModuleAccess(new jdk.internal.misc.JavaLangModuleAccess() {
2650                 @Override
2651                 public Builder newModuleBuilder(String mn,
2652                                                 boolean strict,
2653                                                 Set<ModuleDescriptor.Modifier> modifiers) {
2654                     return new Builder(mn, strict, modifiers);
2655                 }
2656 
2657                 @Override
2658                 public Set<String> packages(ModuleDescriptor.Builder builder) {
2659                     return builder.packages();
2660                 }
2661 
2662                 @Override
2663                 public void requires(ModuleDescriptor.Builder builder,
2664                                      Set<Requires.Modifier> ms,
2665                                      String mn,
2666                                      String rawCompiledVersion) {
2667                     builder.requires(ms, mn, rawCompiledVersion);
2668                 }
2669 


   1 /*
   2  * Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


2628         T[] a1 = (T[]) s1.toArray();
2629         T[] a2 = (T[]) s2.toArray();
2630         Arrays.sort(a1);
2631         Arrays.sort(a2);
2632         return Arrays.compare(a1, a2);
2633     }
2634 
2635     private static <E extends Enum<E>> long modsValue(Set<E> set) {
2636         long value = 0;
2637         for (Enum<E> e : set) {
2638             value += 1 << e.ordinal();
2639         }
2640         return value;
2641     }
2642 
2643     static {
2644         /**
2645          * Setup the shared secret to allow code in other packages access
2646          * private package methods in java.lang.module.
2647          */
2648         jdk.internal.access.SharedSecrets
2649             .setJavaLangModuleAccess(new jdk.internal.access.JavaLangModuleAccess() {
2650                 @Override
2651                 public Builder newModuleBuilder(String mn,
2652                                                 boolean strict,
2653                                                 Set<ModuleDescriptor.Modifier> modifiers) {
2654                     return new Builder(mn, strict, modifiers);
2655                 }
2656 
2657                 @Override
2658                 public Set<String> packages(ModuleDescriptor.Builder builder) {
2659                     return builder.packages();
2660                 }
2661 
2662                 @Override
2663                 public void requires(ModuleDescriptor.Builder builder,
2664                                      Set<Requires.Modifier> ms,
2665                                      String mn,
2666                                      String rawCompiledVersion) {
2667                     builder.requires(ms, mn, rawCompiledVersion);
2668                 }
2669 


< prev index next >