generate equals/hashCode: template for java.util.Objects; treat super.hashCode

This commit is contained in:
Anna Kozlova
2015-01-12 17:37:39 +01:00
parent 1aea6bd2b3
commit aab113eeab
5 changed files with 58 additions and 1 deletions
@@ -48,6 +48,8 @@ public class EqualsHashCodeTemplatesManager extends TemplatesManager {
private static final String APACHE_HASH_CODE = "/com/intellij/codeInsight/generation/apacheHashCodeBuilder.vm";
private static final String GUAVA_EQUALS = "/com/intellij/codeInsight/generation/guavaEquals.vm";
private static final String GUAVA_HASH_CODE = "/com/intellij/codeInsight/generation/guavaHashCode.vm";
private static final String OBJECTS_EQUALS = "/com/intellij/codeInsight/generation/objectsEquals.vm";
private static final String OBJECTS_HASH_CODE = "/com/intellij/codeInsight/generation/objectsHashCode.vm";
private static final String EQUALS_SUFFIX = "equals";
private static final String HASH_CODE_SUFFIX = "hashCode";
@@ -56,6 +58,7 @@ public class EqualsHashCodeTemplatesManager extends TemplatesManager {
@NonNls public static final String EQUALS_HASH_CODE_BUILDER_APACHE_COMMONS_LANG = "Equals/HashCodeBuilder (Apache commons-lang)";
@NonNls public static final String EQUALS_HASH_CODE_BUILDER_APACHE_COMMONS_LANG_3 = "Equals/HashCodeBuilder (Apache commons-lang 3)";
@NonNls public static final String OBJECTS_EQUAL_AND_HASH_CODE_GUAVA = "Objects.equal and hashCode (Guava)";
@NonNls public static final String JAVA_UTIL_OBJECTS_EQUALS_AND_HASH_CODE = "java.util.Objects.equals and hashCode (java 7+)";
public static EqualsHashCodeTemplatesManager getInstance() {
@@ -77,6 +80,9 @@ public class EqualsHashCodeTemplatesManager extends TemplatesManager {
new TemplateResource(toEqualsName(OBJECTS_EQUAL_AND_HASH_CODE_GUAVA), readFile(GUAVA_EQUALS), true),
new TemplateResource(toHashCodeName(OBJECTS_EQUAL_AND_HASH_CODE_GUAVA), readFile(GUAVA_HASH_CODE), true),
new TemplateResource(toEqualsName(JAVA_UTIL_OBJECTS_EQUALS_AND_HASH_CODE), readFile(OBJECTS_EQUALS), true),
new TemplateResource(toHashCodeName(JAVA_UTIL_OBJECTS_EQUALS_AND_HASH_CODE), readFile(OBJECTS_HASH_CODE), true)
};
}
catch (IOException e) {
@@ -1,6 +1,10 @@
public int hashCode() {
return com.google.common.base.Objects.hashCode(##
#set($i = 0)
#if($superHasHashCode)
super.hashCode() ##
#set($i = 1)
#end
#foreach($member in $members)
#if (!$member.static)
#if ($i > 0)
@@ -0,0 +1,29 @@
#parse("com/intellij/codeInsight/generation/commonEqualsMacros.vm")
public boolean equals(##
#if ($settings.generateFinalParameters)
final ##
#end
Object $paramName){
#addEqualsPrologue()
#addClassInstance()
return ##
#set($i = 0)
#foreach($field in $members)
#if (!$field.static)
#if ($i > 0)
&&
#end
#set($i = $i + 1)
#if ($field.array)
#if ($field.nestedArray)
java.util.Arrays.deepEquals($field.name, ${classInstanceName}.$field.name)##
#else
java.util.Arrays.equals($field.name, ${classInstanceName}.$field.name)##
#end
#else
java.util.Objects.equals($field.name, ${classInstanceName}.$field.name)##
#end
#end
#end
;
}
@@ -0,0 +1,18 @@
public int hashCode() {
return java.util.Objects.hash(##
#set($i = 0)
#if($superHasHashCode)
super.hashCode() ##
#set($i = 1)
#end
#foreach($member in $members)
#if (!$member.static)
#if ($i > 0)
, ##
#end
$member.name ##
#set($i = $i + 1)
#end
#end
);
}
@@ -54,6 +54,6 @@ class A extends B {
@Override
public int hashCode() {
return com.google.common.base.Objects.hashCode(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
return com.google.common.base.Objects.hashCode(super.hashCode(), a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14);
}
}