diff --git a/plugins/devkit/devkit-core/src/inspections/PluginXmlCapitalizationInspection.java b/plugins/devkit/devkit-core/src/inspections/PluginXmlCapitalizationInspection.java
index d585d4feed9e..c7ad5e117f13 100644
--- a/plugins/devkit/devkit-core/src/inspections/PluginXmlCapitalizationInspection.java
+++ b/plugins/devkit/devkit-core/src/inspections/PluginXmlCapitalizationInspection.java
@@ -28,10 +28,7 @@ import com.intellij.xml.util.XmlUtil;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.idea.devkit.dom.Action;
-import org.jetbrains.idea.devkit.dom.ActionOrGroup;
-import org.jetbrains.idea.devkit.dom.Extension;
-import org.jetbrains.idea.devkit.dom.IdeaPlugin;
+import org.jetbrains.idea.devkit.dom.*;
import java.util.List;
import java.util.Set;
@@ -48,11 +45,24 @@ public class PluginXmlCapitalizationInspection extends BasicDomElementsInspectio
if (element instanceof ActionOrGroup) {
checkActionOrGroup((ActionOrGroup)element, holder);
}
+ else if (element instanceof OverrideText) {
+ checkOverrideText((OverrideText)element, holder);
+ }
else if (element instanceof Extension) {
checkExtension((Extension)element, holder);
}
}
+ private static void checkOverrideText(OverrideText overrideText, DomElementAnnotationHolder holder) {
+ if (checkCapitalization(holder, overrideText.getText(), Nls.Capitalization.Title)) return;
+
+ Action action = overrideText.getParentOfType(Action.class, true);
+ assert action != null;
+ final String resourceKey = "action." + action.getId().getStringValue() + "." + overrideText.getPlace().getStringValue() + ".text";
+ checkPropertyCapitalization(holder, overrideText, Nls.Capitalization.Title,
+ resourceKey, true);
+ }
+
private static void checkActionOrGroup(ActionOrGroup actionOrGroup, DomElementAnnotationHolder holder) {
checkActionOrGroupCapitalization(holder, actionOrGroup, ActionOrGroupText.TEXT);
checkActionOrGroupCapitalization(holder, actionOrGroup, ActionOrGroupText.DESCRIPTION);
@@ -90,7 +100,16 @@ public class PluginXmlCapitalizationInspection extends BasicDomElementsInspectio
final Nls.Capitalization capitalization = actionOrGroupText.myCapitalization;
if (checkCapitalization(holder, genericDomValue, capitalization)) return;
- final IdeaPlugin ideaPlugin = DomUtil.getParentOfType(actionOrGroup, IdeaPlugin.class, true);
+ checkPropertyCapitalization(holder, actionOrGroup, capitalization,
+ "action." + actionOrGroup.getId().getStringValue() + actionOrGroupText.mySuffix,
+ actionOrGroupText.myRequired.apply(actionOrGroup));
+ }
+
+ private static void checkPropertyCapitalization(DomElementAnnotationHolder holder,
+ DomElement domElement,
+ Nls.Capitalization capitalization,
+ String resourceKey, boolean required) {
+ final IdeaPlugin ideaPlugin = DomUtil.getParentOfType(domElement, IdeaPlugin.class, true);
if (ideaPlugin == null) return;
final XmlElement resourceBundleTag = ideaPlugin.getResourceBundle().getXmlElement();
@@ -103,15 +122,14 @@ public class PluginXmlCapitalizationInspection extends BasicDomElementsInspectio
final PropertiesFileImpl bundleFile = ObjectUtils.tryCast(bundleReference.resolve(), PropertiesFileImpl.class);
if (bundleFile == null) return;
- final String resourceKey = "action." + actionOrGroup.getId().getStringValue() + actionOrGroupText.mySuffix;
final Property property = ObjectUtils.tryCast(bundleFile.findPropertyByKey(resourceKey), Property.class);
if (property == null) {
- if (actionOrGroupText.myRequired.apply(actionOrGroup)) {
- holder.createProblem(actionOrGroup, "Missing resource bundle key '" + resourceKey + "'");
+ if (required) {
+ holder.createProblem(domElement, "Missing resource bundle key '" + resourceKey + "'");
}
}
else {
- highlightCapitalization(holder, actionOrGroup, property.getValue(), capitalization, property);
+ highlightCapitalization(holder, domElement, property.getValue(), capitalization, property);
}
}
diff --git a/plugins/devkit/devkit-java-tests/testData/inspections/pluginXmlCapitalization/MyBundle.properties b/plugins/devkit/devkit-java-tests/testData/inspections/pluginXmlCapitalization/MyBundle.properties
index d22de128371f..c3740a397f85 100644
--- a/plugins/devkit/devkit-java-tests/testData/inspections/pluginXmlCapitalization/MyBundle.properties
+++ b/plugins/devkit/devkit-java-tests/testData/inspections/pluginXmlCapitalization/MyBundle.properties
@@ -8,3 +8,6 @@ action.BundleActionWrongCasing.description=lower case description
action.BundleGroupWrongCasing.text=group lower case text
action.BundleGroupWrongCasing.description=group lower case description
+
+action.OverrideBundleAction.ViaBundle.text=Action Text Override Via Bundle
+action.OverrideBundleAction.ViaBundleWrongCase.text=Action Text Override Via Bundle lower case
\ No newline at end of file
diff --git a/plugins/devkit/devkit-java-tests/testData/inspections/pluginXmlCapitalization/pluginXmlCapitalization_Action.xml b/plugins/devkit/devkit-java-tests/testData/inspections/pluginXmlCapitalization/pluginXmlCapitalization_Action.xml
index 532fac00b543..adf724fff5f3 100644
--- a/plugins/devkit/devkit-java-tests/testData/inspections/pluginXmlCapitalization/pluginXmlCapitalization_Action.xml
+++ b/plugins/devkit/devkit-java-tests/testData/inspections/pluginXmlCapitalization/pluginXmlCapitalization_Action.xml
@@ -33,5 +33,18 @@
<group id="BundleGroupWrongCasing"/>
+
+
+
+
+
+ lower case"/>
+
+
+
+
+ <override-text place="ViaBundleWrongCase"/>
+ <override-text place="ViaBundleMissingKey"/>
+
\ No newline at end of file