X-Git-Url: http://juplo.de/gitweb/?p=hibernate4-maven-plugin;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fplugins%2Fhibernate%2FModificationTracker.java;h=7b5791f104cdf24d264ba7fe4409e3a09b75692f;hp=02820693a9b431648a69d76810731aa9a01c7c9d;hb=62ec2b1b98d5ce144f1ac41815b94293a52e91e6;hpb=6dff3bfb0f9ea7a1d0cc56398aaad29e31a17b91 diff --git a/src/main/java/de/juplo/plugins/hibernate/ModificationTracker.java b/src/main/java/de/juplo/plugins/hibernate/ModificationTracker.java index 02820693..7b5791f1 100644 --- a/src/main/java/de/juplo/plugins/hibernate/ModificationTracker.java +++ b/src/main/java/de/juplo/plugins/hibernate/ModificationTracker.java @@ -33,6 +33,7 @@ public class ModificationTracker private final Set classNames; private boolean modified = false; + private boolean failed = false; private final File saved; private final MessageDigest digest; @@ -125,14 +126,28 @@ public class ModificationTracker boolean modified() { - modified |= !propertyNames.containsAll(properties.keySet()); - modified |= !properties.keySet().containsAll(propertyNames); - modified |= !classNames.containsAll(classes.keySet()); - modified |= !classes.keySet().containsAll(classNames); + for (String property : new HashSet(properties.keySet())) + if (!propertyNames.contains(property)) + { + modified = true; + properties.remove(property); + } + for (String clazz : new HashSet(classes.keySet())) + if (!classNames.contains(clazz)) + { + modified = true; + classes.remove(clazz); + } return modified; } + void failed() + { + failed = true; + } + + void load() { if (saved.isFile() && saved.length() > 0) @@ -169,6 +184,12 @@ public class ModificationTracker void save() { + if (failed) + { + saved.delete(); + return; + } + if (!modified) return;