[exo-jcr-commits] exo-jcr SVN: r1510 - in jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: storage/jdbc/db and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Jan 20 10:34:48 EST 2010


Author: pnedonosko
Date: 2010-01-20 10:34:48 -0500 (Wed, 20 Jan 2010)
New Revision: 1510

Modified:
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java
   jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java
Log:
EXOJCR-404 fix of sql query for Value data read; fixPropertyValue apllied for all Property reads

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java	2010-01-20 15:34:06 UTC (rev 1509)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java	2010-01-20 15:34:48 UTC (rev 1510)
@@ -252,34 +252,6 @@
       }
    }
 
-   @Deprecated
-   protected abstract class StorageTxIsolatedOperation extends TxIsolatedOperation
-   {
-      StorageTxIsolatedOperation()
-      {
-         super(transactionManager);
-      }
-
-      protected void beginTx() throws NotSupportedException, SystemException
-      {
-         super.beginTx(); // start new global tx
-         cache.beginTransaction(); // TODO keep it into the cache impl
-      }
-
-      protected void commitTx() throws SecurityException, IllegalStateException, RollbackException,
-         HeuristicMixedException, HeuristicRollbackException, SystemException
-      {
-         cache.commitTransaction();
-         super.commitTx(); // commit global tx
-      }
-
-      protected void rollbackTx() throws NotSupportedException, SystemException
-      {
-         cache.rollbackTransaction();
-         super.rollbackTx(); // rollback global tx
-      }
-   }
-
    protected class SaveInTransaction extends TxIsolatedOperation
    {
       final ItemStateChangesLog changes;
@@ -406,17 +378,11 @@
     */
    public List<PropertyData> getChildPropertiesData(NodeData nodeData) throws RepositoryException
    {
-
       List<PropertyData> childs = getChildPropertiesData(nodeData, false);
-      //      for (int i = 0; i < childs.size(); i++)
-      //      {
-      //         PropertyData data = childs.get(i);
-      //         if (data.getValues() == null)
-      //         {
-      //            // refill the property data if values invalid (null)
-      //            childs.set(i, fillPropertyValue(data));
-      //         }
-      //      }
+      for (PropertyData prop: childs)
+      {
+         fixPropertyValues(prop);
+      }
 
       return childs;
    }
@@ -437,33 +403,7 @@
       }
       else if (!data.isNode())
       {
-         PropertyData prop = (PropertyData)data;
-         List<ValueData> vals = prop.getValues();
-         for (int i = 0; i < vals.size(); i++)
-         {
-            ValueData vd = vals.get(i);
-            if (!vd.isByteArray())
-            {
-               // check if file is correct
-               FilePersistedValueData fpvd = (FilePersistedValueData)vd;
-               if (fpvd.getFile() == null)
-               {
-                  // need read from storage
-                  ValueData svd =
-                     getPropertyValue(prop.getIdentifier(), vd.getOrderNumber(), prop.getPersistedVersion());
-
-                  if (svd == null)
-                  {
-                     // error, value not found
-                     throw new RepositoryException("Value cannot be found in storage for cached Property "
-                        + prop.getQPath().getAsString() + ", orderNumb:" + vd.getOrderNumber() + ", pversion:"
-                        + prop.getPersistedVersion());
-                  }
-
-                  vals.set(i, vd);
-               }
-            }
-         }
+         fixPropertyValues((PropertyData)data);
       }
 
       return data;
@@ -482,11 +422,10 @@
       {
          return getPersistedItemData(identifier);
       }
-      //      else if (!data.isNode() && ((PropertyData)data).getValues() == null)
-      //      {
-      //         // refill the property data if values invalid (null)
-      //         data = fillPropertyValue((PropertyData)data);
-      //      }
+      else if (!data.isNode())
+      {
+         fixPropertyValues((PropertyData)data);
+      }
 
       return data;
    }
