< prev index next >

src/java.base/share/classes/jdk/internal/misc/SharedSecrets.java

Print this page




  38     calling implementation-private methods in another package without
  39     using reflection. A package-private class implements a public
  40     interface and provides the ability to call package-private methods
  41     within that package; the object implementing that interface is
  42     provided through a third package to which access is restricted.
  43     This framework avoids the primary disadvantage of using reflection
  44     for this purpose, namely the loss of compile-time checking. */
  45 
  46 public class SharedSecrets {
  47     private static final Unsafe unsafe = Unsafe.getUnsafe();
  48     private static JavaUtilJarAccess javaUtilJarAccess;
  49     private static JavaLangAccess javaLangAccess;
  50     private static JavaLangModuleAccess javaLangModuleAccess;
  51     private static JavaLangReflectModuleAccess javaLangReflectModuleAccess;
  52     private static JavaLangInvokeAccess javaLangInvokeAccess;
  53     private static JavaLangRefAccess javaLangRefAccess;
  54     private static JavaIOAccess javaIOAccess;
  55     private static JavaNetAccess javaNetAccess;
  56     private static JavaNetInetAddressAccess javaNetInetAddressAccess;
  57     private static JavaNetHttpCookieAccess javaNetHttpCookieAccess;

  58     private static JavaNioAccess javaNioAccess;
  59     private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess;
  60     private static JavaSecurityProtectionDomainAccess javaSecurityProtectionDomainAccess;
  61     private static JavaSecurityAccess javaSecurityAccess;
  62     private static JavaUtilZipFileAccess javaUtilZipFileAccess;
  63     private static JavaUtilResourceBundleAccess javaUtilResourceBundleAccess;
  64     private static JavaAWTAccess javaAWTAccess;
  65     private static JavaAWTFontAccess javaAWTFontAccess;
  66     private static JavaBeansAccess javaBeansAccess;
  67     private static JavaObjectInputStreamAccess javaObjectInputStreamAccess;
  68     private static JavaIORandomAccessFileAccess javaIORandomAccessFileAccess;
  69 
  70     public static JavaUtilJarAccess javaUtilJarAccess() {
  71         if (javaUtilJarAccess == null) {
  72             // Ensure JarFile is initialized; we know that that class
  73             // provides the shared secret
  74             unsafe.ensureClassInitialized(JarFile.class);
  75         }
  76         return javaUtilJarAccess;
  77     }


 144     public static void setJavaNetInetAddressAccess(JavaNetInetAddressAccess jna) {
 145         javaNetInetAddressAccess = jna;
 146     }
 147 
 148     public static JavaNetInetAddressAccess getJavaNetInetAddressAccess() {
 149         if (javaNetInetAddressAccess == null)
 150             unsafe.ensureClassInitialized(java.net.InetAddress.class);
 151         return javaNetInetAddressAccess;
 152     }
 153 
 154     public static void setJavaNetHttpCookieAccess(JavaNetHttpCookieAccess a) {
 155         javaNetHttpCookieAccess = a;
 156     }
 157 
 158     public static JavaNetHttpCookieAccess getJavaNetHttpCookieAccess() {
 159         if (javaNetHttpCookieAccess == null)
 160             unsafe.ensureClassInitialized(java.net.HttpCookie.class);
 161         return javaNetHttpCookieAccess;
 162     }
 163 










 164     public static void setJavaNioAccess(JavaNioAccess jna) {
 165         javaNioAccess = jna;
 166     }
 167 
 168     public static JavaNioAccess getJavaNioAccess() {
 169         if (javaNioAccess == null) {
 170             // Ensure java.nio.ByteOrder is initialized; we know that
 171             // this class initializes java.nio.Bits that provides the
 172             // shared secret.
 173             unsafe.ensureClassInitialized(java.nio.ByteOrder.class);
 174         }
 175         return javaNioAccess;
 176     }
 177 
 178     public static void setJavaIOAccess(JavaIOAccess jia) {
 179         javaIOAccess = jia;
 180     }
 181 
 182     public static JavaIOAccess getJavaIOAccess() {
 183         if (javaIOAccess == null) {




  38     calling implementation-private methods in another package without
  39     using reflection. A package-private class implements a public
  40     interface and provides the ability to call package-private methods
  41     within that package; the object implementing that interface is
  42     provided through a third package to which access is restricted.
  43     This framework avoids the primary disadvantage of using reflection
  44     for this purpose, namely the loss of compile-time checking. */
  45 
  46 public class SharedSecrets {
  47     private static final Unsafe unsafe = Unsafe.getUnsafe();
  48     private static JavaUtilJarAccess javaUtilJarAccess;
  49     private static JavaLangAccess javaLangAccess;
  50     private static JavaLangModuleAccess javaLangModuleAccess;
  51     private static JavaLangReflectModuleAccess javaLangReflectModuleAccess;
  52     private static JavaLangInvokeAccess javaLangInvokeAccess;
  53     private static JavaLangRefAccess javaLangRefAccess;
  54     private static JavaIOAccess javaIOAccess;
  55     private static JavaNetAccess javaNetAccess;
  56     private static JavaNetInetAddressAccess javaNetInetAddressAccess;
  57     private static JavaNetHttpCookieAccess javaNetHttpCookieAccess;
  58     private static JavaNetSocketAccess javaNetSocketAccess;
  59     private static JavaNioAccess javaNioAccess;
  60     private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess;
  61     private static JavaSecurityProtectionDomainAccess javaSecurityProtectionDomainAccess;
  62     private static JavaSecurityAccess javaSecurityAccess;
  63     private static JavaUtilZipFileAccess javaUtilZipFileAccess;
  64     private static JavaUtilResourceBundleAccess javaUtilResourceBundleAccess;
  65     private static JavaAWTAccess javaAWTAccess;
  66     private static JavaAWTFontAccess javaAWTFontAccess;
  67     private static JavaBeansAccess javaBeansAccess;
  68     private static JavaObjectInputStreamAccess javaObjectInputStreamAccess;
  69     private static JavaIORandomAccessFileAccess javaIORandomAccessFileAccess;
  70 
  71     public static JavaUtilJarAccess javaUtilJarAccess() {
  72         if (javaUtilJarAccess == null) {
  73             // Ensure JarFile is initialized; we know that that class
  74             // provides the shared secret
  75             unsafe.ensureClassInitialized(JarFile.class);
  76         }
  77         return javaUtilJarAccess;
  78     }


 145     public static void setJavaNetInetAddressAccess(JavaNetInetAddressAccess jna) {
 146         javaNetInetAddressAccess = jna;
 147     }
 148 
 149     public static JavaNetInetAddressAccess getJavaNetInetAddressAccess() {
 150         if (javaNetInetAddressAccess == null)
 151             unsafe.ensureClassInitialized(java.net.InetAddress.class);
 152         return javaNetInetAddressAccess;
 153     }
 154 
 155     public static void setJavaNetHttpCookieAccess(JavaNetHttpCookieAccess a) {
 156         javaNetHttpCookieAccess = a;
 157     }
 158 
 159     public static JavaNetHttpCookieAccess getJavaNetHttpCookieAccess() {
 160         if (javaNetHttpCookieAccess == null)
 161             unsafe.ensureClassInitialized(java.net.HttpCookie.class);
 162         return javaNetHttpCookieAccess;
 163     }
 164 
 165     public static void setJavaNetSocketAccess(JavaNetSocketAccess jnsa) {
 166         javaNetSocketAccess = jnsa;
 167     }
 168 
 169     public static JavaNetSocketAccess getJavaNetSocketAccess() {
 170         if (javaNetSocketAccess == null)
 171             unsafe.ensureClassInitialized(java.net.ServerSocket.class);
 172         return javaNetSocketAccess;
 173     }
 174 
 175     public static void setJavaNioAccess(JavaNioAccess jna) {
 176         javaNioAccess = jna;
 177     }
 178 
 179     public static JavaNioAccess getJavaNioAccess() {
 180         if (javaNioAccess == null) {
 181             // Ensure java.nio.ByteOrder is initialized; we know that
 182             // this class initializes java.nio.Bits that provides the
 183             // shared secret.
 184             unsafe.ensureClassInitialized(java.nio.ByteOrder.class);
 185         }
 186         return javaNioAccess;
 187     }
 188 
 189     public static void setJavaIOAccess(JavaIOAccess jia) {
 190         javaIOAccess = jia;
 191     }
 192 
 193     public static JavaIOAccess getJavaIOAccess() {
 194         if (javaIOAccess == null) {


< prev index next >