[exo-jcr-commits] exo-jcr SVN: r1129 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation: db and 1 other directory.
do-not-reply at jboss.org
do-not-reply at jboss.org
Fri Dec 18 10:38:47 EST 2009
Author: sergiykarpenko
Date: 2009-12-18 10:38:47 -0500 (Fri, 18 Dec 2009)
New Revision: 1129
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java
Log:
EXOJCR-302: getItemByIdentifier query return mixins too
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java 2009-12-18 13:08:00 UTC (rev 1128)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java 2009-12-18 15:38:47 UTC (rev 1129)
@@ -1177,21 +1177,42 @@
byte[] data = item.getBytes(COLUMN_VDATA);
InternalQName ptName = InternalQName.parse(new String((data != null ? data : new byte[]{})));
- try
+ // // PRIMARY
+ // ResultSet ptProp = findPropertyByName(cid, Constants.JCR_PRIMARYTYPE.getAsString());
+ //
+ // if (!ptProp.next())
+ // throw new PrimaryTypeNotFoundException("FATAL ERROR primary type record not found. Node "
+ // + qpath.getAsString() + ", id " + cid + ", container " + this.containerName, null);
+ //
+ // byte[] data = ptProp.getBytes(COLUMN_VDATA);
+ // InternalQName ptName = InternalQName.parse(new String((data != null ? data : new byte[]{})));
+
+ // MIXIN
+ MixinInfo mixins = null;
+ List<InternalQName> mts = null;
+ boolean owneable = false;
+ boolean privilegeable = false;
+ while (item.next() && item.getString(COLUMN_NAME).equals(Constants.JCR_MIXINTYPES.getAsString()))
{
- // // PRIMARY
- // ResultSet ptProp = findPropertyByName(cid, Constants.JCR_PRIMARYTYPE.getAsString());
- //
- // if (!ptProp.next())
- // throw new PrimaryTypeNotFoundException("FATAL ERROR primary type record not found. Node "
- // + qpath.getAsString() + ", id " + cid + ", container " + this.containerName, null);
- //
- // byte[] data = ptProp.getBytes(COLUMN_VDATA);
- // InternalQName ptName = InternalQName.parse(new String((data != null ? data : new byte[]{})));
+ mts = new ArrayList<InternalQName>();
+ byte[] mxnb = item.getBytes(COLUMN_VDATA);
+ if (mxnb != null)
+ {
+ InternalQName mxn = InternalQName.parse(new String(mxnb));
+ mts.add(mxn);
- // MIXIN
- MixinInfo mixins = readMixins(cid);
+ if (!privilegeable && Constants.EXO_PRIVILEGEABLE.equals(mxn))
+ privilegeable = true;
+ else if (!owneable && Constants.EXO_OWNEABLE.equals(mxn))
+ owneable = true;
+ } // else, if SQL NULL - skip it
+ }
+
+ mixins = new MixinInfo(mts, owneable, privilegeable);
+
+ try
+ {
// ACL
AccessControlList acl; // NO DEFAULT values!
@@ -1252,6 +1273,7 @@
return new PersistedNodeData(getIdentifier(cid), qpath, getIdentifier(parentCid), cversion, cnordernumb,
ptName, mixins.mixinNames(), acl);
+
}
catch (IllegalACLException e)
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java 2009-12-18 13:08:00 UTC (rev 1128)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/MultiDbJDBCConnection.java 2009-12-18 15:38:47 UTC (rev 1129)
@@ -179,7 +179,7 @@
// + " where I2.ID=I.ID and I2.ID=I.PARENT_ID and I.NAME IN ('[http://www.jcp.org/jcr/1.0]primaryType')";// order by I.I_CLASS, I.N_ORDER_NUM"
"select I.*, V.ORDER_NUM, V.DATA, V.STORAGE_DESC from JCR_MITEM I LEFT OUTER JOIN JCR_MVALUE V ON (V.PROPERTY_ID=I.ID)"
- + " where (I.ID=?) or (I.PARENT_ID=? and I.I_CLASS=2 and I.NAME IN ('[http://www.jcp.org/jcr/1.0]primaryType')) order by I.I_CLASS, I.N_ORDER_NUM";// order by I.I_CLASS, I.N_ORDER_NUM"
+ + " where (I.ID=?) or (I.PARENT_ID=? and I.I_CLASS=2 and I.NAME IN ('[http://www.jcp.org/jcr/1.0]primaryType','[http://www.jcp.org/jcr/1.0]mixinTypes')) order by I.I_CLASS, I.N_ORDER_NUM";// order by I.I_CLASS, I.N_ORDER_NUM"
FIND_ITEM_BY_NAME =
"select * from JCR_MITEM" + " where PARENT_ID=? and NAME=? and I_INDEX=? order by I_CLASS, VERSION DESC";
More information about the exo-jcr-commits
mailing list