diff --git a/platform/lang-impl/src/com/intellij/codeInspection/naming/NamingConventionBean.java b/platform/lang-impl/src/com/intellij/codeInspection/naming/NamingConventionBean.java index 811b9385d696..9cb9404efa63 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/naming/NamingConventionBean.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/naming/NamingConventionBean.java @@ -15,6 +15,8 @@ import java.util.regex.Pattern; /** * @see NamingConventionWithFallbackBean for default fallbacks + * + * When beans have custom fields, ensure to provide {@link #equals(Object)}/{@link #hashCode()} for correct serialization */ public class NamingConventionBean { public String m_regex; diff --git a/platform/lang-impl/src/com/intellij/codeInspection/naming/NamingConventionWithFallbackBean.java b/platform/lang-impl/src/com/intellij/codeInspection/naming/NamingConventionWithFallbackBean.java index ff86d62136ed..a7b919215327 100644 --- a/platform/lang-impl/src/com/intellij/codeInspection/naming/NamingConventionWithFallbackBean.java +++ b/platform/lang-impl/src/com/intellij/codeInspection/naming/NamingConventionWithFallbackBean.java @@ -3,13 +3,12 @@ // found in the LICENSE file. package com.intellij.codeInspection.naming; -import com.intellij.psi.PsiNameIdentifierOwner; import com.intellij.util.ui.UIUtil; import javax.swing.*; import java.awt.*; -public class NamingConventionWithFallbackBean extends NamingConventionBean { +public class NamingConventionWithFallbackBean extends NamingConventionBean { public boolean inheritDefaultSettings = false; public NamingConventionWithFallbackBean(String regex, int minLength, int maxLength, String... predefinedNames) { @@ -20,6 +19,24 @@ public class NamingConventionWithFallbackBean return inheritDefaultSettings; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof NamingConventionWithFallbackBean)) return false; + if (!super.equals(o)) return false; + + NamingConventionWithFallbackBean bean = (NamingConventionWithFallbackBean)o; + + if (inheritDefaultSettings != bean.inheritDefaultSettings) return false; + + return true; + } + + @Override + public int hashCode() { + return 31 * super.hashCode() + (inheritDefaultSettings ? 1 : 0); + } + @Override public JComponent createOptionsPanel() { JPanel panel = new JPanel(new BorderLayout()); diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ConstantNamingConvention.java b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ConstantNamingConvention.java index fae9731899e3..f2271557c588 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ConstantNamingConvention.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/ConstantNamingConvention.java @@ -84,5 +84,22 @@ public class ConstantNamingConvention extends NamingConvention { return panel; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof ConstantNamingConventionBean)) return false; + if (!super.equals(o)) return false; + + ConstantNamingConventionBean bean = (ConstantNamingConventionBean)o; + + if (onlyCheckImmutables != bean.onlyCheckImmutables) return false; + + return true; + } + + @Override + public int hashCode() { + return 31 * super.hashCode() + (onlyCheckImmutables ? 1 : 0); + } } } diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/StaticVariableNamingConvention.java b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/StaticVariableNamingConvention.java index ca7870f82a2e..30b517b64e6f 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/naming/StaticVariableNamingConvention.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/naming/StaticVariableNamingConvention.java @@ -86,5 +86,22 @@ public class StaticVariableNamingConvention extends NamingConvention { return panel; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof ConstantNamingConventionBean)) return false; + if (!super.equals(o)) return false; + + ConstantNamingConventionBean bean = (ConstantNamingConventionBean)o; + + if (checkMutableFinals != bean.checkMutableFinals) return false; + + return true; + } + + @Override + public int hashCode() { + return 31 * super.hashCode() + (checkMutableFinals ? 1 : 0); + } } } \ No newline at end of file