From 9861ddc8e79bed4d343a7405ac6b553ec42f1ee5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yann=20C=C3=A9bron?= Date: Fri, 4 Apr 2014 09:34:23 +0200 Subject: [PATCH] DevKit: add Extensions#getEpPrefix --- plugins/devkit/src/dom/Extensions.java | 11 ++++++++--- .../src/dom/impl/ExtensionDomExtender.java | 16 +++++----------- plugins/devkit/src/dom/impl/ExtensionsImpl.java | 10 +++++++++- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/plugins/devkit/src/dom/Extensions.java b/plugins/devkit/src/dom/Extensions.java index ebf9ef53df82..f07357e56fe4 100644 --- a/plugins/devkit/src/dom/Extensions.java +++ b/plugins/devkit/src/dom/Extensions.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,19 +26,24 @@ import org.jetbrains.idea.devkit.dom.impl.ExtensionNsConverter; import java.util.List; public interface Extensions extends DomElement { + @NotNull @Attribute("defaultExtensionNs") - @Convert(value=ExtensionNsConverter.class, soft=true) + @Convert(value = ExtensionNsConverter.class, soft = true) @Stubbed GenericAttributeValue getDefaultExtensionNs(); @NotNull - @Convert(value=ExtensionNsConverter.class, soft=true) + @Convert(value = ExtensionNsConverter.class, soft = true) @Stubbed GenericAttributeValue getXmlns(); List getExtensions(); + Extension addExtension(); Extension addExtension(String name); + + @NotNull + String getEpPrefix(); } diff --git a/plugins/devkit/src/dom/impl/ExtensionDomExtender.java b/plugins/devkit/src/dom/impl/ExtensionDomExtender.java index cbd621528699..7fdfdeecc632 100644 --- a/plugins/devkit/src/dom/impl/ExtensionDomExtender.java +++ b/plugins/devkit/src/dom/impl/ExtensionDomExtender.java @@ -136,23 +136,17 @@ public class ExtensionDomExtender extends DomExtender { if (ideaPlugin == null) return; - String prefix = getEpPrefix(extensions); + String epPrefix = extensions.getEpPrefix(); for (IdeaPlugin plugin : getVisiblePlugins(ideaPlugin)) { final String pluginId = StringUtil.notNullize(plugin.getPluginId(), "com.intellij"); for (ExtensionPoints points : plugin.getExtensionPoints()) { for (ExtensionPoint point : points.getExtensionPoints()) { - registerExtensionPoint(registrar, point, prefix, pluginId); + registerExtensionPoint(registrar, point, epPrefix, pluginId); } } } } - private static String getEpPrefix(Extensions extensions) { - String prefix = extensions.getDefaultExtensionNs().getStringValue(); - if (prefix == null) prefix = extensions.getXmlns().getStringValue(); - return prefix != null ? prefix + "." : ""; - } - private static Set getVisiblePlugins(IdeaPlugin ideaPlugin) { Set result = ContainerUtil.newHashSet(); MultiMap byId = getPluginMap(ideaPlugin.getManager().getProject()); @@ -184,15 +178,15 @@ public class ExtensionDomExtender extends DomExtender { private static void registerExtensionPoint(final DomExtensionsRegistrar registrar, final ExtensionPoint extensionPoint, - String prefix, + String epPrefix, @Nullable String pluginId) { String epName = extensionPoint.getName().getStringValue(); if (epName != null && StringUtil.isNotEmpty(pluginId)) epName = pluginId + "." + epName; if (epName == null) epName = extensionPoint.getQualifiedName().getStringValue(); if (epName == null) return; - if (!epName.startsWith(prefix)) return; + if (!epName.startsWith(epPrefix)) return; - final DomExtension domExtension = registrar.registerCollectionChildrenExtension(new XmlName(epName.substring(prefix.length())), Extension.class); + final DomExtension domExtension = registrar.registerCollectionChildrenExtension(new XmlName(epName.substring(epPrefix.length())), Extension.class); domExtension.setDeclaringElement(extensionPoint); domExtension.addExtender(EXTENSION_EXTENDER); } diff --git a/plugins/devkit/src/dom/impl/ExtensionsImpl.java b/plugins/devkit/src/dom/impl/ExtensionsImpl.java index 2de064052e0b..e52cdca34c2f 100644 --- a/plugins/devkit/src/dom/impl/ExtensionsImpl.java +++ b/plugins/devkit/src/dom/impl/ExtensionsImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2012 JetBrains s.r.o. + * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package org.jetbrains.idea.devkit.dom.impl; import com.intellij.psi.xml.XmlTag; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.devkit.dom.Extension; import org.jetbrains.idea.devkit.dom.Extensions; @@ -32,4 +33,11 @@ public abstract class ExtensionsImpl implements Extensions { tag.setName(name.substring(getDefaultExtensionNs().getStringValue().length() + 1)); return extension; } + + @NotNull + public String getEpPrefix() { + String prefix = getDefaultExtensionNs().getStringValue(); + if (prefix == null) prefix = getXmlns().getStringValue(); + return prefix != null ? prefix + "." : ""; + } }