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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? plugindescriptor.java

?? 爬蟲數(shù)據(jù)的改進(jìn),并修正了一些bug
?? JAVA
字號(hào):
/*
 * Copyright (c) 2003 The Nutch Organization. All rights reserved. Use subject
 * to the conditions in http://www.nutch.org/LICENSE.txt.
 */
package net.nutch.plugin;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.logging.Logger;
import net.nutch.util.LogFormatter;
/**
 * The <code>PluginDescriptor</code> provide access to all meta information of
 * a nutch-plugin, as well to the internationalizable resources and the plugin
 * own classloader. There are meta information about <code>Plugin</code>,
 * <code>ExtensionPoint</code> and <code>Extension</code>. To provide
 * access to the meta data of a plugin via a descriptor allow a lazy loading
 * mechanism.
 * 
 * @author joa23
 */
public class PluginDescriptor {
  private String fPluginPath;
  private String fPluginClass = Plugin.class.getName();
  private String fPluginId;
  private String fVersion;
  private String fName;
  private String fProviderName;
  private HashMap fMessages = new HashMap();
  private ArrayList fExtensionPoints = new ArrayList();
  private ArrayList fDependencies = new ArrayList();
  private ArrayList fExportedLibs = new ArrayList();
  private ArrayList fNotExportedLibs = new ArrayList();
  private ArrayList fExtensions = new ArrayList();
  private PluginClassLoader fClassLoader;
  public static final Logger LOG = LogFormatter
    .getLogger(PluginDescriptor.class.getName());
  /**
   * Constructor
   * 
   * @param pId
   * @param pVersion
   * @param pName
   * @param pProviderName
   * @param pPluginclazz
   * @param pPath
   */
  public PluginDescriptor(String pId, String pVersion, String pName,
                          String pProviderName, String pPluginclazz, String pPath) {
    setPath(pPath);
    setPluginId(pId);
    setVersion(pVersion);
    setName(pName);
    setProvidername(pProviderName);

    if (pPluginclazz != null)
      setPluginClass(pPluginclazz);

  }
  /**
   * @param pPath
   */
  private void setPath(String pPath) {
    fPluginPath = pPath;
  }
  /**
   * Returns the name of the plugin.
   * 
   * @return String
   */
  public String getName() {
    return fName;
  }
  /**
   * @param providerName
   */
  private void setProvidername(String providerName) {
    fProviderName = providerName;
  }
  /**
   * @param name
   */
  private void setName(String name) {
    fName = name;
  }
  /**
   * @param version
   */
  private void setVersion(String version) {
    fVersion = version;
  }
  /**
   * Returns the fully qualified name of the class which implements the
   * abstarct <code>Plugin</code> class.
   * 
   * @return the name of this plug-in's runtime class or <code>null</code>.
   */
  public String getPluginClass() {
    return fPluginClass;
  }
  /**
   * Returns the unique identifier of the plug-in or <code>null</code>.
   * 
   * @return String
   */
  public String getPluginId() {
    return fPluginId;
  }
  /**
   * Returns an array of extensions.
   * 
   * @return Exception[]
   */
  public Extension[] getExtensions() {
    return (Extension[]) fExtensions.toArray(new Extension[fExtensions
                                                           .size()]);
  }
  /**
   * Adds a extension.
   * 
   * @param pExtension
   */
  public void addExtension(Extension pExtension) {
    fExtensions.add(pExtension);
  }
  /**
   * Sets the pluginClass.
   * 
   * @param pluginClass
   *            The pluginClass to set
   */
  private void setPluginClass(String pluginClass) {
    fPluginClass = pluginClass;
  }
  /**
   * Sets the plugin Id.
   * 
   * @param pluginId
   *            The pluginId to set
   */
  private void setPluginId(String pluginId) {
    fPluginId = pluginId;
  }
  /**
   * Adds a extension point.
   * 
   * @param extensionPoint
   */
  public void addExtensionPoint(ExtensionPoint extensionPoint) {
    fExtensionPoints.add(extensionPoint);
  }
  /**
   * Returns a array of extension points.
   * 
   * @return ExtensionPoint[]
   */
  public ExtensionPoint[] getExtenstionPoints() {
    return (ExtensionPoint[]) fExtensionPoints
      .toArray(new ExtensionPoint[fExtensionPoints.size()]);
  }
  /**
   * Returns a array of plugin ids.
   * 
   * @return String[]
   */
  public String[] getDependencies() {
    return (String[]) fDependencies
      .toArray(new String[fDependencies.size()]);
  }
  /**
   * Adds a dependency
   * 
   * @param pId
   *            id of the dependent plugin
   */
  public void addDependency(String pId) {
    fDependencies.add(pId);
  }
  /**
   * Adds a exported library with a relative path to the plugin directory.
   * 
   * @param plibPath
   */
  public void addExportedLibRelative(String pLibPath)
    throws MalformedURLException {
    URL url = new File(getPluginPath() + File.separator + pLibPath).toURL();
    fExportedLibs.add(url);
  }
  /**
   * Returns the directory path of the plugin.
   * 
   * @return String
   */
  public String getPluginPath() {
    return fPluginPath;
  }
  /**
   * Returns a array exported librareis as URLs
   * 
   * @return URL[]
   */
  public URL[] getExportedLibUrls() {
    return (URL[]) fExportedLibs.toArray(new URL[0]);
  }
  /**
   * Adds a not exported library with a plugin directory relativ path.
   * 
   * @param pLibPath
   */
  public void addNotExportedLibRelative(String pLibPath)
    throws MalformedURLException {
    URL url = new File(getPluginPath() + File.separator + pLibPath).toURL();
    fNotExportedLibs.add(url);
  }
  /**
   * Returns a array of libraries as URLs that are not exported by the plugin.
   * 
   * @return URL[]
   */
  public URL[] getNotExportedLibUrls() {
    return (URL[]) fNotExportedLibs
      .toArray(new URL[fNotExportedLibs.size()]);
  }
  /**
   * Returns a cached classloader for a plugin. Until classloader creation all
   * needed libraries are collected. A classloader use as first the plugins
   * own libraries and add then all exported libraries of dependend plugins.
   * 
   * @return PluginClassLoader the classloader for the plugin
   */
  public PluginClassLoader getClassLoader() {
    if (fClassLoader != null)
      return fClassLoader;
    ArrayList arrayList = new ArrayList();
    arrayList.addAll(fExportedLibs);
    arrayList.addAll(fNotExportedLibs);
    arrayList.addAll(getDependencyLibs());
    File file = new File(getPluginPath());
    File[] files = file.listFiles();
    try {
      for (int i = 0; i < files.length; i++) {
        File file2 = files[i];
        String path = file2.getAbsolutePath();
        if (file2.getAbsolutePath().endsWith("properties"))
          arrayList.add(file2.getParentFile().toURL());
      }
    } catch (MalformedURLException e) {
      LOG.fine(getPluginId() + " " + e.toString());
    }
    URL[] urls = (URL[]) arrayList.toArray(new URL[arrayList.size()]);
    fClassLoader = new PluginClassLoader(urls, PluginDescriptor.class
                                         .getClassLoader());
    return fClassLoader;
  }
  /**
   * @return Collection
   */
  private ArrayList getDependencyLibs() {
    ArrayList list = new ArrayList();
    collectLibs(list, this);
    return list;
  }
  /**
   * @param list
   */
  private void collectLibs(ArrayList pLibs, PluginDescriptor pDescriptor) {
    String[] pPluginIds = pDescriptor.getDependencies();
    for (int i = 0; i < pPluginIds.length; i++) {
      String id = pPluginIds[i];
      PluginDescriptor descriptor = PluginRepository.getInstance()
        .getPluginDescriptor(id);
      URL[] libs = descriptor.getExportedLibUrls();
      for (int j = 0; j < libs.length; j++) {
        URL url = libs[j];
        pLibs.add(url);
      }
      collectLibs(pLibs, descriptor);
    }
  }
  /**
   * Returns a internationalizabel resource string. The resource bundles could
   * be stored in root directory of a plugin in the well know i18n file name
   * conventions.
   * 
   * @param pKey
   * @param pLocale
   * @return String
   * @throws IOException
   */
  public String getResourceString(String pKey, Locale pLocale)
    throws IOException {
    if (fMessages.containsKey(pLocale.toString())) {
      ResourceBundle bundle = (ResourceBundle) fMessages.get(pLocale
                                                             .toString());
      try {
        return bundle.getString(pKey);
      } catch (MissingResourceException e) {
        return '!' + pKey + '!';
      }
    }
    try {
      ResourceBundle res = ResourceBundle.getBundle("messages", pLocale,
                                                    getClassLoader());
      return res.getString(pKey);
    } catch (MissingResourceException x) {
      return '!' + pKey + '!';
    }
  }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久99久久精品免费看蜜桃| 91麻豆精品视频| 亚洲另类在线制服丝袜| 日韩无一区二区| 91女人视频在线观看| 精品制服美女久久| 亚洲成在人线免费| 国产精品久久国产精麻豆99网站 | 国产成a人亚洲精| 天堂av在线一区| 亚洲国产精品ⅴa在线观看| 欧美色综合久久| 北条麻妃一区二区三区| 久久精品久久综合| 亚洲一区二区三区精品在线| 欧美激情在线一区二区三区| 日韩欧美国产一区二区三区 | 亚洲精品国产一区二区三区四区在线| 欧美成人r级一区二区三区| 欧美视频在线观看一区二区| 91网站视频在线观看| 国产精选一区二区三区| 奇米综合一区二区三区精品视频| 亚洲一区二区在线播放相泽| 亚洲欧美日韩在线播放| 最新欧美精品一区二区三区| 欧美日韩第一区日日骚| 在线观看视频一区| 色猫猫国产区一区二在线视频| 精品亚洲aⅴ乱码一区二区三区| 婷婷久久综合九色国产成人| 亚洲国产精品视频| 九九九久久久精品| 久久久久综合网| 成人a区在线观看| 国产福利精品导航| 国产91富婆露脸刺激对白| 国产一区美女在线| 国产精品一区二区在线观看不卡 | 国产一区亚洲一区| 久久国产三级精品| 久久精品国产秦先生| 日韩va欧美va亚洲va久久| 五月婷婷久久综合| 日韩精品色哟哟| 日本不卡123| 日本最新不卡在线| 日韩在线卡一卡二| 久久99国产精品久久99果冻传媒| 韩国av一区二区| 国产成人精品午夜视频免费 | 日韩免费观看高清完整版| 日韩欧美中文字幕公布| 精品电影一区二区| 国产欧美日韩亚州综合| 国产精品理论在线观看| 一区二区三区四区激情| 亚洲第一综合色| 麻豆国产精品777777在线| 国产一区欧美日韩| av在线播放不卡| 欧美色图12p| 日韩女优电影在线观看| 亚洲国产成人在线| 夜夜嗨av一区二区三区网页 | 蜜臀av一区二区在线免费观看| 国产综合色产在线精品| 波多野结衣亚洲一区| 欧美色图激情小说| 久久久久久久网| 国产日韩欧美a| 国产精品久久二区二区| 亚洲激情成人在线| 日本美女视频一区二区| 丁香婷婷综合五月| 欧美日韩午夜精品| 久久久久国产精品麻豆ai换脸| 综合久久国产九一剧情麻豆| 午夜精品久久久久久久蜜桃app| 国内精品伊人久久久久av一坑| 91一区二区三区在线观看| 欧美日韩二区三区| 国产精品丝袜黑色高跟| 亚洲va天堂va国产va久| 国产一区二区调教| 欧美在线不卡视频| 国产三级欧美三级| 五月天精品一区二区三区| 国产乱码精品一区二区三区忘忧草 | 久久毛片高清国产| 亚洲电影中文字幕在线观看| 激情六月婷婷久久| 欧美伊人久久久久久久久影院| 久久午夜羞羞影院免费观看| 国产精品国产三级国产aⅴ中文| 偷窥国产亚洲免费视频| 成人一区二区视频| 日韩一级欧美一级| 亚洲综合偷拍欧美一区色| 国产剧情一区二区三区| 欧美高清一级片在线| 亚洲欧美视频在线观看| 国产精品99久久久久久久vr| 91精品国产综合久久香蕉的特点| 国产精品看片你懂得| 国产真实乱偷精品视频免| 欧美日韩中文国产| 亚洲美女免费在线| 成人ar影院免费观看视频| 精品噜噜噜噜久久久久久久久试看| 一区二区三区四区高清精品免费观看 | 宅男在线国产精品| 一区二区高清视频在线观看| 国产成人精品三级| 精品国产一区二区三区不卡 | 亚洲午夜电影网| 日韩专区欧美专区| 高清不卡在线观看av| 91精品国产91综合久久蜜臀| 一区视频在线播放| 成人伦理片在线| 久久久久久一级片| 久久99国产精品成人| 欧美一级免费大片| 日本成人在线看| 欧美日韩国产首页| 午夜视频一区在线观看| 欧美亚洲免费在线一区| 一区二区三区中文免费| 色哟哟一区二区三区| 樱桃视频在线观看一区| 日本道精品一区二区三区| 国产精品久久久久久久久免费丝袜| 国产不卡在线一区| 亚洲综合在线免费观看| 91女人视频在线观看| 中文字幕日本不卡| 色综合中文字幕国产| 欧美国产精品中文字幕| 粉嫩av一区二区三区粉嫩 | 日韩欧美一卡二卡| 老司机精品视频导航| 精品国产在天天线2019| 九色porny丨国产精品| 精品国内片67194| 国产福利一区二区| 国产精品久久久久四虎| 91蜜桃在线免费视频| 亚洲精品一二三| 欧美日韩三级一区二区| 免费高清视频精品| 精品欧美乱码久久久久久| 国产乱妇无码大片在线观看| 国产精品丝袜91| 欧美亚洲高清一区| 麻豆91精品91久久久的内涵| 久久久久99精品一区| a4yy欧美一区二区三区| 亚洲成人av免费| 精品久久久久av影院| 国产成人免费高清| 一区二区欧美精品| 欧美成人a∨高清免费观看| 丁香另类激情小说| 亚洲综合在线五月| 欧美精品一区二区三区在线播放| 国产精品一二三| 亚洲综合区在线| 精品久久久久久亚洲综合网 | 婷婷夜色潮精品综合在线| 日韩欧美专区在线| k8久久久一区二区三区| 爽好久久久欧美精品| 久久久精品免费网站| 欧美午夜精品一区二区蜜桃| 久久精品99国产国产精| 亚洲欧美另类图片小说| 欧美一区二区在线播放| 成人免费高清在线| 日韩高清不卡一区二区三区| 欧美国产精品劲爆| 91麻豆精品国产91久久久久| 国产91精品免费| 日本aⅴ免费视频一区二区三区| 久久香蕉国产线看观看99| 91国偷自产一区二区使用方法| 麻豆精品一区二区三区| 亚洲另类在线视频| 欧美精品一区二区蜜臀亚洲| 色欧美片视频在线观看在线视频| 老鸭窝一区二区久久精品| 亚洲欧美另类久久久精品| 精品美女一区二区| 欧美日韩激情一区二区三区| 欧美不卡一区二区三区四区| caoporm超碰国产精品| 精品午夜久久福利影院 | 国内精品国产成人国产三级粉色| 依依成人精品视频| 国产欧美日韩一区二区三区在线观看|