diff --git a/README.md b/README.md index 255fd255..28945b91 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,3 @@ -## Introduction - -Sometimes you need to figure out, how one version of an object differs from another one. One of the simplest solutions that'll cross your mind is most certainly to use reflection to scan the object for fields or getters and use them to compare the values of the different object instances. In many cases this is a perfectly valid strategy and the way to go. After all, we want to keep things simple, don't we? - -However, there are some cases that can increase the complexity dramatically. What if you need to find differences in collections or maps? What if you have to deal with nested objects that also need to be compared on a per-property basis? Or even worse: what if you need to merge such objects? - -You suddenly realize that you need to scan the objects recursively, figure out which collection items have been added, removed or changed; find a way to return your results in a way that allows you to easily access the information you are looking for and provide accessors to apply changes. - -While all this isn't exactly rocket science, it is complex enough to add quite a lot of extra code to your project. Code that needs to be tested and maintained. Since the best code is the code you didn't write, this library aims to help you with all things related to diffing and merging of Java objects by providing a robust foundation and a simple, yet powerful API. - -This library will hide all the complexities of deep object comparison behind one line of code: - - Node root = ObjectDifferFactory.getInstance().compare(workingObject, baseObject); - -This generates a tree structure of the given object type and lets you traverse its nodes via visitors. Each node represents one property (or collection item) of the underlying object and tells you exactly if and how the value differs from the base version. It also provides accessors to read, write and remove the value from or to any given instance. This way, all you need to worry about is **how to treat** changes and **not how to find** them. - -This library has been battle-tested in a rather big project of mine, where I use it to generate **activity streams**, resolve database **update conflics**, display **change logs** and limit the scope of entity updates to only a **subset of properties**, based on the context or user permissions. It didn't let me down so far and I hope that it can help you too! - -## Getting Started - -To learn how to use **Java Object Diff**, please have a look at the [Starter Guide](https://github.com/SQiShER/java-object-diff/wiki/Getting-Started). - -## Features - -* Generates a graph of your object, in which each node provides information about the changes and accessors to read and write the value on any instance of the given type. -* Visitor-support allows you to extract and modify exactly what you want. -* Designed to work with any kind of object out-of-the-box. -* Makes dealing with Collections and Maps very easy. -* Properties can be categorized, to easily compare or merge specific subsets. (This is particulary useful for databases like [MongoDB](http://www.mongodb.org/) that support [atomic property operations](http://www.mongodb.org/display/DOCS/Atomic+Operations).) -* Comparison can be improved and customized via annotations and/or configuration API. -* No annotations needed. (However, they exist for your convenience.) -* No runtime dependencies except for [SLF4J](http://www.slf4j.org/). - -## Use Cases - -**Java Object Diff** is currently used (but not limited) to... - -* Generate Facebook-like activity streams -* Visualize the differences between object versions -* Automatically resolve conflicts on conflicting database updates -* Detect and persist only properties that were actually changed - -## Known Issues and Limitations - -Please refer to the [Issue Tracker](https://github.com/SQiShER/java-object-diff/issues?state=open) for a list of currently known limitations. +- [X] Fork and rename packages +- [ ] Designing Type info to collection item +- [ ] Re-Design DS for PP diff --git a/pom.xml b/pom.xml old mode 100644 new mode 100755 index 69483a24..f1579936 --- a/pom.xml +++ b/pom.xml @@ -24,21 +24,21 @@ 4.0.0 - de.danielbechler + in.th3iedkid java-object-diff - Java Object Diff - 0.13-SNAPSHOT + Java Object Diff forked from Java Object Diff by daniel bachelor + 0.1-SNAPSHOT SQiShER - Daniel Bechler - https://github.com/SQiShER + th3iedkid + https://github.com/th3iedkid - https://github.com/SQiShER/java-object-diff - Framework to detect and handle differences between Java objects + https://github.com/th3iedkid/java-object-diff + Framework to detect and handle differences between Java objects with some added fun @@ -48,14 +48,14 @@ - https://github.com/SQiShER/java-object-diff - scm:git:ssh://git@github.com/SQiShER/java-object-diff.git - scm:git:ssh://git@github.com/SQiShER/java-object-diff.git + https://github.com/th3iedkid/java-object-diff + scm:git@github.com:th3iedkid/java-object-diff.git + scm:git@github.com:th3iedkid/java-object-diff.git GitHub - https://github.com/SQiShER/java-object-diff/issues + https://github.com/th3iedkid/java-object-diff @@ -175,7 +175,7 @@ true - Daniel Bechler + th3iedkid ${project.url} {local-packages} diff --git a/src/main/java/de/danielbechler/diff/BeanDiffer.java b/src/main/java/in/th3iedkid/diff/BeanDiffer.java old mode 100644 new mode 100755 similarity index 94% rename from src/main/java/de/danielbechler/diff/BeanDiffer.java rename to src/main/java/in/th3iedkid/diff/BeanDiffer.java index 430e7289..86f82b82 --- a/src/main/java/de/danielbechler/diff/BeanDiffer.java +++ b/src/main/java/in/th3iedkid/diff/BeanDiffer.java @@ -14,12 +14,13 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.introspect.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.util.*; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.introspect.Introspector; +import in.th3iedkid.diff.introspect.StandardIntrospector; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.util.Assert; /** * Used to find differences between objects that were not handled by one of the other (specialized) {@link diff --git a/src/main/java/de/danielbechler/diff/BeanPropertyComparisonDelegator.java b/src/main/java/in/th3iedkid/diff/BeanPropertyComparisonDelegator.java old mode 100644 new mode 100755 similarity index 93% rename from src/main/java/de/danielbechler/diff/BeanPropertyComparisonDelegator.java rename to src/main/java/in/th3iedkid/diff/BeanPropertyComparisonDelegator.java index 02238fea..a749d43c --- a/src/main/java/de/danielbechler/diff/BeanPropertyComparisonDelegator.java +++ b/src/main/java/in/th3iedkid/diff/BeanPropertyComparisonDelegator.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.util.*; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.util.Assert; /** @author Daniel Bechler */ class BeanPropertyComparisonDelegator diff --git a/src/main/java/de/danielbechler/diff/CircularReferenceDetector.java b/src/main/java/in/th3iedkid/diff/CircularReferenceDetector.java old mode 100644 new mode 100755 similarity index 96% rename from src/main/java/de/danielbechler/diff/CircularReferenceDetector.java rename to src/main/java/in/th3iedkid/diff/CircularReferenceDetector.java index 46d26249..6b94136e --- a/src/main/java/de/danielbechler/diff/CircularReferenceDetector.java +++ b/src/main/java/in/th3iedkid/diff/CircularReferenceDetector.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.path.*; -import de.danielbechler.util.*; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.util.Assert; -import java.util.*; +import java.util.LinkedList; /** @author Daniel Bechler */ class CircularReferenceDetector diff --git a/src/main/java/de/danielbechler/diff/CircularReferenceDetectorFactory.java b/src/main/java/in/th3iedkid/diff/CircularReferenceDetectorFactory.java old mode 100644 new mode 100755 similarity index 95% rename from src/main/java/de/danielbechler/diff/CircularReferenceDetectorFactory.java rename to src/main/java/in/th3iedkid/diff/CircularReferenceDetectorFactory.java index 19241d2a..bff63bb6 --- a/src/main/java/de/danielbechler/diff/CircularReferenceDetectorFactory.java +++ b/src/main/java/in/th3iedkid/diff/CircularReferenceDetectorFactory.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; /** @author Daniel Bechler */ public interface CircularReferenceDetectorFactory diff --git a/src/main/java/de/danielbechler/diff/CollectionDiffer.java b/src/main/java/in/th3iedkid/diff/CollectionDiffer.java old mode 100644 new mode 100755 similarity index 89% rename from src/main/java/de/danielbechler/diff/CollectionDiffer.java rename to src/main/java/in/th3iedkid/diff/CollectionDiffer.java index 18a8f325..eb25f045 --- a/src/main/java/de/danielbechler/diff/CollectionDiffer.java +++ b/src/main/java/in/th3iedkid/diff/CollectionDiffer.java @@ -14,14 +14,15 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.util.*; -import de.danielbechler.util.Collections; +import in.th3iedkid.diff.accessor.CollectionItemAccessor; +import in.th3iedkid.diff.node.CollectionNode; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.util.Assert; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; /** * Used to find differences between {@link Collection Collections}. @@ -108,13 +109,13 @@ private Node compareItem(final Node collectionNode, @SuppressWarnings("unchecked") private static Collection addedItemsOf(final Instances instances) { - return Collections.filteredCopyOf(instances.getWorking(Collection.class), instances.getBase(Collection.class)); + return in.th3iedkid.util.Collections.filteredCopyOf(instances.getWorking(Collection.class), instances.getBase(Collection.class)); } @SuppressWarnings("unchecked") private static Collection removedItemsOf(final Instances instances) { - return Collections.filteredCopyOf(instances.getBase(Collection.class), instances.getWorking(Collection.class)); + return in.th3iedkid.util.Collections.filteredCopyOf(instances.getBase(Collection.class), instances.getWorking(Collection.class)); } @SuppressWarnings("unchecked") diff --git a/src/main/java/de/danielbechler/diff/CollectionItemAccessorFactory.java b/src/main/java/in/th3iedkid/diff/CollectionItemAccessorFactory.java old mode 100644 new mode 100755 similarity index 91% rename from src/main/java/de/danielbechler/diff/CollectionItemAccessorFactory.java rename to src/main/java/in/th3iedkid/diff/CollectionItemAccessorFactory.java index 8cbc5ec3..f27f35ce --- a/src/main/java/de/danielbechler/diff/CollectionItemAccessorFactory.java +++ b/src/main/java/in/th3iedkid/diff/CollectionItemAccessorFactory.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; +import in.th3iedkid.diff.accessor.CollectionItemAccessor; @SuppressWarnings("MethodMayBeStatic") class CollectionItemAccessorFactory diff --git a/src/main/java/de/danielbechler/diff/CollectionNodeFactory.java b/src/main/java/in/th3iedkid/diff/CollectionNodeFactory.java old mode 100644 new mode 100755 similarity index 89% rename from src/main/java/de/danielbechler/diff/CollectionNodeFactory.java rename to src/main/java/in/th3iedkid/diff/CollectionNodeFactory.java index 31eb7771..47224867 --- a/src/main/java/de/danielbechler/diff/CollectionNodeFactory.java +++ b/src/main/java/in/th3iedkid/diff/CollectionNodeFactory.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.node.*; +import in.th3iedkid.diff.node.CollectionNode; +import in.th3iedkid.diff.node.Node; @SuppressWarnings("MethodMayBeStatic") class CollectionNodeFactory diff --git a/src/main/java/de/danielbechler/diff/Configuration.java b/src/main/java/in/th3iedkid/diff/Configuration.java old mode 100644 new mode 100755 similarity index 94% rename from src/main/java/de/danielbechler/diff/Configuration.java rename to src/main/java/in/th3iedkid/diff/Configuration.java index 5396a2ea..a632d310 --- a/src/main/java/de/danielbechler/diff/Configuration.java +++ b/src/main/java/in/th3iedkid/diff/Configuration.java @@ -14,16 +14,17 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.annotation.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.util.*; +import in.th3iedkid.diff.annotation.ObjectDiffEqualsOnlyType; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.util.Assert; +import in.th3iedkid.util.Classes; import java.util.*; -import static de.danielbechler.util.Collections.*; +import static in.th3iedkid.util.Collections.containsAny; /** @author Daniel Bechler */ @SuppressWarnings("UnusedDeclaration") @@ -31,7 +32,7 @@ public class Configuration implements NodeInspector { /** * Defines how the {@link CircularReferenceDetector} compares object instances. The default is {@link - * de.danielbechler.diff.Configuration.CircularReferenceMatchingMode#EQUALITY_OPERATOR} and this should be + * Configuration.CircularReferenceMatchingMode#EQUALITY_OPERATOR} and this should be * sufficient in mose cases. However, you may be dealing with an object model that returns copies of its * properties, instead of reusing the exact same instance. In this cases it would be easy to end up in * infinite loops, as the default circular reference detection would not be able to detect this. In those @@ -60,14 +61,14 @@ public enum PrimitiveDefaultValueMode { /** * Default values of primitive types will be treated like any other value. Since there is no distinction, - * any change to a primitive value will be marked as {@linkplain Node.State#CHANGED}. + * any change to a primitive value will be marked as {@linkplain in.th3iedkid.diff.node.Node.State#CHANGED}. */ ASSIGNED, /** * Default values of primitive types will be treated as if the property has not been set. The consequence of * this is that a change from default value to something else will be marked as {@linkplain - * Node.State#ADDED} and from something else to the default value as {@linkplain Node.State#REMOVED}. + * in.th3iedkid.diff.node.Node.State#ADDED} and from something else to the default value as {@linkplain in.th3iedkid.diff.node.Node.State#REMOVED}. */ UNASSIGNED } diff --git a/src/main/java/de/danielbechler/diff/DefaultNodeFactory.java b/src/main/java/in/th3iedkid/diff/DefaultNodeFactory.java old mode 100644 new mode 100755 similarity index 89% rename from src/main/java/de/danielbechler/diff/DefaultNodeFactory.java rename to src/main/java/in/th3iedkid/diff/DefaultNodeFactory.java index fef12510..f6d5c1ae --- a/src/main/java/de/danielbechler/diff/DefaultNodeFactory.java +++ b/src/main/java/in/th3iedkid/diff/DefaultNodeFactory.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.node.*; +import in.th3iedkid.diff.node.DefaultNode; +import in.th3iedkid.diff.node.Node; @SuppressWarnings("MethodMayBeStatic") class DefaultNodeFactory diff --git a/src/main/java/de/danielbechler/diff/Differ.java b/src/main/java/in/th3iedkid/diff/Differ.java old mode 100644 new mode 100755 similarity index 91% rename from src/main/java/de/danielbechler/diff/Differ.java rename to src/main/java/in/th3iedkid/diff/Differ.java index d4082f77..82fa35a6 --- a/src/main/java/de/danielbechler/diff/Differ.java +++ b/src/main/java/in/th3iedkid/diff/Differ.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.node.*; +import in.th3iedkid.diff.node.Node; /** @author Daniel Bechler */ interface Differ diff --git a/src/main/java/de/danielbechler/diff/DifferDelegator.java b/src/main/java/in/th3iedkid/diff/DifferDelegator.java old mode 100644 new mode 100755 similarity index 92% rename from src/main/java/de/danielbechler/diff/DifferDelegator.java rename to src/main/java/in/th3iedkid/diff/DifferDelegator.java index 6f347f53..c9c9a9a9 --- a/src/main/java/de/danielbechler/diff/DifferDelegator.java +++ b/src/main/java/in/th3iedkid/diff/DifferDelegator.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.util.*; -import org.slf4j.*; - -import static de.danielbechler.diff.CircularReferenceDetector.*; +import in.th3iedkid.diff.node.DefaultNode; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.util.Assert; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** @author Daniel Bechler */ @SuppressWarnings("MethodMayBeStatic") @@ -45,9 +45,9 @@ public DifferDelegator(final DifferFactory differFactory, } /** - * Delegates the call to an appropriate {@link de.danielbechler.diff.Differ}. + * Delegates the call to an appropriate {@link Differ}. * - * @return A node representing the difference between the given {@link de.danielbechler.diff.Instances}. + * @return A node representing the difference between the given {@link Instances}. */ public Node delegate(final Node parentNode, final Instances instances) { @@ -75,7 +75,7 @@ private Node delegateWithCircularReferenceTracking(final Node parentNode, final forgetInstances(instances); } } - catch (CircularReferenceException e) + catch (CircularReferenceDetector.CircularReferenceException e) { node = newCircularNode(parentNode, instances, e.getPropertyPath()); logCircularReference(node.getPropertyPath()); diff --git a/src/main/java/de/danielbechler/diff/DifferFactory.java b/src/main/java/in/th3iedkid/diff/DifferFactory.java old mode 100644 new mode 100755 similarity index 87% rename from src/main/java/de/danielbechler/diff/DifferFactory.java rename to src/main/java/in/th3iedkid/diff/DifferFactory.java index b009fb49..82d78644 --- a/src/main/java/de/danielbechler/diff/DifferFactory.java +++ b/src/main/java/in/th3iedkid/diff/DifferFactory.java @@ -14,13 +14,13 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.util.*; +import in.th3iedkid.util.Assert; +import in.th3iedkid.util.Classes; -import java.util.*; - -import static de.danielbechler.util.Classes.*; +import java.util.Collection; +import java.util.Map; /** @author Daniel Bechler */ public class DifferFactory @@ -36,7 +36,7 @@ public DifferFactory(final Configuration configuration) public Differ createDiffer(final Class type, final DifferDelegator delegator) { Assert.notNull(delegator, "delegator"); - if (isPrimitiveType(type)) + if (Classes.isPrimitiveType(type)) { return new PrimitiveDiffer(configuration); } diff --git a/src/main/java/de/danielbechler/diff/Instances.java b/src/main/java/in/th3iedkid/diff/Instances.java old mode 100644 new mode 100755 similarity index 91% rename from src/main/java/de/danielbechler/diff/Instances.java rename to src/main/java/in/th3iedkid/diff/Instances.java index ee255b05..249f2929 --- a/src/main/java/de/danielbechler/diff/Instances.java +++ b/src/main/java/in/th3iedkid/diff/Instances.java @@ -14,18 +14,23 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.util.*; -import de.danielbechler.util.Collections; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.accessor.RootAccessor; +import in.th3iedkid.diff.accessor.TypeAwareAccessor; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.util.Assert; +import in.th3iedkid.util.Classes; +import in.th3iedkid.util.Collections; -import java.util.*; +import java.util.Collection; +import java.util.Map; +import java.util.Set; -import static de.danielbechler.util.Objects.*; -import static de.danielbechler.util.Comparables.*; +import static in.th3iedkid.util.Comparables.isEqualByComparison; +import static in.th3iedkid.util.Objects.isEqual; /** @author Daniel Bechler */ @SuppressWarnings({"UnusedDeclaration"}) diff --git a/src/main/java/de/danielbechler/diff/MapDiffer.java b/src/main/java/in/th3iedkid/diff/MapDiffer.java old mode 100644 new mode 100755 similarity index 93% rename from src/main/java/de/danielbechler/diff/MapDiffer.java rename to src/main/java/in/th3iedkid/diff/MapDiffer.java index 29398727..d5a3e2d0 --- a/src/main/java/de/danielbechler/diff/MapDiffer.java +++ b/src/main/java/in/th3iedkid/diff/MapDiffer.java @@ -14,14 +14,17 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.util.*; -import de.danielbechler.util.Collections; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.node.MapNode; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.util.Assert; +import in.th3iedkid.util.Collections; -import java.util.*; +import java.util.Collection; +import java.util.Map; +import java.util.Set; /** * Used to find differences between {@link Map Maps} diff --git a/src/main/java/de/danielbechler/diff/MapNodeFactory.java b/src/main/java/in/th3iedkid/diff/MapNodeFactory.java old mode 100644 new mode 100755 similarity index 86% rename from src/main/java/de/danielbechler/diff/MapNodeFactory.java rename to src/main/java/in/th3iedkid/diff/MapNodeFactory.java index db901e2a..f89b9aa6 --- a/src/main/java/de/danielbechler/diff/MapNodeFactory.java +++ b/src/main/java/in/th3iedkid/diff/MapNodeFactory.java @@ -14,10 +14,11 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.node.*; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.node.MapNode; +import in.th3iedkid.diff.node.Node; @SuppressWarnings("MethodMayBeStatic") public class MapNodeFactory diff --git a/src/main/java/de/danielbechler/diff/NodeInspector.java b/src/main/java/in/th3iedkid/diff/NodeInspector.java old mode 100644 new mode 100755 similarity index 87% rename from src/main/java/de/danielbechler/diff/NodeInspector.java rename to src/main/java/in/th3iedkid/diff/NodeInspector.java index 9744eb4f..4f727e23 --- a/src/main/java/de/danielbechler/diff/NodeInspector.java +++ b/src/main/java/in/th3iedkid/diff/NodeInspector.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.node.*; +import in.th3iedkid.diff.node.Node; /** @author Daniel Bechler */ interface NodeInspector @@ -36,7 +36,7 @@ interface NodeInspector /** * @return Returns true if the object represented by the given node should be compared via * introspection. It must always return false if {@link - * #isEqualsOnly(de.danielbechler.diff.node.Node)} returns true. + * #isEqualsOnly(in.th3iedkid.diff.node.Node)} returns true. */ boolean isIntrospectible(Node node); } diff --git a/src/main/java/de/danielbechler/diff/ObjectDiffer.java b/src/main/java/in/th3iedkid/diff/ObjectDiffer.java old mode 100644 new mode 100755 similarity index 91% rename from src/main/java/de/danielbechler/diff/ObjectDiffer.java rename to src/main/java/in/th3iedkid/diff/ObjectDiffer.java index 8942c257..a838b438 --- a/src/main/java/de/danielbechler/diff/ObjectDiffer.java +++ b/src/main/java/in/th3iedkid/diff/ObjectDiffer.java @@ -14,11 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.node.*; -import static de.danielbechler.diff.Configuration.CircularReferenceMatchingMode.*; +import in.th3iedkid.diff.node.Node; /** * This is the entry point for all comparisons. It determines the type of the given objects and passes them to @@ -83,11 +82,11 @@ public Configuration getConfiguration() private static CircularReferenceDetectorFactory newCircularReferenceDetectorFactory(final Configuration configuration) { - if (configuration.getCircularReferenceMatchingMode() == EQUALS_METHOD) + if (configuration.getCircularReferenceMatchingMode() == Configuration.CircularReferenceMatchingMode.EQUALS_METHOD) { return CIRCULAR_REFERENCE_DETECTOR_WITH_EQUALS_METHOD_FACTORY; } - else if (configuration.getCircularReferenceMatchingMode() == EQUALITY_OPERATOR) + else if (configuration.getCircularReferenceMatchingMode() == Configuration.CircularReferenceMatchingMode.EQUALITY_OPERATOR) { return CIRCULAR_REFERENCE_DETECTOR_WITH_EQUALITY_OPERATOR_FACTORY; } diff --git a/src/main/java/de/danielbechler/diff/ObjectDifferFactory.java b/src/main/java/in/th3iedkid/diff/ObjectDifferFactory.java old mode 100644 new mode 100755 similarity index 97% rename from src/main/java/de/danielbechler/diff/ObjectDifferFactory.java rename to src/main/java/in/th3iedkid/diff/ObjectDifferFactory.java index ca7c10fa..8205d936 --- a/src/main/java/de/danielbechler/diff/ObjectDifferFactory.java +++ b/src/main/java/in/th3iedkid/diff/ObjectDifferFactory.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; /** * Creates new {@link ObjectDiffer} instances. diff --git a/src/main/java/de/danielbechler/diff/PrimitiveDiffer.java b/src/main/java/in/th3iedkid/diff/PrimitiveDiffer.java old mode 100644 new mode 100755 similarity index 89% rename from src/main/java/de/danielbechler/diff/PrimitiveDiffer.java rename to src/main/java/in/th3iedkid/diff/PrimitiveDiffer.java index 1d5794f9..df9bb161 --- a/src/main/java/de/danielbechler/diff/PrimitiveDiffer.java +++ b/src/main/java/in/th3iedkid/diff/PrimitiveDiffer.java @@ -14,12 +14,13 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.node.*; -import de.danielbechler.util.*; +import in.th3iedkid.diff.node.DefaultNode; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.util.Assert; -import static de.danielbechler.diff.Configuration.PrimitiveDefaultValueMode.*; +import static in.th3iedkid.diff.Configuration.PrimitiveDefaultValueMode.UNASSIGNED; /** @author Daniel Bechler */ class PrimitiveDiffer implements Differ diff --git a/src/main/java/de/danielbechler/diff/PropertyNodeFactory.java b/src/main/java/in/th3iedkid/diff/PropertyNodeFactory.java old mode 100644 new mode 100755 similarity index 84% rename from src/main/java/de/danielbechler/diff/PropertyNodeFactory.java rename to src/main/java/in/th3iedkid/diff/PropertyNodeFactory.java index 0fa271b7..b693b21b --- a/src/main/java/de/danielbechler/diff/PropertyNodeFactory.java +++ b/src/main/java/in/th3iedkid/diff/PropertyNodeFactory.java @@ -14,10 +14,11 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.node.*; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.node.DefaultNode; +import in.th3iedkid.diff.node.Node; class PropertyNodeFactory { diff --git a/src/main/java/de/danielbechler/diff/TestOnly.java b/src/main/java/in/th3iedkid/diff/TestOnly.java old mode 100644 new mode 100755 similarity index 95% rename from src/main/java/de/danielbechler/diff/TestOnly.java rename to src/main/java/in/th3iedkid/diff/TestOnly.java index 9fa0fa08..37838c87 --- a/src/main/java/de/danielbechler/diff/TestOnly.java +++ b/src/main/java/in/th3iedkid/diff/TestOnly.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; /** * A simple marker annotation to mark methods that are only needed for testing. diff --git a/src/main/java/de/danielbechler/diff/accessor/AbstractAccessor.java b/src/main/java/in/th3iedkid/diff/accessor/AbstractAccessor.java old mode 100644 new mode 100755 similarity index 93% rename from src/main/java/de/danielbechler/diff/accessor/AbstractAccessor.java rename to src/main/java/in/th3iedkid/diff/accessor/AbstractAccessor.java index 7262c2bb..18cb8317 --- a/src/main/java/de/danielbechler/diff/accessor/AbstractAccessor.java +++ b/src/main/java/in/th3iedkid/diff/accessor/AbstractAccessor.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; -import java.util.*; +import java.util.Set; +import java.util.TreeSet; /** @author Daniel Bechler */ public abstract class AbstractAccessor implements Accessor diff --git a/src/main/java/de/danielbechler/diff/accessor/Accessor.java b/src/main/java/in/th3iedkid/diff/accessor/Accessor.java old mode 100644 new mode 100755 similarity index 95% rename from src/main/java/de/danielbechler/diff/accessor/Accessor.java rename to src/main/java/in/th3iedkid/diff/accessor/Accessor.java index b5807692..0af46dd4 --- a/src/main/java/de/danielbechler/diff/accessor/Accessor.java +++ b/src/main/java/in/th3iedkid/diff/accessor/Accessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; /** @author Daniel Bechler */ public interface Accessor extends PropertyDescriptor diff --git a/src/main/java/de/danielbechler/diff/accessor/CanonicalAccessor.java b/src/main/java/in/th3iedkid/diff/accessor/CanonicalAccessor.java old mode 100644 new mode 100755 similarity index 95% rename from src/main/java/de/danielbechler/diff/accessor/CanonicalAccessor.java rename to src/main/java/in/th3iedkid/diff/accessor/CanonicalAccessor.java index e529e77b..2eb3cdb7 --- a/src/main/java/de/danielbechler/diff/accessor/CanonicalAccessor.java +++ b/src/main/java/in/th3iedkid/diff/accessor/CanonicalAccessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; /** @author Daniel Bechler */ public interface CanonicalAccessor extends Accessor diff --git a/src/main/java/de/danielbechler/diff/accessor/CollectionItemAccessor.java b/src/main/java/in/th3iedkid/diff/accessor/CollectionItemAccessor.java old mode 100644 new mode 100755 similarity index 93% rename from src/main/java/de/danielbechler/diff/accessor/CollectionItemAccessor.java rename to src/main/java/in/th3iedkid/diff/accessor/CollectionItemAccessor.java index b5b49fe3..5aaa0fb6 --- a/src/main/java/de/danielbechler/diff/accessor/CollectionItemAccessor.java +++ b/src/main/java/in/th3iedkid/diff/accessor/CollectionItemAccessor.java @@ -14,11 +14,12 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; -import de.danielbechler.diff.path.*; +import in.th3iedkid.diff.path.CollectionElement; +import in.th3iedkid.diff.path.Element; -import java.util.*; +import java.util.Collection; /** @author Daniel Bechler */ public class CollectionItemAccessor extends AbstractAccessor implements TypeAwareAccessor diff --git a/src/main/java/de/danielbechler/diff/accessor/MapEntryAccessor.java b/src/main/java/in/th3iedkid/diff/accessor/MapEntryAccessor.java old mode 100644 new mode 100755 similarity index 92% rename from src/main/java/de/danielbechler/diff/accessor/MapEntryAccessor.java rename to src/main/java/in/th3iedkid/diff/accessor/MapEntryAccessor.java index 61b91158..cca912b1 --- a/src/main/java/de/danielbechler/diff/accessor/MapEntryAccessor.java +++ b/src/main/java/in/th3iedkid/diff/accessor/MapEntryAccessor.java @@ -14,12 +14,14 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; -import de.danielbechler.diff.path.*; -import de.danielbechler.util.*; +import in.th3iedkid.diff.path.Element; +import in.th3iedkid.diff.path.MapElement; +import in.th3iedkid.util.Assert; -import java.util.*; +import java.util.List; +import java.util.Map; /** @author Daniel Bechler */ public final class MapEntryAccessor extends AbstractAccessor diff --git a/src/main/java/de/danielbechler/diff/accessor/PropertyAccessor.java b/src/main/java/in/th3iedkid/diff/accessor/PropertyAccessor.java old mode 100644 new mode 100755 similarity index 92% rename from src/main/java/de/danielbechler/diff/accessor/PropertyAccessor.java rename to src/main/java/in/th3iedkid/diff/accessor/PropertyAccessor.java index 42a16588..98dfd72e --- a/src/main/java/de/danielbechler/diff/accessor/PropertyAccessor.java +++ b/src/main/java/in/th3iedkid/diff/accessor/PropertyAccessor.java @@ -14,15 +14,18 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; - -import de.danielbechler.diff.accessor.exception.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.util.*; -import org.slf4j.*; - -import java.lang.annotation.*; -import java.lang.reflect.*; +package in.th3iedkid.diff.accessor; + +import in.th3iedkid.diff.accessor.exception.PropertyReadException; +import in.th3iedkid.diff.accessor.exception.PropertyWriteException; +import in.th3iedkid.diff.path.Element; +import in.th3iedkid.diff.path.NamedPropertyElement; +import in.th3iedkid.util.Assert; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; import java.util.*; /** @author Daniel Bechler */ diff --git a/src/main/java/de/danielbechler/diff/accessor/PropertyDescriptor.java b/src/main/java/in/th3iedkid/diff/accessor/PropertyDescriptor.java old mode 100644 new mode 100755 similarity index 88% rename from src/main/java/de/danielbechler/diff/accessor/PropertyDescriptor.java rename to src/main/java/in/th3iedkid/diff/accessor/PropertyDescriptor.java index 50cc094d..f318638e --- a/src/main/java/de/danielbechler/diff/accessor/PropertyDescriptor.java +++ b/src/main/java/in/th3iedkid/diff/accessor/PropertyDescriptor.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; -import de.danielbechler.diff.path.*; +import in.th3iedkid.diff.path.Element; -import java.util.*; +import java.util.Set; /** @author Daniel Bechler */ public interface PropertyDescriptor diff --git a/src/main/java/de/danielbechler/diff/accessor/RootAccessor.java b/src/main/java/in/th3iedkid/diff/accessor/RootAccessor.java old mode 100644 new mode 100755 similarity index 91% rename from src/main/java/de/danielbechler/diff/accessor/RootAccessor.java rename to src/main/java/in/th3iedkid/diff/accessor/RootAccessor.java index 36bea457..83ddb1a5 --- a/src/main/java/de/danielbechler/diff/accessor/RootAccessor.java +++ b/src/main/java/in/th3iedkid/diff/accessor/RootAccessor.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; -import de.danielbechler.diff.path.*; +import in.th3iedkid.diff.path.Element; +import in.th3iedkid.diff.path.RootElement; /** @author Daniel Bechler */ public final class RootAccessor extends AbstractAccessor diff --git a/src/main/java/de/danielbechler/diff/accessor/TypeAwareAccessor.java b/src/main/java/in/th3iedkid/diff/accessor/TypeAwareAccessor.java old mode 100644 new mode 100755 similarity index 94% rename from src/main/java/de/danielbechler/diff/accessor/TypeAwareAccessor.java rename to src/main/java/in/th3iedkid/diff/accessor/TypeAwareAccessor.java index ac0140b4..23671738 --- a/src/main/java/de/danielbechler/diff/accessor/TypeAwareAccessor.java +++ b/src/main/java/in/th3iedkid/diff/accessor/TypeAwareAccessor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; /** @author Daniel Bechler */ public interface TypeAwareAccessor extends Accessor diff --git a/src/main/java/de/danielbechler/diff/accessor/exception/ItemNotIndexedException.java b/src/main/java/in/th3iedkid/diff/accessor/exception/ItemNotIndexedException.java old mode 100644 new mode 100755 similarity index 94% rename from src/main/java/de/danielbechler/diff/accessor/exception/ItemNotIndexedException.java rename to src/main/java/in/th3iedkid/diff/accessor/exception/ItemNotIndexedException.java index 5788511b..cd0a1d8f --- a/src/main/java/de/danielbechler/diff/accessor/exception/ItemNotIndexedException.java +++ b/src/main/java/in/th3iedkid/diff/accessor/exception/ItemNotIndexedException.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor.exception; +package in.th3iedkid.diff.accessor.exception; /** @author Daniel Bechler */ public final class ItemNotIndexedException extends RuntimeException diff --git a/src/main/java/de/danielbechler/diff/accessor/exception/PropertyException.java b/src/main/java/in/th3iedkid/diff/accessor/exception/PropertyException.java old mode 100644 new mode 100755 similarity index 96% rename from src/main/java/de/danielbechler/diff/accessor/exception/PropertyException.java rename to src/main/java/in/th3iedkid/diff/accessor/exception/PropertyException.java index 6cc920cd..ad1602b1 --- a/src/main/java/de/danielbechler/diff/accessor/exception/PropertyException.java +++ b/src/main/java/in/th3iedkid/diff/accessor/exception/PropertyException.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor.exception; +package in.th3iedkid.diff.accessor.exception; /** @author Daniel Bechler */ public class PropertyException extends RuntimeException diff --git a/src/main/java/de/danielbechler/diff/accessor/exception/PropertyReadException.java b/src/main/java/in/th3iedkid/diff/accessor/exception/PropertyReadException.java old mode 100644 new mode 100755 similarity index 94% rename from src/main/java/de/danielbechler/diff/accessor/exception/PropertyReadException.java rename to src/main/java/in/th3iedkid/diff/accessor/exception/PropertyReadException.java index fb8cb34c..fde68db4 --- a/src/main/java/de/danielbechler/diff/accessor/exception/PropertyReadException.java +++ b/src/main/java/in/th3iedkid/diff/accessor/exception/PropertyReadException.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor.exception; +package in.th3iedkid.diff.accessor.exception; /** @author Daniel Bechler */ public class PropertyReadException extends PropertyException diff --git a/src/main/java/de/danielbechler/diff/accessor/exception/PropertyWriteException.java b/src/main/java/in/th3iedkid/diff/accessor/exception/PropertyWriteException.java old mode 100644 new mode 100755 similarity index 94% rename from src/main/java/de/danielbechler/diff/accessor/exception/PropertyWriteException.java rename to src/main/java/in/th3iedkid/diff/accessor/exception/PropertyWriteException.java index 15ff4361..7ea63d19 --- a/src/main/java/de/danielbechler/diff/accessor/exception/PropertyWriteException.java +++ b/src/main/java/in/th3iedkid/diff/accessor/exception/PropertyWriteException.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor.exception; +package in.th3iedkid.diff.accessor.exception; /** @author Daniel Bechler */ public class PropertyWriteException extends PropertyException diff --git a/src/main/java/de/danielbechler/diff/annotation/ObjectDiffAnnotation.java b/src/main/java/in/th3iedkid/diff/annotation/ObjectDiffAnnotation.java old mode 100644 new mode 100755 similarity index 94% rename from src/main/java/de/danielbechler/diff/annotation/ObjectDiffAnnotation.java rename to src/main/java/in/th3iedkid/diff/annotation/ObjectDiffAnnotation.java index bbe16bd5..a5be91ef --- a/src/main/java/de/danielbechler/diff/annotation/ObjectDiffAnnotation.java +++ b/src/main/java/in/th3iedkid/diff/annotation/ObjectDiffAnnotation.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.annotation; +package in.th3iedkid.diff.annotation; import java.lang.annotation.*; diff --git a/src/main/java/de/danielbechler/diff/annotation/ObjectDiffEqualsOnlyType.java b/src/main/java/in/th3iedkid/diff/annotation/ObjectDiffEqualsOnlyType.java old mode 100644 new mode 100755 similarity index 95% rename from src/main/java/de/danielbechler/diff/annotation/ObjectDiffEqualsOnlyType.java rename to src/main/java/in/th3iedkid/diff/annotation/ObjectDiffEqualsOnlyType.java index dce74951..cdc191da --- a/src/main/java/de/danielbechler/diff/annotation/ObjectDiffEqualsOnlyType.java +++ b/src/main/java/in/th3iedkid/diff/annotation/ObjectDiffEqualsOnlyType.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.annotation; +package in.th3iedkid.diff.annotation; import java.lang.annotation.*; diff --git a/src/main/java/de/danielbechler/diff/annotation/ObjectDiffProperty.java b/src/main/java/in/th3iedkid/diff/annotation/ObjectDiffProperty.java old mode 100644 new mode 100755 similarity index 84% rename from src/main/java/de/danielbechler/diff/annotation/ObjectDiffProperty.java rename to src/main/java/in/th3iedkid/diff/annotation/ObjectDiffProperty.java index d592a19b..013be6eb --- a/src/main/java/de/danielbechler/diff/annotation/ObjectDiffProperty.java +++ b/src/main/java/in/th3iedkid/diff/annotation/ObjectDiffProperty.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.annotation; +package in.th3iedkid.diff.annotation; import java.lang.annotation.*; @@ -31,14 +31,14 @@ public @interface ObjectDiffProperty { /** - * Causes the {@link de.danielbechler.diff.Differ Differs} to skip the marked property and all its children. + * Causes the {@link in.th3iedkid.differ Differs} to skip the marked property and all its children. * * @return true if the property should be ignored. */ public boolean ignore() default false; /** - * Causes the {@link de.danielbechler.diff.Differ Differs} to compare the object by using the {@link Object#equals(Object)} + * Causes the {@link in.th3iedkid.differ Differs} to compare the object by using the {@link Object#equals(Object)} * method instead of introspection. * * @return true if the property should be compared via {@link Object#equals(Object)}. diff --git a/src/main/java/de/danielbechler/diff/example/CanonicalAccessorExample.java b/src/main/java/in/th3iedkid/diff/example/CanonicalAccessorExample.java old mode 100644 new mode 100755 similarity index 88% rename from src/main/java/de/danielbechler/diff/example/CanonicalAccessorExample.java rename to src/main/java/in/th3iedkid/diff/example/CanonicalAccessorExample.java index 6c5d454d..ae079534 --- a/src/main/java/de/danielbechler/diff/example/CanonicalAccessorExample.java +++ b/src/main/java/in/th3iedkid/diff/example/CanonicalAccessorExample.java @@ -14,15 +14,16 @@ * limitations under the License. */ -package de.danielbechler.diff.example; +package in.th3iedkid.diff.example; -import de.danielbechler.diff.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.visitor.*; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.visitor.NodeHierarchyVisitor; -import java.util.*; +import java.util.LinkedList; +import java.util.List; -import static java.util.Arrays.*; +import static java.util.Arrays.asList; /** @author Daniel Bechler */ class CanonicalAccessorExample @@ -53,9 +54,9 @@ public static void main(final String[] args) Output: - / ===> DefaultNode(state=CHANGED, type=de.danielbechler.diff.example.CanonicalAccessorExample.AddressBook, 1 child, accessed via root element) + / ===> DefaultNode(state=CHANGED, type=CanonicalAccessorExample.AddressBook, 1 child, accessed via root element) /contacts ===> CollectionNode(state=CHANGED, type=java.util.List, 1 child, accessed via property 'contacts') - /contacts[Contact{name='Walter White'}] ===> DefaultNode(state=CHANGED, type=de.danielbechler.diff.example.CanonicalAccessorExample.Contact, 1 child, accessed via collection item [Contact{name='Walter White'}]) + /contacts[Contact{name='Walter White'}] ===> DefaultNode(state=CHANGED, type=CanonicalAccessorExample.Contact, 1 child, accessed via collection item [Contact{name='Walter White'}]) /contacts[Contact{name='Walter White'}]/nickname ===> DefaultNode(state=ADDED, type=java.lang.String, no children, accessed via property 'nickname') */ diff --git a/src/main/java/de/danielbechler/diff/example/IgnoreExample.java b/src/main/java/in/th3iedkid/diff/example/IgnoreExample.java old mode 100644 new mode 100755 similarity index 80% rename from src/main/java/de/danielbechler/diff/example/IgnoreExample.java rename to src/main/java/in/th3iedkid/diff/example/IgnoreExample.java index 6b0a6e7f..2b618f95 --- a/src/main/java/de/danielbechler/diff/example/IgnoreExample.java +++ b/src/main/java/in/th3iedkid/diff/example/IgnoreExample.java @@ -1,10 +1,11 @@ -package de.danielbechler.diff.example; - -import de.danielbechler.diff.*; -import de.danielbechler.diff.annotation.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.diff.visitor.*; +package in.th3iedkid.diff.example; + +import in.th3iedkid.diff.Configuration; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.annotation.ObjectDiffProperty; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.diff.visitor.PrintingVisitor; /** @author Daniel Bechler */ @SuppressWarnings("UnusedDeclaration") diff --git a/src/main/java/de/danielbechler/diff/example/MapEntryValueAccessExample.java b/src/main/java/in/th3iedkid/diff/example/MapEntryValueAccessExample.java old mode 100644 new mode 100755 similarity index 86% rename from src/main/java/de/danielbechler/diff/example/MapEntryValueAccessExample.java rename to src/main/java/in/th3iedkid/diff/example/MapEntryValueAccessExample.java index 1dd7ffd3..ee8b8571 --- a/src/main/java/de/danielbechler/diff/example/MapEntryValueAccessExample.java +++ b/src/main/java/in/th3iedkid/diff/example/MapEntryValueAccessExample.java @@ -14,14 +14,15 @@ * limitations under the License. */ -package de.danielbechler.diff.example; +package in.th3iedkid.diff.example; -import de.danielbechler.diff.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.diff.visitor.*; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.MapElement; +import in.th3iedkid.diff.visitor.Visit; -import java.util.*; +import java.util.Map; +import java.util.TreeMap; /** @author Daniel Bechler */ class MapEntryValueAccessExample diff --git a/src/main/java/de/danielbechler/diff/example/RuntimeTypeResolutionExample.java b/src/main/java/in/th3iedkid/diff/example/RuntimeTypeResolutionExample.java old mode 100644 new mode 100755 similarity index 94% rename from src/main/java/de/danielbechler/diff/example/RuntimeTypeResolutionExample.java rename to src/main/java/in/th3iedkid/diff/example/RuntimeTypeResolutionExample.java index 332f5872..38b0e91b --- a/src/main/java/de/danielbechler/diff/example/RuntimeTypeResolutionExample.java +++ b/src/main/java/in/th3iedkid/diff/example/RuntimeTypeResolutionExample.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff.example; +package in.th3iedkid.diff.example; -import de.danielbechler.diff.*; -import de.danielbechler.diff.node.*; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.node.Node; /** @author Daniel Bechler */ public class RuntimeTypeResolutionExample diff --git a/src/main/java/de/danielbechler/diff/example/SimpleNodeExample.java b/src/main/java/in/th3iedkid/diff/example/SimpleNodeExample.java old mode 100644 new mode 100755 similarity index 89% rename from src/main/java/de/danielbechler/diff/example/SimpleNodeExample.java rename to src/main/java/in/th3iedkid/diff/example/SimpleNodeExample.java index b3151596..cda6dd2f --- a/src/main/java/de/danielbechler/diff/example/SimpleNodeExample.java +++ b/src/main/java/in/th3iedkid/diff/example/SimpleNodeExample.java @@ -14,11 +14,12 @@ * limitations under the License. */ -package de.danielbechler.diff.example; +package in.th3iedkid.diff.example; -import de.danielbechler.diff.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.visitor.*; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.visitor.NodeHierarchyVisitor; +import in.th3iedkid.diff.visitor.PrintingVisitor; /** @author Daniel Bechler */ class SimpleNodeExample diff --git a/src/main/java/de/danielbechler/diff/introspect/Introspector.java b/src/main/java/in/th3iedkid/diff/introspect/Introspector.java old mode 100644 new mode 100755 similarity index 91% rename from src/main/java/de/danielbechler/diff/introspect/Introspector.java rename to src/main/java/in/th3iedkid/diff/introspect/Introspector.java index 4fc98c5a..63b1de3a --- a/src/main/java/de/danielbechler/diff/introspect/Introspector.java +++ b/src/main/java/in/th3iedkid/diff/introspect/Introspector.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.introspect; +package in.th3iedkid.diff.introspect; -import de.danielbechler.diff.accessor.*; +import in.th3iedkid.diff.accessor.Accessor; /** * Resolves the accessors of a given type. diff --git a/src/main/java/de/danielbechler/diff/introspect/StandardIntrospector.java b/src/main/java/in/th3iedkid/diff/introspect/StandardIntrospector.java old mode 100644 new mode 100755 similarity index 82% rename from src/main/java/de/danielbechler/diff/introspect/StandardIntrospector.java rename to src/main/java/in/th3iedkid/diff/introspect/StandardIntrospector.java index 2e958cc7..94574471 --- a/src/main/java/de/danielbechler/diff/introspect/StandardIntrospector.java +++ b/src/main/java/in/th3iedkid/diff/introspect/StandardIntrospector.java @@ -14,25 +14,29 @@ * limitations under the License. */ -package de.danielbechler.diff.introspect; +package in.th3iedkid.diff.introspect; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.annotation.*; -import de.danielbechler.util.*; -import de.danielbechler.util.Collections; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.accessor.PropertyAccessor; +import in.th3iedkid.diff.annotation.ObjectDiffEqualsOnlyType; +import in.th3iedkid.diff.annotation.ObjectDiffProperty; +import in.th3iedkid.util.Assert; +import in.th3iedkid.util.Exceptions; -import java.beans.*; +import java.beans.BeanInfo; +import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; -import java.lang.reflect.*; -import java.util.*; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collection; /** * Resolves the accessors of a given type by using the standard Java {@link Introspector}. * * @author Daniel Bechler */ -public class StandardIntrospector implements de.danielbechler.diff.introspect.Introspector +public class StandardIntrospector implements in.th3iedkid.diff.introspect.Introspector { public Iterable introspect(final Class type) { @@ -98,7 +102,7 @@ private static void handleObjectDiffPropertyAnnotation(final Method readMethod, { propertyAccessor.setEqualsOnly(annotation.equalsOnly()); propertyAccessor.setIgnored(annotation.ignore()); - propertyAccessor.setCategories(Collections.setOf(annotation.categories())); + propertyAccessor.setCategories(in.th3iedkid.util.Collections.setOf(annotation.categories())); } } diff --git a/src/main/java/de/danielbechler/diff/node/CollectionNode.java b/src/main/java/in/th3iedkid/diff/node/CollectionNode.java old mode 100644 new mode 100755 similarity index 87% rename from src/main/java/de/danielbechler/diff/node/CollectionNode.java rename to src/main/java/in/th3iedkid/diff/node/CollectionNode.java index d3f694c6..1ac06349 --- a/src/main/java/de/danielbechler/diff/node/CollectionNode.java +++ b/src/main/java/in/th3iedkid/diff/node/CollectionNode.java @@ -14,12 +14,13 @@ * limitations under the License. */ -package de.danielbechler.diff.node; +package in.th3iedkid.diff.node; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.visitor.*; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.visitor.AbstractFilteringVisitor; +import in.th3iedkid.diff.visitor.StateFilteringVisitor; -import java.util.*; +import java.util.Collection; /** @author Daniel Bechler */ @SuppressWarnings("UnusedDeclaration") diff --git a/src/main/java/de/danielbechler/diff/node/DefaultNode.java b/src/main/java/in/th3iedkid/diff/node/DefaultNode.java old mode 100644 new mode 100755 similarity index 93% rename from src/main/java/de/danielbechler/diff/node/DefaultNode.java rename to src/main/java/in/th3iedkid/diff/node/DefaultNode.java index 024a3f41..08a802b8 --- a/src/main/java/de/danielbechler/diff/node/DefaultNode.java +++ b/src/main/java/in/th3iedkid/diff/node/DefaultNode.java @@ -14,19 +14,25 @@ * limitations under the License. */ -package de.danielbechler.diff.node; - -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.diff.visitor.*; -import de.danielbechler.util.*; - -import java.lang.annotation.*; +package in.th3iedkid.diff.node; + +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.accessor.PropertyAccessor; +import in.th3iedkid.diff.accessor.RootAccessor; +import in.th3iedkid.diff.accessor.TypeAwareAccessor; +import in.th3iedkid.diff.path.Element; +import in.th3iedkid.diff.path.NamedPropertyElement; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.diff.visitor.PropertyVisitor; +import in.th3iedkid.diff.visitor.StopVisitationException; +import in.th3iedkid.diff.visitor.Visit; +import in.th3iedkid.util.Assert; + +import java.lang.annotation.Annotation; import java.util.*; -import java.util.Collections; -import java.util.concurrent.atomic.*; +import java.util.concurrent.atomic.AtomicBoolean; -import static java.util.Collections.*; +import static java.util.Collections.unmodifiableSet; /** @author Daniel Bechler */ public class DefaultNode implements Node diff --git a/src/main/java/de/danielbechler/diff/node/MapNode.java b/src/main/java/in/th3iedkid/diff/node/MapNode.java old mode 100644 new mode 100755 similarity index 86% rename from src/main/java/de/danielbechler/diff/node/MapNode.java rename to src/main/java/in/th3iedkid/diff/node/MapNode.java index 3898ae25..d5ec027f --- a/src/main/java/de/danielbechler/diff/node/MapNode.java +++ b/src/main/java/in/th3iedkid/diff/node/MapNode.java @@ -14,12 +14,14 @@ * limitations under the License. */ -package de.danielbechler.diff.node; +package in.th3iedkid.diff.node; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.accessor.exception.*; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.accessor.MapEntryAccessor; +import in.th3iedkid.diff.accessor.exception.ItemNotIndexedException; -import java.util.*; +import java.util.LinkedList; +import java.util.List; /** @author Daniel Bechler */ public class MapNode extends DefaultNode diff --git a/src/main/java/de/danielbechler/diff/node/Node.java b/src/main/java/in/th3iedkid/diff/node/Node.java old mode 100644 new mode 100755 similarity index 94% rename from src/main/java/de/danielbechler/diff/node/Node.java rename to src/main/java/in/th3iedkid/diff/node/Node.java index 90d0c6e1..8c6ff4c4 --- a/src/main/java/de/danielbechler/diff/node/Node.java +++ b/src/main/java/in/th3iedkid/diff/node/Node.java @@ -14,14 +14,16 @@ * limitations under the License. */ -package de.danielbechler.diff.node; +package in.th3iedkid.diff.node; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.diff.visitor.*; +import in.th3iedkid.diff.accessor.CanonicalAccessor; +import in.th3iedkid.diff.path.Element; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.diff.visitor.Visit; -import java.lang.annotation.*; -import java.util.*; +import java.lang.annotation.Annotation; +import java.util.Collection; +import java.util.Set; /** * Represents a part of an object. It could be the object itself, one of its properties, an item in a diff --git a/src/main/java/de/danielbechler/diff/path/CollectionElement.java b/src/main/java/in/th3iedkid/diff/path/CollectionElement.java old mode 100644 new mode 100755 similarity index 95% rename from src/main/java/de/danielbechler/diff/path/CollectionElement.java rename to src/main/java/in/th3iedkid/diff/path/CollectionElement.java index 1917836b..3cd0f567 --- a/src/main/java/de/danielbechler/diff/path/CollectionElement.java +++ b/src/main/java/in/th3iedkid/diff/path/CollectionElement.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.path; +package in.th3iedkid.diff.path; -import de.danielbechler.util.*; +import in.th3iedkid.util.Strings; /** @author Daniel Bechler */ public final class CollectionElement extends Element diff --git a/src/main/java/de/danielbechler/diff/path/Element.java b/src/main/java/in/th3iedkid/diff/path/Element.java old mode 100644 new mode 100755 similarity index 97% rename from src/main/java/de/danielbechler/diff/path/Element.java rename to src/main/java/in/th3iedkid/diff/path/Element.java index 371ae393..db55f09e --- a/src/main/java/de/danielbechler/diff/path/Element.java +++ b/src/main/java/in/th3iedkid/diff/path/Element.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.path; +package in.th3iedkid.diff.path; /** * Serves mainly as marker class and enforces the proper implementation of hashCode(), equals() and toString() for all diff --git a/src/main/java/de/danielbechler/diff/path/MapElement.java b/src/main/java/in/th3iedkid/diff/path/MapElement.java old mode 100644 new mode 100755 similarity index 95% rename from src/main/java/de/danielbechler/diff/path/MapElement.java rename to src/main/java/in/th3iedkid/diff/path/MapElement.java index d301aa9d..646eac18 --- a/src/main/java/de/danielbechler/diff/path/MapElement.java +++ b/src/main/java/in/th3iedkid/diff/path/MapElement.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.path; +package in.th3iedkid.diff.path; -import de.danielbechler.util.*; +import in.th3iedkid.util.Strings; /** @author Daniel Bechler */ public final class MapElement extends Element diff --git a/src/main/java/de/danielbechler/diff/path/NamedPropertyElement.java b/src/main/java/in/th3iedkid/diff/path/NamedPropertyElement.java old mode 100644 new mode 100755 similarity index 95% rename from src/main/java/de/danielbechler/diff/path/NamedPropertyElement.java rename to src/main/java/in/th3iedkid/diff/path/NamedPropertyElement.java index 651cbf70..11d24320 --- a/src/main/java/de/danielbechler/diff/path/NamedPropertyElement.java +++ b/src/main/java/in/th3iedkid/diff/path/NamedPropertyElement.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.path; +package in.th3iedkid.diff.path; -import de.danielbechler.util.*; +import in.th3iedkid.util.Assert; /** @author Daniel Bechler */ public final class NamedPropertyElement extends Element diff --git a/src/main/java/de/danielbechler/diff/path/PropertyPath.java b/src/main/java/in/th3iedkid/diff/path/PropertyPath.java old mode 100644 new mode 100755 similarity index 97% rename from src/main/java/de/danielbechler/diff/path/PropertyPath.java rename to src/main/java/in/th3iedkid/diff/path/PropertyPath.java index 21623a11..9ad90d5a --- a/src/main/java/de/danielbechler/diff/path/PropertyPath.java +++ b/src/main/java/in/th3iedkid/diff/path/PropertyPath.java @@ -14,12 +14,14 @@ * limitations under the License. */ -package de.danielbechler.diff.path; +package in.th3iedkid.diff.path; -import de.danielbechler.util.*; +import in.th3iedkid.util.Assert; -import java.util.*; +import java.util.ArrayList; import java.util.Collections; +import java.util.Iterator; +import java.util.List; /** @author Daniel Bechler */ public final class PropertyPath diff --git a/src/main/java/de/danielbechler/diff/path/RootElement.java b/src/main/java/in/th3iedkid/diff/path/RootElement.java old mode 100644 new mode 100755 similarity index 96% rename from src/main/java/de/danielbechler/diff/path/RootElement.java rename to src/main/java/in/th3iedkid/diff/path/RootElement.java index 598986d9..9b4fef24 --- a/src/main/java/de/danielbechler/diff/path/RootElement.java +++ b/src/main/java/in/th3iedkid/diff/path/RootElement.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.path; +package in.th3iedkid.diff.path; /** @author Daniel Bechler */ public final class RootElement extends Element diff --git a/src/main/java/de/danielbechler/diff/visitor/AbstractFilteringVisitor.java b/src/main/java/in/th3iedkid/diff/visitor/AbstractFilteringVisitor.java old mode 100644 new mode 100755 similarity index 90% rename from src/main/java/de/danielbechler/diff/visitor/AbstractFilteringVisitor.java rename to src/main/java/in/th3iedkid/diff/visitor/AbstractFilteringVisitor.java index cedb073d..18d0ab94 --- a/src/main/java/de/danielbechler/diff/visitor/AbstractFilteringVisitor.java +++ b/src/main/java/in/th3iedkid/diff/visitor/AbstractFilteringVisitor.java @@ -14,11 +14,12 @@ * limitations under the License. */ -package de.danielbechler.diff.visitor; +package in.th3iedkid.diff.visitor; -import de.danielbechler.diff.node.*; +import in.th3iedkid.diff.node.Node; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; /** @author Daniel Bechler */ public abstract class AbstractFilteringVisitor implements Node.Visitor diff --git a/src/main/java/de/danielbechler/diff/visitor/CategoryFilteringVisitor.java b/src/main/java/in/th3iedkid/diff/visitor/CategoryFilteringVisitor.java old mode 100644 new mode 100755 similarity index 87% rename from src/main/java/de/danielbechler/diff/visitor/CategoryFilteringVisitor.java rename to src/main/java/in/th3iedkid/diff/visitor/CategoryFilteringVisitor.java index c011cda1..f923276a --- a/src/main/java/de/danielbechler/diff/visitor/CategoryFilteringVisitor.java +++ b/src/main/java/in/th3iedkid/diff/visitor/CategoryFilteringVisitor.java @@ -14,12 +14,12 @@ * limitations under the License. */ -package de.danielbechler.diff.visitor; +package in.th3iedkid.diff.visitor; -import de.danielbechler.diff.node.*; -import de.danielbechler.util.Collections; +import in.th3iedkid.diff.node.Node; -import java.util.*; +import java.util.Collection; +import java.util.TreeSet; /** @author Daniel Bechler */ @SuppressWarnings("UnusedDeclaration") @@ -54,13 +54,13 @@ protected void onDismiss(final Node node, final Visit visit) @SuppressWarnings({"TypeMayBeWeakened"}) private boolean isExcluded(final Node node) { - return Collections.containsAny(node.getCategories(), exclude); + return in.th3iedkid.util.Collections.containsAny(node.getCategories(), exclude); } @SuppressWarnings({"TypeMayBeWeakened"}) private boolean isIncluded(final Node node) { - return Collections.containsAny(node.getCategories(), include); + return in.th3iedkid.util.Collections.containsAny(node.getCategories(), include); } public final CategoryFilteringVisitor include(final String category) diff --git a/src/main/java/de/danielbechler/diff/visitor/NodeHierarchyVisitor.java b/src/main/java/in/th3iedkid/diff/visitor/NodeHierarchyVisitor.java old mode 100644 new mode 100755 similarity index 90% rename from src/main/java/de/danielbechler/diff/visitor/NodeHierarchyVisitor.java rename to src/main/java/in/th3iedkid/diff/visitor/NodeHierarchyVisitor.java index be8385ef..abb1e9f6 --- a/src/main/java/de/danielbechler/diff/visitor/NodeHierarchyVisitor.java +++ b/src/main/java/in/th3iedkid/diff/visitor/NodeHierarchyVisitor.java @@ -14,14 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff.visitor; +package in.th3iedkid.diff.visitor; -import de.danielbechler.diff.node.*; -import de.danielbechler.util.*; - -import java.lang.Override; -import java.lang.String; -import java.lang.SuppressWarnings; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.util.Strings; /** * Prints the hierarchy of the object graph in a human-readable form. diff --git a/src/main/java/de/danielbechler/diff/visitor/PrintingVisitor.java b/src/main/java/in/th3iedkid/diff/visitor/PrintingVisitor.java old mode 100644 new mode 100755 similarity index 95% rename from src/main/java/de/danielbechler/diff/visitor/PrintingVisitor.java rename to src/main/java/in/th3iedkid/diff/visitor/PrintingVisitor.java index 461f43f6..8564637b --- a/src/main/java/de/danielbechler/diff/visitor/PrintingVisitor.java +++ b/src/main/java/in/th3iedkid/diff/visitor/PrintingVisitor.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package de.danielbechler.diff.visitor; +package in.th3iedkid.diff.visitor; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.util.*; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.util.Strings; /** @author Daniel Bechler */ @SuppressWarnings({"MethodMayBeStatic"}) diff --git a/src/main/java/de/danielbechler/diff/visitor/PropertyVisitor.java b/src/main/java/in/th3iedkid/diff/visitor/PropertyVisitor.java old mode 100644 new mode 100755 similarity index 89% rename from src/main/java/de/danielbechler/diff/visitor/PropertyVisitor.java rename to src/main/java/in/th3iedkid/diff/visitor/PropertyVisitor.java index ccd4d279..0203f94e --- a/src/main/java/de/danielbechler/diff/visitor/PropertyVisitor.java +++ b/src/main/java/in/th3iedkid/diff/visitor/PropertyVisitor.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package de.danielbechler.diff.visitor; +package in.th3iedkid.diff.visitor; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.util.*; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.util.Assert; /** @author Daniel Bechler */ public class PropertyVisitor implements Node.Visitor diff --git a/src/main/java/de/danielbechler/diff/visitor/StateFilteringVisitor.java b/src/main/java/in/th3iedkid/diff/visitor/StateFilteringVisitor.java old mode 100644 new mode 100755 similarity index 91% rename from src/main/java/de/danielbechler/diff/visitor/StateFilteringVisitor.java rename to src/main/java/in/th3iedkid/diff/visitor/StateFilteringVisitor.java index 9046d6ed..69b5b2c7 --- a/src/main/java/de/danielbechler/diff/visitor/StateFilteringVisitor.java +++ b/src/main/java/in/th3iedkid/diff/visitor/StateFilteringVisitor.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff.visitor; +package in.th3iedkid.diff.visitor; -import de.danielbechler.diff.node.*; -import de.danielbechler.util.*; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.util.Assert; /** @author Daniel Bechler */ public class StateFilteringVisitor extends AbstractFilteringVisitor diff --git a/src/main/java/de/danielbechler/diff/visitor/StopVisitationException.java b/src/main/java/in/th3iedkid/diff/visitor/StopVisitationException.java old mode 100644 new mode 100755 similarity index 95% rename from src/main/java/de/danielbechler/diff/visitor/StopVisitationException.java rename to src/main/java/in/th3iedkid/diff/visitor/StopVisitationException.java index e16120b5..55454525 --- a/src/main/java/de/danielbechler/diff/visitor/StopVisitationException.java +++ b/src/main/java/in/th3iedkid/diff/visitor/StopVisitationException.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.visitor; +package in.th3iedkid.diff.visitor; /** @author Daniel Bechler */ public final class StopVisitationException extends RuntimeException diff --git a/src/main/java/de/danielbechler/diff/visitor/ToMapPrintingVisitor.java b/src/main/java/in/th3iedkid/diff/visitor/ToMapPrintingVisitor.java old mode 100644 new mode 100755 similarity index 92% rename from src/main/java/de/danielbechler/diff/visitor/ToMapPrintingVisitor.java rename to src/main/java/in/th3iedkid/diff/visitor/ToMapPrintingVisitor.java index dc128f62..1ffbb354 --- a/src/main/java/de/danielbechler/diff/visitor/ToMapPrintingVisitor.java +++ b/src/main/java/in/th3iedkid/diff/visitor/ToMapPrintingVisitor.java @@ -14,12 +14,13 @@ * limitations under the License. */ -package de.danielbechler.diff.visitor; +package in.th3iedkid.diff.visitor; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; -import java.util.*; +import java.util.LinkedHashMap; +import java.util.Map; /** * This visitor generates the same output as the {@link PrintingVisitor}, but instead of printing it to diff --git a/src/main/java/de/danielbechler/diff/visitor/Visit.java b/src/main/java/in/th3iedkid/diff/visitor/Visit.java old mode 100644 new mode 100755 similarity index 96% rename from src/main/java/de/danielbechler/diff/visitor/Visit.java rename to src/main/java/in/th3iedkid/diff/visitor/Visit.java index 136e6225..8bed7dfb --- a/src/main/java/de/danielbechler/diff/visitor/Visit.java +++ b/src/main/java/in/th3iedkid/diff/visitor/Visit.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.visitor; +package in.th3iedkid.diff.visitor; /** @author Daniel Bechler */ public final class Visit diff --git a/src/main/java/de/danielbechler/merge/ObjectMerger.java b/src/main/java/in/th3iedkid/merge/ObjectMerger.java old mode 100644 new mode 100755 similarity index 92% rename from src/main/java/de/danielbechler/merge/ObjectMerger.java rename to src/main/java/in/th3iedkid/merge/ObjectMerger.java index fc68c158..02421c89 --- a/src/main/java/de/danielbechler/merge/ObjectMerger.java +++ b/src/main/java/in/th3iedkid/merge/ObjectMerger.java @@ -14,11 +14,12 @@ * limitations under the License. */ -package de.danielbechler.merge; +package in.th3iedkid.merge; -import de.danielbechler.diff.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.visitor.*; +import in.th3iedkid.diff.ObjectDiffer; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.visitor.Visit; /** * Careful: This class has not yet been tested very thoroughly and serves more as an example for your own diff --git a/src/main/java/de/danielbechler/util/Assert.java b/src/main/java/in/th3iedkid/util/Assert.java old mode 100644 new mode 100755 similarity index 97% rename from src/main/java/de/danielbechler/util/Assert.java rename to src/main/java/in/th3iedkid/util/Assert.java index cb57b74a..43e675f9 --- a/src/main/java/de/danielbechler/util/Assert.java +++ b/src/main/java/in/th3iedkid/util/Assert.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.util; +package in.th3iedkid.util; -import java.util.*; +import java.util.Collection; /** @author Daniel Bechler */ public class Assert diff --git a/src/main/java/de/danielbechler/util/Classes.java b/src/main/java/in/th3iedkid/util/Classes.java old mode 100644 new mode 100755 similarity index 96% rename from src/main/java/de/danielbechler/util/Classes.java rename to src/main/java/in/th3iedkid/util/Classes.java index 187a9901..f4f70973 --- a/src/main/java/de/danielbechler/util/Classes.java +++ b/src/main/java/in/th3iedkid/util/Classes.java @@ -14,14 +14,16 @@ * limitations under the License. */ -package de.danielbechler.util; +package in.th3iedkid.util; -import org.slf4j.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import java.io.*; -import java.lang.reflect.*; +import java.io.Serializable; +import java.lang.reflect.Constructor; import java.math.BigDecimal; -import java.net.*; +import java.net.URI; +import java.net.URL; import java.util.*; /** @author Daniel Bechler */ diff --git a/src/main/java/de/danielbechler/util/Collections.java b/src/main/java/in/th3iedkid/util/Collections.java old mode 100644 new mode 100755 similarity index 98% rename from src/main/java/de/danielbechler/util/Collections.java rename to src/main/java/in/th3iedkid/util/Collections.java index 8463af49..8925386b --- a/src/main/java/de/danielbechler/util/Collections.java +++ b/src/main/java/in/th3iedkid/util/Collections.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.util; +package in.th3iedkid.util; import java.util.*; diff --git a/src/main/java/de/danielbechler/util/Comparables.java b/src/main/java/in/th3iedkid/util/Comparables.java old mode 100644 new mode 100755 similarity index 96% rename from src/main/java/de/danielbechler/util/Comparables.java rename to src/main/java/in/th3iedkid/util/Comparables.java index 2cc11976..a6d51bd6 --- a/src/main/java/de/danielbechler/util/Comparables.java +++ b/src/main/java/in/th3iedkid/util/Comparables.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.util; +package in.th3iedkid.util; /** @author Daniel Bechler */ public class Comparables diff --git a/src/main/java/de/danielbechler/util/Exceptions.java b/src/main/java/in/th3iedkid/util/Exceptions.java old mode 100644 new mode 100755 similarity index 96% rename from src/main/java/de/danielbechler/util/Exceptions.java rename to src/main/java/in/th3iedkid/util/Exceptions.java index fe8c71d2..81c59109 --- a/src/main/java/de/danielbechler/util/Exceptions.java +++ b/src/main/java/in/th3iedkid/util/Exceptions.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.util; +package in.th3iedkid.util; /** @author Daniel Bechler */ public class Exceptions diff --git a/src/main/java/de/danielbechler/util/Objects.java b/src/main/java/in/th3iedkid/util/Objects.java old mode 100644 new mode 100755 similarity index 96% rename from src/main/java/de/danielbechler/util/Objects.java rename to src/main/java/in/th3iedkid/util/Objects.java index cbd50588..f891320b --- a/src/main/java/de/danielbechler/util/Objects.java +++ b/src/main/java/in/th3iedkid/util/Objects.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.util; +package in.th3iedkid.util; /** @author Daniel Bechler */ public class Objects diff --git a/src/main/java/de/danielbechler/util/Strings.java b/src/main/java/in/th3iedkid/util/Strings.java old mode 100644 new mode 100755 similarity index 96% rename from src/main/java/de/danielbechler/util/Strings.java rename to src/main/java/in/th3iedkid/util/Strings.java index b5d29b53..76b4a0c5 --- a/src/main/java/de/danielbechler/util/Strings.java +++ b/src/main/java/in/th3iedkid/util/Strings.java @@ -14,10 +14,11 @@ * limitations under the License. */ -package de.danielbechler.util; +package in.th3iedkid.util; -import java.util.*; -import java.util.regex.*; +import java.util.Collection; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** @author Daniel Bechler */ public class Strings diff --git a/src/test/java/de/danielbechler/diff/CollectionDifferShould.java b/src/test/java/de/danielbechler/diff/CollectionDifferShould.java deleted file mode 100644 index 5c67395e..00000000 --- a/src/test/java/de/danielbechler/diff/CollectionDifferShould.java +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright 2012 Daniel Bechler - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package de.danielbechler.diff; - -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.node.*; -import org.fest.assertions.api.*; -import org.mockito.*; -import org.testng.annotations.*; - -import java.util.*; - -import static java.util.Arrays.*; -import static java.util.Collections.*; -import static org.mockito.Mockito.*; - -/** @author Daniel Bechler */ -public class CollectionDifferShould -{ - private CollectionDiffer collectionDiffer; - - @Mock private NodeInspector nodeInspector; - @Mock private DifferDelegator delegator; - @Mock private CollectionNodeFactory collectionNodeFactory; - @Mock private CollectionNode collectionNode; - @Mock private Node collectionItemNode; - @Mock private Instances instances; - @Mock private Instances itemInstances; - @Mock private CollectionItemAccessorFactory collectionItemAccessorFactory; - - @BeforeMethod - public void setUp() throws Exception - { - MockitoAnnotations.initMocks(this); - collectionDiffer = new CollectionDiffer(delegator, nodeInspector); - collectionDiffer.setCollectionNodeFactory(collectionNodeFactory); - collectionDiffer.setCollectionItemAccessorFactory(collectionItemAccessorFactory); - when(collectionNodeFactory.create(Node.ROOT, instances)).thenReturn(collectionNode); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void fail_if_constructed_without_delegator() - { - new CollectionDiffer(null, nodeInspector); - } - - @Test(expectedExceptions = IllegalArgumentException.class) - public void fail_if_constructed_without_configuration() - { - new CollectionDiffer(delegator, null); - } - - @Test - public void return_untouched_node_if_base_and_working_are_the_same_instance() - { - when(instances.areSame()).thenReturn(true); - compare(); - verify(collectionNode).setState(Node.State.UNTOUCHED); - } - - @Test - public void return_added_node_if_working_is_not_null_and_base_is_null() throws Exception - { - when(instances.hasBeenAdded()).thenReturn(true); - when(instances.getWorking(Collection.class)).thenReturn(emptyList()); - compare(); - verify(collectionNode).setState(Node.State.ADDED); - } - - @Test(dependsOnMethods = "return_added_node_if_working_is_not_null_and_base_is_null") - public void delegate_items_of_added_collection_to_delegator() - { - when(instances.hasBeenAdded()).thenReturn(true); - when(instances.getWorking(Collection.class)).thenReturn(asList("foo")); - when(instances.access(any(CollectionItemAccessor.class))).thenReturn(itemInstances); // TODO get rid of any - when(delegator.delegate(collectionNode, itemInstances)).thenReturn(collectionItemNode); - when(nodeInspector.isReturnable(collectionItemNode)).thenReturn(true); - compare(); - verify(collectionNode).addChild(collectionItemNode); - } - - @Test - public void return_ignored_node_if_property_is_ignored() throws Exception - { - when(nodeInspector.isIgnored(collectionNode)).thenReturn(true); - compare(); - verify(collectionNode).setState(Node.State.IGNORED); - } - - @Test - public void return_removed_node_if_working_is_null_and_base_is_not_null() throws Exception - { - when(instances.hasBeenRemoved()).thenReturn(true); - when(instances.getBase(Collection.class)).thenReturn(emptyList()); - compare(); - verify(collectionNode).setState(Node.State.REMOVED); - } - - @Test - public void compare_only_via_equals_if_equals_only_is_enabled() - { - when(nodeInspector.isEqualsOnly(collectionNode)).thenReturn(true); - when(instances.areEqual()).thenReturn(true); - compare(); - verify(collectionNode).setState(Node.State.UNTOUCHED); - } - - @Test - public void detect_changes_if_equals_only_is_enabled() - { - when(nodeInspector.isEqualsOnly(collectionNode)).thenReturn(true); - compare(); - verify(collectionNode).setState(Node.State.CHANGED); - } - - private void compare() - { - final CollectionNode node = collectionDiffer.compare(Node.ROOT, instances); - Assertions.assertThat(node).isSameAs(collectionNode); - } - - @Test - public void delegate_items_of_removed_collection_to_delegator() - { - when(instances.hasBeenRemoved()).thenReturn(true); - when(instances.getBase(Collection.class)).thenReturn(asList("foo")); - when(instances.access(any(CollectionItemAccessor.class))).thenReturn(itemInstances); // TODO get rid of any - when(delegator.delegate(collectionNode, itemInstances)).thenReturn(collectionItemNode); - when(nodeInspector.isReturnable(collectionItemNode)).thenReturn(true); - compare(); - verify(collectionNode).addChild(collectionItemNode); - } - - @Test - public void delegate_all_items_to_delegator_on_deep_comparison() - { - when(instances.getWorking(Collection.class)).thenReturn(asList("foo", "bar")); - when(instances.getBase(Collection.class)).thenReturn(asList("foo", "foobar")); - - final Node fooNode = whenDelegatorGetsCalledWithInstancesForItem("foo"); - final Node barNode = whenDelegatorGetsCalledWithInstancesForItem("bar"); - final Node foobarNode = whenDelegatorGetsCalledWithInstancesForItem("foobar"); - - when(nodeInspector.isReturnable(any(Node.class))).thenReturn(true); - - compare(); - - verify(collectionNode).addChild(fooNode); - verify(collectionNode).addChild(barNode); - verify(collectionNode).addChild(foobarNode); - verifyNoMoreInteractions(collectionNode); - } - - private Node whenDelegatorGetsCalledWithInstancesForItem(final String item) - { - final CollectionItemAccessor fooAccessor = mock(CollectionItemAccessor.class); - when(collectionItemAccessorFactory.createAccessorForItem(item)).thenReturn(fooAccessor); - - final Instances fooInstances = mock(Instances.class); - when(instances.access(fooAccessor)).thenReturn(fooInstances); - - final Node fooNode = mock(Node.class); - when(delegator.delegate(collectionNode, fooInstances)).thenReturn(fooNode); - - return fooNode; - } -} diff --git a/src/test/java/de/danielbechler/diff/DifferDelegatorShould.java b/src/test/java/de/danielbechler/diff/DifferDelegatorShould.java deleted file mode 100644 index d5e00acd..00000000 --- a/src/test/java/de/danielbechler/diff/DifferDelegatorShould.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2013 Daniel Bechler - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package de.danielbechler.diff; - -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import org.mockito.Mock; -import org.mockito.invocation.*; -import org.mockito.stubbing.*; -import org.testng.annotations.*; - -import static org.fest.assertions.api.Assertions.*; -import static org.mockito.Mockito.*; -import static org.mockito.MockitoAnnotations.*; - -/** @author Daniel Bechler */ -public class DifferDelegatorShould -{ - @Mock - private DifferFactory differFactory; - @Mock - private Accessor accessor; - @Mock - private CircularReferenceDetectorFactory circularReferenceDetectorFactory; - @Mock - private CircularReferenceDetector circularReferenceDetector; - private Instances instances; - private DifferDelegator differDelegator; - - @BeforeMethod - public void setUp() throws Exception - { - initMocks(this); - - when(circularReferenceDetectorFactory.create()).thenReturn(circularReferenceDetector); - - differDelegator = new DifferDelegator(differFactory, circularReferenceDetectorFactory); - } - - @SuppressWarnings("unchecked") - private void given_the_delegated_node_is_circular(final PropertyPath circularStartPath) - { - instances = mock(Instances.class); - differDelegator = new DifferDelegator(differFactory, circularReferenceDetectorFactory) - { - @Override - protected void rememberInstances(final Node parentNode, final Instances instances) - { - throw new CircularReferenceDetector.CircularReferenceException(circularStartPath); - } - }; - when(instances.getSourceAccessor()).thenReturn(RootAccessor.getInstance()); - when(instances.getType()).then(returnType(Object.class)); - when(differFactory.createDiffer(ObjectWithCircularReference.class, differDelegator)).thenReturn(mock(Differ.class)); - } - - @Test - public void assign_the_circular_start_path_if_the_delegated_node_is_circular() throws Exception - { - final PropertyPath circularStartPath = PropertyPath.buildRootPath(); - given_the_delegated_node_is_circular(circularStartPath); - - final Node node = differDelegator.delegate(Node.ROOT, instances); - - assertThat(node.getCircleStartPath()).isEqualTo(circularStartPath); - } - - @Test - public void mark_node_as_circular_if_the_delegated_node_is_circular() throws Exception - { - given_the_delegated_node_is_circular(PropertyPath.buildRootPath()); - - final Node node = differDelegator.delegate(Node.ROOT, instances); - - assertThat(node.getState()).isEqualTo(Node.State.CIRCULAR); - } - - @Test(expectedExceptions = IllegalStateException.class) - public void throw_exception_if_no_differ_can_be_found_for_instance_type() - { - instances = Instances.of(RootAccessor.getInstance(), new UnsupportedType(), null); - - when(differFactory.createDiffer(eq(UnsupportedType.class), same(differDelegator))).thenReturn(null); - - differDelegator.delegate(Node.ROOT, instances); - } - - private static Answer> returnType(final Class type) - { - return new Answer>() - { - public Class answer(final InvocationOnMock invocation) throws Throwable - { - return type; - } - }; - } - - private static class UnsupportedType { - } -} diff --git a/src/test/java/de/danielbechler/diff/ObjectDifferIntegrationTests.java b/src/test/java/de/danielbechler/diff/ObjectDifferIntegrationTests.java deleted file mode 100644 index 3e6b596b..00000000 --- a/src/test/java/de/danielbechler/diff/ObjectDifferIntegrationTests.java +++ /dev/null @@ -1,323 +0,0 @@ -/* - * Copyright 2012 Daniel Bechler - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package de.danielbechler.diff; - -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.diff.visitor.*; -import org.fest.assertions.api.*; -import org.testng.annotations.*; - -import java.util.*; - -import static de.danielbechler.diff.TestGroups.*; -import static de.danielbechler.diff.node.NodeAssertions.*; -import static java.util.Arrays.*; - -/** @author Daniel Bechler */ -@Test(groups = TestGroups.INTEGRATION) -public class ObjectDifferIntegrationTests -{ - private ObjectDiffer objectDiffer; - - @BeforeMethod - public void setUp() throws Exception - { - objectDiffer = ObjectDifferFactory.getInstance(); - } - - public void testCompareBeanWithIgnoredMapProperty() - { - final ObjectWithIgnoredMap working = new ObjectWithIgnoredMap(); - working.getMap().put("foo", "bar"); - - final Node node = objectDiffer.compare(working, new ObjectWithIgnoredMap()); - - NodeAssertions.assertThat(node).self().hasState(Node.State.UNTOUCHED); - NodeAssertions.assertThat(node).self().hasNoChildren(); - } - - public void testCompareCollectionWithIgnoredCollectionProperty() - { - final ObjectWithCollection working = new ObjectWithCollection(); - working.getCollection().add("foo"); - objectDiffer.getConfiguration().withoutProperty(PropertyPath.buildWith("collection")); - - final Node node = objectDiffer.compare(working, new ObjectWithCollection()); - - NodeAssertions.assertThat(node).self().hasState(Node.State.UNTOUCHED); - NodeAssertions.assertThat(node).self().hasNoChildren(); - } - - public void testCompareCollectionWithAddedItem() throws Exception - { - final Collection working = new LinkedList(asList("foo")); - final Collection base = new LinkedList(); - - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - - NodeAssertions.assertThat(node).self().hasState(Node.State.CHANGED); - NodeAssertions.assertThat(node).child(new CollectionElement("foo")).hasState(Node.State.ADDED); - } - - public void testCompareCollectionWithRemovedItem() throws Exception - { - final Collection working = new LinkedList(); - final Collection base = new LinkedList(asList("foo")); - - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - - NodeAssertions.assertThat(node).self().hasState(Node.State.CHANGED); - NodeAssertions.assertThat(node).child(new CollectionElement("foo")).hasState(Node.State.REMOVED); - } - - @Test(groups = TestGroups.INTEGRATION) - public void testThatIgnoredPropertiesAreNeverAccessed() - { - final ObjectWithAccessTrackingIgnoredProperty working = new ObjectWithAccessTrackingIgnoredProperty(); - final ObjectWithAccessTrackingIgnoredProperty base = new ObjectWithAccessTrackingIgnoredProperty(); - - ObjectDifferFactory.getInstance().compare(working, base); - - Assertions.assertThat(working.accessed).isFalse(); - Assertions.assertThat(base.accessed).isFalse(); - } - - @Test(groups = TestGroups.INTEGRATION) - public void testThatObjectGraphForAddedObjectsGetsReturned() - { - final ObjectWithNestedObject base = new ObjectWithNestedObject("1"); - final ObjectWithNestedObject working = new ObjectWithNestedObject("1", new ObjectWithNestedObject("2", new ObjectWithNestedObject("foo"))); - final Configuration configuration = new Configuration().withChildrenOfAddedNodes(); - - final Node node = ObjectDifferFactory.getInstance(configuration).compare(working, base); - - node.visit(new NodeHierarchyVisitor()); - NodeAssertions.assertThat(node).root().hasState(Node.State.CHANGED); - NodeAssertions.assertThat(node).child("object").hasState(Node.State.ADDED); - NodeAssertions.assertThat(node).child("object", "object").hasState(Node.State.ADDED); - } - - @Test(groups = TestGroups.INTEGRATION) - public void testCompareCollectionWithDifferentCollectionImplementationsSucceeds() throws Exception - { - final Collection base = new LinkedHashSet(asList("one", "two")); - final Collection working = new TreeSet(asList("one", "three")); - - final Node node = ObjectDifferFactory.getInstance().compare(base, working); - - NodeAssertions.assertThat(node).self().hasState(Node.State.CHANGED); - } - - @Test(groups = TestGroups.INTEGRATION) - public void testCompareCollectionWithChangedItem() throws Exception - { - final List working = asList(new ObjectWithIdentityAndValue("foo", "1")); - final List base = asList(new ObjectWithIdentityAndValue("foo", "2")); - - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - - assertThat(node).self().hasChanges(); - assertThat(node).child(new CollectionElement(new ObjectWithIdentityAndValue("foo"))) - .hasState(Node.State.CHANGED); - } - - @Test(groups = TestGroups.INTEGRATION) - public void testWithNewMapInWorkingAndNoneInBase() - { - final Map base = null; - final Map working = new TreeMap(); - working.put("foo", "bar"); - - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - - NodeAssertions.assertThat(node).self().hasState(Node.State.ADDED); - NodeAssertions.assertThat(node).child(new MapElement("foo")).hasState(Node.State.ADDED); - } - - @Test(groups = TestGroups.INTEGRATION) - public void testWithAdditionOfSimpleTypeToWorkingMap() - { - final Map base = new TreeMap(); - final Map working = new TreeMap(); - working.put("foo", "bar"); - - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - - NodeAssertions.assertThat(node).self().hasState(Node.State.CHANGED); - NodeAssertions.assertThat(node).child(new MapElement("foo")).hasState(Node.State.ADDED); - } - - @Test(groups = TestGroups.INTEGRATION) - public void testWithSameEntryInBaseAndWorking() - { - final Map base = new TreeMap(); - base.put("foo", "bar"); - final Map working = new TreeMap(); - working.put("foo", "bar"); - - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - - NodeAssertions.assertThat(node).self().hasState(Node.State.UNTOUCHED); - NodeAssertions.assertThat(node).self().hasNoChildren(); - } - - @Test(groups = TestGroups.INTEGRATION) - public void testWithSingleEntryAddedToWorkingMap() - { - final Map base = new TreeMap(); - base.put("foo", "bar"); - final Map working = null; - - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - - NodeAssertions.assertThat(node).self().hasState(Node.State.REMOVED); - NodeAssertions.assertThat(node).child(new MapElement("foo")).hasState(Node.State.REMOVED); - } - - /** - * Ensures that the map can handle null values in both, the base and the working version, in which case no - * type can be detected. - */ - @Test(groups = TestGroups.INTEGRATION) - public void testWithAllNullMapItem() - { - final Map working = new HashMap(1); - working.put("foo", null); - - final Map base = new HashMap(1); - base.put("foo", null); - - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - - NodeAssertions.assertThat(node).self().hasState(Node.State.UNTOUCHED); - } - - @Test(groups = TestGroups.INTEGRATION) - public void testWithSameEntries() - { - final Map modified = new LinkedHashMap(1); - modified.put("foo", "bar"); - final Map base = new LinkedHashMap(modified); - modified.put("ping", "pong"); - - final Node node = ObjectDifferFactory.getInstance().compare(modified, base); - - NodeAssertions.assertThat(node).root().hasChildren(1); - NodeAssertions.assertThat(node) - .child(PropertyPath.createBuilder().withRoot().withMapKey("foo")) - .doesNotExist(); - NodeAssertions.assertThat(node).child(PropertyPath.createBuilder().withRoot().withMapKey("ping")) - .hasState(Node.State.ADDED) - .hasNoChildren(); - } - - @Test(groups = TestGroups.INTEGRATION) - public void testWithChangedEntry() - { - final Map working = new LinkedHashMap(1); - working.put("foo", "bar"); - - final Map base = new LinkedHashMap(1); - base.put("foo", "woot"); - - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - NodeAssertions.assertThat(node).self().hasChildren(1); - NodeAssertions.assertThat(node).child(new MapElement("foo")).hasState(Node.State.CHANGED); - } - - @Test(groups = TestGroups.INTEGRATION) - public void testCompareWithDifferentMapImplementationsSucceeds() throws Exception - { - final Map base = new LinkedHashMap(Collections.singletonMap("test", "foo")); - final Map working = new TreeMap(Collections.singletonMap("test", "bar")); - - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - - NodeAssertions.assertThat(node).self().hasState(Node.State.CHANGED); - } - - @Test(groups = INTEGRATION) - public void testCompareWithDifferentStrings() throws Exception - { - final Node node = ObjectDifferFactory.getInstance().compare("foo", "bar"); - - assertThat(node).self().hasState(Node.State.CHANGED); - } - - @Test(expectedExceptions = IllegalArgumentException.class, groups = INTEGRATION) - public void testCompareWithDifferentTypes() - { - ObjectDifferFactory.getInstance().compare("foo", 1337); - } - - @Test(groups = INTEGRATION) - public void testCompareWithIgnoredProperty() - { - objectDiffer = ObjectDifferFactory.getInstance(); - objectDiffer.getConfiguration().withoutProperty(PropertyPath.buildRootPath()); - - final Node node = objectDiffer.compare("foo", "bar"); - - NodeAssertions.assertThat(node).self().hasState(Node.State.IGNORED); - } - - @Test(groups = INTEGRATION) - public void testCompareWithComplexType() - { -// when(introspector.introspect(any(Class.class))).thenReturn(Arrays.asList(accessor)); -// when(delegate.delegate(any(Node.class), any(Instances.class))).thenReturn(node); -// when(configuration.isIntrospectible(any(Node.class))).thenReturn(true); -// when(configuration.isReturnable(any(Node.class))).thenReturn(true); -// when(node.hasChanges()).thenReturn(true); - - final Node node = ObjectDifferFactory.getInstance().compare( - new ObjectWithIdentityAndValue("a", "1"), - new ObjectWithIdentityAndValue("a", "2")); - - assertThat(node).self().hasState(Node.State.CHANGED); - } - - @Test(enabled = false, description = "Currently this is simply not possible because of the way, the CollectionItemAccessor works. Would be great, to support this.") - public void testCompareWithListContainingObjectTwiceDetectsIfOneGetsRemoved() throws Exception - { - final List base = asList(new ObjectWithHashCodeAndEquals("foo"), new ObjectWithHashCodeAndEquals("foo")); - final List working = asList(new ObjectWithHashCodeAndEquals("foo")); - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - node.visit(new NodeHierarchyVisitor()); - assertThat(node) - .child(PropertyPath.createBuilder() - .withRoot() - .withCollectionItem(new ObjectWithHashCodeAndEquals("foo")) - .build()) - .hasState(Node.State.REMOVED); - } - - @Test(enabled = false, description = "Currently this is simply not possible because of the way, the CollectionItemAccessor works. Would be great, to support this.") - public void testCompareWithListContainingObjectOnceDetectsIfAnotherInstanceOfItGetsAdded() throws Exception - { - final List base = asList(new ObjectWithHashCodeAndEquals("foo")); - final List working = asList(new ObjectWithHashCodeAndEquals("foo"), new ObjectWithHashCodeAndEquals("foo")); - final Node node = ObjectDifferFactory.getInstance().compare(working, base); - node.visit(new NodeHierarchyVisitor()); - assertThat(node).child(PropertyPath.createBuilder() - .withRoot() - .withCollectionItem(new ObjectWithHashCodeAndEquals("foo")) - .build()).hasState(Node.State.ADDED); - } -} diff --git a/src/test/java/de/danielbechler/diff/integration/issues/issue66/Hat.java b/src/test/java/de/danielbechler/diff/integration/issues/issue66/Hat.java deleted file mode 100644 index ac727205..00000000 --- a/src/test/java/de/danielbechler/diff/integration/issues/issue66/Hat.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2013 Daniel Bechler - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package de.danielbechler.diff.integration.issues.issue66; - -/** @author Daniel Bechler */ -@SuppressWarnings("UnusedDeclaration") -public class Hat -{ - private int size; - - public Hat() - { - } - - public Hat(final int size) - { - this.size = size; - } - - public int getSize() - { - return size; - } - - public void setSize(final int size) - { - this.size = size; - } -} diff --git a/src/test/java/de/danielbechler/diff/integration/issues/issue66/MainApp.java b/src/test/java/de/danielbechler/diff/integration/issues/issue66/MainApp.java deleted file mode 100644 index e64589c1..00000000 --- a/src/test/java/de/danielbechler/diff/integration/issues/issue66/MainApp.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2013 Daniel Bechler - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package de.danielbechler.diff.integration.issues.issue66; - -import de.danielbechler.diff.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.visitor.*; - -public class MainApp -{ - private MainApp() - { - } - - public static void main(final String[] args) - { - final ObjectDiffer objectDiffer = ObjectDifferFactory.getInstance(); - - final TopHat hat1 = new TopHat(1, 10); - final TopHat hat2 = new TopHat(2, 20); - - final Person p1 = new Person(hat1); - final Person p2 = new Person(hat2); - - final Node root = objectDiffer.compare(p1, p2); - - root.visit(new Node.Visitor() - { - public void accept(final Node node, final Visit visit) - { - System.out.print(node.getPropertyPath() + " :: "); - System.out.print(node.canonicalGet(p1)); - System.out.print(" -> "); - System.out.print(node.canonicalGet(p2)); - System.out.println(); - } - }); - } -} diff --git a/src/test/java/de/danielbechler/diff/integration/issues/issue66/Person.java b/src/test/java/de/danielbechler/diff/integration/issues/issue66/Person.java deleted file mode 100644 index f292466d..00000000 --- a/src/test/java/de/danielbechler/diff/integration/issues/issue66/Person.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2013 Daniel Bechler - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package de.danielbechler.diff.integration.issues.issue66; - -/** @author Daniel Bechler */ -@SuppressWarnings("UnusedDeclaration") -public class Person -{ - private Hat hat; - - public Person(final Hat hat) - { - this.hat = hat; - } - - public Hat getHat() - { - return hat; - } - - public void setHat(final Hat hat) - { - this.hat = hat; - } -} diff --git a/src/test/java/de/danielbechler/diff/integration/issues/issue66/TopHat.java b/src/test/java/de/danielbechler/diff/integration/issues/issue66/TopHat.java deleted file mode 100644 index dedff834..00000000 --- a/src/test/java/de/danielbechler/diff/integration/issues/issue66/TopHat.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2013 Daniel Bechler - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package de.danielbechler.diff.integration.issues.issue66; - -/** @author Daniel Bechler */ -@SuppressWarnings("UnusedDeclaration") -public class TopHat extends Hat -{ - private int height; - - public TopHat() - { - } - - public TopHat(final int height, final int size) - { - super(size); - this.height = height; - } - - public int getHeight() - { - return height; - } - - public void setHeight(final int height) - { - this.height = height; - } -} diff --git a/src/test/java/de/danielbechler/diff/BeanDifferShould.java b/src/test/java/in/th3iedkid/diff/BeanDifferShould.java old mode 100644 new mode 100755 similarity index 85% rename from src/test/java/de/danielbechler/diff/BeanDifferShould.java rename to src/test/java/in/th3iedkid/diff/BeanDifferShould.java index 9aaeacdf..450abab1 --- a/src/test/java/de/danielbechler/diff/BeanDifferShould.java +++ b/src/test/java/in/th3iedkid/diff/BeanDifferShould.java @@ -14,29 +14,33 @@ * limitations under the License. */ -package de.danielbechler.diff; - -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.introspect.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; +package in.th3iedkid.diff; + +import in.th3iedkid.diff.*; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.mock.ObjectWithCompareTo; +import in.th3iedkid.diff.mock.ObjectWithHashCodeAndEquals; +import in.th3iedkid.diff.introspect.Introspector; +import in.th3iedkid.diff.node.DefaultNode; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; import org.mockito.Mock; -import org.testng.annotations.*; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; -import static de.danielbechler.diff.node.NodeAssertions.assertThat; -import static java.util.Arrays.*; +import static in.th3iedkid.diff.node.NodeAssertions.assertThat; +import static java.util.Arrays.asList; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.*; +import static org.hamcrest.core.Is.is; import static org.mockito.Mockito.*; -import static org.mockito.MockitoAnnotations.*; +import static org.mockito.MockitoAnnotations.initMocks; /** @author Daniel Bechler */ // TODO Use mocked NodeInspector instead of actual implementation of Configuration public class BeanDifferShould { private BeanDiffer differ; - private Configuration configuration; + private in.th3iedkid.diff.Configuration configuration; @Mock private DifferDelegator delegator; @Mock private Introspector introspector; @@ -50,7 +54,7 @@ public class BeanDifferShould public void setUp() { initMocks(this); - configuration = new Configuration(); + configuration = new in.th3iedkid.diff.Configuration(); differ = new BeanDiffer(delegator, configuration); differ.setIntrospector(introspector); } @@ -131,7 +135,7 @@ public void compare_bean_via_introspection_and_delegate_comparison_of_properties final DefaultNode propertyNode = mock(DefaultNode.class); final BeanPropertyComparisonDelegator beanPropertyComparer = mock(BeanPropertyComparisonDelegator.class); final DefaultNodeFactory defaultNodeFactory = mock(DefaultNodeFactory.class); - final Configuration configuration = mock(Configuration.class); + final in.th3iedkid.diff.Configuration configuration = mock(in.th3iedkid.diff.Configuration.class); final DifferDelegator delegator = mock(DifferDelegator.class); final Introspector introspector = mock(Introspector.class); diff --git a/src/test/java/de/danielbechler/diff/BeanPropertyComparisonDelegatorShould.java b/src/test/java/in/th3iedkid/diff/BeanPropertyComparisonDelegatorShould.java old mode 100644 new mode 100755 similarity index 92% rename from src/test/java/de/danielbechler/diff/BeanPropertyComparisonDelegatorShould.java rename to src/test/java/in/th3iedkid/diff/BeanPropertyComparisonDelegatorShould.java index 0723116d..4c637d8b --- a/src/test/java/de/danielbechler/diff/BeanPropertyComparisonDelegatorShould.java +++ b/src/test/java/in/th3iedkid/diff/BeanPropertyComparisonDelegatorShould.java @@ -14,15 +14,16 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.node.*; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.node.Node; import org.mockito.Mock; -import org.testng.annotations.*; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; import static org.mockito.Mockito.*; -import static org.mockito.MockitoAnnotations.*; +import static org.mockito.MockitoAnnotations.initMocks; /** @author Daniel Bechler */ public class BeanPropertyComparisonDelegatorShould @@ -33,7 +34,7 @@ public class BeanPropertyComparisonDelegatorShould @Mock private Node propertyNode; @Mock private Accessor propertyAccessor; @Mock private DifferDelegator delegator; - @Mock private Configuration configuration; + @Mock private in.th3iedkid.diff.Configuration configuration; @Mock private PropertyNodeFactory propertyNodeFactory; @Mock private Instances beanInstances; @Mock private Instances propertyInstances; diff --git a/src/test/java/de/danielbechler/diff/CircularReferenceDetectorTest.java b/src/test/java/in/th3iedkid/diff/CircularReferenceDetectorTest.java old mode 100644 new mode 100755 similarity index 91% rename from src/test/java/de/danielbechler/diff/CircularReferenceDetectorTest.java rename to src/test/java/in/th3iedkid/diff/CircularReferenceDetectorTest.java index bb91d7bc..6bb67691 --- a/src/test/java/de/danielbechler/diff/CircularReferenceDetectorTest.java +++ b/src/test/java/in/th3iedkid/diff/CircularReferenceDetectorTest.java @@ -14,17 +14,20 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.path.*; -import org.fest.assertions.api.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.CircularReferenceDetector; +import in.th3iedkid.diff.mock.ObjectWithString; +import in.th3iedkid.diff.path.PropertyPath; +import org.fest.assertions.api.Assertions; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; import static org.fest.assertions.api.Assertions.assertThat; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.*; -import static org.testng.Assert.*; +import static org.hamcrest.core.Is.is; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; /** @author Daniel Bechler */ public class CircularReferenceDetectorTest diff --git a/src/test/java/in/th3iedkid/diff/CollectionDifferShould.java b/src/test/java/in/th3iedkid/diff/CollectionDifferShould.java new file mode 100755 index 00000000..ebdf6ed0 --- /dev/null +++ b/src/test/java/in/th3iedkid/diff/CollectionDifferShould.java @@ -0,0 +1,176 @@ +/* + * Copyright 2012 Daniel Bechler + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package in.th3iedkid.diff; + +import in.th3iedkid.diff.accessor.CollectionItemAccessor; +import in.th3iedkid.diff.node.CollectionNode; +import in.th3iedkid.diff.node.Node; +import org.fest.assertions.api.Assertions; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.util.Collection; + +import static java.util.Arrays.asList; +import static java.util.Collections.emptyList; +import static org.mockito.Mockito.*; + +/** @author Daniel Bechler */ +public class CollectionDifferShould { + private CollectionDiffer collectionDiffer; + @Mock + private NodeInspector nodeInspector; + @Mock + private DifferDelegator delegator; + @Mock + private CollectionNodeFactory collectionNodeFactory; + @Mock + private CollectionNode collectionNode; + @Mock + private Node collectionItemNode; + @Mock + private Instances instances; + @Mock + private Instances itemInstances; + @Mock + private CollectionItemAccessorFactory collectionItemAccessorFactory; + + @BeforeMethod + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + collectionDiffer = new CollectionDiffer(delegator, nodeInspector); + collectionDiffer.setCollectionNodeFactory(collectionNodeFactory); + collectionDiffer.setCollectionItemAccessorFactory(collectionItemAccessorFactory); + when(collectionNodeFactory.create(Node.ROOT, instances)).thenReturn(collectionNode); + } + + @Test(expectedExceptions = IllegalArgumentException.class) + public void fail_if_constructed_without_delegator() { + new CollectionDiffer(null, nodeInspector); + } + + @Test(expectedExceptions = IllegalArgumentException.class) + public void fail_if_constructed_without_configuration() { + new CollectionDiffer(delegator, null); + } + + @Test + public void return_untouched_node_if_base_and_working_are_the_same_instance() { + when(instances.areSame()).thenReturn(true); + compare(); + verify(collectionNode).setState(Node.State.UNTOUCHED); + } + + @Test + public void return_added_node_if_working_is_not_null_and_base_is_null() throws Exception { + when(instances.hasBeenAdded()).thenReturn(true); + when(instances.getWorking(Collection.class)).thenReturn(emptyList()); + compare(); + verify(collectionNode).setState(Node.State.ADDED); + } + + @Test(dependsOnMethods = "return_added_node_if_working_is_not_null_and_base_is_null") + public void delegate_items_of_added_collection_to_delegator() { + when(instances.hasBeenAdded()).thenReturn(true); + when(instances.getWorking(Collection.class)).thenReturn(asList("foo")); + when(instances.access(any(CollectionItemAccessor.class))).thenReturn(itemInstances); // TODO get rid of any + when(delegator.delegate(collectionNode, itemInstances)).thenReturn(collectionItemNode); + when(nodeInspector.isReturnable(collectionItemNode)).thenReturn(true); + compare(); + verify(collectionNode).addChild(collectionItemNode); + } + + @Test + public void return_ignored_node_if_property_is_ignored() throws Exception { + when(nodeInspector.isIgnored(collectionNode)).thenReturn(true); + compare(); + verify(collectionNode).setState(Node.State.IGNORED); + } + + @Test + public void return_removed_node_if_working_is_null_and_base_is_not_null() throws Exception { + when(instances.hasBeenRemoved()).thenReturn(true); + when(instances.getBase(Collection.class)).thenReturn(emptyList()); + compare(); + verify(collectionNode).setState(Node.State.REMOVED); + } + + @Test + public void compare_only_via_equals_if_equals_only_is_enabled() { + when(nodeInspector.isEqualsOnly(collectionNode)).thenReturn(true); + when(instances.areEqual()).thenReturn(true); + compare(); + verify(collectionNode).setState(Node.State.UNTOUCHED); + } + + @Test + public void detect_changes_if_equals_only_is_enabled() { + when(nodeInspector.isEqualsOnly(collectionNode)).thenReturn(true); + compare(); + verify(collectionNode).setState(Node.State.CHANGED); + } + + private void compare() { + final CollectionNode node = collectionDiffer.compare(Node.ROOT, instances); + Assertions.assertThat(node).isSameAs(collectionNode); + } + + @Test + public void delegate_items_of_removed_collection_to_delegator() { + when(instances.hasBeenRemoved()).thenReturn(true); + when(instances.getBase(Collection.class)).thenReturn(asList("foo")); + when(instances.access(any(CollectionItemAccessor.class))).thenReturn(itemInstances); // TODO get rid of any + when(delegator.delegate(collectionNode, itemInstances)).thenReturn(collectionItemNode); + when(nodeInspector.isReturnable(collectionItemNode)).thenReturn(true); + compare(); + verify(collectionNode).addChild(collectionItemNode); + } + + @Test + public void delegate_all_items_to_delegator_on_deep_comparison() { + when(instances.getWorking(Collection.class)).thenReturn(asList("foo", "bar")); + when(instances.getBase(Collection.class)).thenReturn(asList("foo", "foobar")); + + final Node fooNode = whenDelegatorGetsCalledWithInstancesForItem("foo"); + final Node barNode = whenDelegatorGetsCalledWithInstancesForItem("bar"); + final Node foobarNode = whenDelegatorGetsCalledWithInstancesForItem("foobar"); + + when(nodeInspector.isReturnable(any(Node.class))).thenReturn(true); + + compare(); + + verify(collectionNode).addChild(fooNode); + verify(collectionNode).addChild(barNode); + verify(collectionNode).addChild(foobarNode); + verifyNoMoreInteractions(collectionNode); + } + + private Node whenDelegatorGetsCalledWithInstancesForItem(final String item) { + final CollectionItemAccessor fooAccessor = mock(CollectionItemAccessor.class); + when(collectionItemAccessorFactory.createAccessorForItem(item)).thenReturn(fooAccessor); + + final Instances fooInstances = mock(Instances.class); + when(instances.access(fooAccessor)).thenReturn(fooInstances); + + final Node fooNode = mock(Node.class); + when(delegator.delegate(collectionNode, fooInstances)).thenReturn(fooNode); + + return fooNode; + } +} diff --git a/src/test/java/de/danielbechler/diff/ConfigurationTest.java b/src/test/java/in/th3iedkid/diff/ConfigurationTest.java old mode 100644 new mode 100755 similarity index 89% rename from src/test/java/de/danielbechler/diff/ConfigurationTest.java rename to src/test/java/in/th3iedkid/diff/ConfigurationTest.java index ae88fa42..fee5c257 --- a/src/test/java/de/danielbechler/diff/ConfigurationTest.java +++ b/src/test/java/in/th3iedkid/diff/ConfigurationTest.java @@ -14,22 +14,26 @@ * limitations under the License. */ -package de.danielbechler.diff; - -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import org.mockito.*; -import org.mockito.invocation.*; -import org.mockito.stubbing.*; -import org.testng.annotations.*; +package in.th3iedkid.diff; + +import in.th3iedkid.diff.mock.ObjectWithCollection; +import in.th3iedkid.diff.mock.ObjectWithString; +import in.th3iedkid.diff.mock.ObjectWithStringAndCompareTo; +import in.th3iedkid.diff.node.TypeAwareNode; +import in.th3iedkid.diff.path.PropertyPath; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; import java.math.BigDecimal; import static org.fest.assertions.api.Assertions.assertThat; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.*; -import static org.mockito.Mockito.*; +import static org.hamcrest.core.Is.is; +import static org.mockito.Mockito.when; /** @author Daniel Bechler */ public class ConfigurationTest @@ -37,13 +41,13 @@ public class ConfigurationTest @Mock private TypeAwareNode node; - private Configuration configuration; + private in.th3iedkid.diff.Configuration configuration; @BeforeMethod public void setUp() { MockitoAnnotations.initMocks(this); - configuration = new Configuration(); + configuration = new in.th3iedkid.diff.Configuration(); } @Test diff --git a/src/test/java/in/th3iedkid/diff/DifferDelegatorShould.java b/src/test/java/in/th3iedkid/diff/DifferDelegatorShould.java new file mode 100755 index 00000000..58cd869d --- /dev/null +++ b/src/test/java/in/th3iedkid/diff/DifferDelegatorShould.java @@ -0,0 +1,109 @@ +/* + * Copyright 2013 Daniel Bechler + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package in.th3iedkid.diff; + +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.accessor.RootAccessor; +import in.th3iedkid.diff.mock.ObjectWithCircularReference; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import org.mockito.Mock; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import static org.fest.assertions.api.Assertions.assertThat; +import static org.mockito.Mockito.*; +import static org.mockito.MockitoAnnotations.initMocks; + +/** @author Daniel Bechler */ +public class DifferDelegatorShould { + @Mock + private DifferFactory differFactory; + @Mock + private Accessor accessor; + @Mock + private CircularReferenceDetectorFactory circularReferenceDetectorFactory; + @Mock + private CircularReferenceDetector circularReferenceDetector; + private Instances instances; + private DifferDelegator differDelegator; + + private static Answer> returnType(final Class type) { + return new Answer>() { + public Class answer(final InvocationOnMock invocation) throws Throwable { + return type; + } + }; + } + + @BeforeMethod + public void setUp() throws Exception { + initMocks(this); + + when(circularReferenceDetectorFactory.create()).thenReturn(circularReferenceDetector); + + differDelegator = new DifferDelegator(differFactory, circularReferenceDetectorFactory); + } + + @SuppressWarnings("unchecked") + private void given_the_delegated_node_is_circular(final PropertyPath circularStartPath) { + instances = mock(Instances.class); + differDelegator = new DifferDelegator(differFactory, circularReferenceDetectorFactory) { + @Override + protected void rememberInstances(final Node parentNode, final Instances instances) { + throw new CircularReferenceDetector.CircularReferenceException(circularStartPath); + } + }; + when(instances.getSourceAccessor()).thenReturn(RootAccessor.getInstance()); + when(instances.getType()).then(returnType(Object.class)); + when(differFactory.createDiffer(ObjectWithCircularReference.class, differDelegator)).thenReturn( + mock(Differ.class)); + } + + @Test + public void assign_the_circular_start_path_if_the_delegated_node_is_circular() throws Exception { + final PropertyPath circularStartPath = PropertyPath.buildRootPath(); + given_the_delegated_node_is_circular(circularStartPath); + + final Node node = differDelegator.delegate(Node.ROOT, instances); + + assertThat(node.getCircleStartPath()).isEqualTo(circularStartPath); + } + + @Test + public void mark_node_as_circular_if_the_delegated_node_is_circular() throws Exception { + given_the_delegated_node_is_circular(PropertyPath.buildRootPath()); + + final Node node = differDelegator.delegate(Node.ROOT, instances); + + assertThat(node.getState()).isEqualTo(Node.State.CIRCULAR); + } + + @Test(expectedExceptions = IllegalStateException.class) + public void throw_exception_if_no_differ_can_be_found_for_instance_type() { + instances = Instances.of(RootAccessor.getInstance(), new UnsupportedType(), null); + + when(differFactory.createDiffer(eq(UnsupportedType.class), same(differDelegator))).thenReturn(null); + + differDelegator.delegate(Node.ROOT, instances); + } + + private static class UnsupportedType { + } +} diff --git a/src/test/java/de/danielbechler/diff/DifferFactoryShould.java b/src/test/java/in/th3iedkid/diff/DifferFactoryShould.java old mode 100644 new mode 100755 similarity index 89% rename from src/test/java/de/danielbechler/diff/DifferFactoryShould.java rename to src/test/java/in/th3iedkid/diff/DifferFactoryShould.java index 9fb3b4b2..d9f99eeb --- a/src/test/java/de/danielbechler/diff/DifferFactoryShould.java +++ b/src/test/java/in/th3iedkid/diff/DifferFactoryShould.java @@ -14,16 +14,19 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.mock.*; +import in.th3iedkid.diff.*; +import in.th3iedkid.diff.mock.ObjectWithString; import org.mockito.Mock; -import org.testng.annotations.*; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; import java.util.*; -import static org.fest.assertions.api.Assertions.*; -import static org.mockito.MockitoAnnotations.*; +import static org.fest.assertions.api.Assertions.assertThat; +import static org.mockito.MockitoAnnotations.initMocks; /** @author Daniel Bechler */ public class DifferFactoryShould @@ -32,7 +35,7 @@ public class DifferFactoryShould @Mock private DifferDelegator differDelegator; @Mock - private Configuration configuration; + private in.th3iedkid.diff.Configuration configuration; @BeforeMethod public void initDifferFactory() diff --git a/src/test/java/de/danielbechler/diff/InstancesTest.java b/src/test/java/in/th3iedkid/diff/InstancesTest.java old mode 100644 new mode 100755 similarity index 89% rename from src/test/java/de/danielbechler/diff/InstancesTest.java rename to src/test/java/in/th3iedkid/diff/InstancesTest.java index ba685d8e..5cd217ef --- a/src/test/java/de/danielbechler/diff/InstancesTest.java +++ b/src/test/java/in/th3iedkid/diff/InstancesTest.java @@ -14,16 +14,19 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.accessor.PropertyAccessor; +import in.th3iedkid.diff.accessor.RootAccessor; +import in.th3iedkid.diff.accessor.TypeAwareAccessor; +import org.testng.annotations.Test; -import java.lang.reflect.*; +import java.lang.reflect.Method; -import static de.danielbechler.diff.extension.MockitoExtensions.*; -import static org.fest.assertions.api.Assertions.*; -import static org.mockito.Mockito.*; +import static in.th3iedkid.diff.extension.MockitoExtensions.returnClass; +import static org.fest.assertions.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; /** @author Daniel Bechler */ public class InstancesTest diff --git a/src/test/java/de/danielbechler/diff/Instances_getType_Specification.groovy b/src/test/java/in/th3iedkid/diff/Instances_getType_Specification.groovy old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/diff/Instances_getType_Specification.groovy rename to src/test/java/in/th3iedkid/diff/Instances_getType_Specification.groovy index e63fbf7d..2a701110 --- a/src/test/java/de/danielbechler/diff/Instances_getType_Specification.groovy +++ b/src/test/java/in/th3iedkid/diff/Instances_getType_Specification.groovy @@ -14,13 +14,12 @@ * limitations under the License. */ -package de.danielbechler.diff +package in.th3iedkid.diff -import de.danielbechler.diff.accessor.RootAccessor -import de.danielbechler.diff.accessor.TypeAwareAccessor +import in.th3iedkid.diff.accessor.RootAccessor +import in.th3iedkid.diff.accessor.TypeAwareAccessor import spock.lang.Specification import spock.lang.Unroll - /** * @author Daniel Bechler */ diff --git a/src/test/java/de/danielbechler/diff/ListDiffSpecification.groovy b/src/test/java/in/th3iedkid/diff/ListDiffSpecification.groovy old mode 100644 new mode 100755 similarity index 73% rename from src/test/java/de/danielbechler/diff/ListDiffSpecification.groovy rename to src/test/java/in/th3iedkid/diff/ListDiffSpecification.groovy index 248c72fb..7a6c5605 --- a/src/test/java/de/danielbechler/diff/ListDiffSpecification.groovy +++ b/src/test/java/in/th3iedkid/diff/ListDiffSpecification.groovy @@ -14,13 +14,12 @@ * limitations under the License. */ -package de.danielbechler.diff +package in.th3iedkid.diff -import de.danielbechler.diff.path.CollectionElement -import de.danielbechler.diff.visitor.PrintingVisitor +import in.th3iedkid.diff.path.CollectionElement +import in.th3iedkid.diff.visitor.PrintingVisitor import spock.lang.Ignore import spock.lang.Specification - /** * @author Daniel Bechler */ @@ -36,15 +35,15 @@ class ListDiffSpecification extends Specification @Ignore def "detects position switch"() { - de.danielbechler.diff.node.Node node; + Node node; when: node = objectDiffer.compare(working, base); then: node.visit(new PrintingVisitor(working, base)); - node.getChild(new CollectionElement("a")).getState() == de.danielbechler.diff.node.Node.State.CHANGED; - node.getChild(new CollectionElement("b")).getState() == de.danielbechler.diff.node.Node.State.CHANGED; + node.getChild(new CollectionElement("a")).getState() == Node.State.CHANGED; + node.getChild(new CollectionElement("b")).getState() == Node.State.CHANGED; where: base | working diff --git a/src/test/java/de/danielbechler/diff/MapDifferShould.java b/src/test/java/in/th3iedkid/diff/MapDifferShould.java old mode 100644 new mode 100755 similarity index 90% rename from src/test/java/de/danielbechler/diff/MapDifferShould.java rename to src/test/java/in/th3iedkid/diff/MapDifferShould.java index 92848556..aad3a399 --- a/src/test/java/de/danielbechler/diff/MapDifferShould.java +++ b/src/test/java/in/th3iedkid/diff/MapDifferShould.java @@ -14,19 +14,23 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.node.*; +import in.th3iedkid.diff.*; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.node.MapNode; +import in.th3iedkid.diff.node.Node; import org.mockito.Mock; -import org.testng.annotations.*; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; -import java.util.*; +import java.util.HashMap; +import java.util.Map; -import static de.danielbechler.diff.node.Node.State.*; -import static org.fest.assertions.api.Assertions.*; +import static in.th3iedkid.diff.node.Node.State.*; +import static org.fest.assertions.api.Assertions.assertThat; import static org.mockito.Mockito.*; -import static org.mockito.MockitoAnnotations.*; +import static org.mockito.MockitoAnnotations.initMocks; /** @author Daniel Bechler */ public class MapDifferShould diff --git a/src/test/java/de/danielbechler/diff/ObjectDifferFactoryTest.java b/src/test/java/in/th3iedkid/diff/ObjectDifferFactoryTest.java old mode 100644 new mode 100755 similarity index 79% rename from src/test/java/de/danielbechler/diff/ObjectDifferFactoryTest.java rename to src/test/java/in/th3iedkid/diff/ObjectDifferFactoryTest.java index 94e420ab..1dfc7fd3 --- a/src/test/java/de/danielbechler/diff/ObjectDifferFactoryTest.java +++ b/src/test/java/in/th3iedkid/diff/ObjectDifferFactoryTest.java @@ -14,12 +14,15 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import org.hamcrest.core.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.ObjectDiffer; +import in.th3iedkid.diff.ObjectDifferFactory; +import org.hamcrest.core.IsEqual; +import org.hamcrest.core.IsNull; +import org.testng.annotations.Test; -import static org.hamcrest.MatcherAssert.*; +import static org.hamcrest.MatcherAssert.assertThat; /** @author Daniel Bechler */ public class ObjectDifferFactoryTest @@ -33,7 +36,7 @@ public void testGetInstanceWithNullConfiguration() throws Exception @Test public void testGetInstanceWithConfiguration() throws Exception { - final Configuration configuration = new Configuration(); + final in.th3iedkid.diff.Configuration configuration = new in.th3iedkid.diff.Configuration(); final ObjectDiffer objectDiffer = ObjectDifferFactory.getInstance(configuration); assertThat(objectDiffer.getConfiguration(), IsEqual.equalTo(configuration)); } diff --git a/src/test/java/in/th3iedkid/diff/ObjectDifferIntegrationTests.java b/src/test/java/in/th3iedkid/diff/ObjectDifferIntegrationTests.java new file mode 100755 index 00000000..726d77d7 --- /dev/null +++ b/src/test/java/in/th3iedkid/diff/ObjectDifferIntegrationTests.java @@ -0,0 +1,303 @@ +/* + * Copyright 2012 Daniel Bechler + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package in.th3iedkid.diff; + +import in.th3iedkid.diff.mock.*; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.node.NodeAssertions; +import in.th3iedkid.diff.path.CollectionElement; +import in.th3iedkid.diff.path.MapElement; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.diff.visitor.NodeHierarchyVisitor; +import org.fest.assertions.api.Assertions; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.util.*; + +import static in.th3iedkid.diff.TestGroups.INTEGRATION; +import static in.th3iedkid.diff.node.NodeAssertions.assertThat; +import static java.util.Arrays.asList; + +/** @author Daniel Bechler */ +@Test(groups = TestGroups.INTEGRATION) +public class ObjectDifferIntegrationTests { + private ObjectDiffer objectDiffer; + + @BeforeMethod + public void setUp() throws Exception { + objectDiffer = ObjectDifferFactory.getInstance(); + } + + public void testCompareBeanWithIgnoredMapProperty() { + final ObjectWithIgnoredMap working = new ObjectWithIgnoredMap(); + working.getMap().put("foo", "bar"); + + final Node node = objectDiffer.compare(working, new ObjectWithIgnoredMap()); + + NodeAssertions.assertThat(node).self().hasState(Node.State.UNTOUCHED); + NodeAssertions.assertThat(node).self().hasNoChildren(); + } + + public void testCompareCollectionWithIgnoredCollectionProperty() { + final ObjectWithCollection working = new ObjectWithCollection(); + working.getCollection().add("foo"); + objectDiffer.getConfiguration().withoutProperty(PropertyPath.buildWith("collection")); + + final Node node = objectDiffer.compare(working, new ObjectWithCollection()); + + NodeAssertions.assertThat(node).self().hasState(Node.State.UNTOUCHED); + NodeAssertions.assertThat(node).self().hasNoChildren(); + } + + public void testCompareCollectionWithAddedItem() throws Exception { + final Collection working = new LinkedList(asList("foo")); + final Collection base = new LinkedList(); + + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + + NodeAssertions.assertThat(node).self().hasState(Node.State.CHANGED); + NodeAssertions.assertThat(node).child(new CollectionElement("foo")).hasState(Node.State.ADDED); + } + + public void testCompareCollectionWithRemovedItem() throws Exception { + final Collection working = new LinkedList(); + final Collection base = new LinkedList(asList("foo")); + + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + + NodeAssertions.assertThat(node).self().hasState(Node.State.CHANGED); + NodeAssertions.assertThat(node).child(new CollectionElement("foo")).hasState(Node.State.REMOVED); + } + + @Test(groups = TestGroups.INTEGRATION) + public void testThatIgnoredPropertiesAreNeverAccessed() { + final ObjectWithAccessTrackingIgnoredProperty working = new ObjectWithAccessTrackingIgnoredProperty(); + final ObjectWithAccessTrackingIgnoredProperty base = new ObjectWithAccessTrackingIgnoredProperty(); + + ObjectDifferFactory.getInstance().compare(working, base); + + Assertions.assertThat(working.accessed).isFalse(); + Assertions.assertThat(base.accessed).isFalse(); + } + + @Test(groups = TestGroups.INTEGRATION) + public void testThatObjectGraphForAddedObjectsGetsReturned() { + final ObjectWithNestedObject base = new ObjectWithNestedObject("1"); + final ObjectWithNestedObject working = new ObjectWithNestedObject("1", new ObjectWithNestedObject("2", + new ObjectWithNestedObject("foo"))); + final in.th3iedkid.diff.Configuration configuration = new in.th3iedkid.diff.Configuration() + .withChildrenOfAddedNodes(); + + final Node node = ObjectDifferFactory.getInstance(configuration).compare(working, base); + + node.visit(new NodeHierarchyVisitor()); + NodeAssertions.assertThat(node).root().hasState(Node.State.CHANGED); + NodeAssertions.assertThat(node).child("object").hasState(Node.State.ADDED); + NodeAssertions.assertThat(node).child("object", "object").hasState(Node.State.ADDED); + } + + @Test(groups = TestGroups.INTEGRATION) + public void testCompareCollectionWithDifferentCollectionImplementationsSucceeds() throws Exception { + final Collection base = new LinkedHashSet(asList("one", "two")); + final Collection working = new TreeSet(asList("one", "three")); + + final Node node = ObjectDifferFactory.getInstance().compare(base, working); + + NodeAssertions.assertThat(node).self().hasState(Node.State.CHANGED); + } + + @Test(groups = TestGroups.INTEGRATION) + public void testCompareCollectionWithChangedItem() throws Exception { + final List working = asList(new ObjectWithIdentityAndValue("foo", "1")); + final List base = asList(new ObjectWithIdentityAndValue("foo", "2")); + + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + + assertThat(node).self().hasChanges(); + assertThat(node).child(new CollectionElement(new ObjectWithIdentityAndValue("foo"))).hasState( + Node.State.CHANGED); + } + + @Test(groups = TestGroups.INTEGRATION) + public void testWithNewMapInWorkingAndNoneInBase() { + final Map base = null; + final Map working = new TreeMap(); + working.put("foo", "bar"); + + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + + NodeAssertions.assertThat(node).self().hasState(Node.State.ADDED); + NodeAssertions.assertThat(node).child(new MapElement("foo")).hasState(Node.State.ADDED); + } + + @Test(groups = TestGroups.INTEGRATION) + public void testWithAdditionOfSimpleTypeToWorkingMap() { + final Map base = new TreeMap(); + final Map working = new TreeMap(); + working.put("foo", "bar"); + + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + + NodeAssertions.assertThat(node).self().hasState(Node.State.CHANGED); + NodeAssertions.assertThat(node).child(new MapElement("foo")).hasState(Node.State.ADDED); + } + + @Test(groups = TestGroups.INTEGRATION) + public void testWithSameEntryInBaseAndWorking() { + final Map base = new TreeMap(); + base.put("foo", "bar"); + final Map working = new TreeMap(); + working.put("foo", "bar"); + + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + + NodeAssertions.assertThat(node).self().hasState(Node.State.UNTOUCHED); + NodeAssertions.assertThat(node).self().hasNoChildren(); + } + + @Test(groups = TestGroups.INTEGRATION) + public void testWithSingleEntryAddedToWorkingMap() { + final Map base = new TreeMap(); + base.put("foo", "bar"); + final Map working = null; + + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + + NodeAssertions.assertThat(node).self().hasState(Node.State.REMOVED); + NodeAssertions.assertThat(node).child(new MapElement("foo")).hasState(Node.State.REMOVED); + } + + /** + * Ensures that the map can handle null values in both, the base and the working version, in which case no type can + * be detected. + */ + @Test(groups = TestGroups.INTEGRATION) + public void testWithAllNullMapItem() { + final Map working = new HashMap(1); + working.put("foo", null); + + final Map base = new HashMap(1); + base.put("foo", null); + + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + + NodeAssertions.assertThat(node).self().hasState(Node.State.UNTOUCHED); + } + + @Test(groups = TestGroups.INTEGRATION) + public void testWithSameEntries() { + final Map modified = new LinkedHashMap(1); + modified.put("foo", "bar"); + final Map base = new LinkedHashMap(modified); + modified.put("ping", "pong"); + + final Node node = ObjectDifferFactory.getInstance().compare(modified, base); + + NodeAssertions.assertThat(node).root().hasChildren(1); + NodeAssertions.assertThat(node).child(PropertyPath.createBuilder().withRoot().withMapKey("foo")).doesNotExist(); + NodeAssertions.assertThat(node).child(PropertyPath.createBuilder().withRoot().withMapKey("ping")) + .hasState(Node.State.ADDED).hasNoChildren(); + } + + @Test(groups = TestGroups.INTEGRATION) + public void testWithChangedEntry() { + final Map working = new LinkedHashMap(1); + working.put("foo", "bar"); + + final Map base = new LinkedHashMap(1); + base.put("foo", "woot"); + + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + NodeAssertions.assertThat(node).self().hasChildren(1); + NodeAssertions.assertThat(node).child(new MapElement("foo")).hasState(Node.State.CHANGED); + } + + @Test(groups = TestGroups.INTEGRATION) + public void testCompareWithDifferentMapImplementationsSucceeds() throws Exception { + final Map base = new LinkedHashMap(Collections.singletonMap("test", "foo")); + final Map working = new TreeMap(Collections.singletonMap("test", "bar")); + + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + + NodeAssertions.assertThat(node).self().hasState(Node.State.CHANGED); + } + + @Test(groups = INTEGRATION) + public void testCompareWithDifferentStrings() throws Exception { + final Node node = ObjectDifferFactory.getInstance().compare("foo", "bar"); + + assertThat(node).self().hasState(Node.State.CHANGED); + } + + @Test(expectedExceptions = IllegalArgumentException.class, groups = INTEGRATION) + public void testCompareWithDifferentTypes() { + ObjectDifferFactory.getInstance().compare("foo", 1337); + } + + @Test(groups = INTEGRATION) + public void testCompareWithIgnoredProperty() { + objectDiffer = ObjectDifferFactory.getInstance(); + objectDiffer.getConfiguration().withoutProperty(PropertyPath.buildRootPath()); + + final Node node = objectDiffer.compare("foo", "bar"); + + NodeAssertions.assertThat(node).self().hasState(Node.State.IGNORED); + } + + @Test(groups = INTEGRATION) + public void testCompareWithComplexType() { + // when(introspector.introspect(any(Class.class))).thenReturn(Arrays.asList(accessor)); + // when(delegate.delegate(any(Node.class), any(Instances.class))).thenReturn(node); + // when(configuration.isIntrospectible(any(Node.class))).thenReturn(true); + // when(configuration.isReturnable(any(Node.class))).thenReturn(true); + // when(node.hasChanges()).thenReturn(true); + + final Node node = ObjectDifferFactory.getInstance().compare(new ObjectWithIdentityAndValue("a", "1"), + new ObjectWithIdentityAndValue("a", "2")); + + assertThat(node).self().hasState(Node.State.CHANGED); + } + + @Test( + enabled = false, + description = "Currently this is simply not possible because of the way, the CollectionItemAccessor works. Would be great, to support this.") + public void testCompareWithListContainingObjectTwiceDetectsIfOneGetsRemoved() throws Exception { + final List base = asList(new ObjectWithHashCodeAndEquals("foo"), + new ObjectWithHashCodeAndEquals("foo")); + final List working = asList(new ObjectWithHashCodeAndEquals("foo")); + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + node.visit(new NodeHierarchyVisitor()); + assertThat(node).child( + PropertyPath.createBuilder().withRoot().withCollectionItem(new ObjectWithHashCodeAndEquals("foo")) + .build()).hasState(Node.State.REMOVED); + } + + @Test( + enabled = false, + description = "Currently this is simply not possible because of the way, the CollectionItemAccessor works. Would be great, to support this.") + public void testCompareWithListContainingObjectOnceDetectsIfAnotherInstanceOfItGetsAdded() throws Exception { + final List base = asList(new ObjectWithHashCodeAndEquals("foo")); + final List working = asList(new ObjectWithHashCodeAndEquals("foo"), + new ObjectWithHashCodeAndEquals("foo")); + final Node node = ObjectDifferFactory.getInstance().compare(working, base); + node.visit(new NodeHierarchyVisitor()); + assertThat(node).child( + PropertyPath.createBuilder().withRoot().withCollectionItem(new ObjectWithHashCodeAndEquals("foo")) + .build()).hasState(Node.State.ADDED); + } +} diff --git a/src/test/java/de/danielbechler/diff/PrimitiveDifferTest.java b/src/test/java/in/th3iedkid/diff/PrimitiveDifferTest.java old mode 100644 new mode 100755 similarity index 84% rename from src/test/java/de/danielbechler/diff/PrimitiveDifferTest.java rename to src/test/java/in/th3iedkid/diff/PrimitiveDifferTest.java index bb321d3e..766ac21f --- a/src/test/java/de/danielbechler/diff/PrimitiveDifferTest.java +++ b/src/test/java/in/th3iedkid/diff/PrimitiveDifferTest.java @@ -14,32 +14,36 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; +import in.th3iedkid.diff.accessor.TypeAwareAccessor; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.NamedPropertyElement; +import in.th3iedkid.diff.path.PropertyPath; import org.mockito.Mock; -import org.mockito.internal.debugging.*; -import org.testng.annotations.*; +import org.mockito.internal.debugging.MockitoDebuggerImpl; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; import java.util.ArrayList; -import java.util.*; +import java.util.List; -import static de.danielbechler.diff.Configuration.*; -import static de.danielbechler.diff.Configuration.PrimitiveDefaultValueMode.*; -import static de.danielbechler.diff.extension.MockitoExtensions.*; -import static de.danielbechler.diff.node.Node.State.*; -import static de.danielbechler.diff.node.NodeAssertions.*; -import static java.util.Arrays.*; -import static org.mockito.Mockito.*; -import static org.mockito.MockitoAnnotations.*; +import static in.th3iedkid.diff.Configuration.PrimitiveDefaultValueMode; +import static in.th3iedkid.diff.Configuration.PrimitiveDefaultValueMode.UNASSIGNED; +import static in.th3iedkid.diff.extension.MockitoExtensions.returnClass; +import static in.th3iedkid.diff.node.Node.State.*; +import static in.th3iedkid.diff.node.NodeAssertions.assertThat; +import static java.util.Arrays.asList; +import static org.mockito.Mockito.when; +import static org.mockito.MockitoAnnotations.initMocks; /** @author Daniel Bechler */ public class PrimitiveDifferTest { private PrimitiveDiffer differ; - private Configuration configuration; + private in.th3iedkid.diff.Configuration configuration; @Mock private DifferDelegator differDelegator; @Mock private TypeAwareAccessor accessor; @@ -47,7 +51,7 @@ public class PrimitiveDifferTest public void setUp() { initMocks(this); - configuration = new Configuration(); + configuration = new in.th3iedkid.diff.Configuration(); configuration.treatPrimitiveDefaultValuesAs(UNASSIGNED); differ = new PrimitiveDiffer(configuration); } diff --git a/src/test/java/de/danielbechler/diff/TestGroups.java b/src/test/java/in/th3iedkid/diff/TestGroups.java old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/diff/TestGroups.java rename to src/test/java/in/th3iedkid/diff/TestGroups.java index c1bd92b9..db5b77b4 --- a/src/test/java/de/danielbechler/diff/TestGroups.java +++ b/src/test/java/in/th3iedkid/diff/TestGroups.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff; +package in.th3iedkid.diff; public final class TestGroups { diff --git a/src/test/java/de/danielbechler/diff/accessor/CollectionItemAccessorShould.java b/src/test/java/in/th3iedkid/diff/accessor/CollectionItemAccessorShould.java old mode 100644 new mode 100755 similarity index 90% rename from src/test/java/de/danielbechler/diff/accessor/CollectionItemAccessorShould.java rename to src/test/java/in/th3iedkid/diff/accessor/CollectionItemAccessorShould.java index 3d303b99..8e438c88 --- a/src/test/java/de/danielbechler/diff/accessor/CollectionItemAccessorShould.java +++ b/src/test/java/in/th3iedkid/diff/accessor/CollectionItemAccessorShould.java @@ -14,16 +14,21 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.path.*; -import org.fest.assertions.core.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.accessor.CollectionItemAccessor; +import in.th3iedkid.diff.mock.ObjectWithIdentityAndValue; +import in.th3iedkid.diff.path.CollectionElement; +import in.th3iedkid.diff.path.Element; +import org.fest.assertions.core.Condition; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; -import static org.fest.assertions.api.Assertions.*; +import static org.fest.assertions.api.Assertions.assertThat; /** @author Daniel Bechler */ public class CollectionItemAccessorShould diff --git a/src/test/java/de/danielbechler/diff/accessor/MapEntryAccessorShould.java b/src/test/java/in/th3iedkid/diff/accessor/MapEntryAccessorShould.java old mode 100644 new mode 100755 similarity index 85% rename from src/test/java/de/danielbechler/diff/accessor/MapEntryAccessorShould.java rename to src/test/java/in/th3iedkid/diff/accessor/MapEntryAccessorShould.java index 116810d0..0a53ddd7 --- a/src/test/java/de/danielbechler/diff/accessor/MapEntryAccessorShould.java +++ b/src/test/java/in/th3iedkid/diff/accessor/MapEntryAccessorShould.java @@ -14,21 +14,26 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.path.*; -import org.hamcrest.core.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.accessor.MapEntryAccessor; +import in.th3iedkid.diff.mock.ObjectWithIdentityAndValue; +import in.th3iedkid.diff.path.Element; +import in.th3iedkid.diff.path.MapElement; +import org.hamcrest.core.IsNull; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; -import java.util.*; +import java.util.HashMap; +import java.util.Map; +import java.util.TreeMap; -import static java.util.Arrays.*; +import static java.util.Arrays.asList; import static org.fest.assertions.api.Assertions.assertThat; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.Is.*; -import static org.hamcrest.core.IsEqual.*; -import static org.hamcrest.core.IsInstanceOf.*; +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsEqual.equalTo; +import static org.hamcrest.core.IsInstanceOf.instanceOf; /** @author Daniel Bechler */ public class MapEntryAccessorShould diff --git a/src/test/java/de/danielbechler/diff/accessor/PropertyAccessorBuilder.java b/src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorBuilder.java old mode 100644 new mode 100755 similarity index 94% rename from src/test/java/de/danielbechler/diff/accessor/PropertyAccessorBuilder.java rename to src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorBuilder.java index 7bf10a29..12ffbd8d --- a/src/test/java/de/danielbechler/diff/accessor/PropertyAccessorBuilder.java +++ b/src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorBuilder.java @@ -14,9 +14,11 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; -import java.lang.reflect.*; +import in.th3iedkid.diff.accessor.PropertyAccessor; + +import java.lang.reflect.Method; /** @author Daniel Bechler */ public final class PropertyAccessorBuilder diff --git a/src/test/java/de/danielbechler/diff/accessor/PropertyAccessorForCollectionsShould.java b/src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorForCollectionsShould.java old mode 100644 new mode 100755 similarity index 89% rename from src/test/java/de/danielbechler/diff/accessor/PropertyAccessorForCollectionsShould.java rename to src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorForCollectionsShould.java index 9ea278ff..e0c748da --- a/src/test/java/de/danielbechler/diff/accessor/PropertyAccessorForCollectionsShould.java +++ b/src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorForCollectionsShould.java @@ -14,13 +14,17 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; -import de.danielbechler.diff.mock.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.accessor.PropertyAccessor; +import in.th3iedkid.diff.mock.ObjectWithCollection; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; -import java.lang.reflect.*; -import java.util.*; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; diff --git a/src/test/java/de/danielbechler/diff/accessor/PropertyAccessorForMapsShould.java b/src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorForMapsShould.java old mode 100644 new mode 100755 similarity index 87% rename from src/test/java/de/danielbechler/diff/accessor/PropertyAccessorForMapsShould.java rename to src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorForMapsShould.java index a2e95200..116d50df --- a/src/test/java/de/danielbechler/diff/accessor/PropertyAccessorForMapsShould.java +++ b/src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorForMapsShould.java @@ -14,13 +14,17 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; -import de.danielbechler.diff.mock.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.accessor.PropertyAccessor; +import in.th3iedkid.diff.mock.ObjectWithMap; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; -import java.lang.reflect.*; -import java.util.*; +import java.lang.reflect.Method; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; import static java.util.Collections.singletonMap; import static org.fest.assertions.api.Assertions.assertThat; diff --git a/src/test/java/de/danielbechler/diff/accessor/PropertyAccessorShould.java b/src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorShould.java old mode 100644 new mode 100755 similarity index 87% rename from src/test/java/de/danielbechler/diff/accessor/PropertyAccessorShould.java rename to src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorShould.java index 53b871fc..9cdb6862 --- a/src/test/java/de/danielbechler/diff/accessor/PropertyAccessorShould.java +++ b/src/test/java/in/th3iedkid/diff/accessor/PropertyAccessorShould.java @@ -14,19 +14,24 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; - -import de.danielbechler.diff.accessor.exception.*; -import de.danielbechler.diff.annotation.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.path.*; -import org.testng.annotations.*; - -import java.lang.annotation.*; -import java.lang.reflect.*; - -import static java.util.Arrays.*; -import static org.fest.assertions.api.Assertions.*; +package in.th3iedkid.diff.accessor; + +import in.th3iedkid.diff.accessor.PropertyAccessor; +import in.th3iedkid.diff.accessor.exception.PropertyReadException; +import in.th3iedkid.diff.accessor.exception.PropertyWriteException; +import in.th3iedkid.diff.annotation.ObjectDiffProperty; +import in.th3iedkid.diff.mock.ObjectWithAnnotatedProperty; +import in.th3iedkid.diff.mock.ObjectWithHashCodeAndEquals; +import in.th3iedkid.diff.mock.ObjectWithStringAndUnsupportedWriteMethod; +import in.th3iedkid.diff.path.NamedPropertyElement; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; + +import static java.util.Arrays.asList; +import static org.fest.assertions.api.Assertions.assertThat; /** @author Daniel Bechler */ public class PropertyAccessorShould diff --git a/src/test/java/de/danielbechler/diff/accessor/RootAccessorTest.java b/src/test/java/in/th3iedkid/diff/accessor/RootAccessorTest.java old mode 100644 new mode 100755 similarity index 77% rename from src/test/java/de/danielbechler/diff/accessor/RootAccessorTest.java rename to src/test/java/in/th3iedkid/diff/accessor/RootAccessorTest.java index f370fe8b..7a244f60 --- a/src/test/java/de/danielbechler/diff/accessor/RootAccessorTest.java +++ b/src/test/java/in/th3iedkid/diff/accessor/RootAccessorTest.java @@ -14,15 +14,17 @@ * limitations under the License. */ -package de.danielbechler.diff.accessor; +package in.th3iedkid.diff.accessor; -import de.danielbechler.diff.path.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.accessor.RootAccessor; +import in.th3iedkid.diff.path.RootElement; +import org.testng.annotations.Test; -import static org.hamcrest.MatcherAssert.*; -import static org.hamcrest.core.Is.*; -import static org.hamcrest.core.IsInstanceOf.*; -import static org.hamcrest.core.IsSame.*; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.IsInstanceOf.instanceOf; +import static org.hamcrest.core.IsSame.sameInstance; /** @author Daniel Bechler */ public class RootAccessorTest diff --git a/src/test/java/de/danielbechler/diff/extension/AssertionsExtensions.java b/src/test/java/in/th3iedkid/diff/extension/AssertionsExtensions.java old mode 100644 new mode 100755 similarity index 91% rename from src/test/java/de/danielbechler/diff/extension/AssertionsExtensions.java rename to src/test/java/in/th3iedkid/diff/extension/AssertionsExtensions.java index 7160d9fd..80af79a5 --- a/src/test/java/de/danielbechler/diff/extension/AssertionsExtensions.java +++ b/src/test/java/in/th3iedkid/diff/extension/AssertionsExtensions.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.extension; +package in.th3iedkid.diff.extension; -import org.fest.assertions.core.*; +import org.fest.assertions.core.Condition; /** @author Daniel Bechler */ public class AssertionsExtensions diff --git a/src/test/java/de/danielbechler/diff/extension/MockitoExtensions.java b/src/test/java/in/th3iedkid/diff/extension/MockitoExtensions.java old mode 100644 new mode 100755 similarity index 88% rename from src/test/java/de/danielbechler/diff/extension/MockitoExtensions.java rename to src/test/java/in/th3iedkid/diff/extension/MockitoExtensions.java index e865cb30..d385de3d --- a/src/test/java/de/danielbechler/diff/extension/MockitoExtensions.java +++ b/src/test/java/in/th3iedkid/diff/extension/MockitoExtensions.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff.extension; +package in.th3iedkid.diff.extension; -import org.mockito.invocation.*; -import org.mockito.stubbing.*; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; /** @author Daniel Bechler */ public class MockitoExtensions diff --git a/src/test/java/de/danielbechler/diff/integration/AdditionIntegrationTest.java b/src/test/java/in/th3iedkid/diff/integration/AdditionIntegrationTest.java old mode 100644 new mode 100755 similarity index 79% rename from src/test/java/de/danielbechler/diff/integration/AdditionIntegrationTest.java rename to src/test/java/in/th3iedkid/diff/integration/AdditionIntegrationTest.java index cf599b4c..3e9eb2ac --- a/src/test/java/de/danielbechler/diff/integration/AdditionIntegrationTest.java +++ b/src/test/java/in/th3iedkid/diff/integration/AdditionIntegrationTest.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package de.danielbechler.diff.integration; +package in.th3iedkid.diff.integration; -import de.danielbechler.diff.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.mock.ObjectWithString; +import in.th3iedkid.diff.node.Node; +import org.testng.annotations.Test; -import static de.danielbechler.diff.node.NodeAssertions.*; +import static in.th3iedkid.diff.node.NodeAssertions.assertThat; /** @author Daniel Bechler */ public class AdditionIntegrationTest diff --git a/src/test/java/de/danielbechler/diff/integration/Contact.java b/src/test/java/in/th3iedkid/diff/integration/Contact.java old mode 100644 new mode 100755 similarity index 93% rename from src/test/java/de/danielbechler/diff/integration/Contact.java rename to src/test/java/in/th3iedkid/diff/integration/Contact.java index c958c6ff..12e54a21 --- a/src/test/java/de/danielbechler/diff/integration/Contact.java +++ b/src/test/java/in/th3iedkid/diff/integration/Contact.java @@ -14,12 +14,13 @@ * limitations under the License. */ -package de.danielbechler.diff.integration; +package in.th3iedkid.diff.integration; -import de.danielbechler.diff.annotation.*; -import de.danielbechler.util.*; +import in.th3iedkid.diff.annotation.ObjectDiffProperty; +import in.th3iedkid.util.Strings; -import java.util.*; +import java.util.LinkedHashMap; +import java.util.Map; /** @author Daniel Bechler */ public class Contact diff --git a/src/test/java/de/danielbechler/diff/integration/DeepDiffingCollectionItemChangeIntegrationTest.java b/src/test/java/in/th3iedkid/diff/integration/DeepDiffingCollectionItemChangeIntegrationTest.java old mode 100644 new mode 100755 similarity index 76% rename from src/test/java/de/danielbechler/diff/integration/DeepDiffingCollectionItemChangeIntegrationTest.java rename to src/test/java/in/th3iedkid/diff/integration/DeepDiffingCollectionItemChangeIntegrationTest.java index 91d7e25b..e4e7b410 --- a/src/test/java/de/danielbechler/diff/integration/DeepDiffingCollectionItemChangeIntegrationTest.java +++ b/src/test/java/in/th3iedkid/diff/integration/DeepDiffingCollectionItemChangeIntegrationTest.java @@ -14,18 +14,20 @@ * limitations under the License. */ -package de.danielbechler.diff.integration; +package in.th3iedkid.diff.integration; -import de.danielbechler.diff.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.diff.visitor.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.ObjectDiffer; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.mock.ObjectWithString; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.diff.visitor.NodeHierarchyVisitor; +import org.testng.annotations.Test; -import java.util.*; +import java.util.Collections; +import java.util.Map; -import static de.danielbechler.diff.node.NodeAssertions.*; +import static in.th3iedkid.diff.node.NodeAssertions.assertThat; /** @author Daniel Bechler */ public class DeepDiffingCollectionItemChangeIntegrationTest diff --git a/src/test/java/de/danielbechler/diff/integration/GettingStarted.java b/src/test/java/in/th3iedkid/diff/integration/GettingStarted.java old mode 100644 new mode 100755 similarity index 90% rename from src/test/java/de/danielbechler/diff/integration/GettingStarted.java rename to src/test/java/in/th3iedkid/diff/integration/GettingStarted.java index b374194d..a9536718 --- a/src/test/java/de/danielbechler/diff/integration/GettingStarted.java +++ b/src/test/java/in/th3iedkid/diff/integration/GettingStarted.java @@ -14,11 +14,12 @@ * limitations under the License. */ -package de.danielbechler.diff.integration; +package in.th3iedkid.diff.integration; -import de.danielbechler.diff.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.visitor.*; +import in.th3iedkid.diff.ObjectDiffer; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.visitor.PrintingVisitor; /** @author Daniel Bechler */ public class GettingStarted diff --git a/src/test/java/de/danielbechler/diff/integration/IgnoreIntegrationTest.java b/src/test/java/in/th3iedkid/diff/integration/IgnoreIntegrationTest.java old mode 100644 new mode 100755 similarity index 83% rename from src/test/java/de/danielbechler/diff/integration/IgnoreIntegrationTest.java rename to src/test/java/in/th3iedkid/diff/integration/IgnoreIntegrationTest.java index a4f8a94a..c58c57f6 --- a/src/test/java/de/danielbechler/diff/integration/IgnoreIntegrationTest.java +++ b/src/test/java/in/th3iedkid/diff/integration/IgnoreIntegrationTest.java @@ -14,16 +14,17 @@ * limitations under the License. */ -package de.danielbechler.diff.integration; +package in.th3iedkid.diff.integration; -import de.danielbechler.diff.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.diff.visitor.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.ObjectDiffer; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.mock.ObjectWithCircularReference; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.diff.visitor.PrintingVisitor; +import org.testng.annotations.Test; -import static de.danielbechler.diff.node.NodeAssertions.*; +import static in.th3iedkid.diff.node.NodeAssertions.assertThat; /** @author Daniel Bechler */ public class IgnoreIntegrationTest diff --git a/src/test/java/de/danielbechler/diff/integration/PhoneBook.java b/src/test/java/in/th3iedkid/diff/integration/PhoneBook.java old mode 100644 new mode 100755 similarity index 88% rename from src/test/java/de/danielbechler/diff/integration/PhoneBook.java rename to src/test/java/in/th3iedkid/diff/integration/PhoneBook.java index 2eb77c7d..ae5a10ec --- a/src/test/java/de/danielbechler/diff/integration/PhoneBook.java +++ b/src/test/java/in/th3iedkid/diff/integration/PhoneBook.java @@ -14,11 +14,13 @@ * limitations under the License. */ -package de.danielbechler.diff.integration; +package in.th3iedkid.diff.integration; -import de.danielbechler.util.*; +import in.th3iedkid.util.Strings; -import java.util.*; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; /** @author Daniel Bechler */ public class PhoneBook @@ -87,9 +89,9 @@ public String toString() for (final Contact contact : contacts) { final String name = Strings.join(" ", - contact.getFirstName(), - contact.getMiddleName(), - contact.getLastName()); + contact.getFirstName(), + contact.getMiddleName(), + contact.getLastName()); sb.append(name).append(":\n"); for (final Map.Entry entry : contact.getPhoneNumbers().entrySet()) { diff --git a/src/test/java/de/danielbechler/diff/integration/PhoneBookTest.java b/src/test/java/in/th3iedkid/diff/integration/PhoneBookTest.java old mode 100644 new mode 100755 similarity index 87% rename from src/test/java/de/danielbechler/diff/integration/PhoneBookTest.java rename to src/test/java/in/th3iedkid/diff/integration/PhoneBookTest.java index 768e9956..0a3578a3 --- a/src/test/java/de/danielbechler/diff/integration/PhoneBookTest.java +++ b/src/test/java/in/th3iedkid/diff/integration/PhoneBookTest.java @@ -14,16 +14,18 @@ * limitations under the License. */ -package de.danielbechler.diff.integration; +package in.th3iedkid.diff.integration; -import de.danielbechler.diff.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import org.hamcrest.core.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.ObjectDiffer; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.CollectionElement; +import org.hamcrest.core.IsEqual; +import org.hamcrest.core.IsNull; +import org.testng.annotations.Test; -import static org.hamcrest.MatcherAssert.*; -import static org.hamcrest.core.Is.*; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.core.Is.is; /** @author Daniel Bechler */ public class PhoneBookTest diff --git a/src/test/java/de/danielbechler/diff/integration/PhoneNumber.java b/src/test/java/in/th3iedkid/diff/integration/PhoneNumber.java old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/diff/integration/PhoneNumber.java rename to src/test/java/in/th3iedkid/diff/integration/PhoneNumber.java index 81a36091..d77436fa --- a/src/test/java/de/danielbechler/diff/integration/PhoneNumber.java +++ b/src/test/java/in/th3iedkid/diff/integration/PhoneNumber.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.integration; +package in.th3iedkid.diff.integration; -import de.danielbechler.diff.annotation.*; +import in.th3iedkid.diff.annotation.ObjectDiffEqualsOnlyType; /** @author Daniel Bechler */ @ObjectDiffEqualsOnlyType diff --git a/src/test/java/de/danielbechler/diff/integration/TestCase.java b/src/test/java/in/th3iedkid/diff/integration/TestCase.java old mode 100644 new mode 100755 similarity index 93% rename from src/test/java/de/danielbechler/diff/integration/TestCase.java rename to src/test/java/in/th3iedkid/diff/integration/TestCase.java index ce13ec34..673f221b --- a/src/test/java/de/danielbechler/diff/integration/TestCase.java +++ b/src/test/java/in/th3iedkid/diff/integration/TestCase.java @@ -14,11 +14,12 @@ * limitations under the License. */ -package de.danielbechler.diff.integration; +package in.th3iedkid.diff.integration; -import de.danielbechler.diff.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.visitor.*; +import in.th3iedkid.diff.ObjectDiffer; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.visitor.PrintingVisitor; public class TestCase { diff --git a/src/test/java/de/danielbechler/diff/integration/graph/CircularReferenceDetectionBasedOnEqualsTest.java b/src/test/java/in/th3iedkid/diff/integration/graph/CircularReferenceDetectionBasedOnEqualsTest.java old mode 100644 new mode 100755 similarity index 77% rename from src/test/java/de/danielbechler/diff/integration/graph/CircularReferenceDetectionBasedOnEqualsTest.java rename to src/test/java/in/th3iedkid/diff/integration/graph/CircularReferenceDetectionBasedOnEqualsTest.java index a393aa47..21a971b9 --- a/src/test/java/de/danielbechler/diff/integration/graph/CircularReferenceDetectionBasedOnEqualsTest.java +++ b/src/test/java/in/th3iedkid/diff/integration/graph/CircularReferenceDetectionBasedOnEqualsTest.java @@ -14,15 +14,18 @@ * limitations under the License. */ -package de.danielbechler.diff.integration.graph; +package in.th3iedkid.diff.integration.graph; -import de.danielbechler.diff.Configuration; -import de.danielbechler.diff.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.Configuration; +import in.th3iedkid.diff.ObjectDiffer; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.mock.ObjectWithNestedObject; +import in.th3iedkid.diff.node.NodeAssertions; +import in.th3iedkid.diff.node.Node; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; -import static de.danielbechler.diff.Configuration.CircularReferenceMatchingMode.*; +import static in.th3iedkid.diff.Configuration.CircularReferenceMatchingMode.EQUALS_METHOD; /** @author Daniel Bechler */ public class CircularReferenceDetectionBasedOnEqualsTest diff --git a/src/test/java/de/danielbechler/diff/integration/graph/CircularReferenceDetectionBasedOnIdentityTest.java b/src/test/java/in/th3iedkid/diff/integration/graph/CircularReferenceDetectionBasedOnIdentityTest.java old mode 100644 new mode 100755 similarity index 78% rename from src/test/java/de/danielbechler/diff/integration/graph/CircularReferenceDetectionBasedOnIdentityTest.java rename to src/test/java/in/th3iedkid/diff/integration/graph/CircularReferenceDetectionBasedOnIdentityTest.java index 1ecf9e39..73715142 --- a/src/test/java/de/danielbechler/diff/integration/graph/CircularReferenceDetectionBasedOnIdentityTest.java +++ b/src/test/java/in/th3iedkid/diff/integration/graph/CircularReferenceDetectionBasedOnIdentityTest.java @@ -14,15 +14,18 @@ * limitations under the License. */ -package de.danielbechler.diff.integration.graph; +package in.th3iedkid.diff.integration.graph; -import de.danielbechler.diff.Configuration; -import de.danielbechler.diff.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.Configuration; +import in.th3iedkid.diff.ObjectDiffer; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.mock.ObjectWithNestedObject; +import in.th3iedkid.diff.node.NodeAssertions; +import in.th3iedkid.diff.node.Node; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; -import static de.danielbechler.diff.Configuration.CircularReferenceMatchingMode.*; +import static in.th3iedkid.diff.Configuration.CircularReferenceMatchingMode.EQUALITY_OPERATOR; /** @author Daniel Bechler */ public class CircularReferenceDetectionBasedOnIdentityTest diff --git a/src/test/java/de/danielbechler/diff/integration/graph/CircularReferenceIntegrationTest.java b/src/test/java/in/th3iedkid/diff/integration/graph/CircularReferenceIntegrationTest.java old mode 100644 new mode 100755 similarity index 85% rename from src/test/java/de/danielbechler/diff/integration/graph/CircularReferenceIntegrationTest.java rename to src/test/java/in/th3iedkid/diff/integration/graph/CircularReferenceIntegrationTest.java index 3d7bede0..7e52c371 --- a/src/test/java/de/danielbechler/diff/integration/graph/CircularReferenceIntegrationTest.java +++ b/src/test/java/in/th3iedkid/diff/integration/graph/CircularReferenceIntegrationTest.java @@ -14,17 +14,18 @@ * limitations under the License. */ -package de.danielbechler.diff.integration.graph; +package in.th3iedkid.diff.integration.graph; -import de.danielbechler.diff.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.diff.visitor.*; -import org.fest.assertions.api.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.ObjectDiffer; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.mock.ObjectWithCircularReference; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.diff.visitor.PrintingVisitor; +import org.fest.assertions.api.Assertions; +import org.testng.annotations.Test; -import static de.danielbechler.diff.node.NodeAssertions.*; +import static in.th3iedkid.diff.node.NodeAssertions.assertThat; /** @author Daniel Bechler */ public class CircularReferenceIntegrationTest diff --git a/src/test/java/de/danielbechler/diff/integration/graph/GraphIntegrationTest.java b/src/test/java/in/th3iedkid/diff/integration/graph/GraphIntegrationTest.java old mode 100644 new mode 100755 similarity index 96% rename from src/test/java/de/danielbechler/diff/integration/graph/GraphIntegrationTest.java rename to src/test/java/in/th3iedkid/diff/integration/graph/GraphIntegrationTest.java index 3fbb927f..4333a492 --- a/src/test/java/de/danielbechler/diff/integration/graph/GraphIntegrationTest.java +++ b/src/test/java/in/th3iedkid/diff/integration/graph/GraphIntegrationTest.java @@ -14,17 +14,20 @@ * limitations under the License. */ -package de.danielbechler.diff.integration.graph; - -import de.danielbechler.diff.*; -import de.danielbechler.diff.Configuration; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.visitor.*; -import org.testng.annotations.*; - -import static de.danielbechler.diff.node.Node.State.*; -import static de.danielbechler.diff.node.NodeAssertions.assertThat; -import static de.danielbechler.diff.path.PropertyPath.*; +package in.th3iedkid.diff.integration.graph; + +import in.th3iedkid.diff.Configuration; +import in.th3iedkid.diff.ObjectDiffer; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.node.NodeAssertions; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.visitor.NodeHierarchyVisitor; +import in.th3iedkid.diff.visitor.PrintingVisitor; +import org.testng.annotations.Test; + +import static in.th3iedkid.diff.node.NodeAssertions.assertThat; +import static in.th3iedkid.diff.node.Node.State.CHANGED; +import static in.th3iedkid.diff.path.PropertyPath.createBuilder; import static org.fest.assertions.api.Assertions.assertThat; /** diff --git a/src/test/java/de/danielbechler/diff/integration/graph/GraphNode.java b/src/test/java/in/th3iedkid/diff/integration/graph/GraphNode.java old mode 100644 new mode 100755 similarity index 92% rename from src/test/java/de/danielbechler/diff/integration/graph/GraphNode.java rename to src/test/java/in/th3iedkid/diff/integration/graph/GraphNode.java index f0fc2854..6ce3b57b --- a/src/test/java/de/danielbechler/diff/integration/graph/GraphNode.java +++ b/src/test/java/in/th3iedkid/diff/integration/graph/GraphNode.java @@ -14,13 +14,17 @@ * limitations under the License. */ -package de.danielbechler.diff.integration.graph; +package in.th3iedkid.diff.integration.graph; -import org.slf4j.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import java.util.*; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; -import static java.util.Arrays.*; +import static java.util.Arrays.asList; /** * @author https://github.com/oplohmann (original author) diff --git a/src/test/java/de/danielbechler/diff/integration/issues/Issue43IntegrationTest.java b/src/test/java/in/th3iedkid/diff/integration/issues/Issue43IntegrationTest.java old mode 100644 new mode 100755 similarity index 84% rename from src/test/java/de/danielbechler/diff/integration/issues/Issue43IntegrationTest.java rename to src/test/java/in/th3iedkid/diff/integration/issues/Issue43IntegrationTest.java index dea9f2b8..6e837c66 --- a/src/test/java/de/danielbechler/diff/integration/issues/Issue43IntegrationTest.java +++ b/src/test/java/in/th3iedkid/diff/integration/issues/Issue43IntegrationTest.java @@ -1,16 +1,18 @@ -package de.danielbechler.diff.integration.issues; +package in.th3iedkid.diff.integration.issues; -import de.danielbechler.diff.*; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.Configuration; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import org.testng.annotations.Test; -import java.util.*; +import java.util.List; +import java.util.Set; -import static java.util.Arrays.*; -import static java.util.Collections.*; -import static org.hamcrest.CoreMatchers.*; -import static org.hamcrest.MatcherAssert.*; +import static java.util.Arrays.asList; +import static java.util.Collections.singleton; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; /** https://github.com/SQiShER/java-object-diff/issues/43 */ @SuppressWarnings("ALL") @@ -144,7 +146,7 @@ public int hashCode() public void shouldDiffThings() { final List propertyNames = asList("things", "include"); - de.danielbechler.diff.Configuration configuration = new de.danielbechler.diff.Configuration(); + in.th3iedkid.diff.Configuration configuration = new Configuration(); for (final String name : propertyNames) { final PropertyPath propertyPath = PropertyPath.buildWith(name); diff --git a/src/test/java/de/danielbechler/diff/introspect/StandardIntrospectorTest.java b/src/test/java/in/th3iedkid/diff/introspect/StandardIntrospectorTest.java old mode 100644 new mode 100755 similarity index 82% rename from src/test/java/de/danielbechler/diff/introspect/StandardIntrospectorTest.java rename to src/test/java/in/th3iedkid/diff/introspect/StandardIntrospectorTest.java index ce23d689..a8bd1597 --- a/src/test/java/de/danielbechler/diff/introspect/StandardIntrospectorTest.java +++ b/src/test/java/in/th3iedkid/diff/introspect/StandardIntrospectorTest.java @@ -14,18 +14,25 @@ * limitations under the License. */ -package de.danielbechler.diff.introspect; +package in.th3iedkid.diff.introspect; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.path.*; -import de.danielbechler.util.*; -import org.hamcrest.core.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.mock.ObjectWithEqualsOnlyPropertyType; +import in.th3iedkid.diff.mock.ObjectWithInheritedPropertyAnnotation; +import in.th3iedkid.diff.mock.ObjectWithPropertyAnnotations; +import in.th3iedkid.diff.mock.ObjectWithString; +import in.th3iedkid.diff.introspect.StandardIntrospector; +import in.th3iedkid.diff.path.NamedPropertyElement; +import in.th3iedkid.util.Collections; +import org.hamcrest.core.Is; +import org.hamcrest.core.IsEqual; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; -import java.beans.*; +import java.beans.BeanInfo; +import java.beans.IntrospectionException; -import static org.hamcrest.MatcherAssert.*; +import static org.hamcrest.MatcherAssert.assertThat; /** @author Daniel Bechler */ public class StandardIntrospectorTest diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectDiffTest.java b/src/test/java/in/th3iedkid/diff/mock/ObjectDiffTest.java old mode 100644 new mode 100755 similarity index 89% rename from src/test/java/de/danielbechler/diff/mock/ObjectDiffTest.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectDiffTest.java index ce1fad83..b4eae917 --- a/src/test/java/de/danielbechler/diff/mock/ObjectDiffTest.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectDiffTest.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; -import de.danielbechler.diff.annotation.*; +import in.th3iedkid.diff.annotation.ObjectDiffAnnotation; import java.lang.annotation.*; diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithAccessTrackingIgnoredProperty.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithAccessTrackingIgnoredProperty.java old mode 100644 new mode 100755 similarity index 91% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithAccessTrackingIgnoredProperty.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithAccessTrackingIgnoredProperty.java index ce639d92..c94da793 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithAccessTrackingIgnoredProperty.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithAccessTrackingIgnoredProperty.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; -import de.danielbechler.diff.annotation.*; +import in.th3iedkid.diff.annotation.ObjectDiffProperty; /** @author Daniel Bechler */ @SuppressWarnings({"MethodMayBeStatic", "UnusedDeclaration"}) diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithAnnotatedProperty.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithAnnotatedProperty.java old mode 100644 new mode 100755 similarity index 91% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithAnnotatedProperty.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithAnnotatedProperty.java index 437d329b..eaf54598 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithAnnotatedProperty.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithAnnotatedProperty.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; -import de.danielbechler.diff.annotation.*; +import in.th3iedkid.diff.annotation.ObjectDiffProperty; /** @author Daniel Bechler */ public class ObjectWithAnnotatedProperty diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithCircularReference.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithCircularReference.java old mode 100644 new mode 100755 similarity index 97% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithCircularReference.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithCircularReference.java index 81dc3c75..c124f462 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithCircularReference.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithCircularReference.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; /** @author Daniel Bechler */ public class ObjectWithCircularReference diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithCollection.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithCollection.java old mode 100644 new mode 100755 similarity index 92% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithCollection.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithCollection.java index 6aea5e25..aaea9cb3 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithCollection.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithCollection.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; -import java.util.*; +import java.util.Collection; +import java.util.LinkedList; /** @author Daniel Bechler */ public class ObjectWithCollection diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithCompareTo.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithCompareTo.java old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithCompareTo.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithCompareTo.java index 2e5baf92..ec339ee4 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithCompareTo.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithCompareTo.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; -import de.danielbechler.util.Assert; +import in.th3iedkid.util.Assert; /** @author Daniel Bechler */ public class ObjectWithCompareTo implements Comparable diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithEqualsOnlyPropertyType.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithEqualsOnlyPropertyType.java old mode 100644 new mode 100755 similarity index 96% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithEqualsOnlyPropertyType.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithEqualsOnlyPropertyType.java index 83582cf3..ebf4765c --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithEqualsOnlyPropertyType.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithEqualsOnlyPropertyType.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; /** @author Daniel Bechler */ public class ObjectWithEqualsOnlyPropertyType diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithExceptionThrowingDefaultConstructor.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithExceptionThrowingDefaultConstructor.java old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithExceptionThrowingDefaultConstructor.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithExceptionThrowingDefaultConstructor.java index b985e380..ed836dc8 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithExceptionThrowingDefaultConstructor.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithExceptionThrowingDefaultConstructor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; /** @author Daniel Bechler */ public class ObjectWithExceptionThrowingDefaultConstructor diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithHashCodeAndEquals.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithHashCodeAndEquals.java old mode 100644 new mode 100755 similarity index 96% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithHashCodeAndEquals.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithHashCodeAndEquals.java index 5631f2ce..afc468fe --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithHashCodeAndEquals.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithHashCodeAndEquals.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; -import de.danielbechler.util.*; +import in.th3iedkid.util.Assert; /** @author Daniel Bechler */ public class ObjectWithHashCodeAndEquals diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithIdentityAndValue.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithIdentityAndValue.java old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithIdentityAndValue.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithIdentityAndValue.java index ee08fdd6..821d8465 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithIdentityAndValue.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithIdentityAndValue.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; -import static de.danielbechler.util.Assert.*; +import static in.th3iedkid.util.Assert.hasText; /** @author Daniel Bechler */ public class ObjectWithIdentityAndValue diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithIgnoredMap.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithIgnoredMap.java old mode 100644 new mode 100755 similarity index 87% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithIgnoredMap.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithIgnoredMap.java index bd726437..86813b69 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithIgnoredMap.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithIgnoredMap.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; -import de.danielbechler.diff.annotation.*; +import in.th3iedkid.diff.annotation.ObjectDiffProperty; -import java.util.*; +import java.util.Map; /** @author Daniel Bechler */ public class ObjectWithIgnoredMap extends ObjectWithMap diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithInheritedPropertyAnnotation.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithInheritedPropertyAnnotation.java old mode 100644 new mode 100755 similarity index 96% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithInheritedPropertyAnnotation.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithInheritedPropertyAnnotation.java index afc645a1..1a839106 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithInheritedPropertyAnnotation.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithInheritedPropertyAnnotation.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; /** @author Daniel Bechler */ @SuppressWarnings({"UnusedDeclaration"}) diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithMap.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithMap.java old mode 100644 new mode 100755 similarity index 92% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithMap.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithMap.java index 9ac4d039..247b0e43 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithMap.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithMap.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; -import java.util.*; +import java.util.Map; +import java.util.TreeMap; /** @author Daniel Bechler */ public class ObjectWithMap diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithNestedObject.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithNestedObject.java old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithNestedObject.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithNestedObject.java index 102db1a9..16be0d6d --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithNestedObject.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithNestedObject.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; -import de.danielbechler.util.*; +import in.th3iedkid.util.Assert; /** @author Daniel Bechler */ public class ObjectWithNestedObject diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithPrimitiveProperties.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithPrimitiveProperties.java old mode 100644 new mode 100755 similarity index 98% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithPrimitiveProperties.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithPrimitiveProperties.java index 5e9161d2..1cdcfc26 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithPrimitiveProperties.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithPrimitiveProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; /** @author Daniel Bechler */ public class ObjectWithPrimitiveProperties diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithPrivateDefaultConstructor.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithPrivateDefaultConstructor.java old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithPrivateDefaultConstructor.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithPrivateDefaultConstructor.java index 058d988d..0861c980 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithPrivateDefaultConstructor.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithPrivateDefaultConstructor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; /** @author Daniel Bechler */ public class ObjectWithPrivateDefaultConstructor diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithPropertyAnnotations.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithPropertyAnnotations.java old mode 100644 new mode 100755 similarity index 91% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithPropertyAnnotations.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithPropertyAnnotations.java index a16f4d77..8b53365d --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithPropertyAnnotations.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithPropertyAnnotations.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; -import de.danielbechler.diff.annotation.*; +import in.th3iedkid.diff.annotation.ObjectDiffEqualsOnlyType; +import in.th3iedkid.diff.annotation.ObjectDiffProperty; /** @author Daniel Bechler */ @ObjectDiffEqualsOnlyType diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithString.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithString.java old mode 100644 new mode 100755 similarity index 97% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithString.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithString.java index a3e99d41..f52d0156 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithString.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithString.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; /** @author Daniel Bechler */ @SuppressWarnings({ diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithStringAndCompareTo.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithStringAndCompareTo.java old mode 100644 new mode 100755 similarity index 97% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithStringAndCompareTo.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithStringAndCompareTo.java index f4e90c0d..f1198f7f --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithStringAndCompareTo.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithStringAndCompareTo.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; /** @author Daniel Bechler */ @SuppressWarnings({ diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithStringAndUnsupportedWriteMethod.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithStringAndUnsupportedWriteMethod.java old mode 100644 new mode 100755 similarity index 96% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithStringAndUnsupportedWriteMethod.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithStringAndUnsupportedWriteMethod.java index 4d8af572..07d215df --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithStringAndUnsupportedWriteMethod.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithStringAndUnsupportedWriteMethod.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; /** @author Daniel Bechler */ public class ObjectWithStringAndUnsupportedWriteMethod extends ObjectWithString diff --git a/src/test/java/de/danielbechler/diff/mock/ObjectWithoutDefaultConstructor.java b/src/test/java/in/th3iedkid/diff/mock/ObjectWithoutDefaultConstructor.java old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/diff/mock/ObjectWithoutDefaultConstructor.java rename to src/test/java/in/th3iedkid/diff/mock/ObjectWithoutDefaultConstructor.java index 9610bcf2..0b3e9191 --- a/src/test/java/de/danielbechler/diff/mock/ObjectWithoutDefaultConstructor.java +++ b/src/test/java/in/th3iedkid/diff/mock/ObjectWithoutDefaultConstructor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package de.danielbechler.diff.mock; +package in.th3iedkid.diff.mock; /** @author Daniel Bechler */ public class ObjectWithoutDefaultConstructor diff --git a/src/test/java/de/danielbechler/diff/node/DefaultNodeTest.java b/src/test/java/in/th3iedkid/diff/node/DefaultNodeTest.java old mode 100644 new mode 100755 similarity index 89% rename from src/test/java/de/danielbechler/diff/node/DefaultNodeTest.java rename to src/test/java/in/th3iedkid/diff/node/DefaultNodeTest.java index 6473e529..9293dbd1 --- a/src/test/java/de/danielbechler/diff/node/DefaultNodeTest.java +++ b/src/test/java/in/th3iedkid/diff/node/DefaultNodeTest.java @@ -14,24 +14,34 @@ * limitations under the License. */ -package de.danielbechler.diff.node; - -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.path.*; -import org.fest.assertions.api.*; -import org.hamcrest.core.*; -import org.testng.annotations.*; - -import java.lang.annotation.*; -import java.util.*; +package in.th3iedkid.diff.node; + +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.accessor.CollectionItemAccessor; +import in.th3iedkid.diff.accessor.PropertyAccessor; +import in.th3iedkid.diff.mock.ObjectDiffTest; +import in.th3iedkid.diff.path.NamedPropertyElement; +import in.th3iedkid.diff.path.PropertyPath; +import org.fest.assertions.api.Assertions; +import org.hamcrest.core.Is; +import org.mockito.Mock; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.lang.annotation.Annotation; +import java.util.Arrays; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; import static org.fest.assertions.api.Assertions.assertThat; import static org.hamcrest.MatcherAssert.assertThat; import static org.mockito.Mockito.*; -import static org.mockito.MockitoAnnotations.*; +import static org.mockito.MockitoAnnotations.initMocks; -/** @author Daniel Bechler */ +/** @author Daniel Bechler + * @author th3iedkid changed for mockito deprecation + * */ public class DefaultNodeTest { @Mock diff --git a/src/test/java/de/danielbechler/diff/node/MapEntryNode.java b/src/test/java/in/th3iedkid/diff/node/MapEntryNode.java old mode 100644 new mode 100755 similarity index 83% rename from src/test/java/de/danielbechler/diff/node/MapEntryNode.java rename to src/test/java/in/th3iedkid/diff/node/MapEntryNode.java index 7307915f..e16f7ae8 --- a/src/test/java/de/danielbechler/diff/node/MapEntryNode.java +++ b/src/test/java/in/th3iedkid/diff/node/MapEntryNode.java @@ -14,11 +14,16 @@ * limitations under the License. */ -package de.danielbechler.diff.node; +package in.th3iedkid.diff.node; -import de.danielbechler.diff.accessor.*; +import in.th3iedkid.diff.accessor.MapEntryAccessor; +import in.th3iedkid.diff.node.DefaultNode; +import in.th3iedkid.diff.node.MapNode; +import in.th3iedkid.diff.node.Node; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.Map; /** * This class is not yet ready. Probably turns out to be useless. diff --git a/src/test/java/de/danielbechler/diff/node/NodeAssertions.java b/src/test/java/in/th3iedkid/diff/node/NodeAssertions.java old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/diff/node/NodeAssertions.java rename to src/test/java/in/th3iedkid/diff/node/NodeAssertions.java index 1ae86d0b..e88a085c --- a/src/test/java/de/danielbechler/diff/node/NodeAssertions.java +++ b/src/test/java/in/th3iedkid/diff/node/NodeAssertions.java @@ -14,12 +14,15 @@ * limitations under the License. */ -package de.danielbechler.diff.node; - -import de.danielbechler.diff.path.*; -import de.danielbechler.diff.visitor.*; -import org.fest.assertions.api.*; -import org.fest.assertions.core.*; +package in.th3iedkid.diff.node; + +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.CollectionElement; +import in.th3iedkid.diff.path.Element; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.diff.visitor.PropertyVisitor; +import org.fest.assertions.api.Assertions; +import org.fest.assertions.core.Condition; /** @author Daniel Bechler */ public final class NodeAssertions diff --git a/src/test/java/de/danielbechler/diff/node/NodeAssertionsTest.java b/src/test/java/in/th3iedkid/diff/node/NodeAssertionsTest.java old mode 100644 new mode 100755 similarity index 91% rename from src/test/java/de/danielbechler/diff/node/NodeAssertionsTest.java rename to src/test/java/in/th3iedkid/diff/node/NodeAssertionsTest.java index 06854104..c6ae6f0a --- a/src/test/java/de/danielbechler/diff/node/NodeAssertionsTest.java +++ b/src/test/java/in/th3iedkid/diff/node/NodeAssertionsTest.java @@ -14,16 +14,20 @@ * limitations under the License. */ -package de.danielbechler.diff.node; - -import de.danielbechler.diff.*; -import de.danielbechler.diff.accessor.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.path.*; -import org.testng.annotations.*; - -import static de.danielbechler.diff.node.NodeAssertions.*; -import static org.mockito.Mockito.*; +package in.th3iedkid.diff.node; + +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.accessor.Accessor; +import in.th3iedkid.diff.mock.ObjectWithString; +import in.th3iedkid.diff.node.DefaultNode; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.NamedPropertyElement; +import in.th3iedkid.diff.path.PropertyPath; +import org.testng.annotations.Test; + +import static in.th3iedkid.diff.node.NodeAssertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; /** @author Daniel Bechler */ public class NodeAssertionsTest diff --git a/src/test/java/de/danielbechler/diff/node/TypeAwareNode.java b/src/test/java/in/th3iedkid/diff/node/TypeAwareNode.java old mode 100644 new mode 100755 similarity index 85% rename from src/test/java/de/danielbechler/diff/node/TypeAwareNode.java rename to src/test/java/in/th3iedkid/diff/node/TypeAwareNode.java index 8dcdc8bc..a414404f --- a/src/test/java/de/danielbechler/diff/node/TypeAwareNode.java +++ b/src/test/java/in/th3iedkid/diff/node/TypeAwareNode.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package de.danielbechler.diff.node; +package in.th3iedkid.diff.node; -import de.danielbechler.diff.accessor.*; +import in.th3iedkid.diff.accessor.TypeAwareAccessor; +import in.th3iedkid.diff.node.Node; /** @author Daniel Bechler */ public interface TypeAwareNode extends Node, TypeAwareAccessor diff --git a/src/test/java/de/danielbechler/diff/path/PropertyPathBuilderTest.java b/src/test/java/in/th3iedkid/diff/path/PropertyPathBuilderTest.java old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/diff/path/PropertyPathBuilderTest.java rename to src/test/java/in/th3iedkid/diff/path/PropertyPathBuilderTest.java index 3c9bfb28..3718114a --- a/src/test/java/de/danielbechler/diff/path/PropertyPathBuilderTest.java +++ b/src/test/java/in/th3iedkid/diff/path/PropertyPathBuilderTest.java @@ -14,11 +14,12 @@ * limitations under the License. */ -package de.danielbechler.diff.path; +package in.th3iedkid.diff.path; -import org.testng.annotations.*; +import in.th3iedkid.diff.path.*; +import org.testng.annotations.Test; -import static org.fest.assertions.api.Assertions.*; +import static org.fest.assertions.api.Assertions.assertThat; /** @author Daniel Bechler */ public class PropertyPathBuilderTest diff --git a/src/test/java/de/danielbechler/diff/visitor/PrintingVisitorTest.java b/src/test/java/in/th3iedkid/diff/visitor/PrintingVisitorTest.java old mode 100644 new mode 100755 similarity index 86% rename from src/test/java/de/danielbechler/diff/visitor/PrintingVisitorTest.java rename to src/test/java/in/th3iedkid/diff/visitor/PrintingVisitorTest.java index 68b63319..00e952ae --- a/src/test/java/de/danielbechler/diff/visitor/PrintingVisitorTest.java +++ b/src/test/java/in/th3iedkid/diff/visitor/PrintingVisitorTest.java @@ -14,14 +14,16 @@ * limitations under the License. */ -package de.danielbechler.diff.visitor; +package in.th3iedkid.diff.visitor; -import de.danielbechler.diff.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.ObjectDifferFactory; +import in.th3iedkid.diff.mock.ObjectWithCircularReference; +import in.th3iedkid.diff.node.DefaultNode; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.visitor.PrintingVisitor; +import org.testng.annotations.Test; -import static org.fest.assertions.api.Assertions.*; +import static org.fest.assertions.api.Assertions.assertThat; /** @author Daniel Bechler */ public class PrintingVisitorTest diff --git a/src/test/java/de/danielbechler/diff/visitor/ToMapPrintingVisitorTest.java b/src/test/java/in/th3iedkid/diff/visitor/ToMapPrintingVisitorTest.java old mode 100644 new mode 100755 similarity index 92% rename from src/test/java/de/danielbechler/diff/visitor/ToMapPrintingVisitorTest.java rename to src/test/java/in/th3iedkid/diff/visitor/ToMapPrintingVisitorTest.java index e2075e55..2d78f64c --- a/src/test/java/de/danielbechler/diff/visitor/ToMapPrintingVisitorTest.java +++ b/src/test/java/in/th3iedkid/diff/visitor/ToMapPrintingVisitorTest.java @@ -14,13 +14,16 @@ * limitations under the License. */ -package de.danielbechler.diff.visitor; +package in.th3iedkid.diff.visitor; -import de.danielbechler.diff.node.*; -import de.danielbechler.diff.path.*; -import org.testng.annotations.*; +import in.th3iedkid.diff.node.DefaultNode; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.diff.path.PropertyPath; +import in.th3iedkid.diff.visitor.ToMapPrintingVisitor; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; -import static org.fest.assertions.api.Assertions.*; +import static org.fest.assertions.api.Assertions.assertThat; /** @author Daniel Bechler */ public class ToMapPrintingVisitorTest diff --git a/src/test/java/de/danielbechler/util/ClassesSpecification.groovy b/src/test/java/in/th3iedkid/util/ClassesSpecification.groovy old mode 100644 new mode 100755 similarity index 95% rename from src/test/java/de/danielbechler/util/ClassesSpecification.groovy rename to src/test/java/in/th3iedkid/util/ClassesSpecification.groovy index 130e2342..c201102e --- a/src/test/java/de/danielbechler/util/ClassesSpecification.groovy +++ b/src/test/java/in/th3iedkid/util/ClassesSpecification.groovy @@ -14,8 +14,9 @@ * limitations under the License. */ -package de.danielbechler.util +package in.th3iedkid.diff.util +import in.th3iedkid.util.Classes import spock.lang.Specification import spock.lang.Unroll diff --git a/src/test/java/de/danielbechler/util/ClassesTest.java b/src/test/java/in/th3iedkid/util/ClassesTest.java old mode 100644 new mode 100755 similarity index 86% rename from src/test/java/de/danielbechler/util/ClassesTest.java rename to src/test/java/in/th3iedkid/util/ClassesTest.java index 54ad4cba..df481ab6 --- a/src/test/java/de/danielbechler/util/ClassesTest.java +++ b/src/test/java/in/th3iedkid/util/ClassesTest.java @@ -14,18 +14,26 @@ * limitations under the License. */ -package de.danielbechler.util; - -import de.danielbechler.diff.integration.*; -import de.danielbechler.diff.mock.*; -import de.danielbechler.diff.node.*; -import org.testng.annotations.*; - -import java.net.*; -import java.text.*; +package in.th3iedkid.util; + +import in.th3iedkid.diff.integration.Contact; +import in.th3iedkid.diff.integration.PhoneBook; +import in.th3iedkid.diff.integration.PhoneNumber; +import in.th3iedkid.diff.mock.ObjectWithExceptionThrowingDefaultConstructor; +import in.th3iedkid.diff.mock.ObjectWithPrivateDefaultConstructor; +import in.th3iedkid.diff.mock.ObjectWithString; +import in.th3iedkid.diff.mock.ObjectWithoutDefaultConstructor; +import in.th3iedkid.diff.node.Node; +import in.th3iedkid.util.Classes; +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + +import java.net.URI; +import java.net.URL; +import java.text.Collator; import java.util.*; -import static org.fest.assertions.api.Assertions.*; +import static org.fest.assertions.api.Assertions.assertThat; /** @author Daniel Bechler */ public class ClassesTest