< prev index next >

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

Print this page




  33 import java.io.Console;
  34 import java.io.FileDescriptor;
  35 import java.io.FilePermission;
  36 import java.io.ObjectInputStream;
  37 import java.io.RandomAccessFile;
  38 import java.security.ProtectionDomain;
  39 import java.security.Signature;
  40 import jdk.internal.misc.Unsafe;
  41 
  42 /** A repository of "shared secrets", which are a mechanism for
  43     calling implementation-private methods in another package without
  44     using reflection. A package-private class implements a public
  45     interface and provides the ability to call package-private methods
  46     within that package; the object implementing that interface is
  47     provided through a third package to which access is restricted.
  48     This framework avoids the primary disadvantage of using reflection
  49     for this purpose, namely the loss of compile-time checking. */
  50 
  51 public class SharedSecrets {
  52     private static final Unsafe unsafe = Unsafe.getUnsafe();
  53     private static JavaUtilJarAccess javaUtilJarAccess;


  54     private static JavaLangAccess javaLangAccess;
  55     private static JavaLangModuleAccess javaLangModuleAccess;
  56     private static JavaLangInvokeAccess javaLangInvokeAccess;

  57     private static JavaLangRefAccess javaLangRefAccess;

  58     private static JavaIOAccess javaIOAccess;





  59     private static JavaNetInetAddressAccess javaNetInetAddressAccess;
  60     private static JavaNetHttpCookieAccess javaNetHttpCookieAccess;
  61     private static JavaNetSocketAccess javaNetSocketAccess;
  62     private static JavaNetUriAccess javaNetUriAccess;
  63     private static JavaNetURLAccess javaNetURLAccess;
  64     private static JavaNetURLClassLoaderAccess javaNetURLClassLoaderAccess;
  65     private static JavaNioAccess javaNioAccess;
  66     private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess;
  67     private static JavaIOFilePermissionAccess javaIOFilePermissionAccess;
  68     private static JavaSecurityAccess javaSecurityAccess;
  69     private static JavaUtilZipFileAccess javaUtilZipFileAccess;
  70     private static JavaUtilResourceBundleAccess javaUtilResourceBundleAccess;
  71     private static JavaAWTAccess javaAWTAccess;
  72     private static JavaAWTFontAccess javaAWTFontAccess;
  73     private static JavaBeansAccess javaBeansAccess;
  74     private static JavaObjectInputStreamAccess javaObjectInputStreamAccess;
  75     private static JavaObjectInputFilterAccess javaObjectInputFilterAccess;
  76     private static JavaIORandomAccessFileAccess javaIORandomAccessFileAccess;
  77     private static JavaSecuritySignatureAccess javaSecuritySignatureAccess;
  78     private static JavaxCryptoSealedObjectAccess javaxCryptoSealedObjectAccess;
  79 
  80     public static JavaUtilJarAccess javaUtilJarAccess() {
  81         if (javaUtilJarAccess == null) {
  82             // Ensure JarFile is initialized; we know that this class
  83             // provides the shared secret
  84             unsafe.ensureClassInitialized(JarFile.class);
  85         }
  86         return javaUtilJarAccess;
  87     }
  88 
  89     public static void setJavaUtilJarAccess(JavaUtilJarAccess access) {
  90         javaUtilJarAccess = access;
  91     }
  92 
  93     public static void setJavaLangAccess(JavaLangAccess jla) {
  94         javaLangAccess = jla;
  95     }
  96 


 114 
 115     public static void setJavaLangModuleAccess(JavaLangModuleAccess jlrma) {
 116         javaLangModuleAccess = jlrma;
 117     }
 118 
 119     public static JavaLangModuleAccess getJavaLangModuleAccess() {
 120         if (javaLangModuleAccess == null) {
 121             unsafe.ensureClassInitialized(ModuleDescriptor.class);
 122         }
 123         return javaLangModuleAccess;
 124     }
 125 
 126     public static void setJavaLangRefAccess(JavaLangRefAccess jlra) {
 127         javaLangRefAccess = jlra;
 128     }
 129 
 130     public static JavaLangRefAccess getJavaLangRefAccess() {
 131         return javaLangRefAccess;
 132     }
 133 








 134     public static void setJavaNetUriAccess(JavaNetUriAccess jnua) {
 135         javaNetUriAccess = jnua;
 136     }
 137 
 138     public static JavaNetUriAccess getJavaNetUriAccess() {
 139         if (javaNetUriAccess == null)
 140             unsafe.ensureClassInitialized(java.net.URI.class);
 141         return javaNetUriAccess;
 142     }
 143 
 144     public static void setJavaNetURLAccess(JavaNetURLAccess jnua) {
 145         javaNetURLAccess = jnua;
 146     }
 147 
 148     public static JavaNetURLAccess getJavaNetURLAccess() {
 149         if (javaNetURLAccess == null)
 150             unsafe.ensureClassInitialized(java.net.URL.class);
 151         return javaNetURLAccess;
 152     }
 153 




  33 import java.io.Console;
  34 import java.io.FileDescriptor;
  35 import java.io.FilePermission;
  36 import java.io.ObjectInputStream;
  37 import java.io.RandomAccessFile;
  38 import java.security.ProtectionDomain;
  39 import java.security.Signature;
  40 import jdk.internal.misc.Unsafe;
  41 
  42 /** A repository of "shared secrets", which are a mechanism for
  43     calling implementation-private methods in another package without
  44     using reflection. A package-private class implements a public
  45     interface and provides the ability to call package-private methods
  46     within that package; the object implementing that interface is
  47     provided through a third package to which access is restricted.
  48     This framework avoids the primary disadvantage of using reflection
  49     for this purpose, namely the loss of compile-time checking. */
  50 
  51 public class SharedSecrets {
  52     private static final Unsafe unsafe = Unsafe.getUnsafe();
  53     private static JavaAWTAccess javaAWTAccess;
  54     private static JavaAWTFontAccess javaAWTFontAccess;
  55     private static JavaBeansAccess javaBeansAccess;
  56     private static JavaLangAccess javaLangAccess;

  57     private static JavaLangInvokeAccess javaLangInvokeAccess;
  58     private static JavaLangModuleAccess javaLangModuleAccess;
  59     private static JavaLangRefAccess javaLangRefAccess;
  60     private static JavaLangReflectAccess javaLangReflectAccess;
  61     private static JavaIOAccess javaIOAccess;
  62     private static JavaIOFileDescriptorAccess javaIOFileDescriptorAccess;
  63     private static JavaIOFilePermissionAccess javaIOFilePermissionAccess;
  64     private static JavaIORandomAccessFileAccess javaIORandomAccessFileAccess;
  65     private static JavaObjectInputStreamAccess javaObjectInputStreamAccess;
  66     private static JavaObjectInputFilterAccess javaObjectInputFilterAccess;
  67     private static JavaNetInetAddressAccess javaNetInetAddressAccess;
  68     private static JavaNetHttpCookieAccess javaNetHttpCookieAccess;
  69     private static JavaNetSocketAccess javaNetSocketAccess;
  70     private static JavaNetUriAccess javaNetUriAccess;
  71     private static JavaNetURLAccess javaNetURLAccess;
  72     private static JavaNetURLClassLoaderAccess javaNetURLClassLoaderAccess;
  73     private static JavaNioAccess javaNioAccess;
  74     private static JavaUtilJarAccess javaUtilJarAccess;


  75     private static JavaUtilZipFileAccess javaUtilZipFileAccess;
  76     private static JavaUtilResourceBundleAccess javaUtilResourceBundleAccess;
  77     private static JavaSecurityAccess javaSecurityAccess;





  78     private static JavaSecuritySignatureAccess javaSecuritySignatureAccess;
  79     private static JavaxCryptoSealedObjectAccess javaxCryptoSealedObjectAccess;
  80 
  81     public static JavaUtilJarAccess javaUtilJarAccess() {
  82         if (javaUtilJarAccess == null) {
  83             // Ensure JarFile is initialized; we know that this class
  84             // provides the shared secret
  85             unsafe.ensureClassInitialized(JarFile.class);
  86         }
  87         return javaUtilJarAccess;
  88     }
  89 
  90     public static void setJavaUtilJarAccess(JavaUtilJarAccess access) {
  91         javaUtilJarAccess = access;
  92     }
  93 
  94     public static void setJavaLangAccess(JavaLangAccess jla) {
  95         javaLangAccess = jla;
  96     }
  97 


 115 
 116     public static void setJavaLangModuleAccess(JavaLangModuleAccess jlrma) {
 117         javaLangModuleAccess = jlrma;
 118     }
 119 
 120     public static JavaLangModuleAccess getJavaLangModuleAccess() {
 121         if (javaLangModuleAccess == null) {
 122             unsafe.ensureClassInitialized(ModuleDescriptor.class);
 123         }
 124         return javaLangModuleAccess;
 125     }
 126 
 127     public static void setJavaLangRefAccess(JavaLangRefAccess jlra) {
 128         javaLangRefAccess = jlra;
 129     }
 130 
 131     public static JavaLangRefAccess getJavaLangRefAccess() {
 132         return javaLangRefAccess;
 133     }
 134 
 135     public static void setJavaLangReflectAccess(JavaLangReflectAccess jlra) {
 136         javaLangReflectAccess = jlra;
 137     }
 138 
 139     public static JavaLangReflectAccess getJavaLangReflectAccess() {
 140         return javaLangReflectAccess;
 141     }
 142 
 143     public static void setJavaNetUriAccess(JavaNetUriAccess jnua) {
 144         javaNetUriAccess = jnua;
 145     }
 146 
 147     public static JavaNetUriAccess getJavaNetUriAccess() {
 148         if (javaNetUriAccess == null)
 149             unsafe.ensureClassInitialized(java.net.URI.class);
 150         return javaNetUriAccess;
 151     }
 152 
 153     public static void setJavaNetURLAccess(JavaNetURLAccess jnua) {
 154         javaNetURLAccess = jnua;
 155     }
 156 
 157     public static JavaNetURLAccess getJavaNetURLAccess() {
 158         if (javaNetURLAccess == null)
 159             unsafe.ensureClassInitialized(java.net.URL.class);
 160         return javaNetURLAccess;
 161     }
 162 


< prev index next >