X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=support%2Fgeneral%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fpersistence%2FJpaMergeSupport.java;h=6230656f0f3933a37a879849ded6418c62c83d46;hb=fa0390b1f4d5f90d6c9f5ff5bd23c5206d526553;hp=df1ce81d52aab52ee41d135f38220b1ad481f27d;hpb=571d83f35a06f57d65c155cf63237fea70f7b1b9;p=utils diff --git a/support/general/src/main/java/org/wamblee/persistence/JpaMergeSupport.java b/support/general/src/main/java/org/wamblee/persistence/JpaMergeSupport.java index df1ce81d..6230656f 100644 --- a/support/general/src/main/java/org/wamblee/persistence/JpaMergeSupport.java +++ b/support/general/src/main/java/org/wamblee/persistence/JpaMergeSupport.java @@ -81,9 +81,9 @@ public class JpaMergeSupport { /** * Copies primary keys and version from the result of the merged to the * object that was passed to the merge operation. It does this by traversing - * the public properties of the object. It copies the primary key and version for - * objects that implement {@link Persistent} and applies the same rules to - * objects in maps and sets as well (i.e. recursively). + * the public properties of the object. It copies the primary key and + * version for objects that implement {@link Persistent} and applies the + * same rules to objects in maps and sets as well (i.e. recursively). * * @param aPersistent * Object whose primary key and version are to be set. @@ -154,9 +154,8 @@ public class JpaMergeSupport { .startsWith("is")) && !Modifier.isStatic(getter.getModifiers()) && Modifier.isPublic(getter.getModifiers()) && - getter.getParameterTypes().length == 0 && - getter.getReturnType() != Void.class - ) { + getter.getParameterTypes().length == 0 && + getter.getReturnType() != Void.class) { Class returnType = getter.getReturnType(); try { @@ -173,22 +172,17 @@ public class JpaMergeSupport { Map persistent = (Map) getter.invoke(aPersistent); processMap(merged, persistent, aProcessed); } else if (returnType.isArray()) { - // early detection of whether it is an array of entities - // to avoid performance problems. - EntityAccessor accessor = PersistentFactory - .createEntityAccessor(returnType.getComponentType()); - if (accessor != null) { - Object[] merged = (Object[]) getter.invoke(aMerged); - Object[] persistent = (Object[]) getter - .invoke(aPersistent); - if (merged.length != persistent.length) { - throw new IllegalArgumentException("Array sizes differ " + merged.length + - " " + persistent.length); - } - for (int i = 0; i < persistent.length; i++) { - processPersistent(merged[i], persistent[i], - aProcessed); - } + Object[] merged = (Object[]) getter.invoke(aMerged); + Object[] persistent = (Object[]) getter + .invoke(aPersistent); + if (merged.length != persistent.length) { + throw new IllegalArgumentException( + "Array sizes differ " + merged.length + " " + + persistent.length); + } + for (int i = 0; i < persistent.length; i++) { + processPersistent(merged[i], persistent[i], + aProcessed); } } else { Object merged = getter.invoke(aMerged); @@ -221,8 +215,8 @@ public class JpaMergeSupport { Object[] persistent = aPersistent.toArray(); if (merged.length != persistent.length) { - throw new IllegalArgumentException("Array sizes differ " + merged.length + - " " + persistent.length); + throw new IllegalArgumentException("Array sizes differ " + + merged.length + " " + persistent.length); } for (int i = 0; i < merged.length; i++) { @@ -245,8 +239,8 @@ public class JpaMergeSupport { public static void processSet(Set aMerged, Set aPersistent, List aProcessed) { if (aMerged.size() != aPersistent.size()) { - throw new IllegalArgumentException("Array sizes differ " + aMerged.size() + - " " + aPersistent.size()); + throw new IllegalArgumentException("Array sizes differ " + + aMerged.size() + " " + aPersistent.size()); } for (Object merged : aMerged) { @@ -274,8 +268,8 @@ public class JpaMergeSupport { public static void processMap(Map aMerged, Map aPersistent, List aProcessed) { if (aMerged.size() != aPersistent.size()) { - throw new IllegalArgumentException("Sizes differ " + aMerged.size() + " " + - aPersistent.size()); + throw new IllegalArgumentException("Sizes differ " + + aMerged.size() + " " + aPersistent.size()); } Set> entries = aMerged.entrySet(); @@ -283,7 +277,8 @@ public class JpaMergeSupport { for (Entry entry : entries) { Key key = entry.getKey(); if (!aPersistent.containsKey(key)) { - throw new IllegalArgumentException("Key '" + key + "' not found"); + throw new IllegalArgumentException("Key '" + key + + "' not found"); } Value mergedValue = entry.getValue();