[jboss-svn-commits] JBL Code SVN: r25060 - in labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src: test/java/org/drools/persistence/session and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Feb 2 12:28:58 EST 2009
Author: salaboy21
Date: 2009-02-02 12:28:58 -0500 (Mon, 02 Feb 2009)
New Revision: 25060
Added:
labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/MyVariableSerializable.java
Modified:
labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/SerializableVariablePersister.java
labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/VariableInstanceInfo.java
labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/VariablePersistenceStrategy.java
labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java
Log:
new support for serialized variables in another table
Modified: labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java
===================================================================
--- labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java 2009-02-02 16:46:51 UTC (rev 25059)
+++ labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/JPAProcessInstanceManager.java 2009-02-02 17:28:58 UTC (rev 25060)
@@ -81,9 +81,14 @@
processInstanceInfo.clearVariables();
for (String key : keys) {
VariableInstanceInfo variable = persistenceStrategy.persistVariable(key, processVariables.get(key));
- //@TODO: i'm persisting the variable with JPA and I should persist it with something that the strategy says
- manager.persist(((JPAPersistedVariable)variable).getRealVariable());
- updateVariableInstanceInfo(variable);
+ //@TODO: i'm persisting the variable with JPA and
+ //I should persist it with something that the strategy said
+ //i think the best way to achive that is sending the manager to this method overloaded
+ //like private void resolveOutputVariables(Manager manager, ProcessInstanceInfo processInstanceInfo)
+ if(variable instanceof JPAPersistedVariable){
+ manager.persist(((JPAPersistedVariable)variable).getRealVariable());
+ updateVariableInstanceInfo(variable);
+ }
variable.setProcessInstanceInfo(processInstanceInfo);
processInstanceInfo.addVariables(variable);
}
Modified: labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/SerializableVariablePersister.java
===================================================================
--- labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/SerializableVariablePersister.java 2009-02-02 16:46:51 UTC (rev 25059)
+++ labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/SerializableVariablePersister.java 2009-02-02 17:28:58 UTC (rev 25060)
@@ -17,8 +17,11 @@
package org.drools.persistence.processinstance;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -43,18 +46,35 @@
public VariableInstanceInfo persistExternalVariable(String name, Object o) {
SerializablePersistedVariable variable = new SerializablePersistedVariable();
variable.setName(name);
+ variable.setPersister(this.getClass().getName());
variable.setContent(getBytes(o));
return variable;
}
public Object getExternalPersistedVariable(VariableInstanceInfo variableInstanceInfo) {
-// try {
-//
-// byte[] binaryArray = em.find(Class.forName(varType),((SerializablePersistedVariable) variableInstanceInfo).getVarid());
-// } catch (ClassNotFoundException ex) {
-// Logger.getLogger(JPAVariablePersister.class.getName()).log(Level.SEVERE, null, ex);
-// }
- return null;
+ ObjectInputStream ois = null;
+ byte[] binaryArray = null;
+ try {
+ binaryArray = ((SerializablePersistedVariable) variableInstanceInfo).getContent();
+ ByteArrayInputStream strmBytes = new ByteArrayInputStream(binaryArray);
+ ois = new ObjectInputStream(strmBytes);
+ return ois.readObject();
+
+ } catch (IOException ex) {
+ Logger.getLogger(SerializableVariablePersister.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (ClassNotFoundException ex) {
+ Logger.getLogger(JPAVariablePersister.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ finally {
+ try {
+ ois.close();
+ } catch (IOException ex) {
+ Logger.getLogger(SerializableVariablePersister.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+
+ return null;
}
private byte[] getBytes(Object o){
Modified: labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/VariableInstanceInfo.java
===================================================================
--- labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/VariableInstanceInfo.java 2009-02-02 16:46:51 UTC (rev 25059)
+++ labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/VariableInstanceInfo.java 2009-02-02 17:28:58 UTC (rev 25060)
@@ -51,7 +51,7 @@
@JoinColumn(name="processInstanceInfoId")
private ProcessInstanceInfo processInstanceInfo;
private String persister;
-
+
public Long getId() {
return id;
}
@@ -101,13 +101,4 @@
public void setPersister(String persister) {
this.persister = persister;
}
-
-
-
-
-
-
-
-
-
}
Modified: labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/VariablePersistenceStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/VariablePersistenceStrategy.java 2009-02-02 16:46:51 UTC (rev 25059)
+++ labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/main/java/org/drools/persistence/processinstance/VariablePersistenceStrategy.java 2009-02-02 17:28:58 UTC (rev 25060)
@@ -76,8 +76,9 @@
public Object getVariable(VariableInstanceInfo variableInfo){
try {
+ String variablePersister = variableInfo.getPersister();
VariablePersister persister = null;
- Class clazz = Class.forName(variableInfo.getPersister());
+ Class clazz = Class.forName(variablePersister);
Constructor constructor = clazz.getDeclaredConstructor(null);
persister = (VariablePersister) constructor.newInstance(null);
return persister.getExternalPersistedVariable(variableInfo);
Added: labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/MyVariableSerializable.java
===================================================================
--- labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/MyVariableSerializable.java (rev 0)
+++ labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/MyVariableSerializable.java 2009-02-02 17:28:58 UTC (rev 25060)
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2009 salaboy.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * under the License.
+ */
+
+package org.drools.persistence.session;
+
+import java.io.Serializable;
+
+/**
+ *
+ * @author salaboy
+ */
+class MyVariableSerializable implements Serializable{
+
+ private String text = "";
+
+ public MyVariableSerializable(String string) {
+ this.text = string;
+ }
+
+ /**
+ * @return the text
+ */
+ public String getText() {
+ return text;
+ }
+
+ /**
+ * @param text the text to set
+ */
+ public void setText(String text) {
+ this.text = text;
+ }
+
+}
Modified: labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java 2009-02-02 16:46:51 UTC (rev 25059)
+++ labs/jbossrules/branches/salaboy_VariablePersistenceStrategy/drools-process/drools-process-enterprise/src/test/java/org/drools/persistence/session/SingleSessionCommandServiceTest.java 2009-02-02 17:28:58 UTC (rev 25060)
@@ -472,6 +472,8 @@
Map<String,Object> parameters = new HashMap<String,Object>();
parameters.put("var1", new MyEntity("This is a test Entity"));
+ parameters.put("var2", new MyVariableSerializable("This is a test SerializableObject"));
+
startProcessCommand.setParameters(parameters);
ProcessInstance processInstance = (ProcessInstance) service.execute(startProcessCommand);
System.out.println("Started process instance " + processInstance.getId());
More information about the jboss-svn-commits
mailing list