[jboss-svn-commits] JBL Code SVN: r29383 - labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Sep 16 19:04:58 EDT 2009
Author: salaboy21
Date: 2009-09-16 19:04:58 -0400 (Wed, 16 Sep 2009)
New Revision: 29383
Modified:
labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/VariablePersistenceStrategy.java
Log:
check for a specific class first
Modified: labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/VariablePersistenceStrategy.java
===================================================================
--- labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/VariablePersistenceStrategy.java 2009-09-16 16:16:44 UTC (rev 29382)
+++ labs/jbossrules/trunk/drools-persistence-jpa/src/main/java/org/drools/persistence/processinstance/VariablePersistenceStrategy.java 2009-09-16 23:04:58 UTC (rev 29383)
@@ -19,141 +19,133 @@
*/
public class VariablePersistenceStrategy {
- // map of variable persisters per type
- private Map<String, String> types = new HashMap<String, String>();
- // cache of already instantiated variable persisters
- private Map<String, VariablePersister> variablePersisters =
- new HashMap<String, VariablePersister>();
-
- public void setPersister(String type, String persisterClassname) {
- types.put(type, persisterClassname);
- }
-
- public boolean isEnabled() {
- return !types.isEmpty();
- }
-
- public VariableInstanceInfo persistVariable(String name, Object o,
- VariableInstanceInfo oldValue, Environment env) {
- VariablePersister persister = getVariablePersister(o);
- VariableInstanceInfo variable = null;
- if (persister != null) {
- variable = persister.persistExternalVariable(name, o, oldValue, env);
- }
- return variable;
- }
+ // map of variable persisters per type
+ private Map<String, String> types = new HashMap<String, String>();
+ // cache of already instantiated variable persisters
+ private Map<String, VariablePersister> variablePersisters =
+ new HashMap<String, VariablePersister>();
- @SuppressWarnings("unchecked")
- private VariablePersister getVariablePersister(Object o) {
- VariablePersister persister = null;
- String persisterFQN = getVariablePersistenceType(o);
- if (persisterFQN != null && !persisterFQN.equals("")) {
- Class<VariablePersister> persisterClass = null;
- persister = variablePersisters.get(persisterFQN);
- if (persister != null) {
- return persister;
- }
- try {
- persisterClass = (Class<VariablePersister>) Class.forName(persisterFQN);
- Constructor<VariablePersister> constructor = persisterClass.getConstructor();
- persister = (VariablePersister) constructor.newInstance();
- variablePersisters.put(persisterFQN, persister);
- return persister;
- } catch (ClassNotFoundException ex) {
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (NoSuchMethodException ex) {
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (SecurityException ex) {
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (InstantiationException ex) {
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (IllegalAccessException ex) {
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (IllegalArgumentException ex) {
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (InvocationTargetException ex) {
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- }
- }
- return null;
- }
+ public void setPersister(String type, String persisterClassname) {
+ types.put(type, persisterClassname);
+ }
- @SuppressWarnings("unchecked")
- public Object getVariable(VariableInstanceInfo variableInfo, Environment env) {
- try {
- String persisterFQN = variableInfo.getPersister();
- VariablePersister persister = variablePersisters.get(persisterFQN);
- if (persister == null) {
- Class<VariablePersister> clazz = (Class<VariablePersister>) Class.forName(persisterFQN);
- Constructor<VariablePersister> constructor = clazz.getDeclaredConstructor();
- persister = (VariablePersister) constructor.newInstance();
- variablePersisters.put(persisterFQN, persister);
- }
- return persister.getExternalPersistedVariable(variableInfo, env);
- } catch (InstantiationException ex) {
- ex.printStackTrace();
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (IllegalAccessException ex) {
- ex.printStackTrace();
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (IllegalArgumentException ex) {
- ex.printStackTrace();
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (InvocationTargetException ex) {
- ex.printStackTrace();
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (NoSuchMethodException ex) {
- ex.printStackTrace();
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (SecurityException ex) {
- ex.printStackTrace();
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- } catch (ClassNotFoundException ex) {
- ex.printStackTrace();
- Logger.getLogger(VariablePersistenceStrategy.class.getName())
- .log(Level.SEVERE, null, ex);
- }
- return null;
- }
+ public boolean isEnabled() {
+ return !types.isEmpty();
+ }
- private String getVariablePersistenceType(Object o) {
- if (o == null) {
- return null;
- }
- Annotation[] annotations = o.getClass().getDeclaredAnnotations();
- if (annotations != null) {
- // First annotations, because annotations have more precedence
- for (Annotation annotation : annotations) {
- String persisterFQN = types.get(annotation.annotationType().getName());
- if (persisterFQN != null && !persisterFQN.equals("")) {
- return persisterFQN;
- }
- }
- }
- // Then interfaces
- Class<?>[] interfaces = o.getClass().getInterfaces();
- if (interfaces != null) {
- for (Class<?> clazz : interfaces) {
- String persisterFQN = types.get(clazz.getName());
- if (persisterFQN != null && !persisterFQN.equals("")) {
- return persisterFQN;
- }
- }
- }
- return null;
- }
+ public VariableInstanceInfo persistVariable(String name, Object o,
+ VariableInstanceInfo oldValue, Environment env) {
+ VariablePersister persister = getVariablePersister(o);
+ VariableInstanceInfo variable = null;
+ if (persister != null) {
+ variable = persister.persistExternalVariable(name, o, oldValue, env);
+ }
+ return variable;
+ }
+ @SuppressWarnings("unchecked")
+ private VariablePersister getVariablePersister(Object o) {
+ VariablePersister persister = null;
+ String persisterFQN = getVariablePersistenceType(o);
+ if (persisterFQN != null && !persisterFQN.equals("")) {
+ Class<VariablePersister> persisterClass = null;
+ persister = variablePersisters.get(persisterFQN);
+ if (persister != null) {
+ return persister;
+ }
+ try {
+ persisterClass = (Class<VariablePersister>) Class.forName(persisterFQN);
+ Constructor<VariablePersister> constructor = persisterClass.getConstructor();
+ persister = (VariablePersister) constructor.newInstance();
+ variablePersisters.put(persisterFQN, persister);
+ return persister;
+ } catch (ClassNotFoundException ex) {
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (NoSuchMethodException ex) {
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (SecurityException ex) {
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (InstantiationException ex) {
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (IllegalAccessException ex) {
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (IllegalArgumentException ex) {
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (InvocationTargetException ex) {
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+ return null;
+ }
+
+ @SuppressWarnings("unchecked")
+ public Object getVariable(VariableInstanceInfo variableInfo, Environment env) {
+ try {
+ String persisterFQN = variableInfo.getPersister();
+ VariablePersister persister = variablePersisters.get(persisterFQN);
+ if (persister == null) {
+ Class<VariablePersister> clazz = (Class<VariablePersister>) Class.forName(persisterFQN);
+ Constructor<VariablePersister> constructor = clazz.getDeclaredConstructor();
+ persister = (VariablePersister) constructor.newInstance();
+ variablePersisters.put(persisterFQN, persister);
+ }
+ return persister.getExternalPersistedVariable(variableInfo, env);
+ } catch (InstantiationException ex) {
+ ex.printStackTrace();
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (IllegalAccessException ex) {
+ ex.printStackTrace();
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (IllegalArgumentException ex) {
+ ex.printStackTrace();
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (InvocationTargetException ex) {
+ ex.printStackTrace();
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (NoSuchMethodException ex) {
+ ex.printStackTrace();
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (SecurityException ex) {
+ ex.printStackTrace();
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (ClassNotFoundException ex) {
+ ex.printStackTrace();
+ Logger.getLogger(VariablePersistenceStrategy.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return null;
+ }
+
+ private String getVariablePersistenceType(Object o) {
+ if (o == null) {
+ return null;
+ }
+ //First check for a specific type
+ String className = o.getClass().getCanonicalName();
+ String persisterFQN = types.get(className);
+ if (persisterFQN != null && !persisterFQN.equals("")) {
+ return persisterFQN;
+ }
+ //Then check for annotations
+ Annotation[] annotations = o.getClass().getDeclaredAnnotations();
+ if (annotations != null) {
+
+ for (Annotation annotation : annotations) {
+ persisterFQN = types.get(annotation.annotationType().getName());
+ if (persisterFQN != null && !persisterFQN.equals("")) {
+ return persisterFQN;
+ }
+ }
+ }
+ // at last for interfaces
+ Class<?>[] interfaces = o.getClass().getInterfaces();
+ if (interfaces != null) {
+ for (Class<?> clazz : interfaces) {
+ persisterFQN = types.get(clazz.getName());
+ if (persisterFQN != null && !persisterFQN.equals("")) {
+ return persisterFQN;
+ }
+ }
+ }
+ return null;
+ }
}
More information about the jboss-svn-commits
mailing list