src/share/classes/sun/corba/SharedSecrets.java

Wed, 07 Feb 2018 00:10:57 -0800

author
rpatil
date
Wed, 07 Feb 2018 00:10:57 -0800
changeset 1692
b90a8fc589af
parent 0
7ef37b2cdcad
child 1699
b3563151fe42
permissions
-rw-r--r--

8192757: Improve stub classes implementation
Reviewed-by: rriggs, dfuchs, erikj

     1 /*
     2  * Copyright (c) 2012, 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
    23  * questions.
    24  */
    26 package sun.corba;
    28 import com.sun.corba.se.impl.io.ValueUtility;
    29 import sun.misc.JavaOISAccess;
    30 import sun.misc.Unsafe;
    32 import java.io.ObjectInputStream;
    33 import java.security.AccessController;
    35 /** A repository of "shared secrets", which are a mechanism for
    36     calling implementation-private methods in another package without
    37     using reflection. A package-private class implements a public
    38     interface and provides the ability to call package-private methods
    39     within that package; the object implementing that interface is
    40     provided through a third package to which access is restricted.
    41     This framework avoids the primary disadvantage of using reflection
    42     for this purpose, namely the loss of compile-time checking. */
    44 // SharedSecrets cloned in corba repo to avoid build issues
    45 public class SharedSecrets {
    46     private static final Unsafe unsafe = Unsafe.getUnsafe();
    47     private static JavaCorbaAccess javaCorbaAccess;
    48     private static JavaOISAccess javaOISAccess;
    50     public static JavaCorbaAccess getJavaCorbaAccess() {
    51         if (javaCorbaAccess == null) {
    52             // Ensure ValueUtility is initialized; we know that that class
    53             // provides the shared secret
    54             unsafe.ensureClassInitialized(ValueUtility.class);
    55         }
    56         return javaCorbaAccess;
    57     }
    59     public static void setJavaCorbaAccess(JavaCorbaAccess access) {
    60         javaCorbaAccess = access;
    61     }
    63     public static void setJavaOISAccess(JavaOISAccess access) {
    64         javaOISAccess = access;
    65     }
    67     public static JavaOISAccess getJavaOISAccess() {
    68         if (javaOISAccess == null)
    69             unsafe.ensureClassInitialized(ObjectInputStream.class);
    71         return javaOISAccess;
    72     }
    74 }

mercurial