⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bypassclassloader.java

📁 cisco-2950交换机的应用程序的源代码
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   BypassClassLoader.java

package cisco.dsbu.cms.boot.internal.ccl;

import java.io.InputStream;
import java.net.*;
import java.security.*;
import java.util.*;

// Referenced classes of package cisco.dsbu.cms.boot.internal.ccl:
//            BypassUrlStreamHandler, ClassData

public abstract class BypassClassLoader extends SecureClassLoader
{

    private Map mParentClasses;
    private ProtectionDomain mSignedPD;
    private ProtectionDomain mUnsignedPD;
    private URLStreamHandler urlStreamHandler;

    public BypassClassLoader(Class aclass[])
    {
        mParentClasses = new HashMap(aclass.length);
        for(int i = 0; i < aclass.length; i++)
            mParentClasses.put(aclass[i].getName(), aclass[i]);

        initProtectionDomains();
    }

    private void initProtectionDomains()
    {
        mSignedPD = getClass().getProtectionDomain();
        Permissions permissions = new Permissions();
        for(Enumeration enumeration = mSignedPD.getPermissions().elements(); enumeration.hasMoreElements();)
        {
            Permission permission = (Permission)enumeration.nextElement();
            if(!(permission instanceof AllPermission))
                permissions.add(permission);
        }

        mUnsignedPD = new ProtectionDomain(mSignedPD.getCodeSource(), permissions);
    }

    public synchronized Class loadClass(String s, boolean flag)
        throws ClassNotFoundException
    {
        Class class1 = findLoadedClass(s);
        if(class1 != null)
            return class1;
        try
        {
            class1 = findSystemClass(s);
            if(class1 != null)
                return class1;
        }
        catch(ClassNotFoundException classnotfoundexception) { }
        Object obj = mParentClasses.get(s);
        if(obj != null)
            return (Class)obj;
        class1 = findClass(s);
        if(flag)
            resolveClass(class1);
        return class1;
    }

    protected synchronized Class findClass(String s)
        throws ClassNotFoundException
    {
        ClassData classdata = getClassData(s);
        if(classdata == null)
        {
            throw new ClassNotFoundException(s);
        } else
        {
            byte abyte0[] = classdata.getContents();
            Class class1 = defineClass(s, abyte0, 0, abyte0.length, classdata.isSigned() ? mSignedPD : mUnsignedPD);
            return class1;
        }
    }

    public URL getResource(String s)
    {
        if(urlStreamHandler == null)
            urlStreamHandler = new BypassUrlStreamHandler(this);
        if(getStream(s) == null)
            return null;
        URL url = null;
        try
        {
            url = new URL(getUrlProtocol(), null, -1, s, urlStreamHandler);
        }
        catch(MalformedURLException malformedurlexception) { }
        return url;
    }

    public InputStream getResourceAsStream(String s)
    {
        return getStream(s);
    }

    protected abstract ClassData getClassData(String s);

    protected abstract InputStream getStream(String s);

    protected abstract String getUrlProtocol();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -