[exo-jcr-commits] exo-jcr SVN: r4689 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc: optimisation and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Aug 1 09:48:28 EDT 2011


Author: sergiykarpenko
Date: 2011-08-01 09:48:28 -0400 (Mon, 01 Aug 2011)
New Revision: 4689

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java
Log:
EXOJCR-1442: ExtendedTempPropertyData and TempPropertyData refactoring - duplicate readData() avoid

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java	2011-07-29 14:37:45 UTC (rev 4688)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java	2011-08-01 13:48:28 UTC (rev 4689)
@@ -2692,7 +2692,7 @@
       SortedSet<TempPropertyData> ptTempProp = tempNode.properties.get(Constants.JCR_PRIMARYTYPE.getAsString());
       if (ptTempProp != null)
       {
-         ptValue = ((ExtendedTempPropertyData)ptTempProp.first()).vdata;
+         ptValue = ptTempProp.first().getValueData();
          ptName = InternalQName.parse(new String(ptValue.getAsByteArray(), Constants.DEFAULT_ENCODING));
       }
 
@@ -2705,7 +2705,7 @@
       {
          for (TempPropertyData mxnb : mixinsTempProps)
          {
-            ValueData vdata = ((ExtendedTempPropertyData)mxnb).vdata;
+            ValueData vdata = mxnb.getValueData();
 
             mixinsData.add(vdata);
             mixins.add(InternalQName.parse(new String(vdata.getAsByteArray(), Constants.DEFAULT_ENCODING)));
@@ -2714,8 +2714,8 @@
 
       // build node data. No need to load ACL. The node will be pushed directly for reindexing. 
       NodeData nodeData =
-         new PersistedNodeData(getIdentifier(tempNode.cid), parentPath, getIdentifier(parentCid),
-            tempNode.cversion, tempNode.cnordernumb, ptName, mixins.toArray(new InternalQName[mixins.size()]), null);
+         new PersistedNodeData(getIdentifier(tempNode.cid), parentPath, getIdentifier(parentCid), tempNode.cversion,
+            tempNode.cnordernumb, ptName, mixins.toArray(new InternalQName[mixins.size()]), null);
 
       Map<String, PropertyData> childProps = new HashMap<String, PropertyData>();
       for (String propName : tempNode.properties.keySet())
@@ -2741,7 +2741,7 @@
             {
                ExtendedTempPropertyData exTempProp = (ExtendedTempPropertyData)tempProp;
 
-               valueData.add(exTempProp.vdata);
+               valueData.add(exTempProp.getValueData());
             }
          }
 
@@ -2791,14 +2791,19 @@
     */
    protected class TempPropertyData implements Comparable<TempPropertyData>
    {
-      public int orderNum;
+      protected final int orderNum;
 
-      public byte[] data;
+      protected ValueData data;
 
       public TempPropertyData(ResultSet item) throws SQLException
       {
+         this(item, true);
+      }
+
+      public TempPropertyData(ResultSet item, boolean readValue) throws SQLException
+      {
          orderNum = item.getInt(COLUMN_VORDERNUM);
-         readData(item);
+         data = readValue ? new ByteArrayPersistedValueData(orderNum, item.getBytes(COLUMN_VDATA)) : null;
       }
 
       public int compareTo(TempPropertyData o)
@@ -2806,9 +2811,9 @@
          return orderNum - o.orderNum;
       }
 
-      protected void readData(ResultSet item) throws SQLException
+      public ValueData getValueData()
       {
-         data = item.getBytes(COLUMN_VDATA);
+         return data;
       }
    }
 
@@ -2817,53 +2822,32 @@
     */
    protected class ExtendedTempPropertyData extends TempPropertyData
    {
-      public String id;
+      protected final String id;
 
-      public String name;
+      protected final String name;
 
-      public int version;
+      protected final int version;
 
-      public int type;
+      protected final int type;
 
-      public boolean multi;
+      protected final boolean multi;
 
-      public String storage_desc;
+      protected final String storage_desc;
 
-      public ValueData vdata;
-
       public ExtendedTempPropertyData(ResultSet item) throws SQLException, ValueStorageNotFoundException, IOException
       {
-         super(item);
-
+         super(item, false);
          id = item.getString("P_ID");
          name = item.getString("P_NAME");
          version = item.getInt("P_VERSION");
          type = item.getInt("P_TYPE");
          multi = item.getBoolean("P_MULTIVALUED");
          storage_desc = item.getString(COLUMN_VSTORAGE_DESC);
-
-         readData(item);
+         InputStream is = item.getBinaryStream(COLUMN_VDATA);
+         data =
+            storage_desc == null ? readValueData(id, orderNum, version, is) : readValueData(getIdentifier(id),
+               orderNum, storage_desc);
       }
-
-      @Override
-      protected void readData(ResultSet item) throws SQLException
-      {
-         InputStream data = item.getBinaryStream(COLUMN_VDATA);
-         try
-         {
-            vdata =
-               storage_desc == null ? readValueData(id, orderNum, version, data) : readValueData(getIdentifier(id),
-                  orderNum, storage_desc);
-         }
-         catch (ValueStorageNotFoundException e)
-         {
-            throw new SQLException(e);
-         }
-         catch (IOException e)
-         {
-            throw new SQLException(e);
-         }
-      }
    }
 
    /**

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java	2011-07-29 14:37:45 UTC (rev 4688)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java	2011-08-01 13:48:28 UTC (rev 4689)
@@ -736,7 +736,8 @@
       {
          for (TempPropertyData value : permValues)
          {
-            StringTokenizer parser = new StringTokenizer(new String(value.data), AccessControlEntry.DELIMITER);
+            StringTokenizer parser =
+               new StringTokenizer(new String(value.getValueData().getAsByteArray()), AccessControlEntry.DELIMITER);
             naPermissions.add(new AccessControlEntry(parser.nextToken(), parser.nextToken()));
          }
 
@@ -763,7 +764,7 @@
       SortedSet<TempPropertyData> ownerValues = properties.get(Constants.EXO_OWNER.getAsString());
       if (ownerValues != null)
       {
-         return new String(ownerValues.first().data);
+         return new String(ownerValues.first().getValueData().getAsByteArray());
       }
       else
       {
@@ -875,7 +876,7 @@
                + qpath.getAsString() + ", id " + cid + ", container " + this.containerName, null);
          }
 
-         byte[] data = primaryType.first().data;
+         byte[] data = primaryType.first().getValueData().getAsByteArray();
          InternalQName ptName = InternalQName.parse(new String((data != null ? data : new byte[]{})));
 
          // MIXIN
@@ -888,7 +889,7 @@
             List<InternalQName> mNames = new ArrayList<InternalQName>();
             for (TempPropertyData mxnb : mixTypes)
             {
-               InternalQName mxn = InternalQName.parse(new String(mxnb.data));
+               InternalQName mxn = InternalQName.parse(new String(mxnb.getValueData().getAsByteArray()));
                mNames.add(mxn);
 
                if (!privilegeable && Constants.EXO_PRIVILEGEABLE.equals(mxn))



More information about the exo-jcr-commits mailing list