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

📄 pluginregistryimpl.java

📁 java插件系统源码
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                            }
                        }
                    }
                }
            }
            for (Iterator it = registeredExtensions.values().iterator();
                    it.hasNext();) {
                Extension ext = (Extension) it.next();
                registryChangeData.putRemovedExtension(ext.getUniqueId(),
                        makeUniqueId(ext.getExtendedPluginId(),
                                ext.getExtendedPointId()));
            }
            // fire event
            fireEvent(registryChangeData);
        }
        return result;
    }
    
    private void unregisterPlugin(final PluginDescriptorImpl descr) {
        registeredPlugins.remove(descr.getId());
        registrationReport.add(new ReportItemImpl(
                ReportItem.SEVERITY_INFO, null,
                ReportItem.ERROR_NO_ERROR,
                "pluginUnregistered", descr.getUniqueId())); //$NON-NLS-1$
    }
    
    private void unregisterFragment(final PluginFragmentImpl fragment) {
        PluginDescriptorImpl descr =
            (PluginDescriptorImpl) registeredPlugins.get(
                    fragment.getPluginId());
        if (descr != null) {
            descr.unregisterFragment(fragment);
        }
        registeredFragments.remove(fragment.getId());
        registrationReport.add(new ReportItemImpl(
                ReportItem.SEVERITY_INFO, null,
                ReportItem.ERROR_NO_ERROR,
                "fragmentUnregistered", fragment.getUniqueId())); //$NON-NLS-1$
    }

    private void dump() {
        if (!log.isDebugEnabled()) {
            return;
        }
        StringBuffer buf = new StringBuffer();
        buf.append("PLUG-IN REGISTRY DUMP:\r\n") //$NON-NLS-1$
            .append("-------------- DUMP BEGIN -----------------\r\n") //$NON-NLS-1$
            .append("\tPlug-ins: " + registeredPlugins.size() //$NON-NLS-1$
                    + "\r\n"); //$NON-NLS-1$
        for (Iterator it = registeredPlugins.values().iterator();
                it.hasNext();) {
            buf.append("\t\t") //$NON-NLS-1$
                .append(it.next())
                .append("\r\n"); //$NON-NLS-1$
        }
        buf.append("\tFragments: " + registeredFragments.size() //$NON-NLS-1$
                + "\r\n"); //$NON-NLS-1$
        for (Iterator it = registeredFragments.values().iterator();
                it.hasNext();) {
            buf.append("\t\t") //$NON-NLS-1$
                .append(it.next())
                .append("\r\n"); //$NON-NLS-1$
        }
        buf.append("Memory TOTAL/FREE/MAX: ") //$NON-NLS-1$
            .append(Runtime.getRuntime().totalMemory())
            .append("/") //$NON-NLS-1$
            .append(Runtime.getRuntime().freeMemory())
            .append("/") //$NON-NLS-1$
            .append(Runtime.getRuntime().maxMemory())
            .append("\r\n"); //$NON-NLS-1$
        buf.append("-------------- DUMP END -----------------\r\n"); //$NON-NLS-1$
        log.debug(buf.toString());
    }
    
    /**
     * @see org.java.plugin.registry.PluginRegistry#getExtensionPoint(
     *      java.lang.String, java.lang.String)
     */
    public ExtensionPoint getExtensionPoint(final String pluginId,
            final String pointId) {
        PluginDescriptor descriptor =
            (PluginDescriptor) registeredPlugins.get(pluginId);
        if (descriptor == null) {
            throw new IllegalArgumentException("unknown plug-in ID " //$NON-NLS-1$
                + pluginId + " provided for extension point " + pointId); //$NON-NLS-1$
        }
        for (Iterator it = descriptor.getExtensionPoints().iterator();
                it.hasNext();) {
            ExtensionPoint point = (ExtensionPoint) it.next();
            if (point.getId().equals(pointId)) {
                if (point.isValid()) {
                    return point;
                }
                log.warn("extension point " + point.getUniqueId() //$NON-NLS-1$
                        + " is invalid and ignored by registry"); //$NON-NLS-1$
                break;
            }
        }
        throw new IllegalArgumentException("unknown extension point ID - " //$NON-NLS-1$
                + makeUniqueId(pluginId, pointId));
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#getExtensionPoint(java.lang.String)
     */
    public ExtensionPoint getExtensionPoint(final String uniqueId) {
        return getExtensionPoint(extractPluginId(uniqueId),
                extractId(uniqueId));
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#isExtensionPointAvailable(
     *      java.lang.String, java.lang.String)
     */
    public boolean isExtensionPointAvailable(final String pluginId,
            final String pointId) {
        PluginDescriptor descriptor =
            (PluginDescriptor) registeredPlugins.get(pluginId);
        if (descriptor == null) {
            return false;
        }
        for (Iterator it = descriptor.getExtensionPoints().iterator();
                it.hasNext();) {
            ExtensionPoint point = (ExtensionPoint) it.next();
            if (point.getId().equals(pointId)) {
                return point.isValid();
            }
        }
        return false;
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#isExtensionPointAvailable(
     *      java.lang.String)
     */
    public boolean isExtensionPointAvailable(final String uniqueId) {
        return isExtensionPointAvailable(extractPluginId(uniqueId),
                extractId(uniqueId));
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#getPluginDescriptor(java.lang.String)
     */
    public PluginDescriptor getPluginDescriptor(final String pluginId) {
        PluginDescriptor result =
            (PluginDescriptor) registeredPlugins.get(pluginId);
        if (result == null) {
            throw new IllegalArgumentException("unknown plug-in ID - " //$NON-NLS-1$
                    + pluginId);
        }
        return result;
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#isPluginDescriptorAvailable(java.lang.String)
     */
    public boolean isPluginDescriptorAvailable(final String pluginId) {
        return registeredPlugins.containsKey(pluginId);
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#getPluginDescriptors()
     */
    public Collection getPluginDescriptors() {
        return registeredPlugins.isEmpty() ? Collections.EMPTY_LIST
                : Collections.unmodifiableCollection(
                        registeredPlugins.values());
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#getPluginFragments()
     */
    public Collection getPluginFragments() {
        return registeredFragments.isEmpty() ? Collections.EMPTY_LIST
                : Collections.unmodifiableCollection(
                        registeredFragments.values());
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#getDependingPlugins(
     *      org.java.plugin.registry.PluginDescriptor)
     */
    public Collection getDependingPlugins(final PluginDescriptor descr) {
        Map result = new HashMap();
        for (Iterator it = getPluginDescriptors().iterator();
                it.hasNext();) {
            PluginDescriptor dependedDescr = (PluginDescriptor) it.next();
            if (dependedDescr.getId().equals(descr.getId())) {
                continue;
            }
            for (Iterator it2 = dependedDescr.getPrerequisites().iterator();
                    it2.hasNext();) {
                PluginPrerequisite pre = (PluginPrerequisite) it2.next();
                if (!pre.getPluginId().equals(descr.getId())
                        || !pre.matches()) {
                    continue;
                }
                if (!result.containsKey(dependedDescr.getId())) {
                    result.put(dependedDescr.getId(), dependedDescr);
                    for (Iterator it3 =
                            getDependingPlugins(dependedDescr).iterator();
                            it3.hasNext();) {
                        PluginDescriptor descriptor =
                            (PluginDescriptor) it3.next();
                        if (!result.containsKey(descriptor.getId())) {
                            result.put(descriptor.getId(), descriptor);
                        }
                    }
                }
                break;
            }
        }
        return result.values();
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#checkIntegrity(
     *      org.java.plugin.PathResolver)
     */
    public IntegrityCheckReport checkIntegrity(
            final PathResolver pathResolver) {
        return checkIntegrity(pathResolver, false);
    }
    
    /**
     * @see org.java.plugin.registry.PluginRegistry#checkIntegrity(
     *      org.java.plugin.PathResolver, boolean)
     */
    public IntegrityCheckReport checkIntegrity(final PathResolver pathResolver,
            final boolean includeRegistrationReport) {
        IntegrityChecker intergityCheckReport = new IntegrityChecker(this,
                includeRegistrationReport ? registrationReport
                        : Collections.EMPTY_LIST);
        intergityCheckReport.doCheck(pathResolver);
        return intergityCheckReport;
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#getRegistrationReport()
     */
    public IntegrityCheckReport getRegistrationReport() {
        return new IntegrityChecker(this, registrationReport);
    }
    
    /**
     * @see org.java.plugin.registry.PluginRegistry#makeUniqueId(
     *      java.lang.String, java.lang.String)
     */
    public String makeUniqueId(final String pluginId, final String id) {
        return pluginId + UNIQUE_SEPARATOR + id;
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#makeUniqueId(
     *      java.lang.String, org.java.plugin.registry.Version)
     */
    public String makeUniqueId(final String pluginId, final Version version) {
        return pluginId + UNIQUE_SEPARATOR + version;
    }
    
    /**
     * @see org.java.plugin.registry.PluginRegistry#extractPluginId(java.lang.String)
     */
    public String extractPluginId(final String uniqueId) {
        int p = uniqueId.indexOf(UNIQUE_SEPARATOR);
        if ((p <= 0) || (p >= (uniqueId.length() - 1))) {
            throw new IllegalArgumentException("invalid unique ID - " //$NON-NLS-1$
                    + uniqueId);
        }
        return uniqueId.substring(0, p);
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#extractId(java.lang.String)
     */
    public String extractId(final String uniqueId) {
        int p = uniqueId.indexOf(UNIQUE_SEPARATOR);
        if ((p <= 0) || (p >= (uniqueId.length() - 1))) {
            throw new IllegalArgumentException("invalid unique ID - " //$NON-NLS-1$
                    + uniqueId);
        }
        return uniqueId.substring(p + 1);
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#extractVersion(java.lang.String)
     */
    public Version extractVersion(final String uniqueId) {
        int p = uniqueId.indexOf(UNIQUE_SEPARATOR);
        if ((p <= 0) || (p >= (uniqueId.length() - 1))) {
            throw new IllegalArgumentException("invalid unique ID - " //$NON-NLS-1$
                    + uniqueId);
        }
        return Version.parse(uniqueId.substring(p + 1));
    }

    /**
     * @see org.java.plugin.registry.PluginRegistry#registerListener(
     *      org.java.plugin.registry.PluginRegistry.RegistryChangeListener)
     */
    public void registerListener(final RegistryChangeListener listener) {
        if (listeners.contains(listener)) {
            throw new IllegalArgumentException("listener " + listener //$NON-NLS-1$
                    + " already registered"); //$NON-NLS-1$
        }

⌨️ 快捷键说明

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