亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pluginmanager.java

?? 基于jxta的局域網P2P文件共享,可以實現局域網中的文件p2p共享,實現文件快速傳輸及交流
?? JAVA
字號:
/**
 * -- Copyright (C) 2006 Hisham Khalil. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 *
 * Author: Hisham Khalil <hishberlin@hotmail.com>
 */


package connex.session.plugin;

import java.net.*;
import org.w3c.dom.Document;

import javax.xml.parsers.DocumentBuilderFactory;

import java.io.*;

import java.util.jar.*;
import java.util.zip.*;
import org.xml.sax.SAXException;
import java.util.Collection;
import java.util.Enumeration;
import javax.swing.ImageIcon;
import java.awt.Image;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;

public class PluginManager {

    private static PluginManager instance;

    /**
     * @directed
     * @link aggregationByValue
     * @supplierCardinality 1
     * @clientCardinality 1
     */
    private PluginRegistry registry = new PluginRegistry();
    private URLClassLoader classLoader;

    /**
     * @directed
     */
private  PluginDescriptor pd;

    private PluginManager() {
        instance = this;
    }

    /**
     * it takes as parameter an id representing a pluginEntryId
     * and returns an instance of that PluginEntry
     * @param id Integer
     * @return PluginEntry
     */
    public Plugin loadConcretePlugin(String id) {
        Plugin plugin = registry.getPlugin(id);
        if (plugin != null) {
            return plugin;
        }
        PluginDescriptor pd = registry.getDescriptor(id);
        plugin = null;
        try {

            Object o = null;
            try {
                plugin = (Plugin) classLoader.loadClass(pd.getMainClass()).newInstance();
            } catch (ClassNotFoundException ex) {
                System.out.println("ClassNotFoundException");
            } catch (IllegalAccessException ex) {
            } catch (InstantiationException ex) {
            }

            registry.registerPlugin(pd.getId(), plugin);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return (Plugin) plugin;
    }

    public Collection getDescriptors() {
        return registry.getAllDescriptors();
    }

    public void unloadPlugin(String id) {
        registry.removePlugin(id);
    }

    public void unloadPlugins() {
        registry.clear();

    }


    public void loadPlugins(String pluginsPath) {

        try {
            File[] jars = (new File(pluginsPath)).listFiles(new
                    pluginFileFilter());
            if (jars.length == 0) {
                throw new Exception("no Plugin found");

            }

            URL[] url = new URL[jars.length];
            for (int i = 0; i < jars.length; i++) {

                url[i] = jars[i].toURL();

            }
            classLoader = new URLClassLoader(url);

            System.out.println("found Plugins : " + jars.length);

            for (int i = 0; i < jars.length; i++) {
                System.out.print("Loading...");

                System.out.println(jars[i].getName());

                Document doc = this.getPluginDescriptorDocument(jars[i]);
                if (doc != null) {
                    NodeList nodeList = null;
                    try {

                        nodeList = doc.getElementsByTagName("plugin");
                    } catch (Exception e) {
                        System.out.println(
                                "Invalid Discriptor: There are not <plugin> tags in descriptor.xml!");
                    }
                    if (nodeList.getLength() == 0) {
                        System.out.println(
                                "Invalid Discriptor: There are not <plugin> tags in descriptor.xml!");
                    }


                        Element entrypoint = (Element) nodeList.item(0);
                        if (!registry.isRegistered(entrypoint.getElementsByTagName("ID").
                                item(0).getFirstChild().getNodeValue())) {

                             pd = new PluginDescriptor();

                            try {
                                pd.setId(entrypoint.getElementsByTagName("ID").
                                         item(0).getFirstChild().getNodeValue());

                            } catch (Exception e) {
                                System.out.println(
                                        " Invalid Discriptor: <id> tag not found");

                                break;
                            }
                            try {
                                pd.setName(entrypoint.getElementsByTagName("name").
                                           item(0).getFirstChild().getNodeValue());
                            } catch (Exception e) {
                                System.out.println(
                                        "  Invalid Discriptor: <name> tag not found");

                                break;
                            }
                            try {
                                pd.setVersion(entrypoint.getElementsByTagName(
                                        "version").
                                              item(0).getFirstChild().getNodeValue());
                            } catch (Exception e) {
                                System.out.println("    <version> tag not Found...");
                            }

                            try {
                                pd.setType(entrypoint.getElementsByTagName("type").
                                           item(0).getFirstChild().getNodeValue());
                            } catch (Exception e) {
                                System.out.println(
                                        " Invalid Discriptor: <type> tag not found");

                                break;
                            }

                            try {
                                pd.setMainClass(entrypoint.getElementsByTagName("class").
                                                item(0).getFirstChild().
                                                getNodeValue());
                            } catch (Exception e) {
                                System.out.println(
                                        "    Invalid Discriptor: <class> tag not found");
                                break;
                            }
                            try {

                                pd.setIcon(this.getIcon(jars[i], entrypoint.getElementsByTagName("icon").
                                           item(0).getFirstChild().getNodeValue()));
                            } catch (Exception e) {
                                System.out.println("    <icon> tag not Found...");
                            }

                            System.out.println("    ID:" + pd.getId());
                            System.out.println("    Name:" + pd.getName());
                            System.out.println("    Version:" + pd.getVersion());
                            System.out.println("    Type:" + pd.getType());
                            System.out.println("    Class:" + pd.getMainClass());
                            System.out.println("    Icon:" + pd.getIcon());

                            System.out.println("");

                            registry.registerDescriptor(pd.getId(), pd);
                        }

                } else {
                    System.out.println(jars[i] + " does not contain descriptor.xml ");
                }
            }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     *Returns a Dom Document object of descriptor.xml
     *null if it does not exist.
     */
    private Document getPluginDescriptorDocument(File file) {

        JarFile jarFile = null;
        ZipEntry discriptor = null;
        Document doc = null;
        try {

            jarFile = new JarFile(file);
            discriptor = jarFile.getEntry("descriptor.xml");

            if (discriptor != null) {
                InputStream is = jarFile.getInputStream(discriptor);
                DocumentBuilderFactory dbf = DocumentBuilderFactory.
                                             newInstance();
                DocumentBuilder db = null;
                try {
                    db = dbf.newDocumentBuilder();
                    doc = db.parse(is);

                } catch (ParserConfigurationException ex1) {
                } catch (IOException ex) {
                } catch (SAXException ex) {}
            }

            return doc;

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (jarFile != null) {
                try {
                    jarFile.close();
                } catch (IOException ioe) {}
            }
        }
        return null;
    }

    private ImageIcon getIcon(File file, String name) {
        JarFile jarFile = null;
        ZipEntry icon = null;
        ImageIcon doc = null;
        byte[] buffer = null;
        try {

            jarFile = new JarFile(file);
           icon = jarFile.getEntry(name);
           InputStream is = jarFile.getInputStream(icon);

           buffer=new byte[is.available()];
           is.read(buffer);

           doc= new ImageIcon(buffer);
           is.close();
           return doc;
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (jarFile != null) {
                try {
                    jarFile.close();
                } catch (IOException ioe) {}
            }
        }
        return null;
    }

    class pluginFileFilter implements java.io.FilenameFilter {
        public boolean accept(File dir, String filename) {
            if (filename.endsWith(".jar")) {
                return true;
            }
            return false;
        }
    }


    public static PluginManager getInstance() {
        if (instance == null) {
            return instance = new PluginManager();
        }
        return instance;
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一区二区三区在线观看| 五月激情六月综合| 欧美经典三级视频一区二区三区| 久久久一区二区三区捆绑**| 欧美视频一区在线| 欧美一区二区网站| 精品久久久久久久久久久久久久久| 欧美日韩不卡一区二区| 欧美日韩一区在线| 欧美精品免费视频| 欧美精品久久天天躁| 精品99一区二区| 国产精品美女一区二区在线观看| 亚洲欧洲制服丝袜| 亚洲gay无套男同| 狠狠色丁香婷婷综合久久片| 91欧美一区二区| 久久久精品蜜桃| 亚洲成a人片在线不卡一二三区| 91精品国产欧美一区二区18 | 专区另类欧美日韩| 亚洲国产精品久久一线不卡| 狠狠色狠狠色综合系列| 91亚洲国产成人精品一区二三 | 亚洲猫色日本管| 久久电影网电视剧免费观看| 色女孩综合影院| 中文字幕一区视频| 美女国产一区二区| 国产清纯白嫩初高生在线观看91 | 欧美一区二区视频在线观看| 日韩一二三区视频| 国产精品嫩草影院av蜜臀| 久久精品国产亚洲高清剧情介绍 | 精品少妇一区二区三区在线视频 | 亚洲美女视频一区| 国产精品一区二区在线观看不卡| 精品婷婷伊人一区三区三| 亚洲视频一区二区免费在线观看| 麻豆精品在线视频| 欧美电影影音先锋| 丝袜亚洲另类欧美| 欧美日韩精品欧美日韩精品一 | 日韩和欧美一区二区三区| 色综合久久天天| 亚洲欧美日韩国产一区二区三区 | 国产精品福利电影一区二区三区四区| 美女视频黄频大全不卡视频在线播放| 91激情五月电影| 亚洲大片在线观看| 日韩一区二区免费电影| 久久99久久精品| 国产午夜精品久久久久久免费视| 亚洲国产精品精华液网站| 国产91丝袜在线播放0| 欧美激情一区三区| 色94色欧美sute亚洲线路一久 | 91女厕偷拍女厕偷拍高清| 亚洲精品乱码久久久久久久久 | 亚洲免费毛片网站| 777奇米成人网| 成人免费毛片a| 亚洲国产色一区| 国产亚洲精品bt天堂精选| 91在线视频播放| 麻豆国产欧美一区二区三区| 国产精品成人网| 久久久久久免费| 欧美日本在线一区| 国产一区二区91| 婷婷六月综合网| 国产精品不卡一区| 欧美精品一区二区蜜臀亚洲| www.欧美.com| 日韩综合小视频| 亚洲欧美经典视频| 精品国产精品网麻豆系列| 欧美性生活久久| 成人午夜电影久久影院| 国产一区欧美一区| 五月天亚洲婷婷| 视频一区视频二区中文字幕| 一区二区三区在线视频观看| 日韩激情中文字幕| 夜夜嗨av一区二区三区中文字幕 | 日韩 欧美一区二区三区| 国产精品久久久久久久久搜平片 | 不卡的电影网站| 99精品视频一区| 成人av资源网站| 成人app网站| 99久久精品免费| 国产乱理伦片在线观看夜一区| 成人中文字幕电影| 偷拍亚洲欧洲综合| 亚洲日本在线天堂| 一区二区三区在线免费视频| 亚洲柠檬福利资源导航| 亚洲成人777| 久久成人麻豆午夜电影| 国产麻豆9l精品三级站| 成人网在线播放| 欧美色综合网站| 欧美精品久久99久久在免费线| 精品国产网站在线观看| 国产精品看片你懂得 | 日韩—二三区免费观看av| 欧美日韩国产一级片| 欧美一区二区三区不卡| 欧美国产97人人爽人人喊| 亚洲影视在线播放| 久草精品在线观看| av一区二区三区黑人| 91精品欧美综合在线观看最新| 国产精品污污网站在线观看| 午夜激情久久久| 色吧成人激情小说| 国产欧美一区二区精品婷婷 | 国产高清一区日本| 成人免费福利片| 日韩一区二区视频| 一区二区在线观看av| 激情图区综合网| 国产麻豆视频精品| 不卡一区二区在线| 欧美一三区三区四区免费在线看| 国产女人aaa级久久久级| 日日夜夜免费精品| 欧美日韩精品一二三区| 一区二区三区免费看视频| 国产成人精品在线看| 国产三级精品三级| 国产久卡久卡久卡久卡视频精品| 日韩免费高清av| 韩国精品一区二区| 久久久久久综合| 成人av影视在线观看| 亚洲欧美国产毛片在线| 色婷婷综合久久久中文一区二区| 中文字幕国产一区| 91免费在线视频观看| 一区二区三区在线观看视频| 色狠狠一区二区| 午夜视频一区在线观看| 日韩精品在线看片z| 国产一区二区伦理片| 欧美激情综合网| 欧美中文字幕一区二区三区亚洲| 午夜精品爽啪视频| 国产色一区二区| 国产成人精品三级麻豆| 国产亚洲欧美日韩日本| 色老头久久综合| 国内精品自线一区二区三区视频| 久久久久99精品国产片| 色网综合在线观看| 久草中文综合在线| 国产精品国产三级国产普通话三级 | 中文字幕一区二区三区不卡| 精品视频123区在线观看| 国产精品一区二区三区乱码| 亚洲国产欧美在线人成| 国产女人水真多18毛片18精品视频| 精品视频资源站| 97精品久久久久中文字幕| 激情另类小说区图片区视频区| 亚洲精品乱码久久久久久黑人| 久久综合九色综合欧美98| 欧美高清视频不卡网| 91亚洲精华国产精华精华液| 国产精品自在欧美一区| 麻豆国产精品官网| 青青草国产精品97视觉盛宴| 亚洲激情中文1区| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美午夜一区二区三区| 国模套图日韩精品一区二区| 一区二区在线看| 中文字幕一区二区三区在线播放| 日韩欧美色综合网站| 91精品国产免费| 精品国产一区二区在线观看| 日韩一区二区电影| 久久这里只有精品视频网| 欧美日韩国产首页| 日韩视频一区二区在线观看| 日韩午夜三级在线| 国产午夜亚洲精品不卡| 国产日产精品1区| 17c精品麻豆一区二区免费| 国产精品天美传媒| 一区二区三区av电影| 美女国产一区二区| 91香蕉视频污| 日韩亚洲欧美在线| 国产日产欧美一区| 日韩一区欧美小说| 久久99精品久久久久婷婷| 成人av第一页| 久久久综合精品|