TransformationUtility implements Cloneable { @Override public int hashCode() { return hashCode(1, abortionMessage, abortOnFailure, absoluteFile, absoluteFileFromContextAttribute, additionalRelativePath, contextAttributeName, dependencies, ifConditionAttributeName, latePropertiesAttributes, name, order, parent, relativePath, saveResult, unlessConditionAttributeName, utilityCondition ); } @SuppressWarnings("PMD.UnnecessaryConstructor")  TransformationUtility(); final String getName(); T setContextAttributeName(String contextAttributeName); String getContextAttributeName(); final T setParent(TransformationUtilityParent parent, int order); TransformationUtilityParent getParent(); TransformationTemplate getTransformationTemplate(); abstract String getDescription(); int getOrder(); final T relative(String relativePath); final T set(String propertyName, String contextAttributeName); T absolute(String contextAttributeName); T absolute(String contextAttributeName, String additionalRelativePath); @SuppressFBWarnings("RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE") PerformResult perform(File transformedAppFolder, TransformationContext transformationContext); final T abortOnFailure(boolean abort); final T abortOnFailure(String abortionMessage); String getAbortionMessage(); final boolean isAbortOnFailure(); boolean isSaveResult(); final boolean hasBeenPerformed(); final T dependsOn(String... dependencies); final T executeIf(String conditionAttributeName); final T executeIf(UtilityCondition utilityCondition); final T executeUnless(String conditionAttributeName); String getIfConditionAttributeName(); String getUnlessConditionAttributeName(); final boolean isFileSet(); final boolean wasFileExplicitlySet(); @Override String toString(); @Override T clone(); T copy(); @Override @SuppressWarnings("PMD.SimplifyBooleanReturns") boolean equals(Object obj); @Override int hashCode();  }
@Test public void hashCodeTest() { TransformationUtility tu1 = getNewTestTransformationUtility(); TransformationUtility tu2 = getNewTestTransformationUtility(); assertEquals(tu1.hashCode(), tu2.hashCode()); assertEquals(tu1.relative("pom.xml"), tu1); assertNotEquals(tu1.hashCode(), tu2.hashCode()); assertEquals(tu2.relative("pom.xml"), tu2); assertEquals(tu1.hashCode(), tu2.hashCode()); assertEquals(tu1.setName("TUA"), tu1); assertNotEquals(tu1.hashCode(), tu2.hashCode()); assertEquals(tu2.setName("TUA"), tu2); assertEquals(tu1.hashCode(), tu2.hashCode()); }