mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
generate equals/hashCode: template for java.util.Objects; treat super.hashCode
This commit is contained in:
+6
@@ -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
|
||||
);
|
||||
}
|
||||
+1
-1
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user