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))