📄 pluginregistryimpl.java
字号:
}
}
}
}
}
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 + -