mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-CR-60663 support placeholders in product-descriptor
GitOrigin-RevId: b14320d4c5f46b10e5bc3081920838175ae7e58b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
52380ad173
commit
f9c36ed11f
@@ -190,7 +190,8 @@ inspections.plugin.xml.do.not.use.template.text=Do not use template text ''{0}''
|
||||
inspections.plugin.xml.must.not.contain.template.text=Must not contain template text ''{0}''
|
||||
inspections.plugin.xml.value.exceeds.max.length=Value exceeds maximum length {0}
|
||||
inspections.plugin.xml.value.must.have.minimum.length=Value must have minimum length of {0}
|
||||
inspections.plugin.xml.product.descriptor.invalid.date=Date must be in YYYYMMDD format
|
||||
inspections.plugin.xml.product.descriptor.invalid.date=Date must be a YYYYMMDD integer, or a placeholder (e.g. __DATE__)
|
||||
inspections.plugin.xml.product.descriptor.invalid.version=Version must be an integer, or a placeholder (e.g. __VERSION__)
|
||||
inspections.plugin.xml.no.plugin.icon.svg.file=<html>Plugin should provide ''{0}'' (<a href="https://www.jetbrains.org/intellij/sdk/docs/basics/plugin_structure/plugin_icon_file.html">Documentation</a>)</html>
|
||||
inspections.plugin.xml.component.interface.class.redundant=Redundant tag 'interfaceClass'
|
||||
inspections.plugin.xml.service.interface.class.redundant=Redundant attribute 'serviceInterface'
|
||||
|
||||
@@ -21,7 +21,7 @@ public interface ProductDescriptor extends DomElement {
|
||||
|
||||
@NotNull
|
||||
@Required
|
||||
GenericAttributeValue<Integer> getReleaseVersion();
|
||||
GenericAttributeValue<String> getReleaseVersion();
|
||||
|
||||
@Nullable
|
||||
GenericAttributeValue<Boolean> getOptional();
|
||||
|
||||
@@ -805,17 +805,31 @@ public final class PluginXmlDomInspection extends DevKitPluginXmlInspectionBase
|
||||
checkMaxLength(productDescriptor.getCode(), 15, holder);
|
||||
|
||||
String releaseDate = productDescriptor.getReleaseDate().getValue();
|
||||
if (releaseDate == null) return;
|
||||
if (releaseDate != null && !isPlaceHolder(releaseDate)) {
|
||||
try {
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.US);
|
||||
dateFormat.setLenient(false);
|
||||
dateFormat.parse(releaseDate);
|
||||
}
|
||||
catch (ParseException e) {
|
||||
holder.createProblem(productDescriptor.getReleaseDate(),
|
||||
DevKitBundle.message("inspections.plugin.xml.product.descriptor.invalid.date"));
|
||||
}
|
||||
}
|
||||
String version = productDescriptor.getReleaseVersion().getValue();
|
||||
if (version != null && !isPlaceHolder(version)) {
|
||||
try {
|
||||
Integer.parseInt(version);
|
||||
}
|
||||
catch (NumberFormatException e) {
|
||||
holder.createProblem(productDescriptor.getReleaseVersion(),
|
||||
DevKitBundle.message("inspections.plugin.xml.product.descriptor.invalid.version"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.US);
|
||||
dateFormat.setLenient(false);
|
||||
dateFormat.parse(releaseDate);
|
||||
}
|
||||
catch (ParseException e) {
|
||||
holder.createProblem(productDescriptor.getReleaseDate(),
|
||||
DevKitBundle.message("inspections.plugin.xml.product.descriptor.invalid.date"));
|
||||
}
|
||||
private static boolean isPlaceHolder(@Nullable String value) {
|
||||
return value != null && value.length() > 4 && value.startsWith("__") && value.endsWith("__");
|
||||
}
|
||||
|
||||
private static void annotateAddToGroup(AddToGroup addToGroup, DomElementAnnotationHolder holder) {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<<error descr="Value must not be empty">version</error>/>
|
||||
|
||||
<product-descriptor code="<error descr="Value exceeds maximum length 15">0123456789012345</error>"
|
||||
release-date="<error descr="Date must be in YYYYMMDD format">99991399</error>"
|
||||
release-version="<error descr="Cannot convert empty string to target class 'java.lang.Integer'"></error>"
|
||||
release-date="<error descr="Date must be a YYYYMMDD integer, or a placeholder (e.g. __DATE__)">99991399</error>"
|
||||
release-version=<error descr="Value must not be empty"><error descr="Version must be an integer, or a placeholder (e.g. __VERSION__)">""</error></error>
|
||||
optional="<error descr="Cannot resolve symbol 'yes'">yes</error>"/>
|
||||
</idea-plugin>
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
<idea-plugin>
|
||||
<id>test</id>
|
||||
<vendor>JetBrains</vendor>
|
||||
<version>1.0</version>
|
||||
<name>some name</name>
|
||||
|
||||
<product-descriptor code="PDD"
|
||||
release-date="__DATE__"
|
||||
release-version="__VERSION__"
|
||||
optional="false"/>
|
||||
</idea-plugin>
|
||||
+4
@@ -728,6 +728,10 @@ public class MyErrorHandler extends ErrorReportSubmitter {}
|
||||
doHighlightingTest("productDescriptor.xml")
|
||||
}
|
||||
|
||||
void testProductDescriptorWithPlaceholders() {
|
||||
doHighlightingTest("productDescriptorWithPlaceholders.xml")
|
||||
}
|
||||
|
||||
void testProductDescriptorInvalid() {
|
||||
doHighlightingTest("productDescriptorInvalid.xml")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user