git://wamblee.org
/
utils
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
e96f317
)
(no commit message)
author
erik
<erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Fri, 30 Apr 2010 14:02:00 +0000
(14:02 +0000)
committer
erik
<erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Fri, 30 Apr 2010 14:02:00 +0000
(14:02 +0000)
security/impl/src/main/java/org/wamblee/usermgt/jpa/JpaGroupSet.java
patch
|
blob
|
history
support/general/src/main/java/org/wamblee/persistence/JpaMergeSupport.java
patch
|
blob
|
history
support/general/src/test/java/org/wamblee/persistence/JpaMergeSupportTest.java
patch
|
blob
|
history
diff --git
a/security/impl/src/main/java/org/wamblee/usermgt/jpa/JpaGroupSet.java
b/security/impl/src/main/java/org/wamblee/usermgt/jpa/JpaGroupSet.java
index 1a9be6f217d8008ad20b4b339c716f4bff952545..6d6cde0f684c3c2e155d3c8838b884fdfd6cacf8 100644
(file)
--- a/
security/impl/src/main/java/org/wamblee/usermgt/jpa/JpaGroupSet.java
+++ b/
security/impl/src/main/java/org/wamblee/usermgt/jpa/JpaGroupSet.java
@@
-7,6
+7,7
@@
import java.util.TreeSet;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
+import org.wamblee.persistence.JpaMergeSupport;
import org.wamblee.usermgt.Group;
import org.wamblee.usermgt.GroupSet;
import org.wamblee.usermgt.Group;
import org.wamblee.usermgt.GroupSet;
@@
-52,7
+53,8
@@
public class JpaGroupSet implements GroupSet {
@Override
public void groupModified(Group aGroup) {
assert aGroup.getPrimaryKey() != null;
@Override
public void groupModified(Group aGroup) {
assert aGroup.getPrimaryKey() != null;
- em.merge(aGroup);
+ Group merged = em.merge(aGroup);
+ JpaMergeSupport.merge(merged, aGroup);
}
@Override
}
@Override
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 be188e2dceccb5444c514abea4755e135208afd0..df1ce81d52aab52ee41d135f38220b1ad481f27d 100644
(file)
--- a/
support/general/src/main/java/org/wamblee/persistence/JpaMergeSupport.java
+++ b/
support/general/src/main/java/org/wamblee/persistence/JpaMergeSupport.java
@@
-81,7
+81,7
@@
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
/**
* 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 properties of the object. It copies the primary key and version for
+ * the p
ublic p
roperties 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).
*
* objects that implement {@link Persistent} and applies the same rules to
* objects in maps and sets as well (i.e. recursively).
*
@@
-152,7
+152,11
@@
public class JpaMergeSupport {
for (Method getter : methods) {
if ((getter.getName().startsWith("get") || getter.getName()
.startsWith("is")) &&
for (Method getter : methods) {
if ((getter.getName().startsWith("get") || getter.getName()
.startsWith("is")) &&
- !Modifier.isStatic(getter.getModifiers())) {
+ !Modifier.isStatic(getter.getModifiers()) &&
+ Modifier.isPublic(getter.getModifiers()) &&
+ getter.getParameterTypes().length == 0 &&
+ getter.getReturnType() != Void.class
+ ) {
Class returnType = getter.getReturnType();
try {
Class returnType = getter.getReturnType();
try {
diff --git
a/support/general/src/test/java/org/wamblee/persistence/JpaMergeSupportTest.java
b/support/general/src/test/java/org/wamblee/persistence/JpaMergeSupportTest.java
index 3e92799bbe01c509bf706e65ae30e7240252f19a..c906fb19b92be5584e3f1c5ee45da2c6790e8ac2 100644
(file)
--- a/
support/general/src/test/java/org/wamblee/persistence/JpaMergeSupportTest.java
+++ b/
support/general/src/test/java/org/wamblee/persistence/JpaMergeSupportTest.java
@@
-127,6
+127,28
@@
public class JpaMergeSupportTest {
return array;
}
}
return array;
}
}
+
+ private static class X6 {
+ @Id
+ int id;
+
+ public X1 getNotaGetter(String aMessage) {
+ return null;
+ }
+
+ public void getNotaGetter2() {
+
+ }
+ }
+
+ private static class X7 {
+ @Id
+ int id;
+
+ private void getX() {
+ fail("Private getters should not be used");
+ }
+ }
@Test
public void testSimple() {
@Test
public void testSimple() {
@@
-360,4
+382,22
@@
public class JpaMergeSupportTest {
JpaMergeSupport.merge(x, y);
}
JpaMergeSupport.merge(x, y);
}
+ @Test
+ public void testNotAGetter() {
+ X6 x = new X6();
+ x.id = 100;
+ X6 y = new X6();
+
+ JpaMergeSupport.merge(x,y);
+ assertEquals(x.id, y.id);
+ }
+
+ @Test
+ public void testPrivateGetter() {
+ X7 x = new X7();
+ x.id = 100;
+ X7 y = new X7();
+ JpaMergeSupport.merge(x,y);
+ assertEquals(x.id, y.id);
+ }
}
}