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


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








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




  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 JavaNetUriAccess javaNetUriAccess;
  70     private static JavaNetURLAccess javaNetURLAccess;
  71     private static JavaNioAccess javaNioAccess;
  72     private static JavaUtilJarAccess javaUtilJarAccess;


  73     private static JavaUtilZipFileAccess javaUtilZipFileAccess;
  74     private static JavaUtilResourceBundleAccess javaUtilResourceBundleAccess;
  75     private static JavaSecurityAccess javaSecurityAccess;





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


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


< prev index next >