@@ -767,6 +706,41 @@
    }
 
    /**
+    * Fix Property BLOB Values if someone has null file (swap actually) by reading the content from the storage (VS or JDBC no matter).
+    * 
+    * @param prop PropertyData
+    * @throws RepositoryException
+    */
+   protected void fixPropertyValues(PropertyData prop) throws RepositoryException
+   {
+      final List<ValueData> vals = prop.getValues();
+      for (int i = 0; i < vals.size(); i++)
+      {
+         ValueData vd = vals.get(i);
+         if (!vd.isByteArray())
+         {
+            // check if file is correct
+            FilePersistedValueData fpvd = (FilePersistedValueData)vd;
+            if (fpvd.getFile() == null)
+            {
+               // need read from storage
+               ValueData svd = getPropertyValue(prop.getIdentifier(), vd.getOrderNumber(), prop.getPersistedVersion());
+
+               if (svd == null)
+               {
+                  // error, value not found
+                  throw new RepositoryException("Value cannot be found in storage for cached Property "
+                     + prop.getQPath().getAsString() + ", orderNumb:" + vd.getOrderNumber() + ", pversion:"
+                     + prop.getPersistedVersion());
+               }
+
+               vals.set(i, vd);
+            }
+         }
+      }
+   }
+
+   /**
     * Fill Property Value from persistent storage.
     * 
     * @param prop PropertyData, original Property data

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java	2010-01-20 15:34:06 UTC (rev 1509)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/MultiDbJDBCConnection.java	2010-01-20 15:34:48 UTC (rev 1510)
@@ -183,7 +183,7 @@
 
       FIND_VALUES_VSTORAGE_DESC_BY_PROPERTYID = "select distinct STORAGE_DESC from JCR_MVALUE where PROPERTY_ID=?";
 
-      FIND_VALUE_BY_PROPERTYID_OREDERNUMB = "select DATA from JCR_MVALUE where PROPERTY_ID=? and ORDER_NUM=?";
+      FIND_VALUE_BY_PROPERTYID_OREDERNUMB = "select DATA, STORAGE_DESC from JCR_MVALUE where PROPERTY_ID=? and ORDER_NUM=?";
 
       FIND_NODES_BY_PARENTID = "select * from JCR_MITEM" + " where I_CLASS=1 and PARENT_ID=?" + " order by N_ORDER_NUM";
       

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java	2010-01-20 15:34:06 UTC (rev 1509)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/SingleDbJDBCConnection.java	2010-01-20 15:34:48 UTC (rev 1510)
@@ -190,7 +190,7 @@
 
       FIND_VALUES_VSTORAGE_DESC_BY_PROPERTYID = "select distinct STORAGE_DESC from JCR_SVALUE where PROPERTY_ID=?";
 
-      FIND_VALUE_BY_PROPERTYID_OREDERNUMB = "select DATA from JCR_SVALUE where PROPERTY_ID=? and ORDER_NUM=?";
+      FIND_VALUE_BY_PROPERTYID_OREDERNUMB = "select DATA, STORAGE_DESC from JCR_SVALUE where PROPERTY_ID=? and ORDER_NUM=?";
 
       FIND_NODES_BY_PARENTID =
          "select * from JCR_SITEM" + " where I_CLASS=1 and CONTAINER_NAME=? and PARENT_ID=?" + " order by N_ORDER_NUM";

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java	2010-01-20 15:34:06 UTC (rev 1509)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java	2010-01-20 15:34:48 UTC (rev 1510)
@@ -198,7 +198,7 @@
 
       FIND_VALUES_VSTORAGE_DESC_BY_PROPERTYID = "select distinct STORAGE_DESC from JCR_MVALUE where PROPERTY_ID=?";
 
-      FIND_VALUE_BY_PROPERTYID_OREDERNUMB = "select DATA from JCR_MVALUE where PROPERTY_ID=? and ORDER_NUM=?";
+      FIND_VALUE_BY_PROPERTYID_OREDERNUMB = "select DATA, STORAGE_DESC from JCR_MVALUE where PROPERTY_ID=? and ORDER_NUM=?";
 
       FIND_NODES_BY_PARENTID = "select * from JCR_MITEM" + " where I_CLASS=1 and PARENT_ID=?" + " order by N_ORDER_NUM";
 

Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java	2010-01-20 15:34:06 UTC (rev 1509)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/SingleDbJDBCConnection.java	2010-01-20 15:34:48 UTC (rev 1510)
@@ -205,7 +205,7 @@
 
       FIND_VALUES_VSTORAGE_DESC_BY_PROPERTYID = "select distinct STORAGE_DESC from JCR_SVALUE where PROPERTY_ID=?";
 
-      FIND_VALUE_BY_PROPERTYID_OREDERNUMB = "select DATA from JCR_SVALUE where PROPERTY_ID=? and ORDER_NUM=?";
+      FIND_VALUE_BY_PROPERTYID_OREDERNUMB = "select DATA, STORAGE_DESC from JCR_SVALUE where PROPERTY_ID=? and ORDER_NUM=?";
 
       FIND_NODES_BY_PARENTID =
          "select * from JCR_SITEM" + " where I_CLASS=1 and CONTAINER_NAME=? and PARENT_ID=?" + " order by N_ORDER_NUM";



More information about the exo-jcr-commits mailing list