[jboss-svn-commits] JBL Code SVN: r33268 - in labs/jbossrules/trunk/drools-persistence-jpa/src: main/java/org/drools/persistence/processinstance/persisters and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon May 31 17:06:33 EDT 2010
Author: KrisVerlaenen
Date: 2010-05-31 17:06:32 -0400 (Mon, 31 May 2010)
New Revision: 33268
Added:
labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntity.java
labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntityMethods.java
Removed:
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/EventType.java
Modified:
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/persisters/JPAVariablePersister.java
labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/VariablePersistenceStrategyTest.java
Log:
JBRULES-2522: JPAVariablePersister will not work when @Id is declared on a superclass
- works now with @Id declared on field or method of superclass
Deleted: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/EventType.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/EventType.java 2010-05-31 19:45:56 UTC (rev 33267)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/EventType.java 2010-05-31 21:06:32 UTC (rev 33268)
@@ -1,80 +0,0 @@
-/**
- *
- */
-package org.drools.persistence.processinstance;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-
- at Entity
-public class EventType {
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private int id;
-
-// @ManyToOne
-// private long processInstanceId;
-
- private String name;
-
- public EventType() {
-
- }
-//
-// public EventType(long processInstanceId, String name) {
-// this.name = name;
-// this.processInstanceId = processInstanceId;
-// }
-
- public EventType(String name) {
- this.name = name;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
-// public long getProcessInstanceId() {
-// return processInstanceId;
-// }
-//
-// public void setProcessInstanceId(long processInstanceId) {
-// this.processInstanceId = processInstanceId;
-// }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if ( this == obj ) return true;
- if ( obj == null ) return false;
- if ( getClass() != obj.getClass() ) return false;
- EventType other = (EventType) obj;
- if ( name == null ) {
- if ( other.name != null ) return false;
- } else if ( !name.equals( other.name ) ) return false;
- return true;
- }
-
-}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/persisters/JPAVariablePersister.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/persisters/JPAVariablePersister.java 2010-05-31 19:45:56 UTC (rev 33267)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/persisters/JPAVariablePersister.java 2010-05-31 21:06:32 UTC (rev 33268)
@@ -90,39 +90,44 @@
}
}
- private Serializable getClassIdValue(Object o) throws NoSuchMethodException,
+ public static Serializable getClassIdValue(Object o) throws NoSuchMethodException,
SecurityException, IllegalAccessException,
InvocationTargetException, IllegalArgumentException {
Class<? extends Object> varClass = o.getClass();
- Field[] fields = varClass.getDeclaredFields();
Serializable idValue = null;
- for (int i = 0; i < fields.length && idValue == null; i++) {
- Field field = fields[i];
- Id id = field.getAnnotation(Id.class);
- if (id != null) {
- try {
- idValue = callIdMethod(o, "get"
- + Character.toUpperCase(field.getName().charAt(0))
- + field.getName().substring(1));
- } catch (NoSuchMethodException e) {
- idValue = (Serializable) field.get(o);
+ do {
+ Field[] fields = varClass.getDeclaredFields();
+ for (int i = 0; i < fields.length && idValue == null; i++) {
+ Field field = fields[i];
+ Id id = field.getAnnotation(Id.class);
+ if (id != null) {
+ try {
+ idValue = callIdMethod(o, "get"
+ + Character.toUpperCase(field.getName().charAt(0))
+ + field.getName().substring(1));
+ } catch (NoSuchMethodException e) {
+ idValue = (Serializable) field.get(o);
+ }
}
}
- }
+ } while ((varClass = varClass.getSuperclass()) != null && idValue == null);
if (idValue == null) {
- Method[] methods = varClass.getMethods();
- for (int i = 0; i < methods.length && idValue == null; i++) {
- Method method = methods[i];
- Id id = method.getAnnotation(Id.class);
- if (id != null) {
- idValue = (Serializable) method.invoke(o);
+ varClass = o.getClass();
+ do {
+ Method[] methods = varClass.getMethods();
+ for (int i = 0; i < methods.length && idValue == null; i++) {
+ Method method = methods[i];
+ Id id = method.getAnnotation(Id.class);
+ if (id != null) {
+ idValue = (Serializable) method.invoke(o);
+ }
}
- }
+ } while ((varClass = varClass.getSuperclass()) != null && idValue == null);
}
return idValue;
}
- private Serializable callIdMethod(Object target, String methodName) throws IllegalArgumentException,
+ private static Serializable callIdMethod(Object target, String methodName) throws IllegalArgumentException,
SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return (Serializable) target.getClass().getMethod(methodName, (Class[]) null).invoke(target, new Object[] {});
}
Added: labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntity.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntity.java (rev 0)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntity.java 2010-05-31 21:06:32 UTC (rev 33268)
@@ -0,0 +1,10 @@
+package org.drools.persistence.session;
+
+import javax.persistence.Entity;
+
+ at Entity
+public class MySubEntity extends MyEntity {
+
+ private static final long serialVersionUID = 1L;
+
+}
Added: labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntityMethods.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntityMethods.java (rev 0)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/MySubEntityMethods.java 2010-05-31 21:06:32 UTC (rev 33268)
@@ -0,0 +1,10 @@
+package org.drools.persistence.session;
+
+import javax.persistence.Entity;
+
+ at Entity
+public class MySubEntityMethods extends MyEntityMethods {
+
+ private static final long serialVersionUID = 1L;
+
+}
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/VariablePersistenceStrategyTest.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/VariablePersistenceStrategyTest.java 2010-05-31 19:45:56 UTC (rev 33267)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/test/java/org/drools/persistence/session/VariablePersistenceStrategyTest.java 2010-05-31 21:06:32 UTC (rev 33268)
@@ -19,6 +19,7 @@
import org.drools.io.impl.ClassPathResource;
import org.drools.persistence.jpa.JPAKnowledgeService;
import org.drools.persistence.processinstance.VariablePersistenceStrategyFactory;
+import org.drools.persistence.processinstance.persisters.JPAVariablePersister;
import org.drools.persistence.processinstance.variabletypes.VariableInstanceInfo;
import org.drools.runtime.Environment;
import org.drools.runtime.EnvironmentName;
@@ -284,4 +285,16 @@
assertNull( processInstance );
}
+ public void testEntityWithSuperClassAnnotationField() throws Exception {
+ MySubEntity subEntity = new MySubEntity();
+ subEntity.setId(3L);
+ assertEquals(3L, JPAVariablePersister.getClassIdValue(subEntity));
+ }
+
+ public void testEntityWithSuperClassAnnotationMethod() throws Exception {
+ MySubEntityMethods subEntity = new MySubEntityMethods();
+ subEntity.setId(3L);
+ assertEquals(3L, JPAVariablePersister.getClassIdValue(subEntity));
+ }
+
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list