You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Oct 4, 2018. It is now read-only.
Repository navigation
Commit d631b1a
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: README.md
+22-18Lines changed: 22 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,40 +6,44 @@ An easy-to-use Framework to find and handle differences between Java objects.
6
6
7
7
To learn how to use **Java Object Diff**, please have a look at the short [starter guide](https://github.com/SQiShER/java-object-diff/wiki/Getting-Started).
8
8
9
+
## Features
10
+
11
+
* 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 object.
12
+
* Visitor-support allows you to extract and modify exactly what you want.
13
+
* Designed to work with any kind of object out-of-the-box.
14
+
* Properties can be categorized, to easily compare or merge specific subsets. (This is very useful for databases like [MongoDB](http://www.mongodb.org/) that support [atomic property operations](http://www.mongodb.org/display/DOCS/Atomic+Operations).)
15
+
* Comparison can be improved and customized via Annotations or configuration API.
16
+
* No Annotations needed. (However, they exist for your convenience.)
17
+
* No runtime dependencies except for [SLF4J](http://www.slf4j.org/).
18
+
9
19
## Use Cases
10
20
11
21
**Java Object Diff** is currently used to...
12
22
13
23
* Generate Facebook-like activity streams
14
-
* Visualize the differences between two object versions
15
-
* Automatically resolve conflicts on concurrent database writes
16
-
* Detect and persist only properties that actually changed
17
-
18
-
Even though none one of the above solutions comes out-of-the-box, this framework made them very easy to realize.
19
-
20
-
## Feature List
24
+
* Visualize the differences between object versions
25
+
* Automatically resolve conflicts on conflicting database updates
26
+
* Detect and persist only properties that were actually changed
21
27
22
-
* Generates a graph of your object, allowing you to build powerful visitors to extract and modify exactly what you want.
23
-
* Works with every kind of object, even those you can't modify.
24
-
* Can be configured entirely from the outside. No annotations needed. (Although they exist and make it much more convenient.)
25
-
* Properties can be grouped into categories, to easily compare or merge specific groups of properties.
28
+
Even though none of the above solutions comes out-of-the-box, this framework made them very easy to do.
26
29
27
30
## Note
28
31
29
-
Although I successfully use this framework in a rather complex project for quite a while now, I'm sure there are still many
30
-
edge cases, that I didn't even think about. Fortunately, the simple API makes it easy for you, to test it on your own set of
31
-
objects, to see if it works for you.
32
+
I use this framework in a pretty big project for quite a while now, but I'm sure there are still many
33
+
edge cases, that I didn't run into. Fortunately, the simple API makes it easy for you, to test it on your
34
+
own set of objects, to see if it works for you. If you run into problems please contact me or open an issue
35
+
in the [issue tracker](https://github.com/SQiShER/java-object-diff/issues).
32
36
33
-
## Ways to Improve
37
+
## How to Improve
34
38
35
39
* Performance has not been a hight priority so far, so there is still some room for improvement.
36
40
* Object comparison is very strict. Objects with different types cannot be compared, even when they share the same interface.
37
41
* It should be possible to apply the annotations to fields and not only to methods, to allow for some advanced merging techniques.
38
-
* It would be great to integrate a text-based diff algorithm for regular Strings.
42
+
* It would be great to integrate a text-based diff algorithm for regular strings.
39
43
* Some out-out-of-the-box Mergers would be nice (e.g. `LeftToRightMerger`, `NonConflictingMerger`, etc.)
40
-
*Could use more documentation and tests.
44
+
*Needs more documentation and could use some more tests.
41
45
42
-
## Known Issues and
46
+
## Known Issues and Limitations
43
47
44
48
* Array handling is not implemented properly yet.
45
49
* Map keys are currently not compared via introspection and only used to identify map values.
0 commit comments