home *** CD-ROM | disk | FTP | other *** search
- package sun.rmi.server;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.ObjectInputStream;
- import java.io.ObjectStreamClass;
- import java.io.StreamCorruptedException;
- import java.lang.reflect.Proxy;
- import java.security.AccessControlException;
- import java.security.AccessController;
- import java.security.Permission;
- import java.util.HashMap;
- import java.util.Map;
- import sun.security.action.GetBooleanAction;
-
- public class MarshalInputStream extends ObjectInputStream {
- private boolean skipDefaultResolveClass = false;
- private static final boolean useCodebaseOnly = (Boolean)AccessController.doPrivileged(new GetBooleanAction("java.rmi.server.useCodebaseOnly"));
- protected static Map permittedSunClasses = new HashMap(3);
- // $FF: synthetic field
- static Class class$sun$rmi$server$Activation$ActivationMonitorImpl;
- // $FF: synthetic field
- static Class class$sun$rmi$server$Activation$ActivationSystemImpl;
- // $FF: synthetic field
- static Class class$sun$rmi$registry$RegistryImpl;
-
- public MarshalInputStream(InputStream var1) throws IOException, StreamCorruptedException {
- super(var1);
- }
-
- protected Class resolveClass(ObjectStreamClass var1) throws IOException, ClassNotFoundException {
- Object var2 = this.readLocation();
- String var3 = var1.getName();
- if (!this.skipDefaultResolveClass) {
- try {
- return super.resolveClass(var1);
- } catch (AccessControlException var7) {
- return this.checkSunClass(var3, var7);
- } catch (ClassNotFoundException var8) {
- }
- }
-
- try {
- if (!useCodebaseOnly && var2 != null && var2 instanceof String) {
- String var4 = (String)var2;
- return LoaderHandler.loadClass(var4, var3);
- } else {
- return LoaderHandler.loadClass(var3);
- }
- } catch (AccessControlException var6) {
- return this.checkSunClass(var3, var6);
- }
- }
-
- protected Class resolveProxyClass(String[] var1) throws IOException, ClassNotFoundException {
- Object var2 = this.readLocation();
- ClassLoader var3;
- if (!useCodebaseOnly && var2 != null && var2 instanceof String) {
- String var4 = (String)var2;
- var3 = LoaderHandler.getClassLoader(var4);
- } else {
- var3 = LoaderHandler.getClassLoader((String)null);
- }
-
- Class[] var6 = new Class[var1.length];
-
- for(int var5 = 0; var5 < var1.length; ++var5) {
- var6[var5] = Class.forName(var1[var5], false, var3);
- }
-
- return Proxy.getProxyClass(var3, var6);
- }
-
- private Class checkSunClass(String var1, AccessControlException var2) throws AccessControlException {
- Permission var3 = var2.getPermission();
- String var4 = null;
- if (var3 != null) {
- var4 = var3.getName();
- }
-
- Class var5 = (Class)permittedSunClasses.get(var1);
- if (var4 != null && var5 != null && (var4.equals("accessClassInPackage.sun.rmi.server") || var4.equals("accessClassInPackage.sun.rmi.registry"))) {
- return var5;
- } else {
- throw var2;
- }
- }
-
- protected Object readLocation() throws IOException, ClassNotFoundException {
- return ((ObjectInputStream)this).readObject();
- }
-
- void skipDefaultResolveClass() {
- this.skipDefaultResolveClass = true;
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
-
- static {
- try {
- String var0 = (class$sun$rmi$server$Activation$ActivationMonitorImpl == null ? (class$sun$rmi$server$Activation$ActivationMonitorImpl = class$("sun.rmi.server.Activation$ActivationMonitorImpl")) : class$sun$rmi$server$Activation$ActivationMonitorImpl).getName() + "_Stub";
- String var1 = (class$sun$rmi$server$Activation$ActivationSystemImpl == null ? (class$sun$rmi$server$Activation$ActivationSystemImpl = class$("sun.rmi.server.Activation$ActivationSystemImpl")) : class$sun$rmi$server$Activation$ActivationSystemImpl).getName() + "_Stub";
- String var2 = (class$sun$rmi$registry$RegistryImpl == null ? (class$sun$rmi$registry$RegistryImpl = class$("sun.rmi.registry.RegistryImpl")) : class$sun$rmi$registry$RegistryImpl).getName() + "_Stub";
- permittedSunClasses.put(var0, Class.forName(var0));
- permittedSunClasses.put(var1, Class.forName(var1));
- permittedSunClasses.put(var2, Class.forName(var2));
- } catch (ClassNotFoundException var3) {
- throw new NoClassDefFoundError("Missing system class: " + ((Throwable)var3).getMessage());
- }
- }
- }
-