[devkit] IdeaVersion: "since|until-build" -> BuildNumber

GitOrigin-RevId: 7cdbfa441780467c60b398c62ef39dc283376893
This commit is contained in:
Yann Cébron
2019-04-28 19:23:35 +03:00
committed by intellij-monorepo-bot
parent 2b18c7283f
commit 2526c4eebf
4 changed files with 37 additions and 25 deletions
@@ -160,7 +160,7 @@ inspections.plugin.xml.ep.both.name.and.qualifiedName=<extensionPoint> must not
inspections.plugin.xml.ep.missing.name.and.qualifiedName=<extensionPoint> must specify either 'name' or 'qualifiedName' attribute
inspections.plugin.xml.use.defaultExtensionNs=Use defaultExtensionNs instead
inspections.plugin.xml.specify.defaultExtensionNs.explicitly=Specify defaultExtensionNs="{0}" explicitly
inspections.plugin.xml.until.since.build.invalid=<html>Invalid build number ''{0}'' (<a href="http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html">Documentation</a>)</html>
inspections.plugin.xml.invalid.build.number=<html>Invalid build number ''{0}'' (<a href="http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html">Documentation</a>)</html>
inspections.plugin.xml.until.build.use.asterisk.instead.of.big.number=Don''t use ''{0}'' in ''until-build'', use ''*'' instead
inspections.plugin.xml.until.build.misleading.plain.number=Plain numbers in ''until-build'' attribute may be misleading. ''{0}'' means the same as ''{0}.0'', so the plugin won''t be compatible with {0}.* builds. It''s better to specify ''{1}'' instead.
inspections.plugin.xml.until.build.must.be.greater.than.since.build="until-build" must be greater than "since-build"
@@ -15,22 +15,24 @@
*/
package org.jetbrains.idea.devkit.dom;
import com.intellij.util.xml.DomElement;
import com.intellij.util.xml.GenericAttributeValue;
import com.intellij.util.xml.Required;
import com.intellij.util.xml.Stubbed;
import com.intellij.openapi.util.BuildNumber;
import com.intellij.util.xml.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.devkit.DevKitBundle;
public interface IdeaVersion extends DomElement {
@NotNull
@Required
@Stubbed
GenericAttributeValue<String> getSinceBuild();
@Convert(BuildNumberConverter.class)
GenericAttributeValue<BuildNumber> getSinceBuild();
@NotNull
@Stubbed
GenericAttributeValue<String> getUntilBuild();
@Convert(BuildNumberConverter.class)
GenericAttributeValue<BuildNumber> getUntilBuild();
/**
@@ -47,4 +49,26 @@ public interface IdeaVersion extends DomElement {
@NotNull
@Deprecated
GenericAttributeValue<String> getMax();
class BuildNumberConverter extends Converter<BuildNumber> {
@Nullable
@Override
public BuildNumber fromString(@Nullable String s, ConvertContext context) {
return s == null ? null : BuildNumber.fromStringOrNull(s);
}
@Nullable
@Override
public String toString(@Nullable BuildNumber number, ConvertContext context) {
return number == null ? null : number.asString();
}
@Nullable
@Override
public String getErrorMessage(@Nullable String s, ConvertContext context) {
return DevKitBundle.message("inspections.plugin.xml.invalid.build.number", s);
}
}
}
@@ -476,15 +476,15 @@ public class PluginXmlDomInspection extends BasicDomElementsInspection<IdeaPlugi
highlightAttributeNotUsedAnymore(ideaVersion.getMax(), holder);
highlightUntilBuild(ideaVersion, holder);
GenericAttributeValue<String> sinceBuild = ideaVersion.getSinceBuild();
GenericAttributeValue<String> untilBuild = ideaVersion.getUntilBuild();
GenericAttributeValue<BuildNumber> sinceBuild = ideaVersion.getSinceBuild();
GenericAttributeValue<BuildNumber> untilBuild = ideaVersion.getUntilBuild();
if (!DomUtil.hasXml(sinceBuild) &&
!DomUtil.hasXml(untilBuild)) {
return;
}
BuildNumber sinceBuildNumber = parseBuildNumber(sinceBuild, holder);
BuildNumber untilBuildNumber = parseBuildNumber(untilBuild, holder);
BuildNumber sinceBuildNumber = sinceBuild.getValue();
BuildNumber untilBuildNumber = untilBuild.getValue();
if (sinceBuildNumber == null || untilBuildNumber == null) return;
int compare = Comparing.compare(sinceBuildNumber, untilBuildNumber);
@@ -493,18 +493,6 @@ public class PluginXmlDomInspection extends BasicDomElementsInspection<IdeaPlugi
}
}
@Nullable
private static BuildNumber parseBuildNumber(GenericAttributeValue<String> build,
DomElementAnnotationHolder holder) {
try {
return BuildNumber.fromString(build.getStringValue());
}
catch (RuntimeException e) {
holder.createProblem(build, DevKitBundle.message("inspections.plugin.xml.until.since.build.invalid", build.getStringValue()));
return null;
}
}
private static void highlightUntilBuild(IdeaVersion ideaVersion, DomElementAnnotationHolder holder) {
String untilBuild = ideaVersion.getUntilBuild().getStringValue();
if (untilBuild != null && isStarSupported(ideaVersion.getSinceBuild().getStringValue())) {
@@ -120,8 +120,8 @@ class MissingRecentApiInspection : LocalInspectionTool() {
private fun getSinceUntilRange(pluginXml: XmlFile): SinceUntilRange? {
val ideaPlugin = DescriptorUtil.getIdeaPlugin(pluginXml) ?: return null
val ideaVersion = ideaPlugin.rootElement.ideaVersion
val sinceBuild = ideaVersion.sinceBuild.stringValue.orEmpty().let { BuildNumber.fromStringOrNull(it) }
val untilBuild = ideaVersion.untilBuild.stringValue.orEmpty().let { BuildNumber.fromStringOrNull(it) }
val sinceBuild = ideaVersion.sinceBuild.value
val untilBuild = ideaVersion.untilBuild.value
return SinceUntilRange(sinceBuild, untilBuild)
}