[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