mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
naming conventions: preserve unknown settings
This commit is contained in:
@@ -462,6 +462,35 @@ public class InspectionProfileTest extends LightIdeaTestCase {
|
||||
assertThat(importedProfile.writeScheme()).isEqualTo(mergedElement);
|
||||
}
|
||||
|
||||
public void testKeepUnloadedMergeNamingConventions() throws Exception {
|
||||
String unchanged = "<profile version=\"1.0\">\n" +
|
||||
" <option name=\"myName\" value=\"ToConvert\" />\n" +
|
||||
" <inspection_tool class=\"NewClassNamingConvention\" enabled=\"true\" level=\"WARNING\" enabled_by_default=\"true\">\n" +
|
||||
" <extension name=\"AnnotationNamingConvention\" enabled=\"true\">\n" +
|
||||
" <option name=\"inheritDefaultSettings\" value=\"false\" />\n" +
|
||||
" <option name=\"m_regex\" value=\"[A-Z][A-Za-z\\d]*\" />\n" +
|
||||
" <option name=\"m_minLength\" value=\"8\" />\n" +
|
||||
" <option name=\"m_maxLength\" value=\"66\" />\n" +
|
||||
" </extension>\n" +
|
||||
" <extension name=\"AnnotationNamingConventionUnknown\" enabled=\"true\">\n" +
|
||||
" <option name=\"m_regex\" value=\"[A-Z][A-Za-z\\d]*\" />\n" +
|
||||
" <option name=\"m_minLength\" value=\"8\" />\n" +
|
||||
" <option name=\"m_maxLength\" value=\"66\" />\n" +
|
||||
" </extension>\n" +
|
||||
" <extension name=\"ClassNamingConvention\" enabled=\"true\">\n" +
|
||||
" <option name=\"m_regex\" value=\"[A-Z][A-Za-z\\d]*\" />\n" +
|
||||
" <option name=\"m_minLength\" value=\"8\" />\n" +
|
||||
" <option name=\"m_maxLength\" value=\"66\" />\n" +
|
||||
" </extension>\n" +
|
||||
" </inspection_tool>\n" +
|
||||
"</profile>";
|
||||
final Element allEnabledProfile = JdomKt.loadElement(unchanged);
|
||||
InspectionProfileImpl profile = createProfile(new InspectionProfileImpl("foo"));
|
||||
profile.readExternal(allEnabledProfile);
|
||||
profile.initInspectionTools();
|
||||
assertEquals(unchanged, serialize(profile));
|
||||
}
|
||||
|
||||
public void testMergeMethodNamingConventions() throws Exception {
|
||||
final Element element = JdomKt.loadElement("<profile version=\"1.0\">\n" +
|
||||
" <option name=\"myName\" value=\"" + PROFILE + "\" />\n" +
|
||||
|
||||
+14
-2
@@ -40,6 +40,7 @@ public abstract class AbstractNamingConventionInspection<T extends PsiNameIdenti
|
||||
|
||||
private final Map<String, NamingConvention<T>> myNamingConventions = new LinkedHashMap<>();
|
||||
private final Map<String, NamingConventionBean> myNamingConventionBeans = new LinkedHashMap<>();
|
||||
private final Map<String, Element> myUnloadedElements = new LinkedHashMap<>();
|
||||
private final Set<String> myDisabledShortNames = new HashSet<>();
|
||||
@Nullable private final String myDefaultConventionShortName;
|
||||
|
||||
@@ -88,6 +89,10 @@ public abstract class AbstractNamingConventionInspection<T extends PsiNameIdenti
|
||||
String shortName = extension.getAttributeValue("name");
|
||||
if (shortName == null) continue;
|
||||
NamingConventionBean conventionBean = myNamingConventionBeans.get(shortName);
|
||||
if (conventionBean == null) {
|
||||
myUnloadedElements.put(shortName, extension);
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
XmlSerializer.deserializeInto(conventionBean, extension);
|
||||
conventionBean.initPattern();
|
||||
@@ -104,8 +109,15 @@ public abstract class AbstractNamingConventionInspection<T extends PsiNameIdenti
|
||||
|
||||
@Override
|
||||
public void writeSettings(@NotNull Element node) {
|
||||
for (NamingConvention<T> convention : myNamingConventions.values()) {
|
||||
String shortName = convention.getShortName();
|
||||
Set<String> shortNames = new TreeSet<>(myNamingConventions.keySet());
|
||||
shortNames.addAll(myUnloadedElements.keySet());
|
||||
for (String shortName : shortNames) {
|
||||
NamingConvention<T> convention = myNamingConventions.get(shortName);
|
||||
if (convention == null) {
|
||||
Element element = myUnloadedElements.get(shortName);
|
||||
if (element != null) node.addContent(element.clone());
|
||||
continue;
|
||||
}
|
||||
boolean disabled = myDisabledShortNames.contains(shortName);
|
||||
Element element = new Element("extension")
|
||||
.setAttribute("name", shortName)
|
||||
|
||||
Reference in New Issue
Block a user