Skip to content
This repository was archived by the owner on Oct 4, 2018. It is now read-only.

Commit d631b1a

Browse files
committed
Improved README
1 parent 8155391 commit d631b1a

1 file changed

Lines changed: 22 additions & 18 deletions

File tree

‎README.md‎

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,44 @@ An easy-to-use Framework to find and handle differences between Java objects.
66

77
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).
88

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+
919
## Use Cases
1020

1121
**Java Object Diff** is currently used to...
1222

1323
* 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
2127

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.
2629

2730
## Note
2831

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).
3236

33-
## Ways to Improve
37+
## How to Improve
3438

3539
* Performance has not been a hight priority so far, so there is still some room for improvement.
3640
* Object comparison is very strict. Objects with different types cannot be compared, even when they share the same interface.
3741
* 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.
3943
* 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.
4145

42-
## Known Issues and
46+
## Known Issues and Limitations
4347

4448
* Array handling is not implemented properly yet.
4549
* Map keys are currently not compared via introspection and only used to identify map values.

0 commit comments

Comments
 (0)