Author: tolusha
Date: 2010-04-30 09:56:48 -0400 (Fri, 30 Apr 2010)
New Revision: 2345
Modified:
jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
Log:
EXOJCR-635: Avoid unneccesary checks in persistence
Modified:
jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
===================================================================
---
jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java 2010-04-30
09:37:45 UTC (rev 2344)
+++
jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java 2010-04-30
13:56:48 UTC (rev 2345)
@@ -416,7 +416,9 @@
int version;
PropertyImpl prevProp;
PropertyDefinitionDatas defs;
- ItemImpl prevItem = dataManager.getItem(parentNode.nodeData(), new
QPathEntry(propertyName, 0), true);
+ ItemImpl prevItem =
+ dataManager.getItem(parentNode.nodeData(), new QPathEntry(propertyName, 0),
true, dataManager.isNew(parentNode
+ .getIdentifier()));
NodeTypeDataManager ntm = session.getWorkspace().getNodeTypesHolder();
NodeData parentData = (NodeData)parentNode.getData();
Modified:
jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
===================================================================
---
jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java 2010-04-30
09:37:45 UTC (rev 2344)
+++
jcr/branches/1.14.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java 2010-04-30
13:56:48 UTC (rev 2345)
@@ -200,6 +200,15 @@
*/
public ItemData getItemData(NodeData parent, QPathEntry name) throws
RepositoryException
{
+ return getItemData(parent, name, false);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ private ItemData getItemData(NodeData parent, QPathEntry name, boolean
skipCheckInPersistence)
+ throws RepositoryException
+ {
if (name.getName().equals(JCRPath.PARENT_RELPATH) &&
name.getNamespace().equals(Constants.NS_DEFAULT_URI))
{
if (parent.getIdentifier().equals(Constants.ROOT_UUID))
@@ -219,7 +228,10 @@
if (state == null)
{
// 2. Try from txdatamanager
- data = transactionableManager.getItemData(parent, name);
+ if (!(skipCheckInPersistence))
+ {
+ data = transactionableManager.getItemData(parent, name);
+ }
}
else if (!state.isDeleted())
{
@@ -290,6 +302,45 @@
}
/**
+ * Return Item by parent NodeDada and the name of searched item.
+ *
+ * @param parent
+ * - parent of the searched item
+ * @param name
+ * - item name
+ * @param pool
+ * - indicates does the item fall in pool
+ * @param skipCheckInPersistence
+ * - skip getting Item from persistence if need
+ * @return existed item or null if not found
+ * @throws RepositoryException
+ */
+ public ItemImpl getItem(NodeData parent, QPathEntry name, boolean pool, boolean
skipCheckInPersistence)
+ throws RepositoryException
+ {
+ long start = System.currentTimeMillis();
+ if (log.isDebugEnabled())
+ {
+ log.debug("getItem(" + parent.getQPath().getAsString() + " +
" + name.getAsString() + " ) >>>>>");
+ }
+
+ ItemImpl item = null;
+ try
+ {
+ return item = readItem(getItemData(parent, name, skipCheckInPersistence),
pool);
+ }
+ finally
+ {
+ if (log.isDebugEnabled())
+ {
+ log.debug("getItem(" + parent.getQPath().getAsString() + " +
" + name.getAsString() + ") --> "
+ + (item != null ? item.getPath() : "null") + "
<<<<< " + ((System.currentTimeMillis() - start) / 1000d)
+ + "sec");
+ }
+ }
+ }
+
+ /**
* Return Item by parent NodeDada and array of QPathEntry which represent a relative
path to the
* searched item
*
Show replies by date