diff --git a/src/main/java/it/cavallium/data/generator/ClassConfiguration.java b/src/main/java/it/cavallium/data/generator/ClassConfiguration.java index 8c0affb..a84add5 100644 --- a/src/main/java/it/cavallium/data/generator/ClassConfiguration.java +++ b/src/main/java/it/cavallium/data/generator/ClassConfiguration.java @@ -31,6 +31,9 @@ public class ClassConfiguration { @Override public int hashCode() { - return Objects.hash(stringRepresenter, data); + int hash = 0; + hash += ConfigUtils.hashCode(stringRepresenter); + hash += ConfigUtils.hashCode(data); + return hash; } } diff --git a/src/main/java/it/cavallium/data/generator/ConfigUtils.java b/src/main/java/it/cavallium/data/generator/ConfigUtils.java new file mode 100644 index 0000000..5024484 --- /dev/null +++ b/src/main/java/it/cavallium/data/generator/ConfigUtils.java @@ -0,0 +1,26 @@ +package it.cavallium.data.generator; + +import java.util.Collection; +import java.util.Map; +import java.util.Objects; + +class ConfigUtils { + + static int hashCode(Map map) { + if (map == null) return 0; + return map + .entrySet() + .stream() + .map(e -> ConfigUtils.hashCode(e.getKey()) + ConfigUtils.hashCode(e.getValue())) + .reduce(0, Integer::sum); + } + + static int hashCode(Collection collection) { + if (collection == null) return 0; + return collection.stream().map(ConfigUtils::hashCode).reduce(0, Integer::sum); + } + + static int hashCode(Object collection) { + return Objects.hashCode(collection); + } +} diff --git a/src/main/java/it/cavallium/data/generator/CustomTypesConfiguration.java b/src/main/java/it/cavallium/data/generator/CustomTypesConfiguration.java index ab41b32..7d96913 100644 --- a/src/main/java/it/cavallium/data/generator/CustomTypesConfiguration.java +++ b/src/main/java/it/cavallium/data/generator/CustomTypesConfiguration.java @@ -45,6 +45,9 @@ public class CustomTypesConfiguration { @Override public int hashCode() { - return Objects.hash(javaClass, serializer); + int hash = 0; + hash += ConfigUtils.hashCode(javaClass); + hash += ConfigUtils.hashCode(serializer); + return hash; } } diff --git a/src/main/java/it/cavallium/data/generator/DetailsConfiguration.java b/src/main/java/it/cavallium/data/generator/DetailsConfiguration.java index 3b1c20e..f57fd48 100644 --- a/src/main/java/it/cavallium/data/generator/DetailsConfiguration.java +++ b/src/main/java/it/cavallium/data/generator/DetailsConfiguration.java @@ -20,6 +20,8 @@ public class DetailsConfiguration { @Override public int hashCode() { - return Objects.hash(changelog); + int hash = 0; + hash += ConfigUtils.hashCode(changelog); + return hash; } } diff --git a/src/main/java/it/cavallium/data/generator/InterfaceDataConfiguration.java b/src/main/java/it/cavallium/data/generator/InterfaceDataConfiguration.java index cd01d01..78e642a 100644 --- a/src/main/java/it/cavallium/data/generator/InterfaceDataConfiguration.java +++ b/src/main/java/it/cavallium/data/generator/InterfaceDataConfiguration.java @@ -27,6 +27,10 @@ public class InterfaceDataConfiguration { @Override public int hashCode() { - return Objects.hash(extendInterfaces, commonData, commonGetters); + int hash = 0; + hash += ConfigUtils.hashCode(extendInterfaces); + hash += ConfigUtils.hashCode(commonData); + hash += ConfigUtils.hashCode(commonGetters); + return hash; } } diff --git a/src/main/java/it/cavallium/data/generator/MoveDataConfiguration.java b/src/main/java/it/cavallium/data/generator/MoveDataConfiguration.java index 911d5ef..a1690eb 100644 --- a/src/main/java/it/cavallium/data/generator/MoveDataConfiguration.java +++ b/src/main/java/it/cavallium/data/generator/MoveDataConfiguration.java @@ -34,6 +34,10 @@ public class MoveDataConfiguration implements TransformationConfiguration { @Override public int hashCode() { - return Objects.hash(transformClass, from, to); + int hash = 0; + hash += ConfigUtils.hashCode(transformClass); + hash += ConfigUtils.hashCode(from); + hash += ConfigUtils.hashCode(to); + return hash; } } diff --git a/src/main/java/it/cavallium/data/generator/NewDataConfiguration.java b/src/main/java/it/cavallium/data/generator/NewDataConfiguration.java index d4b808b..b1253d0 100644 --- a/src/main/java/it/cavallium/data/generator/NewDataConfiguration.java +++ b/src/main/java/it/cavallium/data/generator/NewDataConfiguration.java @@ -35,6 +35,10 @@ public class NewDataConfiguration implements TransformationConfiguration { @Override public int hashCode() { - return Objects.hash(transformClass, to, initializer); + int hash = 0; + hash += ConfigUtils.hashCode(transformClass); + hash += ConfigUtils.hashCode(to); + hash += ConfigUtils.hashCode(initializer); + return hash; } } diff --git a/src/main/java/it/cavallium/data/generator/RemoveDataConfiguration.java b/src/main/java/it/cavallium/data/generator/RemoveDataConfiguration.java index aac6750..2af1c36 100644 --- a/src/main/java/it/cavallium/data/generator/RemoveDataConfiguration.java +++ b/src/main/java/it/cavallium/data/generator/RemoveDataConfiguration.java @@ -31,6 +31,9 @@ public class RemoveDataConfiguration implements TransformationConfiguration { @Override public int hashCode() { - return Objects.hash(transformClass, from); + int hash = 0; + hash += ConfigUtils.hashCode(transformClass); + hash += ConfigUtils.hashCode(from); + return hash; } } diff --git a/src/main/java/it/cavallium/data/generator/SerializeCodeBlockGenerator.java b/src/main/java/it/cavallium/data/generator/SerializeCodeBlockGenerator.java index 58c3417..b9a631b 100644 --- a/src/main/java/it/cavallium/data/generator/SerializeCodeBlockGenerator.java +++ b/src/main/java/it/cavallium/data/generator/SerializeCodeBlockGenerator.java @@ -36,7 +36,10 @@ public class SerializeCodeBlockGenerator { @Override public int hashCode() { - return Objects.hash(before, after); + int hash = 0; + hash += ConfigUtils.hashCode(before); + hash += ConfigUtils.hashCode(after); + return hash; } diff --git a/src/main/java/it/cavallium/data/generator/SourcesGeneratorConfiguration.java b/src/main/java/it/cavallium/data/generator/SourcesGeneratorConfiguration.java index a93a709..ba7e669 100644 --- a/src/main/java/it/cavallium/data/generator/SourcesGeneratorConfiguration.java +++ b/src/main/java/it/cavallium/data/generator/SourcesGeneratorConfiguration.java @@ -24,6 +24,11 @@ public class SourcesGeneratorConfiguration { @Override public int hashCode() { - return Objects.hash(currentVersion, interfacesData, versions, refs); + int hash = 0; + hash += ConfigUtils.hashCode(currentVersion); + hash += ConfigUtils.hashCode(interfacesData); + hash += ConfigUtils.hashCode(versions); + hash += ConfigUtils.hashCode(refs); + return hash; } } diff --git a/src/main/java/it/cavallium/data/generator/SourcesGeneratorConfigurationRefs.java b/src/main/java/it/cavallium/data/generator/SourcesGeneratorConfigurationRefs.java index 0f642b8..0123863 100644 --- a/src/main/java/it/cavallium/data/generator/SourcesGeneratorConfigurationRefs.java +++ b/src/main/java/it/cavallium/data/generator/SourcesGeneratorConfigurationRefs.java @@ -26,6 +26,11 @@ public class SourcesGeneratorConfigurationRefs { @Override public int hashCode() { - return Objects.hash(superTypes, customTypes, classes, transformations); + int hash = 0; + hash += ConfigUtils.hashCode(superTypes); + hash += ConfigUtils.hashCode(customTypes); + hash += ConfigUtils.hashCode(classes); + hash += ConfigUtils.hashCode(transformations); + return hash; } } diff --git a/src/main/java/it/cavallium/data/generator/UpgradeDataConfiguration.java b/src/main/java/it/cavallium/data/generator/UpgradeDataConfiguration.java index f2b1f89..9878379 100644 --- a/src/main/java/it/cavallium/data/generator/UpgradeDataConfiguration.java +++ b/src/main/java/it/cavallium/data/generator/UpgradeDataConfiguration.java @@ -35,6 +35,10 @@ public class UpgradeDataConfiguration implements TransformationConfiguration { @Override public int hashCode() { - return Objects.hash(transformClass, from, upgrader); + int hash = 0; + hash += ConfigUtils.hashCode(transformClass); + hash += ConfigUtils.hashCode(from); + hash += ConfigUtils.hashCode(upgrader); + return hash; } } diff --git a/src/main/java/it/cavallium/data/generator/VersionConfiguration.java b/src/main/java/it/cavallium/data/generator/VersionConfiguration.java index 9e0ac4f..f76cc7c 100644 --- a/src/main/java/it/cavallium/data/generator/VersionConfiguration.java +++ b/src/main/java/it/cavallium/data/generator/VersionConfiguration.java @@ -30,6 +30,12 @@ public class VersionConfiguration { @Override public int hashCode() { - return Objects.hash(details, superTypes, customTypes, classes, transformations); + int hash = 0; + hash += ConfigUtils.hashCode(details); + hash += ConfigUtils.hashCode(superTypes); + hash += ConfigUtils.hashCode(customTypes); + hash += ConfigUtils.hashCode(classes); + hash += ConfigUtils.hashCode(transformations); + return hash; } } diff --git a/src/main/java/it/cavallium/data/generator/VersionTransformation.java b/src/main/java/it/cavallium/data/generator/VersionTransformation.java index daa767e..541a534 100644 --- a/src/main/java/it/cavallium/data/generator/VersionTransformation.java +++ b/src/main/java/it/cavallium/data/generator/VersionTransformation.java @@ -79,6 +79,11 @@ public class VersionTransformation { @Override public int hashCode() { - return Objects.hash(moveData, removeData, upgradeData, newData); + int hash = 0; + hash += ConfigUtils.hashCode(moveData); + hash += ConfigUtils.hashCode(removeData); + hash += ConfigUtils.hashCode(upgradeData); + hash += ConfigUtils.hashCode(newData); + return hash; } }