Author: tolusha
Date: 2010-09-16 09:41:50 -0400 (Thu, 16 Sep 2010)
New Revision: 3121
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/nodetype/ItemDefinitionData.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemDataConsumer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/TransactionChangesLog.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/persistent/WorkspaceStorageCache.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NamespaceDataPersister.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/WorkspaceImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/FileSystemLockPersister.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockManagerImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/jdbc/CacheableJDBCLockManagerImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/ItemAutocreator.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeDataManagerImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/AbstractItemDefinitionAccessProvider.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/JCRNodeTypeDataPersister.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/NodeDefinitionComparator.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/PropertyDefinitionComparator.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/AggregateRuleImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/LuceneQueryBuilder.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/NodeIndexer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SharedFieldSortComparator.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/VersionHistoryImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/VersionImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ACLInheritanceSupportedWorkspaceDataManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/LinkedWorkspaceStorageCacheImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/LocalWorkspaceStorageDataManagerProxy.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/SessionChangesLog.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/version/VersionHistoryDataHelper.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/inmemory/InmemoryStorageConnection.java
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/SQLExceptionHandler.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/VersionHistoryRemover.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/BaseXmlImporter.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestGetNode.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestSessionDataManager.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestLinkedCacheMultithread.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspaceStorageCacheBaseCase.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCHWDCTest.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCStorageConnectionTest.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/StorageUpdateTest.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/fs/TestJCRVSReadWrite.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/jdbc/SQLBenchmarkTest.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/version/TestFrozenNodeInitializer.java
Log:
EXOJCR-954: allow to get property with same name as child node, Implemented by adding
paramter in the method getItemData() which indicates what need exactly to get: node or
property
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/nodetype/ItemDefinitionData.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/nodetype/ItemDefinitionData.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/nodetype/ItemDefinitionData.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -172,4 +172,5 @@
{
return name.getAsString();
}
+
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemDataConsumer.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemDataConsumer.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/ItemDataConsumer.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -22,6 +22,7 @@
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import java.util.List;
@@ -42,14 +43,18 @@
{
/**
- * Find Item by parent (id) and name (with path index).
+ * Find Item by parent (id) and name (with path index) of define type.
*
- * @param parent NodeData
- * @param name QPathEntry
+ * @param parent
+ * NodeData
+ * @param name
+ * item name
+ * @param itemType
+ * itemType
* @return ItemData, data by parent and name
* @throws RepositoryException
*/
- ItemData getItemData(NodeData parent, QPathEntry name) throws RepositoryException;
+ ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType) throws
RepositoryException;
/**
* Find Item by identifier.
@@ -73,7 +78,7 @@
* @return int, child nodes count
*/
int getChildNodesCount(NodeData parent) throws RepositoryException;
-
+
/**
* Get child Properties of the parent node.
*
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/TransactionChangesLog.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/TransactionChangesLog.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/TransactionChangesLog.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -18,11 +18,11 @@
*/
package org.exoplatform.services.jcr.dataflow;
-import org.exoplatform.services.jcr.datamodel.IllegalPathException;
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import java.io.Externalizable;
import java.io.IOException;
@@ -139,14 +139,15 @@
return null;
}
- public ItemState getItemState(NodeData parentData, QPathEntry name)
+ public ItemState getItemState(NodeData parentData, QPathEntry name, ItemType
itemType)
{
List<ItemState> allStates = getAllStates();
for (int i = allStates.size() - 1; i >= 0; i--)
{
ItemState state = allStates.get(i);
if (state.getData().getParentIdentifier().equals(parentData.getIdentifier())
- &&
state.getData().getQPath().getEntries()[state.getData().getQPath().getEntries().length -
1].isSame(name))
+ &&
state.getData().getQPath().getEntries()[state.getData().getQPath().getEntries().length -
1].isSame(name)
+ && itemType.isSuitableFor(state.getData()))
return state;
}
return null;
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/persistent/WorkspaceStorageCache.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/persistent/WorkspaceStorageCache.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/persistent/WorkspaceStorageCache.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -22,6 +22,7 @@
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import java.util.List;
@@ -41,13 +42,17 @@
public static final String LIVE_TIME_PARAMETER_NAME = "live-time";
/**
- * Get item by parent identifier and name +index.
+ * Get item by parent identifier and name +index of define type.
*
* @param parentIdentifier
- * @param path
- * @return itemData by parent Identifier and item name with index or null if not
found
+ * parent identifier
+ * @param name
+ * item name
+ * @param itemType
+ * item type
+ * @return itemData by parent Identifier and item name with index of define type or
null in other case
*/
- ItemData get(String parentIdentifier, QPathEntry name);
+ ItemData get(String parentIdentifier, QPathEntry name, ItemType itemType);
/**
* Get item by identifier.
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -387,7 +387,8 @@
if (ntManager.isNodeType(Constants.MIX_VERSIONABLE, node.getPrimaryTypeName(),
node.getMixinTypeNames()))
{
- ItemData vhpd = dataManager.getItemData(node, new
QPathEntry(Constants.JCR_VERSIONHISTORY, 1));
+ ItemData vhpd =
+ dataManager.getItemData(node, new QPathEntry(Constants.JCR_VERSIONHISTORY,
1), ItemType.PROPERTY);
if (vhpd != null && !vhpd.isNode())
{
try
@@ -435,8 +436,8 @@
PropertyImpl prevProp;
PropertyDefinitionDatas defs;
ItemImpl prevItem =
- dataManager.getItem(parentNode.nodeData(), new QPathEntry(propertyName, 0),
true, dataManager.isNew(parentNode
- .getIdentifier()));
+ dataManager.getItem(parentNode.nodeData(), new QPathEntry(propertyName, 0),
true,
+ dataManager.isNew(parentNode.getIdentifier()), ItemType.PROPERTY);
NodeTypeDataManager ntm = session.getWorkspace().getNodeTypesHolder();
NodeData parentData = (NodeData)parentNode.getData();
@@ -450,8 +451,8 @@
{
// new property null values;
TransientPropertyData nullData =
- new TransientPropertyData(qpath, identifier, version,
PropertyType.UNDEFINED, parentNode
- .getInternalIdentifier(), isMultiValue);
+ new TransientPropertyData(qpath, identifier, version,
PropertyType.UNDEFINED,
+ parentNode.getInternalIdentifier(), isMultiValue);
PropertyImpl nullProperty = new PropertyImpl(nullData, session);
nullProperty.invalidate();
return nullProperty;
@@ -659,8 +660,8 @@
NodeData refNode = (NodeData)changedItem.getData();
// Check referential integrity (remove of mix:referenceable node)
- if (ntManager.isNodeType(Constants.MIX_REFERENCEABLE,
refNode.getPrimaryTypeName(), refNode
- .getMixinTypeNames()))
+ if (ntManager.isNodeType(Constants.MIX_REFERENCEABLE,
refNode.getPrimaryTypeName(),
+ refNode.getMixinTypeNames()))
{
// mix:referenceable
@@ -984,8 +985,8 @@
throws RepositoryException
{
ValueConstraintsMatcher constraints =
- new ValueConstraintsMatcher(def.getValueConstraints(),
session.getLocationFactory(), session
- .getTransientNodesManager(), session.getWorkspace().getNodeTypesHolder());
+ new ValueConstraintsMatcher(def.getValueConstraints(),
session.getLocationFactory(),
+ session.getTransientNodesManager(),
session.getWorkspace().getNodeTypesHolder());
for (ValueData value : newValues)
{
@@ -1012,4 +1013,36 @@
}
}
}
+
+ /**
+ * Class contains enumerated item types. Is used in methods to indicate what need
exactly get: node or property.
+ */
+ public enum ItemType {
+ UNKNOWN, NODE, PROPERTY;
+
+ /**
+ * Indicate if item type suit for ItemData.
+ *
+ * @param itemData
+ * ItemData
+ * @return true if item type is UNKNOWN type or the same as ItemData and false in
other case
+ */
+ public boolean isSuitableFor(ItemData itemData)
+ {
+ boolean isNode = itemData.isNode();
+ return this == UNKNOWN || this == NODE && isNode || this == PROPERTY
&& !isNode;
+ }
+
+ /**
+ * Return item type based on ItemData.
+ *
+ * @param itemData
+ * item data
+ * @return ItemType
+ */
+ public static ItemType getItemType(ItemData itemData)
+ {
+ return itemData.isNode() ? ItemType.NODE : ItemType.PROPERTY;
+ }
+ }
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NamespaceDataPersister.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NamespaceDataPersister.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NamespaceDataPersister.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -36,6 +36,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientItemData;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
@@ -185,7 +186,8 @@
}
PlainChangesLogImpl plainChangesLogImpl = new PlainChangesLogImpl();
- ItemData prefData = dataManager.getItemData(nsRoot, new QPathEntry(new
InternalQName("", prefix), 0));
+ ItemData prefData =
+ dataManager.getItemData(nsRoot, new QPathEntry(new InternalQName("",
prefix), 0), ItemType.NODE);
if (prefData != null && prefData.isNode())
{
@@ -220,12 +222,14 @@
if (jcrSystem != null)
{
NodeData exoNamespaces =
- (NodeData)dataManager.getItemData(jcrSystem, new
QPathEntry(Constants.EXO_NAMESPACES, 1));
+ (NodeData)dataManager.getItemData(jcrSystem, new
QPathEntry(Constants.EXO_NAMESPACES, 1),
+ ItemType.NODE);
if (exoNamespaces == null)
{
initStorage(jcrSystem,
!repConfig.getAccessControl().equals(AccessControlPolicy.DISABLE));
this.nsRoot =
- (NodeData)dataManager.getItemData(jcrSystem, new
QPathEntry(Constants.EXO_NAMESPACES, 1));
+ (NodeData)dataManager.getItemData(jcrSystem, new
QPathEntry(Constants.EXO_NAMESPACES, 1),
+ ItemType.NODE);
}
else
{
@@ -264,7 +268,8 @@
{
NodeData jcrSystem = (NodeData)dataManager.getItemData(Constants.SYSTEM_UUID);
if (jcrSystem != null)
- this.nsRoot = (NodeData)dataManager.getItemData(jcrSystem, new
QPathEntry(Constants.EXO_NAMESPACES, 1));
+ this.nsRoot =
+ (NodeData)dataManager.getItemData(jcrSystem, new
QPathEntry(Constants.EXO_NAMESPACES, 1), ItemType.NODE);
else
throw new RepositoryException(
"/jcr:system is not found. Possible the workspace is not initialized
properly");
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -217,8 +217,8 @@
}
// Validate
- if (session.getWorkspace().getNodeTypesHolder().isNodeType(type.getName(),
nodeData().getPrimaryTypeName(),
- nodeData().getMixinTypeNames()))
+ if (session.getWorkspace().getNodeTypesHolder()
+ .isNodeType(type.getName(), nodeData().getPrimaryTypeName(),
nodeData().getMixinTypeNames()))
{
throw new ConstraintViolationException("Can not add mixin type " +
mixinName + " to " + getPath());
}
@@ -267,7 +267,8 @@
}
ItemImpl parentItem =
- dataManager.getItem(nodeData(),
itemPath.makeParentPath().getInternalPath().getEntries(), false);
+ dataManager.getItem(nodeData(),
itemPath.makeParentPath().getInternalPath().getEntries(), false,
+ ItemType.UNKNOWN);
if (parentItem == null)
{
@@ -283,8 +284,8 @@
// find node type
NodeDefinitionData nodeDef =
- session.getWorkspace().getNodeTypesHolder().getChildNodeDefinition(name,
nodeData().getPrimaryTypeName(),
- nodeData().getMixinTypeNames());
+ session.getWorkspace().getNodeTypesHolder()
+ .getChildNodeDefinition(name, nodeData().getPrimaryTypeName(),
nodeData().getMixinTypeNames());
if (nodeDef == null)
{
@@ -326,7 +327,8 @@
}
ItemImpl parentItem =
- dataManager.getItem(nodeData(),
itemPath.makeParentPath().getInternalPath().getEntries(), false);
+ dataManager.getItem(nodeData(),
itemPath.makeParentPath().getInternalPath().getEntries(), false,
+ ItemType.UNKNOWN);
if (parentItem == null)
{
@@ -354,16 +356,16 @@
checkValid();
NodeTypeData type =
- session.getWorkspace().getNodeTypesHolder().getNodeType(
- locationFactory.parseJCRName(mixinName).getInternalName());
+ session.getWorkspace().getNodeTypesHolder()
+ .getNodeType(locationFactory.parseJCRName(mixinName).getInternalName());
if (type == null)
{
throw new NoSuchNodeTypeException("Nodetype not found (mixin) " +
mixinName);
}
- if (session.getWorkspace().getNodeTypesHolder().isNodeType(type.getName(),
nodeData().getPrimaryTypeName(),
- nodeData().getMixinTypeNames()))
+ if (session.getWorkspace().getNodeTypesHolder()
+ .isNodeType(type.getName(), nodeData().getPrimaryTypeName(),
nodeData().getMixinTypeNames()))
{
return false;
}
@@ -418,7 +420,8 @@
if (vancestor != null)
{
PropertyData isCheckedOut =
- (PropertyData)dataManager.getItemData(vancestor, new
QPathEntry(Constants.JCR_ISCHECKEDOUT, 1));
+ (PropertyData)dataManager.getItemData(vancestor, new
QPathEntry(Constants.JCR_ISCHECKEDOUT, 1),
+ ItemType.PROPERTY);
try
{
return ValueDataConvertor.readBoolean(isCheckedOut.getValues().get(0));
@@ -518,8 +521,8 @@
new TransientValueData(true))));
ValueData baseVersion =
- ((PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_BASEVERSION, 0))).getValues()
- .get(0);
+ ((PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_BASEVERSION, 0),
+ ItemType.PROPERTY)).getValues().get(0);
changesLog.add(ItemState.createUpdatedState(updatePropertyData(Constants.JCR_PREDECESSORS,
baseVersion)));
@@ -602,7 +605,8 @@
values.add(new TransientValueData(type.getName()));
PropertyData prop =
- (PropertyData)dataManager.getItemData(((NodeData)getData()), new
QPathEntry(Constants.JCR_MIXINTYPES, 0));
+ (PropertyData)dataManager.getItemData(((NodeData)getData()), new
QPathEntry(Constants.JCR_MIXINTYPES, 0),
+ ItemType.PROPERTY);
ItemState state;
if (prop != null)
@@ -738,7 +742,8 @@
}
PropertyData bvProp =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_BASEVERSION, 1));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_BASEVERSION, 1),
+ ItemType.PROPERTY);
try
{
return
(Version)session.getNodeByUUID(ValueDataConvertor.readString(bvProp.getValues().get(0)));
@@ -782,9 +787,9 @@
NodeData ancestor = (NodeData)dataManager.getItemData(Constants.ROOT_UUID);
for (int i = 1; i < myPath.getDepth(); i++)
{
- ancestor = (NodeData)dataManager.getItemData(ancestor,
myPath.getEntries()[i]);
- if
(corrSession.getWorkspace().getNodeTypesHolder().isNodeType(Constants.MIX_REFERENCEABLE,
- ancestor.getPrimaryTypeName(), ancestor.getMixinTypeNames()))
+ ancestor = (NodeData)dataManager.getItemData(ancestor,
myPath.getEntries()[i], ItemType.NODE);
+ if (corrSession.getWorkspace().getNodeTypesHolder()
+ .isNodeType(Constants.MIX_REFERENCEABLE, ancestor.getPrimaryTypeName(),
ancestor.getMixinTypeNames()))
{
NodeData corrAncestor =
(NodeData)corrDataManager.getItemData(ancestor.getIdentifier());
if (corrAncestor == null)
@@ -794,7 +799,8 @@
}
NodeData corrNode =
- (NodeData)corrDataManager.getItemData(corrAncestor,
myPath.getRelPath(myPath.getDepth() - i));
+ (NodeData)corrDataManager.getItemData(corrAncestor,
myPath.getRelPath(myPath.getDepth() - i),
+ ItemType.NODE);
if (corrNode != null)
{
return corrNode;
@@ -852,8 +858,8 @@
new NodeDefinitionData(null, null, true, true,
OnParentVersionAction.ABORT, false,
new InternalQName[]{requiredName}, null, true);
this.nodeDefinition =
- new NodeDefinitionImpl(ntData, nodeTypesHolder, nodeTypeManager,
sysLocFactory, session
- .getValueFactory(), session.getTransientNodesManager());
+ new NodeDefinitionImpl(ntData, nodeTypesHolder, nodeTypeManager,
sysLocFactory,
+ session.getValueFactory(), session.getTransientNodesManager());
}
}
else
@@ -862,8 +868,8 @@
NodeData parent = (NodeData)dataManager.getItemData(getParentIdentifier());
this.definition =
- nodeTypesHolder.getChildNodeDefinition(getInternalName(),
parent.getPrimaryTypeName(), parent
- .getMixinTypeNames());
+ nodeTypesHolder.getChildNodeDefinition(getInternalName(),
parent.getPrimaryTypeName(),
+ parent.getMixinTypeNames());
if (definition == null)
{
@@ -879,8 +885,8 @@
}
nodeDefinition =
- new NodeDefinitionImpl(definition, nodeTypesHolder, nodeTypeManager,
sysLocFactory, session
- .getValueFactory(), session.getTransientNodesManager());
+ new NodeDefinitionImpl(definition, nodeTypesHolder, nodeTypeManager,
sysLocFactory,
+ session.getValueFactory(), session.getTransientNodesManager());
}
}
@@ -970,7 +976,7 @@
JCRPath itemPath = locationFactory.parseRelPath(relPath);
- ItemImpl node = dataManager.getItem(nodeData(),
itemPath.getInternalPath().getEntries(), true);
+ ItemImpl node = dataManager.getItem(nodeData(),
itemPath.getInternalPath().getEntries(), true, ItemType.NODE);
if (node == null || !node.isNode())
{
throw new PathNotFoundException("Node not found " + (isRoot() ?
"" : getLocation().getAsString(false)) + "/"
@@ -1114,7 +1120,8 @@
{
if (ntData.getPrimaryItemName() != null)
{
- Item primaryItem = dataManager.getItem(nodeData(), new
QPathEntry(ntData.getPrimaryItemName(), 0), true);
+ Item primaryItem =
+ dataManager.getItem(nodeData(), new
QPathEntry(ntData.getPrimaryItemName(), 0), true, ItemType.UNKNOWN);
if (primaryItem != null)
{
return primaryItem;
@@ -1266,7 +1273,7 @@
LOG.debug("getProperty() " + getLocation().getAsString(false) + "
" + relPath);
}
- ItemImpl prop = dataManager.getItem(nodeData(),
itemPath.getInternalPath().getEntries(), true);
+ ItemImpl prop = dataManager.getItem(nodeData(),
itemPath.getInternalPath().getEntries(), true, ItemType.PROPERTY);
if (prop == null || prop.isNode())
{
throw new PathNotFoundException("Property not found " +
itemPath.getAsString(false));
@@ -1365,7 +1372,7 @@
JCRPath itemPath = locationFactory.parseRelPath(relPath);
- ItemData node = dataManager.getItemData(nodeData(),
itemPath.getInternalPath().getEntries());
+ ItemData node = dataManager.getItemData(nodeData(),
itemPath.getInternalPath().getEntries(), ItemType.NODE);
return node != null && node.isNode();
}
@@ -1401,7 +1408,7 @@
JCRPath itemPath = locationFactory.parseRelPath(relPath);
- ItemData prop = dataManager.getItemData(nodeData(),
itemPath.getInternalPath().getEntries());
+ ItemData prop = dataManager.getItemData(nodeData(),
itemPath.getInternalPath().getEntries(), ItemType.PROPERTY);
return prop != null && !prop.isNode();
}
@@ -1460,8 +1467,8 @@
{
checkValid();
- return session.getWorkspace().getNodeTypesHolder().isNodeType(qName,
nodeData().getPrimaryTypeName(),
- nodeData().getMixinTypeNames());
+ return session.getWorkspace().getNodeTypesHolder()
+ .isNodeType(qName, nodeData().getPrimaryTypeName(),
nodeData().getMixinTypeNames());
}
/**
@@ -1551,8 +1558,8 @@
}
this.definition =
-
session.getWorkspace().getNodeTypesHolder().getChildNodeDefinition(getInternalName(),
- parent.getPrimaryTypeName(), parent.getMixinTypeNames());
+ session.getWorkspace().getNodeTypesHolder()
+ .getChildNodeDefinition(getInternalName(), parent.getPrimaryTypeName(),
parent.getMixinTypeNames());
if (definition == null)
{
@@ -1766,7 +1773,8 @@
session.getActionHandler().preRemoveMixin(this, name);
PropertyData propData =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_MIXINTYPES, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_MIXINTYPES, 0),
+ ItemType.PROPERTY);
// create new property data with new values
TransientPropertyData prop =
@@ -1795,7 +1803,7 @@
for (PropertyDefinitionData pd : ntmanager.getAllPropertyDefinitions(removedName))
{
- ItemData p = dataManager.getItemData(nodeData(), new QPathEntry(pd.getName(),
1));
+ ItemData p = dataManager.getItemData(nodeData(), new QPathEntry(pd.getName(),
1), ItemType.PROPERTY);
if (p != null && !p.isNode())
{
// remove it
@@ -1805,7 +1813,7 @@
for (NodeDefinitionData nd : ntmanager.getAllChildNodeDefinitions(removedName))
{
- ItemData n = dataManager.getItemData(nodeData(), new QPathEntry(nd.getName(),
1));
+ ItemData n = dataManager.getItemData(nodeData(), new QPathEntry(nd.getName(),
1), ItemType.NODE);
if (n != null && n.isNode())
{
// remove node with subtree
@@ -1951,7 +1959,8 @@
}
QPath destPath = locationFactory.parseRelPath(relPath).getInternalPath();
- NodeImpl destParent = (NodeImpl)dataManager.getItem(nodeData(),
destPath.makeParentPath().getEntries(), false);
+ NodeImpl destParent =
+ (NodeImpl)dataManager.getItem(nodeData(),
destPath.makeParentPath().getEntries(), false, ItemType.UNKNOWN);
if (destParent == null)
{
throw new PathNotFoundException("Parent not found for " +
relPath);
@@ -1964,7 +1973,7 @@
NodeImpl destNode =
(NodeImpl)dataManager.getItem(destParent.nodeData(),
- new QPathEntry(destPath.getName(), destPath.getIndex()), false);
+ new QPathEntry(destPath.getName(), destPath.getIndex()), false,
ItemType.NODE);
if (destNode != null)
{
@@ -2114,8 +2123,8 @@
checkValid();
- return doUpdateProperty(this, locationFactory.parseJCRName(name).getInternalName(),
valueFactory
- .createValue(value), false, PropertyType.UNDEFINED);
+ return doUpdateProperty(this,
locationFactory.parseJCRName(name).getInternalName(),
+ valueFactory.createValue(value), false, PropertyType.UNDEFINED);
}
@@ -2128,8 +2137,8 @@
checkValid();
- return doUpdateProperty(this, locationFactory.parseJCRName(name).getInternalName(),
valueFactory
- .createValue(value), false, PropertyType.UNDEFINED);
+ return doUpdateProperty(this,
locationFactory.parseJCRName(name).getInternalName(),
+ valueFactory.createValue(value), false, PropertyType.UNDEFINED);
}
@@ -2142,8 +2151,8 @@
checkValid();
- return doUpdateProperty(this, locationFactory.parseJCRName(name).getInternalName(),
valueFactory
- .createValue(value), false, PropertyType.UNDEFINED);
+ return doUpdateProperty(this,
locationFactory.parseJCRName(name).getInternalName(),
+ valueFactory.createValue(value), false, PropertyType.UNDEFINED);
}
/**
@@ -2155,8 +2164,8 @@
checkValid();
- return doUpdateProperty(this, locationFactory.parseJCRName(name).getInternalName(),
valueFactory
- .createValue(value), false, PropertyType.UNDEFINED);
+ return doUpdateProperty(this,
locationFactory.parseJCRName(name).getInternalName(),
+ valueFactory.createValue(value), false, PropertyType.UNDEFINED);
}
/**
@@ -2168,8 +2177,8 @@
checkValid();
- return doUpdateProperty(this, locationFactory.parseJCRName(name).getInternalName(),
valueFactory
- .createValue(value), false, PropertyType.UNDEFINED);
+ return doUpdateProperty(this,
locationFactory.parseJCRName(name).getInternalName(),
+ valueFactory.createValue(value), false, PropertyType.UNDEFINED);
}
@@ -2182,8 +2191,8 @@
checkValid();
- return doUpdateProperty(this, locationFactory.parseJCRName(name).getInternalName(),
valueFactory
- .createValue(value), false, PropertyType.UNDEFINED);
+ return doUpdateProperty(this,
locationFactory.parseJCRName(name).getInternalName(),
+ valueFactory.createValue(value), false, PropertyType.UNDEFINED);
}
@@ -2196,8 +2205,8 @@
checkValid();
- return doUpdateProperty(this, locationFactory.parseJCRName(name).getInternalName(),
valueFactory
- .createValue(value), false, PropertyType.UNDEFINED);
+ return doUpdateProperty(this,
locationFactory.parseJCRName(name).getInternalName(),
+ valueFactory.createValue(value), false, PropertyType.UNDEFINED);
}
@@ -2210,8 +2219,8 @@
checkValid();
- return doUpdateProperty(this, locationFactory.parseJCRName(name).getInternalName(),
valueFactory.createValue(
- value, type), false, type);
+ return doUpdateProperty(this,
locationFactory.parseJCRName(name).getInternalName(),
+ valueFactory.createValue(value, type), false, type);
}
/**
@@ -2386,7 +2395,7 @@
NodeData thisParent =
(NodeData)session.getTransientNodesManager().getItemData(getParentIdentifier());
QPathEntry[] qpath = getInternalPath().getEntries();
- NodeData thisNew = (NodeData)pmanager.getItemData(thisParent, qpath[qpath.length -
1]);
+ NodeData thisNew = (NodeData)pmanager.getItemData(thisParent, qpath[qpath.length -
1], ItemType.NODE);
// reload node impl with old uuid to a new one data
session.getTransientNodesManager().getItemsPool().reload(getInternalIdentifier(),
thisNew);
}
@@ -2422,8 +2431,8 @@
}
// Check if node is not protected
NodeDefinitionData childNodeDefinition =
- session.getWorkspace().getNodeTypesHolder().getChildNodeDefinition(name,
nodeData().getPrimaryTypeName(),
- nodeData().getMixinTypeNames());
+ session.getWorkspace().getNodeTypesHolder()
+ .getChildNodeDefinition(name, nodeData().getPrimaryTypeName(),
nodeData().getMixinTypeNames());
if (childNodeDefinition == null)
{
throw new ConstraintViolationException("Can't find child node
definition for "
@@ -2472,7 +2481,8 @@
}
PropertyData vhProp =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_VERSIONHISTORY, 1));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_VERSIONHISTORY, 1),
+ ItemType.PROPERTY);
if (vhProp == null)
{
throw new UnsupportedRepositoryOperationException("Node does not have
jcr:versionHistory " + getPath());
@@ -2639,16 +2649,16 @@
QPath.makeChildPath(newData.getQPath().makeParentPath(),
newData.getQPath().getName(), sameNameIndex);
newData =
- new TransientNodeData(siblingPath, newData.getIdentifier(),
newData.getPersistedVersion(), newData
- .getPrimaryTypeName(), newData.getMixinTypeNames(), j,
newData.getParentIdentifier(), newData
- .getACL());
+ new TransientNodeData(siblingPath, newData.getIdentifier(),
newData.getPersistedVersion(),
+ newData.getPrimaryTypeName(), newData.getMixinTypeNames(), j,
newData.getParentIdentifier(),
+ newData.getACL());
}
else
{
newData =
new TransientNodeData(newData.getQPath(), newData.getIdentifier(),
newData.getPersistedVersion(),
- newData.getPrimaryTypeName(), newData.getMixinTypeNames(), j,
newData.getParentIdentifier(), newData
- .getACL());
+ newData.getPrimaryTypeName(), newData.getMixinTypeNames(), j,
newData.getParentIdentifier(),
+ newData.getACL());
}
/*
@@ -2696,11 +2706,13 @@
PlainChangesLog changesLog =
new PlainChangesLogImpl(new ArrayList<ItemState>(), session.getId(),
ExtendedEvent.UNLOCK);
- ItemData lockOwner = dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_LOCKOWNER, 0));
+ ItemData lockOwner =
+ dataManager.getItemData(nodeData(), new QPathEntry(Constants.JCR_LOCKOWNER, 0),
ItemType.PROPERTY);
changesLog.add(ItemState.createDeletedState(lockOwner));
- ItemData lockIsDeep = dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_LOCKISDEEP, 0));
+ ItemData lockIsDeep =
+ dataManager.getItemData(nodeData(), new QPathEntry(Constants.JCR_LOCKISDEEP, 0),
ItemType.PROPERTY);
changesLog.add(ItemState.createDeletedState(lockIsDeep));
@@ -2715,7 +2727,8 @@
protected PropertyImpl property(InternalQName name) throws IllegalPathException,
PathNotFoundException,
RepositoryException
{
- PropertyImpl prop = (PropertyImpl)dataManager.getItem(nodeData(), new
QPathEntry(name, 1), false);
+ PropertyImpl prop =
+ (PropertyImpl)dataManager.getItem(nodeData(), new QPathEntry(name, 1), false,
ItemType.PROPERTY);
if (prop == null || prop.isNode())
{
throw new PathNotFoundException("Property not found " + name);
@@ -2744,7 +2757,8 @@
protected PropertyData updatePropertyData(InternalQName name, List<ValueData>
values) throws RepositoryException
{
- PropertyData existed = (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(name, 0));
+ PropertyData existed =
+ (PropertyData)dataManager.getItemData(nodeData(), new QPathEntry(name, 0),
ItemType.PROPERTY);
if (existed == null)
{
@@ -2758,8 +2772,9 @@
}
TransientPropertyData tdata =
- new TransientPropertyData(QPath.makeChildPath(getInternalPath(), name),
existed.getIdentifier(), existed
- .getPersistedVersion(), existed.getType(), existed.getParentIdentifier(),
existed.isMultiValued(), values);
+ new TransientPropertyData(QPath.makeChildPath(getInternalPath(), name),
existed.getIdentifier(),
+ existed.getPersistedVersion(), existed.getType(),
existed.getParentIdentifier(), existed.isMultiValued(),
+ values);
return tdata;
}
@@ -2767,7 +2782,8 @@
protected PropertyData updatePropertyData(InternalQName name, ValueData value) throws
RepositoryException
{
- PropertyData existed = (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(name, 0));
+ PropertyData existed =
+ (PropertyData)dataManager.getItemData(nodeData(), new QPathEntry(name, 0),
ItemType.PROPERTY);
if (existed == null)
{
@@ -2776,8 +2792,9 @@
}
TransientPropertyData tdata =
- new TransientPropertyData(QPath.makeChildPath(getInternalPath(), name),
existed.getIdentifier(), existed
- .getPersistedVersion(), existed.getType(), existed.getParentIdentifier(),
existed.isMultiValued(), value);
+ new TransientPropertyData(QPath.makeChildPath(getInternalPath(), name),
existed.getIdentifier(),
+ existed.getPersistedVersion(), existed.getType(),
existed.getParentIdentifier(), existed.isMultiValued(),
+ value);
return tdata;
}
@@ -2824,7 +2841,8 @@
EntityCollection res = new EntityCollection();
TransientPropertyData mergeFailed =
- (TransientPropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_MERGEFAILED, 0));
+ (TransientPropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_MERGEFAILED, 0),
+ ItemType.PROPERTY);
List<ValueData> mergeFailedRefs = new ArrayList<ValueData>();
int state = 0;
@@ -2838,9 +2856,9 @@
}
mergeFailed =
- new TransientPropertyData(mergeFailed.getQPath(),
mergeFailed.getIdentifier(), mergeFailed
- .getPersistedVersion(), mergeFailed.getType(),
mergeFailed.getParentIdentifier(), mergeFailed
- .isMultiValued(), mergeFailedRefs);
+ new TransientPropertyData(mergeFailed.getQPath(),
mergeFailed.getIdentifier(),
+ mergeFailed.getPersistedVersion(), mergeFailed.getType(),
mergeFailed.getParentIdentifier(),
+ mergeFailed.isMultiValued(), mergeFailedRefs);
state = ItemState.UPDATED;
}
@@ -2894,20 +2912,20 @@
{
NodeDefinitionData def =
- session.getWorkspace().getNodeTypesHolder().getChildNodeDefinition(nameToAdd,
parentNode.getPrimaryTypeName(),
- parentNode.getMixinTypeNames());
+ session.getWorkspace().getNodeTypesHolder()
+ .getChildNodeDefinition(nameToAdd, parentNode.getPrimaryTypeName(),
parentNode.getMixinTypeNames());
boolean allowSns = def.isAllowsSameNameSiblings();
int ind = 1;
- NodeData sibling = (NodeData)dataManager.getItemData(parentNode, new
QPathEntry(nameToAdd, ind));
+ NodeData sibling = (NodeData)dataManager.getItemData(parentNode, new
QPathEntry(nameToAdd, ind), ItemType.NODE);
while (sibling != null)
{
if (allowSns)
{
ind++;
- sibling = (NodeData)dataManager.getItemData(parentNode, new
QPathEntry(nameToAdd, ind));
+ sibling = (NodeData)dataManager.getItemData(parentNode, new
QPathEntry(nameToAdd, ind), ItemType.NODE);
}
else
{
@@ -2953,8 +2971,8 @@
// create new nodedata, [PN] fix of use index as persisted version
NodeData nodeData =
- new TransientNodeData(path, identifier, -1, primaryTypeName, mixinTypeNames,
orderNum, parentNode
- .getInternalIdentifier(), acl);
+ new TransientNodeData(path, identifier, -1, primaryTypeName, mixinTypeNames,
orderNum,
+ parentNode.getInternalIdentifier(), acl);
// Create new Node
ItemState state = ItemState.createAddedState(nodeData, false);
@@ -2987,7 +3005,7 @@
{
try
{
- ItemData pdata = dataManager.getItemData(nodeData(), new QPathEntry(name, 1));
+ ItemData pdata = dataManager.getItemData(nodeData(), new QPathEntry(name, 1),
ItemType.PROPERTY);
if (pdata != null && !pdata.isNode())
{
@@ -3004,7 +3022,8 @@
{
PropertyData mergeFailed =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_MERGEFAILED, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_MERGEFAILED, 0),
+ ItemType.PROPERTY);
if (mergeFailed == null)
{
@@ -3041,9 +3060,10 @@
// to jcr:predecessors (with doneMerge) or just removed from
// jcr:mergeFailed (with cancelMerge) the jcr:mergeFailed
// property is automatically remove
- changesLog.add(ItemState.createDeletedState(new
TransientPropertyData(mergeFailed.getQPath(), mergeFailed
- .getIdentifier(), mergeFailed.getPersistedVersion(), mergeFailed.getType(),
mergeFailed
- .getParentIdentifier(), mergeFailed.isMultiValued(),
mergeFailed.getValues()), true));
+ changesLog.add(ItemState.createDeletedState(
+ new TransientPropertyData(mergeFailed.getQPath(),
mergeFailed.getIdentifier(), mergeFailed
+ .getPersistedVersion(), mergeFailed.getType(),
mergeFailed.getParentIdentifier(), mergeFailed
+ .isMultiValued(), mergeFailed.getValues()), true));
}
}
@@ -3051,9 +3071,9 @@
{
NodeData nodeData = (NodeData)data;
data =
- new TransientNodeData(nodeData.getQPath(), nodeData.getIdentifier(),
nodeData.getPersistedVersion(), nodeData
- .getPrimaryTypeName(), nodeData.getMixinTypeNames(),
nodeData.getOrderNumber(), nodeData
- .getParentIdentifier(), acl);
+ new TransientNodeData(nodeData.getQPath(), nodeData.getIdentifier(),
nodeData.getPersistedVersion(),
+ nodeData.getPrimaryTypeName(), nodeData.getMixinTypeNames(),
nodeData.getOrderNumber(),
+ nodeData.getParentIdentifier(), acl);
}
private void updateMixin(List<InternalQName> newMixin) throws
RepositoryException
@@ -3064,8 +3084,9 @@
NodeData nodeData = (NodeData)data;
data =
- new TransientNodeData(nodeData.getQPath(), nodeData.getIdentifier(),
nodeData.getPersistedVersion(), nodeData
- .getPrimaryTypeName(), mixins, nodeData.getOrderNumber(),
nodeData.getParentIdentifier(), nodeData.getACL());
+ new TransientNodeData(nodeData.getQPath(), nodeData.getIdentifier(),
nodeData.getPersistedVersion(),
+ nodeData.getPrimaryTypeName(), mixins, nodeData.getOrderNumber(),
nodeData.getParentIdentifier(),
+ nodeData.getACL());
// ((TransientNodeData)data).setMixinTypeNames(mixins);
@@ -3085,7 +3106,8 @@
}
PropertyData permProp =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.EXO_PERMISSIONS, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.EXO_PERMISSIONS, 0),
+ ItemType.PROPERTY);
permProp =
new TransientPropertyData(permProp.getQPath(), permProp.getIdentifier(),
permProp.getPersistedVersion(),
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -34,6 +34,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.nodetype.NodeTypeManagerImpl;
import org.exoplatform.services.jcr.impl.core.version.ChildVersionRemoveVisitor;
import org.exoplatform.services.jcr.impl.core.version.VersionHistoryImpl;
@@ -158,7 +159,7 @@
QPathEntry[] relPathEntries = path.getRelPath(path.getDepth());
- return getItemData(parent, relPathEntries);
+ return getItemData(parent, relPathEntries, ItemType.UNKNOWN);
}
/**
@@ -168,15 +169,25 @@
* @param parent
* @param relPath
* - array of QPathEntry which represents the relation path to the searched
item
+ * @param itemType
+ * - item type
* @return existed item data or null if not found
* @throws RepositoryException
*/
- public ItemData getItemData(NodeData parent, QPathEntry[] relPathEntries) throws
RepositoryException
+ public ItemData getItemData(NodeData parent, QPathEntry[] relPathEntries, ItemType
itemType)
+ throws RepositoryException
{
ItemData item = parent;
for (int i = 0; i < relPathEntries.length; i++)
{
- item = getItemData(parent, relPathEntries[i]);
+ if (i == relPathEntries.length - 1)
+ {
+ item = getItemData(parent, relPathEntries[i], itemType);
+ }
+ else
+ {
+ item = getItemData(parent, relPathEntries[i], ItemType.UNKNOWN);
+ }
if (item == null)
{
@@ -198,15 +209,12 @@
/**
* {@inheritDoc}
*/
- public ItemData getItemData(NodeData parent, QPathEntry name) throws
RepositoryException
+ public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType)
throws RepositoryException
{
- return getItemData(parent, name, false);
+ return getItemData(parent, name, false, itemType);
}
- /**
- * {@inheritDoc}
- */
- private ItemData getItemData(NodeData parent, QPathEntry name, boolean
skipCheckInPersistence)
+ private ItemData getItemData(NodeData parent, QPathEntry name, boolean
skipCheckInPersistence, ItemType itemType)
throws RepositoryException
{
if (name.getName().equals(JCRPath.PARENT_RELPATH) &&
name.getNamespace().equals(Constants.NS_DEFAULT_URI))
@@ -224,13 +232,13 @@
ItemData data = null;
// 1. Try in transient changes
- ItemState state = changesLog.getItemState(parent, name);
+ ItemState state = changesLog.getItemState(parent, name, itemType);
if (state == null)
{
// 2. Try from txdatamanager
if (!(skipCheckInPersistence))
{
- data = transactionableManager.getItemData(parent, name);
+ data = transactionableManager.getItemData(parent, name, itemType);
}
}
else if (!state.isDeleted())
@@ -272,12 +280,15 @@
* - parent of the searched item
* @param name
* - item name
+ * @param itemType
+ * - item type
* @param pool
* - indicates does the item fall in pool
* @return existed item or null if not found
* @throws RepositoryException
*/
- public ItemImpl getItem(NodeData parent, QPathEntry name, boolean pool) throws
RepositoryException
+ public ItemImpl getItem(NodeData parent, QPathEntry name, boolean pool, ItemType
itemType)
+ throws RepositoryException
{
long start = System.currentTimeMillis();
if (log.isDebugEnabled())
@@ -288,7 +299,7 @@
ItemImpl item = null;
try
{
- return item = readItem(getItemData(parent, name), pool);
+ return item = readItem(getItemData(parent, name, itemType), pool);
}
finally
{
@@ -312,11 +323,13 @@
* - indicates does the item fall in pool
* @param skipCheckInPersistence
* - skip getting Item from persistence if need
+ * @param itemType
+ * - item type
* @return existed item or null if not found
* @throws RepositoryException
*/
- public ItemImpl getItem(NodeData parent, QPathEntry name, boolean pool, boolean
skipCheckInPersistence)
- throws RepositoryException
+ public ItemImpl getItem(NodeData parent, QPathEntry name, boolean pool, boolean
skipCheckInPersistence,
+ ItemType itemType) throws RepositoryException
{
long start = System.currentTimeMillis();
if (log.isDebugEnabled())
@@ -327,7 +340,7 @@
ItemImpl item = null;
try
{
- return item = readItem(getItemData(parent, name, skipCheckInPersistence),
pool);
+ return item = readItem(getItemData(parent, name, skipCheckInPersistence,
itemType), pool);
}
finally
{
@@ -350,10 +363,13 @@
* - array of QPathEntry which represents the relation path to the searched
item
* @param pool
* - indicates does the item fall in pool
+ * @param itemType
+ * - item type
* @return existed item or null if not found
* @throws RepositoryException
*/
- public ItemImpl getItem(NodeData parent, QPathEntry[] relPath, boolean pool) throws
RepositoryException
+ public ItemImpl getItem(NodeData parent, QPathEntry[] relPath, boolean pool, ItemType
itemType)
+ throws RepositoryException
{
long start = System.currentTimeMillis();
if (log.isDebugEnabled())
@@ -369,7 +385,7 @@
ItemImpl item = null;
try
{
- return item = readItem(getItemData(parent, relPath), pool);
+ return item = readItem(getItemData(parent, relPath, itemType), pool);
}
finally
{
@@ -900,7 +916,14 @@
QPathEntry[] relPathEntries = path.getRelPath(path.getDepth());
for (int i = 0; i < relPathEntries.length; i++)
{
- item = getItemData(parent, relPathEntries[i]);
+ if (i == relPathEntries.length - 1)
+ {
+ item = getItemData(parent, relPathEntries[i], ItemType.NODE);
+ }
+ else
+ {
+ item = getItemData(parent, relPathEntries[i], ItemType.UNKNOWN);
+ }
if (item == null)
{
@@ -948,7 +971,7 @@
try
{
- ItemData item = getItemData(parent, name);
+ ItemData item = getItemData(parent, name, ItemType.NODE);
if (item != null && item.isNode())
{
// node ACL
@@ -1051,8 +1074,8 @@
if (itemData.isNode())
{
checkRemoveChildVersionStorages =
-
!session.getWorkspace().getNodeTypesHolder().isNodeType(Constants.NT_VERSIONHISTORY,
- ((NodeData)itemData).getPrimaryTypeName());
+ !session.getWorkspace().getNodeTypesHolder()
+ .isNodeType(Constants.NT_VERSIONHISTORY,
((NodeData)itemData).getPrimaryTypeName());
}
boolean rootAdded = false;
@@ -1195,7 +1218,7 @@
// We can't remove this VH now.
return;
} // else -- if we has a references in workspace where the VH is being
- // deleted we can remove VH now.
+ // deleted we can remove VH now.
}
}
finally
@@ -1234,7 +1257,7 @@
NodeData nextSibling =
(NodeData)dataManager.getItemData(parentNodeData, new
QPathEntry(cause.getQPath().getName(), cause.getQPath()
- .getIndex() + 1));
+ .getIndex() + 1), ItemType.NODE);
String reindexedId = null;
// repeat till next sibling exists and it's not a caused Node (deleted or moved
to) or just
@@ -1266,7 +1289,7 @@
// next...
nextSibling =
(NodeData)dataManager.getItemData(parentNodeData, new
QPathEntry(nextSibling.getQPath().getName(),
- nextSibling.getQPath().getIndex() + 1));
+ nextSibling.getQPath().getIndex() + 1), ItemType.NODE);
}
return changes;
@@ -1585,12 +1608,11 @@
{
Collection<ItemDefinitionData> mandatoryItemDefs =
-
session.getWorkspace().getNodeTypesHolder().getManadatoryItemDefs(nData.getPrimaryTypeName(),
- nData.getMixinTypeNames());
+ session.getWorkspace().getNodeTypesHolder()
+ .getManadatoryItemDefs(nData.getPrimaryTypeName(),
nData.getMixinTypeNames());
for (ItemDefinitionData itemDefinitionData : mandatoryItemDefs)
{
-
- if (getItemData(nData, new QPathEntry(itemDefinitionData.getName(), 0)) ==
null)
+ if (getItemData(nData, new QPathEntry(itemDefinitionData.getName(), 0),
ItemType.UNKNOWN) == null)
{
throw new ConstraintViolationException("Mandatory item " +
itemDefinitionData.getName()
+ " not found. Node [" + nData.getQPath().getAsString() + "
primary type: "
@@ -1647,7 +1669,7 @@
{
ItemData persisted =
transactionableManager.getItemData(parent,
rstate.getData().getQPath().getEntries()[rstate.getData()
- .getQPath().getEntries().length - 1]);
+ .getQPath().getEntries().length - 1],
ItemType.getItemType(rstate.getData()));
if (persisted != null)
{
@@ -1684,7 +1706,8 @@
if (parent != null)
{
QPathEntry[] path = item.getQPath().getEntries();
- persisted = transactionableManager.getItemData(parent, path[path.length -
1]);
+ persisted =
+ transactionableManager.getItemData(parent, path[path.length - 1],
ItemType.getItemType(item));
} // else, the item has an invalid state, will be throwed on save
}
@@ -1704,7 +1727,9 @@
if (parent != null)
{
QPathEntry[] path = pooled.getData().getQPath().getEntries();
- persisted = transactionableManager.getItemData(parent,
path[path.length - 1]);
+ persisted =
+ transactionableManager.getItemData(parent, path[path.length -
1],
+ ItemType.getItemType(pooled.getData()));
} // else, the item has an invalid state, will be throwed on save
}
if (persisted != null)
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -32,6 +32,7 @@
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.lock.SessionLockManager;
import org.exoplatform.services.jcr.impl.core.lock.WorkspaceLockManager;
import org.exoplatform.services.jcr.impl.core.nodetype.NodeTypeImpl;
@@ -938,7 +939,7 @@
// Check for node with destAbsPath name in session
NodeImpl destNode =
(NodeImpl)dataManager.getItem((NodeData)destParentNode.getData(), new
QPathEntry(destNodePath
- .getInternalPath().getName(), 0), false);
+ .getInternalPath().getName(), 0), false, ItemType.NODE);
if (destNode != null)
{
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/WorkspaceImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/WorkspaceImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/WorkspaceImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -27,6 +27,7 @@
import org.exoplatform.services.jcr.dataflow.PlainChangesLogImpl;
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.nodetype.NodeTypeImpl;
import org.exoplatform.services.jcr.impl.core.nodetype.NodeTypeManagerImpl;
import org.exoplatform.services.jcr.impl.core.query.QueryManagerFactory;
@@ -197,7 +198,7 @@
NodeImpl destNode =
(NodeImpl)session.getTransientNodesManager().getItem((NodeData)destParentNode.getData(),
- new QPathEntry(destNodePath.getInternalPath().getName(), 0), false);
+ new QPathEntry(destNodePath.getInternalPath().getName(), 0), false,
ItemType.NODE);
if (destNode != null)
{
@@ -428,7 +429,7 @@
// Check for node with destAbsPath name in session
NodeImpl destNode =
(NodeImpl)session.getTransientNodesManager().getItem((NodeData)destParentNode.getData(),
- new QPathEntry(destNodePath.getInternalPath().getName(), 0), false);
+ new QPathEntry(destNodePath.getInternalPath().getName(), 0), false,
ItemType.NODE);
if (destNode != null)
{
@@ -523,7 +524,7 @@
// Check for node with destAbsPath name in session
NodeImpl destNode =
(NodeImpl)session.getTransientNodesManager().getItem((NodeData)destParentNode.getData(),
- new QPathEntry(destNodePath.getInternalPath().getName(), 0), false);
+ new QPathEntry(destNodePath.getInternalPath().getName(), 0), false,
ItemType.NODE);
ItemState changesItemState = null;
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/FileSystemLockPersister.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/FileSystemLockPersister.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/FileSystemLockPersister.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -31,6 +31,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
@@ -183,7 +184,8 @@
if (lockedNodeData != null)
{
PropertyData dataLockIsDeep =
- (PropertyData)dataManager.getItemData(lockedNodeData, new
QPathEntry(Constants.JCR_LOCKISDEEP, 0));
+ (PropertyData)dataManager.getItemData(lockedNodeData, new
QPathEntry(Constants.JCR_LOCKISDEEP, 0),
+ ItemType.PROPERTY);
if (dataLockIsDeep != null)
{
@@ -193,7 +195,8 @@
}
PropertyData dataLockOwner =
- (PropertyData)dataManager.getItemData(lockedNodeData, new
QPathEntry(Constants.JCR_LOCKOWNER, 0));
+ (PropertyData)dataManager.getItemData(lockedNodeData, new
QPathEntry(Constants.JCR_LOCKOWNER, 0),
+ ItemType.PROPERTY);
if (dataLockOwner != null)
plainChangesLog.add(ItemState.createDeletedState(new
TransientPropertyData(QPath.makeChildPath(
lockedNodeData.getQPath(), Constants.JCR_LOCKOWNER),
dataLockOwner.getIdentifier(), 0,
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockManagerImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockManagerImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockManagerImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -44,6 +44,7 @@
import org.exoplatform.services.jcr.impl.core.NodeImpl;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientItemData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
@@ -703,12 +704,14 @@
new PlainChangesLogImpl(new ArrayList<ItemState>(),
SystemIdentity.SYSTEM, ExtendedEvent.UNLOCK);
ItemData lockOwner =
- copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKOWNER, 1)));
+ copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKOWNER, 1),
+ ItemType.PROPERTY));
changesLog.add(ItemState.createDeletedState(lockOwner));
ItemData lockIsDeep =
- copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKISDEEP, 1)));
+ copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKISDEEP, 1),
+ ItemType.PROPERTY));
changesLog.add(ItemState.createDeletedState(lockIsDeep));
// lock probably removed by other thread
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -41,6 +41,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.lock.LockRemover;
import org.exoplatform.services.jcr.impl.core.lock.SessionLockManager;
import org.exoplatform.services.jcr.impl.dataflow.TransientItemData;
@@ -267,7 +268,7 @@
configureJDBCCacheLoader(config.getLockManager());
cache = factory.createCache(config.getLockManager());
-
+
Fqn<String> rootFqn = Fqn.fromElements(config.getUniqueName());
shareable =
@@ -1114,7 +1115,8 @@
new PlainChangesLogImpl(new ArrayList<ItemState>(),
SystemIdentity.SYSTEM, ExtendedEvent.UNLOCK);
ItemData lockOwner =
- copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKOWNER, 1)));
+ copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKOWNER, 1),
+ ItemType.PROPERTY));
//TODO EXOJCR-412, should be refactored in future.
//Skip removing, because that lock was removed in other node of cluster.
@@ -1126,7 +1128,8 @@
changesLog.add(ItemState.createDeletedState(lockOwner));
ItemData lockIsDeep =
- copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKISDEEP, 1)));
+ copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKISDEEP, 1),
+ ItemType.PROPERTY));
//TODO EXOJCR-412, should be refactored in future.
//Skip removing, because that lock was removed in other node of cluster.
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/jdbc/CacheableJDBCLockManagerImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/jdbc/CacheableJDBCLockManagerImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/jdbc/CacheableJDBCLockManagerImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -40,6 +40,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.lock.LockRemover;
import org.exoplatform.services.jcr.impl.core.lock.SessionLockManager;
import org.exoplatform.services.jcr.impl.core.lock.jbosscache.CacheableLockManager;
@@ -895,7 +896,7 @@
List<LockData> locksData = new ArrayList<LockData>();
for (String nodeId : nodesId)
{
- LockData lockData = (LockData)cache.get(makeLockFqn((String)nodeId),
LOCK_DATA);
+ LockData lockData = (LockData)cache.get(makeLockFqn(nodeId), LOCK_DATA);
if (lockData != null)
{
locksData.add(lockData);
@@ -949,7 +950,8 @@
new PlainChangesLogImpl(new ArrayList<ItemState>(),
SystemIdentity.SYSTEM, ExtendedEvent.UNLOCK);
ItemData lockOwner =
- copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKOWNER, 1)));
+ copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKOWNER, 1),
+ ItemType.PROPERTY));
//TODO EXOJCR-412, should be refactored in future.
//Skip removing, because that lock was removed in other node of cluster.
@@ -961,7 +963,8 @@
changesLog.add(ItemState.createDeletedState(lockOwner));
ItemData lockIsDeep =
- copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKISDEEP, 1)));
+ copyItemData((PropertyData)dataManager.getItemData(nData, new
QPathEntry(Constants.JCR_LOCKISDEEP, 1),
+ ItemType.PROPERTY));
//TODO EXOJCR-412, should be refactored in future.
//Skip removing, because that lock was removed in other node of cluster.
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/ItemAutocreator.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/ItemAutocreator.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/ItemAutocreator.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -33,6 +33,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.value.BaseValue;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
@@ -117,13 +118,13 @@
{
final ItemData pdata =
avoidCheckExistedChildItems ? null : targetDataManager.getItemData(parent,
new QPathEntry(
- ndef.getName(), 0));
+ ndef.getName(), 0), ItemType.NODE);
if (pdata == null && !addedNodes.contains(ndef.getName()) || pdata !=
null && !pdata.isNode())
{
final TransientNodeData childNodeData =
- TransientNodeData.createNodeData(parent, ndef.getName(),
ndef.getDefaultPrimaryType(), IdGenerator
- .generate());
+ TransientNodeData.createNodeData(parent, ndef.getName(),
ndef.getDefaultPrimaryType(),
+ IdGenerator.generate());
changes.add(ItemState.createAddedState(childNodeData, false));
changes.addAll(makeAutoCreatedItems(childNodeData,
childNodeData.getPrimaryTypeName(),
targetDataManager, owner).getAllStates());
@@ -162,7 +163,7 @@
final ItemData pdata =
avoidCheckExistedChildItems ? null : targetDataManager.getItemData(parent,
new QPathEntry(
- pdef.getName(), 0));
+ pdef.getName(), 0), ItemType.PROPERTY);
if (pdata == null && !addedProperties.contains(pdef.getName()) ||
pdata != null && pdata.isNode())
{
@@ -171,8 +172,8 @@
if (listAutoCreateValue != null)
{
final TransientPropertyData propertyData =
- TransientPropertyData.createPropertyData(parent, pdef.getName(),
pdef.getRequiredType(), pdef
- .isMultiple(), listAutoCreateValue);
+ TransientPropertyData.createPropertyData(parent, pdef.getName(),
pdef.getRequiredType(),
+ pdef.isMultiple(), listAutoCreateValue);
changes.add(ItemState.createAddedState(propertyData));
addedProperties.add(pdef.getName());
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeDataManagerImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeDataManagerImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/NodeTypeDataManagerImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -38,6 +38,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.LocationFactory;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import
org.exoplatform.services.jcr.impl.core.nodetype.registration.NodeDefinitionComparator;
import org.exoplatform.services.jcr.impl.core.nodetype.registration.NodeTypeConverter;
import
org.exoplatform.services.jcr.impl.core.nodetype.registration.NodeTypeDataPersister;
@@ -700,7 +701,8 @@
// update primary type
final PropertyData item =
- (PropertyData)this.dataManager.getItemData(nodeData, new
QPathEntry(Constants.JCR_PRIMARYTYPE, 1));
+ (PropertyData)this.dataManager.getItemData(nodeData, new
QPathEntry(Constants.JCR_PRIMARYTYPE, 1),
+ ItemType.PROPERTY);
final TransientPropertyData primaryTypeData =
new TransientPropertyData(item.getQPath(), item.getIdentifier(),
item.getPersistedVersion(), item.getType(),
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/AbstractItemDefinitionAccessProvider.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/AbstractItemDefinitionAccessProvider.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/AbstractItemDefinitionAccessProvider.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -30,6 +30,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
import org.exoplatform.services.jcr.impl.dataflow.ValueDataConvertor;
@@ -71,7 +72,7 @@
protected List<ValueData> loadPropertyValues(NodeData parentNode, InternalQName
propertyName)
throws RepositoryException
{
- ItemData property = dataManager.getItemData(parentNode, new
QPathEntry(propertyName, 1));
+ ItemData property = dataManager.getItemData(parentNode, new
QPathEntry(propertyName, 1), ItemType.PROPERTY);
if (property != null)
{
if (property.isNode())
@@ -344,8 +345,8 @@
writeBoolean(changesLog, itemDefinition, Constants.JCR_MANDATORY,
nodeDefinitionData.isMandatory());
- writeString(changesLog, itemDefinition, Constants.JCR_ONPARENTVERSION,
OnParentVersionAction
- .nameFromValue(nodeDefinitionData.getOnParentVersion()));
+ writeString(changesLog, itemDefinition, Constants.JCR_ONPARENTVERSION,
+ OnParentVersionAction.nameFromValue(nodeDefinitionData.getOnParentVersion()));
}
protected void writeName(PlainChangesLog changesLog, NodeData parentNode,
InternalQName propertyName,
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/JCRNodeTypeDataPersister.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/JCRNodeTypeDataPersister.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/JCRNodeTypeDataPersister.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -41,6 +41,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataRemoveVisitor;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
@@ -139,7 +140,8 @@
return false;
}
- NodeData nodeTypeData = (NodeData)dataManager.getItemData(nodeTypeStorageRoot, new
QPathEntry(nodeTypeName, 1));
+ NodeData nodeTypeData =
+ (NodeData)dataManager.getItemData(nodeTypeStorageRoot, new
QPathEntry(nodeTypeName, 1), ItemType.NODE);
return nodeTypeData != null;
}
@@ -274,7 +276,7 @@
validatate();
NodeData nodeTypeData =
- (NodeData)dataManager.getItemData(nodeTypeStorageRoot, new
QPathEntry(nodeType.getName(), 1));
+ (NodeData)dataManager.getItemData(nodeTypeStorageRoot, new
QPathEntry(nodeType.getName(), 1), ItemType.NODE);
ItemDataRemoveVisitor removeVisitor = new ItemDataRemoveVisitor(dataManager,
nodeTypeStorageRoot.getQPath());
nodeTypeData.accept(removeVisitor);
@@ -293,7 +295,8 @@
if (jcrSystem != null)
{
NodeData jcrNodetypes =
- (NodeData)dataManager.getItemData(jcrSystem, new
QPathEntry(Constants.JCR_NODETYPES, 1));
+ (NodeData)dataManager.getItemData(jcrSystem, new
QPathEntry(Constants.JCR_NODETYPES, 1),
+ ItemType.NODE);
if (jcrNodetypes == null)
{
this.nodeTypeStorageRoot = initNodetypesRoot(jcrSystem, addACL);
@@ -331,7 +334,7 @@
return null;
}
//Searching nodeType root
- ItemData nodeType = dataManager.getItemData(nodeTypeStorageRoot, new
QPathEntry(nodeTypeName, 1));
+ ItemData nodeType = dataManager.getItemData(nodeTypeStorageRoot, new
QPathEntry(nodeTypeName, 1), ItemType.NODE);
if (nodeType == null)
throw new NoSuchNodeTypeException("Node type definition " +
nodeTypeName.getAsString() + "not found");
if (!nodeType.isNode())
@@ -395,7 +398,8 @@
}
// remove first
NodeData removeNodeTypeData =
- (NodeData)dataManager.getItemData(nodeTypeStorageRoot, new
QPathEntry(nodeTypeData.getName(), 1));
+ (NodeData)dataManager.getItemData(nodeTypeStorageRoot, new
QPathEntry(nodeTypeData.getName(), 1),
+ ItemType.NODE);
if (removeNodeTypeData != null)
{
ItemDataRemoveVisitor removeVisitor =
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/NodeDefinitionComparator.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/NodeDefinitionComparator.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/NodeDefinitionComparator.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -29,6 +29,7 @@
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.nodetype.ItemAutocreator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -75,6 +76,7 @@
this.affectedNodes = affectedNodes;
}
+ @Override
public PlainChangesLog compare(NodeTypeData registeredNodeType, NodeDefinitionData[]
ancestorDefinition,
NodeDefinitionData[] recipientDefinition) throws ConstraintViolationException,
RepositoryException
{
@@ -114,7 +116,8 @@
{
for (NodeData nodeData : nodesData)
{
- ItemData child = dataConsumer.getItemData(nodeData, new
QPathEntry(nodeDefinitionData.getName(), 0));
+ ItemData child =
+ dataConsumer.getItemData(nodeData, new
QPathEntry(nodeDefinitionData.getName(), 0), ItemType.NODE);
if (child == null || !child.isNode())
{
throw new ConstraintViolationException("Fail to add mandatory and not
auto-created "
@@ -153,8 +156,8 @@
{
for (int i = 0; i < requiredPrimaryTypes.length; i++)
{
- if (!nodeTypeDataManager.isNodeType(requiredPrimaryTypes[i],
child.getPrimaryTypeName(), child
- .getMixinTypeNames()))
+ if (!nodeTypeDataManager.isNodeType(requiredPrimaryTypes[i],
child.getPrimaryTypeName(),
+ child.getMixinTypeNames()))
{
StringBuffer buffer = new StringBuffer();
buffer.append("Fail to change ");
@@ -189,8 +192,8 @@
{
for (int i = 0; i < requiredPrimaryTypes.length; i++)
{
- if (!nodeTypeDataManager.isNodeType(requiredPrimaryTypes[i],
child.getPrimaryTypeName(), child
- .getMixinTypeNames()))
+ if (!nodeTypeDataManager.isNodeType(requiredPrimaryTypes[i],
child.getPrimaryTypeName(),
+ child.getMixinTypeNames()))
{
StringBuffer buffer = new StringBuffer();
buffer.append("Fail to change ");
@@ -388,7 +391,8 @@
{
ItemData child =
- dataConsumer.getItemData(nodeData, new
QPathEntry(recipientDefinitionData.getName(), 0));
+ dataConsumer.getItemData(nodeData, new
QPathEntry(recipientDefinitionData.getName(), 0),
+ ItemType.NODE);
if (child == null || !child.isNode())
{
String message =
@@ -410,7 +414,8 @@
{
ItemData child =
- dataConsumer.getItemData(nodeData, new
QPathEntry(recipientDefinitionData.getName(), 0));
+ dataConsumer.getItemData(nodeData, new
QPathEntry(recipientDefinitionData.getName(), 0),
+ ItemType.NODE);
if (child == null || !child.isNode())
{
String message =
@@ -423,8 +428,8 @@
}
}
}
- if (!Arrays.deepEquals(ancestorDefinitionData.getRequiredPrimaryTypes(),
recipientDefinitionData
- .getRequiredPrimaryTypes()))
+ if (!Arrays.deepEquals(ancestorDefinitionData.getRequiredPrimaryTypes(),
+ recipientDefinitionData.getRequiredPrimaryTypes()))
{
checkRequiredPrimaryType(registeredNodeType, nodesData,
ancestorDefinitionData.getRequiredPrimaryTypes(),
recipientDefinitionData, allRecipientDefinition);
@@ -483,7 +488,8 @@
for (NodeData nodeData : nodesData)
{
ItemData child =
- dataConsumer.getItemData(nodeData, new
QPathEntry(removeNodeDefinitionData.getName(), 0));
+ dataConsumer.getItemData(nodeData, new
QPathEntry(removeNodeDefinitionData.getName(), 0),
+ ItemType.NODE);
if (child != null && child.isNode())
{
throw new ConstraintViolationException("Can't remove node
definition "
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/PropertyDefinitionComparator.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/PropertyDefinitionComparator.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/PropertyDefinitionComparator.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -32,6 +32,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.LocationFactory;
import org.exoplatform.services.jcr.impl.core.nodetype.ItemAutocreator;
import org.exoplatform.services.jcr.impl.core.value.ValueConstraintsMatcher;
@@ -84,6 +85,7 @@
this.locationFactory = locationFactory;
}
+ @Override
public PlainChangesLog compare(NodeTypeData registeredNodeType,
PropertyDefinitionData[] ancestorDefinition,
PropertyDefinitionData[] recipientDefinition) throws RepositoryException
{
@@ -158,7 +160,8 @@
else
{
PropertyData propertyData =
- (PropertyData)dataConsumer.getItemData(nodeData, new
QPathEntry(recipientDefinitionData.getName(), 0));
+ (PropertyData)dataConsumer.getItemData(nodeData, new
QPathEntry(recipientDefinitionData.getName(), 0),
+ ItemType.PROPERTY);
if (propertyData.getValues().size() > 1)
{
throw new ConstraintViolationException("Can't change property
definition "
@@ -275,7 +278,8 @@
else
{
PropertyData propertyData =
- (PropertyData)dataConsumer.getItemData(nodeData, new
QPathEntry(recipientDefinitionData.getName(), 0));
+ (PropertyData)dataConsumer.getItemData(nodeData, new
QPathEntry(recipientDefinitionData.getName(), 0),
+ ItemType.PROPERTY);
if (recipientDefinitionData.getRequiredType() != PropertyType.UNDEFINED
&& propertyData.getType() !=
recipientDefinitionData.getRequiredType())
{
@@ -329,7 +333,8 @@
else
{
PropertyData propertyData =
- (PropertyData)dataConsumer.getItemData(nodeData, new
QPathEntry(recipientDefinitionData.getName(), 0));
+ (PropertyData)dataConsumer.getItemData(nodeData, new
QPathEntry(recipientDefinitionData.getName(), 0),
+ ItemType.PROPERTY);
checkValueConstraints(recipientDefinitionData, propertyData);
}
}
@@ -388,7 +393,8 @@
&& newPropertyDefinitionData.isAutoCreated())
{
ItemData pdata =
- dataConsumer.getItemData(nodeData, new
QPathEntry(newPropertyDefinitionData.getName(), 0));
+ dataConsumer.getItemData(nodeData, new
QPathEntry(newPropertyDefinitionData.getName(), 0),
+ ItemType.UNKNOWN);
if (pdata == null || (pdata != null && pdata.isNode()))
{
PlainChangesLog autoCreatedChanges =
@@ -521,8 +527,8 @@
checkRequiredType(registeredNodeType, recipientDefinitionData,
allRecipientDefinition, nodesData);
}
// ValueConstraints
- if (!Arrays.deepEquals(ancestorDefinitionData.getValueConstraints(),
recipientDefinitionData
- .getValueConstraints()))
+ if (!Arrays.deepEquals(ancestorDefinitionData.getValueConstraints(),
+ recipientDefinitionData.getValueConstraints()))
{
checkValueConstraints(registeredNodeType, recipientDefinitionData,
allRecipientDefinition, nodesData);
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/AggregateRuleImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/AggregateRuleImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/AggregateRuleImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -27,6 +27,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.LocationFactory;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.util.Text;
import org.w3c.dom.CharacterData;
import org.w3c.dom.Node;
@@ -408,7 +409,7 @@
else
{
cne = new ArrayList<NodeData>();
- ItemData item = ism.getItemData(nodeState, currentName);
+ ItemData item = ism.getItemData(nodeState, currentName, ItemType.NODE);
if (item != null && item.isNode())
{
cne.add((NodeData)item);
@@ -501,7 +502,7 @@
for (Iterator it = nodeStates.iterator(); it.hasNext();)
{
NodeData state = (NodeData)it.next();
- ItemData prop = ism.getItemData(state, new QPathEntry(propertyName, 1));
+ ItemData prop = ism.getItemData(state, new QPathEntry(propertyName, 1),
ItemType.PROPERTY);
if (prop != null && !prop.isNode())
{
propStates.add(prop);
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/LuceneQueryBuilder.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/LuceneQueryBuilder.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/LuceneQueryBuilder.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -20,9 +20,9 @@
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
+import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Query;
-import org.apache.lucene.search.BooleanClause.Occur;
import org.exoplatform.commons.utils.ISO8601;
import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
import org.exoplatform.services.jcr.dataflow.ItemDataConsumer;
@@ -34,6 +34,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.LocationFactory;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
import org.exoplatform.services.jcr.impl.core.query.AndQueryNode;
@@ -760,6 +761,7 @@
final int[] transform = new int[]{TransformConstants.TRANSFORM_NONE};
node.acceptOperands(new DefaultQueryNodeVisitor()
{
+ @Override
public Object visit(PropertyFunctionQueryNode node, Object data)
{
if (node.getFunctionName().equals(PropertyFunctionQueryNode.LOWER_CASE))
@@ -1030,7 +1032,7 @@
ItemData item = parent;
for (int i = 0; i < relPathEntries.length; i++)
{
- item = sharedItemMgr.getItemData(parent, relPathEntries[i]);
+ item = sharedItemMgr.getItemData(parent, relPathEntries[i],
ItemType.UNKNOWN);
if (item == null)
break;
@@ -1333,6 +1335,6 @@
values.add(literal);
log.debug("Using literal " + literal + " as is.");
}
- return (String[])values.toArray(new String[values.size()]);
+ return values.toArray(new String[values.size()]);
}
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/NodeIndexer.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/NodeIndexer.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/NodeIndexer.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -34,6 +34,7 @@
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.LocationFactory;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.value.ValueFactoryImpl;
import org.exoplatform.services.jcr.impl.util.SecurityHelper;
import org.slf4j.Logger;
@@ -302,7 +303,8 @@
// seems nt:file found, try for nt:resource props
PropertyData pmime =
- (PropertyData)stateProvider.getItemData(node, new
QPathEntry(Constants.JCR_MIMETYPE, 0));
+ (PropertyData)stateProvider.getItemData(node, new
QPathEntry(Constants.JCR_MIMETYPE, 0),
+ ItemType.PROPERTY);
if (pmime != null)
{
// ok, have a reader
@@ -310,7 +312,7 @@
// otherwise read prop with values from DM
PropertyData propData =
prop.getValues().size() > 0 ? prop :
((PropertyData)stateProvider.getItemData(node, new QPathEntry(
- Constants.JCR_DATA, 0)));
+ Constants.JCR_DATA, 0), ItemType.PROPERTY));
// index if have jcr:mimeType sibling for this binary property only
try
@@ -328,7 +330,8 @@
// check the jcr:encoding property
PropertyData encProp =
- (PropertyData)stateProvider.getItemData(node, new
QPathEntry(Constants.JCR_ENCODING, 0));
+ (PropertyData)stateProvider.getItemData(node, new
QPathEntry(Constants.JCR_ENCODING, 0),
+ ItemType.PROPERTY);
String encoding = null;
if (encProp != null)
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SharedFieldSortComparator.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SharedFieldSortComparator.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SharedFieldSortComparator.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -16,13 +16,6 @@
*/
package org.exoplatform.services.jcr.impl.core.query.lucene;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.jcr.InvalidItemStateException;
-import javax.jcr.RepositoryException;
-
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.ScoreDoc;
@@ -39,9 +32,17 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.JCRPath;
import org.exoplatform.services.jcr.impl.core.LocationFactory;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jcr.InvalidItemStateException;
+import javax.jcr.RepositoryException;
+
/**
* Implements a <code>SortComparator</code> which knows how to sort on a
lucene
* field that contains values for multiple properties.
@@ -96,6 +97,7 @@
* @return a <code>ScoreDocComparator</code> for the
* @throws IOException if an error occurs while reading from the index.
*/
+ @Override
public ScoreDocComparator newComparator(IndexReader reader, String relPath) throws
IOException
{
@@ -126,6 +128,7 @@
/**
* @throws UnsupportedOperationException always.
*/
+ @Override
protected Comparable getComparable(String termtext)
{
throw new UnsupportedOperationException();
@@ -317,7 +320,7 @@
ItemData parent = ism.getItemData(uuid);
if (!parent.isNode())
throw new InvalidItemStateException();
- ItemData property = getItemData((NodeData)parent, relPath);
+ ItemData property = getItemData((NodeData)parent, relPath,
ItemType.PROPERTY);
if (property != null)
{
if (property.isNode())
@@ -339,7 +342,7 @@
}
}
- private ItemData getItemData(NodeData parent, QPathEntry name) throws
RepositoryException
+ private ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType)
throws RepositoryException
{
if (name.getName().equals(JCRPath.PARENT_RELPATH) &&
name.getNamespace().equals(Constants.NS_DEFAULT_URI))
{
@@ -349,19 +352,26 @@
return ism.getItemData(parent.getParentIdentifier());
}
- return ism.getItemData(parent, name);
+ return ism.getItemData(parent, name, itemType);
}
- private ItemData getItemData(NodeData parent, QPath relPath) throws
RepositoryException
+ private ItemData getItemData(NodeData parent, QPath relPath, ItemType itemType) throws
RepositoryException
{
- QPathEntry[] relPathEntries =relPath.getEntries();
//relPath.getRelPath(relPath.getDepth());
+ QPathEntry[] relPathEntries = relPath.getEntries();
//relPath.getRelPath(relPath.getDepth());
ItemData item = parent;
for (int i = 0; i < relPathEntries.length; i++)
{
- item = getItemData(parent, relPathEntries[i]);
+ if (i == relPathEntries.length - 1)
+ {
+ item = getItemData(parent, relPathEntries[i], itemType);
+ }
+ else
+ {
+ item = getItemData(parent, relPathEntries[i], ItemType.UNKNOWN);
+ }
if (item == null)
break;
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -31,6 +31,7 @@
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.value.BaseValue;
import org.exoplatform.services.jcr.impl.dataflow.AbstractItemDataCopyVisitor;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
@@ -271,8 +272,8 @@
false, new TransientValueData(Constants.NT_VERSIONEDCHILD));
ValueData vh =
- ((PropertyData)dataManager.getItemData(node, new
QPathEntry(Constants.JCR_VERSIONHISTORY, 0)))
- .getValues().get(0);
+ ((PropertyData)dataManager.getItemData(node, new
QPathEntry(Constants.JCR_VERSIONHISTORY, 0),
+ ItemType.PROPERTY)).getValues().get(0);
PropertyData pd =
TransientPropertyData.createPropertyData(frozenNode,
Constants.JCR_CHILDVERSIONHISTORY,
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -28,6 +28,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
import org.exoplatform.services.jcr.impl.dataflow.AbstractItemDataCopyVisitor;
@@ -112,6 +113,7 @@
mergeSession.getAccessManager(), mergeSession.getUserState());
}
+ @Override
protected void validateReferential(NodeData node) throws RepositoryException
{
// no REFERENCE validation here
@@ -299,7 +301,8 @@
SessionDataManager mergeDataManager =
mergeSession.getTransientNodesManager();
PropertyData isCheckedOutProperty =
- (PropertyData)mergeDataManager.getItemData(mergeNode, new
QPathEntry(Constants.JCR_ISCHECKEDOUT, 0));
+ (PropertyData)mergeDataManager.getItemData(mergeNode, new
QPathEntry(Constants.JCR_ISCHECKEDOUT, 0),
+ ItemType.PROPERTY);
try
{
@@ -361,9 +364,9 @@
QPath mergePath = mergeNode.getQPath();
TransientNodeData mergedNode =
- new TransientNodeData(mergePath, mergeNode.getIdentifier(),
mergeNode.getPersistedVersion(), corrNode
- .getPrimaryTypeName(), corrNode.getMixinTypeNames(),
mergeNode.getOrderNumber(), mergeNode
- .getParentIdentifier(), mergeNode.getACL());
+ new TransientNodeData(mergePath, mergeNode.getIdentifier(),
mergeNode.getPersistedVersion(),
+ corrNode.getPrimaryTypeName(), corrNode.getMixinTypeNames(),
mergeNode.getOrderNumber(),
+ mergeNode.getParentIdentifier(), mergeNode.getACL());
if (!mergeNode.getIdentifier().equals(corrNode.getIdentifier()))
{
@@ -393,8 +396,8 @@
for (PropertyData cp : mergeChildProps)
{
TransientPropertyData existed =
- new TransientPropertyData(cp.getQPath(), cp.getIdentifier(),
cp.getPersistedVersion(), cp.getType(), cp
- .getParentIdentifier(), cp.isMultiValued(), copyValues(cp));
+ new TransientPropertyData(cp.getQPath(), cp.getIdentifier(),
cp.getPersistedVersion(), cp.getType(),
+ cp.getParentIdentifier(), cp.isMultiValued(), copyValues(cp));
changes.add(new ItemState(existed, ItemState.DELETED, true,
mergedNode.getQPath(), true));
existedProps.put(existed.getQPath().getName(), existed);
@@ -405,8 +408,8 @@
PropertyData existed = existedProps.get(cp.getQPath().getName());
TransientPropertyData mcp =
new TransientPropertyData(QPath.makeChildPath(mergePath,
cp.getQPath().getName()), existed != null
- ? existed.getIdentifier() : cp.getIdentifier(), existed != null ?
existed.getPersistedVersion() : cp
- .getPersistedVersion(), cp.getType(), mergedNode.getIdentifier(),
cp.isMultiValued(), copyValues(cp));
+ ? existed.getIdentifier() : cp.getIdentifier(), existed != null ?
existed.getPersistedVersion()
+ : cp.getPersistedVersion(), cp.getType(), mergedNode.getIdentifier(),
cp.isMultiValued(), copyValues(cp));
changes.add(new ItemState(mcp, ItemState.ADDED, true, mergedNode.getQPath(),
true));
}
@@ -462,7 +465,7 @@
SessionDataManager dmanager = session.getTransientNodesManager();
PropertyData bvProperty =
- (PropertyData)dmanager.getItemData(node, new
QPathEntry(Constants.JCR_BASEVERSION, 0));
+ (PropertyData)dmanager.getItemData(node, new
QPathEntry(Constants.JCR_BASEVERSION, 0), ItemType.PROPERTY);
try
{
@@ -486,8 +489,8 @@
SessionDataManager mergeDataManager = mergeSession.getTransientNodesManager();
NodeTypeDataManager mergeNtManager =
mergeSession.getWorkspace().getNodeTypesHolder();
- if (mergeNtManager.isNodeType(Constants.MIX_REFERENCEABLE,
mergeNode.getPrimaryTypeName(), mergeNode
- .getMixinTypeNames()))
+ if (mergeNtManager.isNodeType(Constants.MIX_REFERENCEABLE,
mergeNode.getPrimaryTypeName(),
+ mergeNode.getMixinTypeNames()))
{
// by UUID
return (NodeData)corrDataManager.getItemData(mergeNode.getIdentifier());
@@ -499,15 +502,15 @@
final QPath ancesstorPath = mergePath.makeAncestorPath(i);
NodeData mergeAncestor = (NodeData)mergeDataManager.getItemData(ancesstorPath);
if (mergeAncestor != null
- && mergeNtManager.isNodeType(Constants.MIX_REFERENCEABLE,
mergeAncestor.getPrimaryTypeName(), mergeAncestor
- .getMixinTypeNames()))
+ && mergeNtManager.isNodeType(Constants.MIX_REFERENCEABLE,
mergeAncestor.getPrimaryTypeName(),
+ mergeAncestor.getMixinTypeNames()))
{
NodeData corrAncestor =
(NodeData)corrDataManager.getItemData(mergeAncestor.getIdentifier());
if (corrAncestor != null)
{
QPathEntry[] relPathEntries = mergePath.getRelPath(mergePath.getDepth() -
i);
- return (NodeData)corrDataManager.getItemData(corrAncestor,
relPathEntries);
+ return (NodeData)corrDataManager.getItemData(corrAncestor, relPathEntries,
ItemType.NODE);
}
}
}
@@ -523,7 +526,8 @@
SessionDataManager mergeDataManager = mergeSession.getTransientNodesManager();
PropertyData predecessorsProperty =
- (PropertyData)mergeDataManager.getItemData(mergeVersion, new
QPathEntry(Constants.JCR_PREDECESSORS, 0));
+ (PropertyData)mergeDataManager.getItemData(mergeVersion, new
QPathEntry(Constants.JCR_PREDECESSORS, 0),
+ ItemType.PROPERTY);
if (predecessorsProperty != null)
for (ValueData pv : predecessorsProperty.getValues())
@@ -568,7 +572,8 @@
SessionDataManager mergeDataManager = mergeSession.getTransientNodesManager();
PropertyData successorsProperty =
- (PropertyData)mergeDataManager.getItemData(mergeVersion, new
QPathEntry(Constants.JCR_SUCCESSORS, 0));
+ (PropertyData)mergeDataManager.getItemData(mergeVersion, new
QPathEntry(Constants.JCR_SUCCESSORS, 0),
+ ItemType.PROPERTY);
if (successorsProperty != null)
for (ValueData sv : successorsProperty.getValues())
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -30,6 +30,7 @@
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.AbstractItemDataCopyVisitor;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataCopyVisitor;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataRemoveVisitor;
@@ -127,6 +128,7 @@
userSession.getUserState());
}
+ @Override
protected void validateReferential(NodeData node) throws RepositoryException
{
// no REFERENCE validation here
@@ -221,7 +223,7 @@
log.debug("Restore: " + nodePath.getAsString() + ",
removeExisting=" + removeExisting);
PropertyData frozenIdentifier =
- (PropertyData)dataManager.getItemData(frozen, new
QPathEntry(Constants.JCR_FROZENUUID, 1));
+ (PropertyData)dataManager.getItemData(frozen, new
QPathEntry(Constants.JCR_FROZENUUID, 1), ItemType.PROPERTY);
String fidentifier = null;
NodeData existing = null;
@@ -275,6 +277,7 @@
.getAccessManager(), userSession.getUserState());
}
+ @Override
protected boolean isRemoveDescendant(ItemData item) throws
RepositoryException
{
return item.getQPath().isDescendantOf(removedRoot.getQPath())
@@ -310,10 +313,12 @@
}
PropertyData frozenPrimaryType =
- (PropertyData)dataManager.getItemData(frozen, new
QPathEntry(Constants.JCR_FROZENPRIMARYTYPE, 0));
+ (PropertyData)dataManager.getItemData(frozen, new
QPathEntry(Constants.JCR_FROZENPRIMARYTYPE, 0),
+ ItemType.PROPERTY);
PropertyData frozenMixinTypes =
- (PropertyData)dataManager.getItemData(frozen, new
QPathEntry(Constants.JCR_FROZENMIXINTYPES, 0));
+ (PropertyData)dataManager.getItemData(frozen, new
QPathEntry(Constants.JCR_FROZENMIXINTYPES, 0),
+ ItemType.PROPERTY);
InternalQName[] mixins = null;
if (frozenMixinTypes != null)
@@ -422,7 +427,7 @@
String vhIdentifier =
new String(((PropertyData)dataManager.getItemData(frozen, new QPathEntry(
- Constants.JCR_CHILDVERSIONHISTORY,
0))).getValues().get(0).getAsByteArray());
+ Constants.JCR_CHILDVERSIONHISTORY, 0),
ItemType.PROPERTY)).getValues().get(0).getAsByteArray());
NodeData cHistory = null;
if ((cHistory = (NodeData)dataManager.getItemData(vhIdentifier)) == null)
@@ -446,7 +451,7 @@
{
versionableIdentifier =
new String(((PropertyData)dataManager.getItemData(childHistory, new
QPathEntry(
- Constants.JCR_VERSIONABLEUUID,
0))).getValues().get(0).getAsByteArray());
+ Constants.JCR_VERSIONABLEUUID, 0),
ItemType.PROPERTY)).getValues().get(0).getAsByteArray());
}
catch (IOException e)
@@ -477,7 +482,8 @@
// not found, gets last version (by time of creation) and restore it
NodeData lastVersionData = childHistory.getLastVersionData();
NodeData cvFrozen =
- (NodeData)dataManager.getItemData(lastVersionData, new
QPathEntry(Constants.JCR_FROZENNODE, 1));
+ (NodeData)dataManager.getItemData(lastVersionData, new
QPathEntry(Constants.JCR_FROZENNODE, 1),
+ ItemType.NODE);
ItemDataRestoreVisitor restoreVisitor =
new ItemDataRestoreVisitor(currentNode(), qname, childHistory,
userSession, removeExisting, changes);
@@ -524,8 +530,8 @@
try
{
jcrUuid =
- new String(((PropertyData)dataManager.getItemData(frozen, new
QPathEntry(Constants.JCR_UUID, 0)))
- .getValues().get(0).getAsByteArray());
+ new String(((PropertyData)dataManager.getItemData(frozen, new
QPathEntry(Constants.JCR_UUID, 0),
+ ItemType.PROPERTY)).getValues().get(0).getAsByteArray());
}
catch (IOException e)
@@ -540,7 +546,7 @@
// try to use existing node uuid, otherwise to generate one new
existing =
(NodeData)dataManager.getItemData(currentNode(), new
QPathEntry(frozen.getQPath().getName(), frozen
- .getQPath().getIndex()));
+ .getQPath().getIndex()), ItemType.NODE);
if (existing != null)
{
jcrUuid = existing.getIdentifier();
@@ -595,7 +601,8 @@
{
// current C in the workspace will be left unchanged,
NodeData existed =
- (NodeData)dataManager.getItemData(currentNode(), new
QPathEntry(frozen.getQPath().getName(), 0));
+ (NodeData)dataManager.getItemData(currentNode(), new
QPathEntry(frozen.getQPath().getName(), 0),
+ ItemType.NODE);
if (existed != null)
{
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/VersionHistoryImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/VersionHistoryImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/VersionHistoryImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -109,7 +109,8 @@
checkValid();
PropertyData versionableUuid =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_VERSIONABLEUUID, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_VERSIONABLEUUID, 0),
+ ItemType.PROPERTY);
if (versionableUuid != null)
{
@@ -139,7 +140,8 @@
checkValid();
VersionImpl version =
- (VersionImpl)dataManager.getItem(nodeData(), new
QPathEntry(Constants.JCR_ROOTVERSION, 0), true);
+ (VersionImpl)dataManager
+ .getItem(nodeData(), new QPathEntry(Constants.JCR_ROOTVERSION, 0), true,
ItemType.NODE);
if (version == null)
{
throw new VersionException("There are no root version in the version
history " + getPath());
@@ -187,7 +189,8 @@
JCRName jcrVersionName = locationFactory.parseJCRName(versionName);
VersionImpl version =
- (VersionImpl)dataManager.getItem(nodeData(), new
QPathEntry(jcrVersionName.getInternalName(), 1), pool);
+ (VersionImpl)dataManager.getItem(nodeData(), new
QPathEntry(jcrVersionName.getInternalName(), 1), pool,
+ ItemType.NODE);
if (version == null)
{
throw new VersionException("There are no version with name '" +
versionName + "' in the version history "
@@ -360,13 +363,13 @@
// and point successor to predecessor directly
PropertyData successorsData =
- (PropertyData)dataManager
- .getItemData((NodeData)version.getData(), new
QPathEntry(Constants.JCR_SUCCESSORS, 0));
+ (PropertyData)dataManager.getItemData((NodeData)version.getData(),
+ new QPathEntry(Constants.JCR_SUCCESSORS, 0), ItemType.PROPERTY);
// jcr:predecessors
PropertyData predecessorsData =
(PropertyData)dataManager.getItemData((NodeData)version.getData(), new
QPathEntry(Constants.JCR_PREDECESSORS,
- 0));
+ 0), ItemType.PROPERTY);
try
{
@@ -538,7 +541,8 @@
InternalQName labelQName = jcrLabelName.getInternalName();
PropertyData vldata =
- (PropertyData)dataManager.getItemData(getData().getVersionLabelsData(), new
QPathEntry(labelQName, 0));
+ (PropertyData)dataManager.getItemData(getData().getVersionLabelsData(), new
QPathEntry(labelQName, 0),
+ ItemType.PROPERTY);
if (vldata != null)
{
@@ -592,8 +596,8 @@
// A reference to V is added to the jcr:successors property of
// each of the versions identified in Vs jcr:predecessors property.
List<ValueData> predecessors =
- ((PropertyData)dataManager.getItemData(versionableNodeData, new
QPathEntry(Constants.JCR_PREDECESSORS, 0)))
- .getValues();
+ ((PropertyData)dataManager.getItemData(versionableNodeData, new
QPathEntry(Constants.JCR_PREDECESSORS, 0),
+ ItemType.PROPERTY)).getValues();
List<ValueData> predecessorsNew = new ArrayList<ValueData>();
for (ValueData predecessorValue : predecessors)
{
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/VersionImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/VersionImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/VersionImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -80,7 +80,8 @@
{
checkValid();
- PropertyData pdata = (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_CREATED, 0));
+ PropertyData pdata =
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_CREATED, 0), ItemType.PROPERTY);
if (pdata == null)
{
@@ -99,7 +100,8 @@
checkValid();
PropertyData successorsData =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_SUCCESSORS, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_SUCCESSORS, 0),
+ ItemType.PROPERTY);
if (successorsData == null)
{
@@ -142,7 +144,8 @@
checkValid();
PropertyData predecessorsData =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_PREDECESSORS, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_PREDECESSORS, 0),
+ ItemType.PROPERTY);
if (predecessorsData == null)
{
@@ -184,7 +187,8 @@
ValueData successorRef = new TransientValueData(new
Identifier(successorIdentifier));
PropertyData successorsProp =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_SUCCESSORS, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_SUCCESSORS, 0),
+ ItemType.PROPERTY);
if (successorsProp == null)
{
@@ -230,7 +234,8 @@
ValueData predeccessorRef = new TransientValueData(new
Identifier(predeccessorIdentifier));
PropertyData predeccessorsProp =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_PREDECESSORS, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_PREDECESSORS, 0),
+ ItemType.PROPERTY);
if (predeccessorsProp == null)
{
@@ -271,7 +276,8 @@
void removeSuccessor(String successorIdentifier, PlainChangesLog changesLog) throws
RepositoryException
{
PropertyData successorsProp =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_SUCCESSORS, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_SUCCESSORS, 0),
+ ItemType.PROPERTY);
if (successorsProp != null)
{
List<ValueData> newSuccessors = new ArrayList<ValueData>();
@@ -310,7 +316,8 @@
{
PropertyData successorsProp =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_SUCCESSORS, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_SUCCESSORS, 0),
+ ItemType.PROPERTY);
if (successorsProp != null)
{
@@ -350,7 +357,8 @@
void removePredecessor(String predecessorIdentifier, PlainChangesLog changesLog)
throws RepositoryException
{
PropertyData predeccessorsProp =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_PREDECESSORS, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_PREDECESSORS, 0),
+ ItemType.PROPERTY);
if (predeccessorsProp != null)
{
@@ -390,7 +398,8 @@
{
PropertyData predeccessorsProp =
- (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_PREDECESSORS, 0));
+ (PropertyData)dataManager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_PREDECESSORS, 0),
+ ItemType.PROPERTY);
if (predeccessorsProp != null)
{
@@ -460,7 +469,8 @@
DataManager dmanager =
restoreSession.getTransientNodesManager().getTransactManager();
- NodeData frozenData = (NodeData)dmanager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_FROZENNODE, 1));
+ NodeData frozenData =
+ (NodeData)dmanager.getItemData(nodeData(), new
QPathEntry(Constants.JCR_FROZENNODE, 1), ItemType.NODE);
ItemDataRestoreVisitor restoreVisitor =
new ItemDataRestoreVisitor(destParent, name, historyData, restoreSession,
removeExisting, delegatedLog);
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ACLInheritanceSupportedWorkspaceDataManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ACLInheritanceSupportedWorkspaceDataManager.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/ACLInheritanceSupportedWorkspaceDataManager.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -25,6 +25,7 @@
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -165,9 +166,9 @@
/**
* {@inheritDoc}
*/
- public ItemData getItemData(NodeData parent, QPathEntry name) throws
RepositoryException
+ public ItemData getItemData(NodeData parent, QPathEntry name, ItemType itemType)
throws RepositoryException
{
- final ItemData item = persistentManager.getItemData(parent, name);
+ final ItemData item = persistentManager.getItemData(parent, name, itemType);
return item != null && item.isNode() ? initACL(parent, (NodeData)item) :
item;
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -25,6 +25,7 @@
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.JBossCacheWorkspaceStorageCache;
import org.exoplatform.services.jcr.impl.storage.SystemDataContainerHolder;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCStorageConnection;
@@ -337,6 +338,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public int getChildNodesCount(NodeData parent) throws RepositoryException
{
if (cache.isEnabled())
@@ -354,6 +356,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public List<NodeData> getChildNodesData(NodeData nodeData) throws
RepositoryException
{
return getChildNodesData(nodeData, false);
@@ -362,6 +365,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public List<PropertyData> getChildPropertiesData(NodeData nodeData) throws
RepositoryException
{
List<PropertyData> childs = getChildPropertiesData(nodeData, false);
@@ -376,11 +380,12 @@
/**
* {@inheritDoc}
*/
- public ItemData getItemData(NodeData parentData, QPathEntry name) throws
RepositoryException
+ @Override
+ public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType)
throws RepositoryException
{
// 1. Try from cache
- ItemData data = getCachedItemData(parentData, name);
+ ItemData data = getCachedItemData(parentData, name, itemType);
// 2. Try from container
if (data == null)
@@ -392,10 +397,10 @@
request.start();
// Try first to get the value from the cache since a
// request could have been launched just before
- data = getCachedItemData(parentData, name);
+ data = getCachedItemData(parentData, name, itemType);
if (data == null)
{
- data = getPersistedItemData(parentData, name);
+ data = getPersistedItemData(parentData, name, itemType);
}
else if (!data.isNode())
{
@@ -418,6 +423,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public ItemData getItemData(String identifier) throws RepositoryException
{
// 2. Try from cache
@@ -459,6 +465,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public List<PropertyData> getReferencesData(String identifier, boolean
skipVersionStorage)
throws RepositoryException
{
@@ -468,6 +475,7 @@
/**
* {@inheritDoc}
*/
+ @Override
public List<PropertyData> listChildPropertiesData(NodeData nodeData) throws
RepositoryException
{
return listChildPropertiesData(nodeData, false);
@@ -501,13 +509,16 @@
* parent
* @param name
* Item name
+ * @param itemType
+ * item type
* @return ItemData
* @throws RepositoryException
* error
*/
- protected ItemData getCachedItemData(NodeData parentData, QPathEntry name) throws
RepositoryException
+ protected ItemData getCachedItemData(NodeData parentData, QPathEntry name, ItemType
itemType)
+ throws RepositoryException
{
- return cache.get(parentData.getIdentifier(), name);
+ return cache.get(parentData.getIdentifier(), name, itemType);
}
/**
@@ -647,13 +658,16 @@
* parent
* @param name
* Item name
+ * @param itemType
+ * item type
* @return ItemData
* @throws RepositoryException
* error
*/
- protected ItemData getPersistedItemData(NodeData parentData, QPathEntry name) throws
RepositoryException
+ protected ItemData getPersistedItemData(NodeData parentData, QPathEntry name, ItemType
itemType)
+ throws RepositoryException
{
- ItemData data = super.getItemData(parentData, name);
+ ItemData data = super.getItemData(parentData, name, itemType);
if (data != null && cache.isEnabled())
{
cache.put(data);
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/LinkedWorkspaceStorageCacheImpl.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/LinkedWorkspaceStorageCacheImpl.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/LinkedWorkspaceStorageCacheImpl.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -30,6 +30,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -41,10 +42,10 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Timer;
import java.util.TimerTask;
import java.util.WeakHashMap;
-import java.util.Map.Entry;
import java.util.concurrent.Semaphore;
import java.util.concurrent.locks.ReentrantLock;
@@ -880,13 +881,19 @@
/**
* {@inheritDoc}
*/
- public ItemData get(final String parentId, final QPathEntry name)
+ public ItemData get(final String parentId, final QPathEntry name, ItemType itemType)
{
if (enabled && parentId != null && name != null)
{
try
{
- return getItem(parentId, name);
+ ItemData itemData = getItem(parentId, name);
+ if (itemData != null && itemType.isSuitableFor(itemData))
+ {
+ return itemData;
+ }
+
+ return null;
}
catch (Exception e)
{
@@ -906,9 +913,8 @@
protected void putItem(final ItemData data)
{
cache.put(new CacheId(data.getIdentifier()), new CacheValue(data,
System.currentTimeMillis() + liveTime));
- cache.put(new CacheQPath(data.getParentIdentifier(), data.getQPath()), new
CacheValue(data, System
- .currentTimeMillis()
- + liveTime));
+ cache.put(new CacheQPath(data.getParentIdentifier(), data.getQPath()),
+ new CacheValue(data, System.currentTimeMillis() + liveTime));
}
/**
@@ -1052,7 +1058,7 @@
{
if (enabled && parentData != null && childItems != null)
{ // TODO don't check parentData !=
- // null && childItems != null
+ // null && childItems != null
String logInfo = null;
if (LOG.isDebugEnabled())
@@ -1114,7 +1120,7 @@
{
if (enabled && parentData != null && childItems != null)
{ // TODO don't check parentData !=
- // null && childItems != null
+ // null && childItems != null
String logInfo = null;
if (LOG.isDebugEnabled())
@@ -1165,7 +1171,7 @@
{
if (enabled && parentData != null && childItems != null)
{ // TODO don't check parentData !=
- // null && childItems != null
+ // null && childItems != null
String logInfo = null;
if (LOG.isDebugEnabled())
@@ -1643,8 +1649,7 @@
{
writeLock.unlock();
}
- LOG
- .info(name + " : set liveTime=" + liveTime + "ms. New value will
be applied to items cached from this moment.");
+ LOG.info(name + " : set liveTime=" + liveTime + "ms. New value will
be applied to items cached from this moment.");
}
/**
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/VersionableWorkspaceDataManager.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -31,6 +31,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -127,17 +128,17 @@
* {@inheritDoc}
*/
@Override
- public ItemData getItemData(NodeData parentData, QPathEntry name) throws
RepositoryException
+ public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType)
throws RepositoryException
{
if (parentData != null)
{
final QPath ipath = QPath.makeChildPath(parentData.getQPath(), name);
if (isSystemDescendant(ipath) && !this.equals(versionDataManager))
{
- return versionDataManager.getItemData(parentData, name);
+ return versionDataManager.getItemData(parentData, name, itemType);
}
}
- return super.getItemData(parentData, name);
+ return super.getItemData(parentData, name, itemType);
}
/**
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -39,6 +39,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
import org.exoplatform.services.jcr.impl.storage.SystemDataContainerHolder;
import org.exoplatform.services.jcr.storage.WorkspaceDataContainer;
@@ -577,7 +578,9 @@
NodeData parent = (NodeData)acon.getItemData(node.getParentIdentifier());
QPathEntry myName =
node.getQPath().getEntries()[node.getQPath().getEntries().length - 1];
ItemData sibling =
- acon.getItemData(parent, new QPathEntry(myName.getNamespace(), myName.getName(),
myName.getIndex() - 1));
+ acon.getItemData(parent, new QPathEntry(myName.getNamespace(), myName.getName(),
myName.getIndex() - 1),
+ ItemType.NODE);
+
if (sibling == null || !sibling.isNode())
{
throw new InvalidItemStateException("Node can't be saved " +
node.getQPath().getAsString()
@@ -796,12 +799,13 @@
/**
* {@inheritDoc}
*/
- public ItemData getItemData(final NodeData parentData, final QPathEntry name) throws
RepositoryException
+ public ItemData getItemData(final NodeData parentData, final QPathEntry name, ItemType
itemType)
+ throws RepositoryException
{
final WorkspaceStorageConnection con = dataContainer.openConnection();
try
{
- return con.getItemData(parentData, name);
+ return con.getItemData(parentData, name, itemType);
}
finally
{
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -33,6 +33,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
@@ -140,7 +141,7 @@
protected final Fqn<String> childPropsList;
protected final Fqn<String> rootFqn;
-
+
/**
* Node order comparator for getChildNodes().
*/
@@ -322,8 +323,8 @@
// if expiration is used, set appropriate factory with with timeout set via
configuration (or default one 15minutes)
this.cache =
- new BufferedJBossCache(parentCache, useExpiration, wsConfig.getCache()
- .getParameterTime(JBOSSCACHE_EXPIRATION, JBOSSCACHE_EXPIRATION_DEFAULT));
+ new BufferedJBossCache(parentCache, useExpiration,
wsConfig.getCache().getParameterTime(JBOSSCACHE_EXPIRATION,
+ JBOSSCACHE_EXPIRATION_DEFAULT));
this.itemsRoot = Fqn.fromRelativeElements(rootFqn, ITEMS);
this.childNodes = Fqn.fromRelativeElements(rootFqn, CHILD_NODES);
@@ -605,12 +606,16 @@
/**
* {@inheritDoc}
*/
- public ItemData get(String parentId, QPathEntry name)
+ public ItemData get(String parentId, QPathEntry name, ItemType itemType)
{
+ String itemId = null;
+ if (itemType == ItemType.NODE || itemType == ItemType.UNKNOWN)
+ {
+ // try as node first
+ itemId = (String)cache.get(makeChildFqn(childNodes, parentId, name), ITEM_ID);
+ }
- // get as node first
- String itemId = (String)cache.get(makeChildFqn(childNodes, parentId, name),
ITEM_ID);
- if (itemId == null)
+ if (itemType == ItemType.PROPERTY || itemType == ItemType.UNKNOWN && itemId
== null)
{
// try as property
itemId = (String)cache.get(makeChildFqn(childProps, parentId, name), ITEM_ID);
@@ -755,7 +760,7 @@
}
return count;
}
-
+
/**
* {@inheritDoc}
*/
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/LocalWorkspaceStorageDataManagerProxy.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/LocalWorkspaceStorageDataManagerProxy.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/LocalWorkspaceStorageDataManagerProxy.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -31,6 +31,7 @@
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.value.ValueFactoryImpl;
import org.exoplatform.services.jcr.impl.dataflow.AbstractPersistedValueData;
import org.exoplatform.services.jcr.impl.dataflow.TransientItemData;
@@ -102,9 +103,9 @@
/**
* {@inheritDoc}
*/
- public ItemData getItemData(NodeData parentData, QPathEntry name) throws
RepositoryException
+ public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType)
throws RepositoryException
{
- return copyItemData(storageDataManager.getItemData(parentData, name));
+ return copyItemData(storageDataManager.getItemData(parentData, name, itemType));
}
/**
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/SessionChangesLog.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/SessionChangesLog.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/SessionChangesLog.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -27,6 +27,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import java.util.ArrayList;
import java.util.Collection;
@@ -299,13 +300,29 @@
* Get ItemState by parent and item name.
*
* @param parentData
+ * parent
* @param name
+ * item name
+ * @param itemType
+ * item type
* @return
* @throws IllegalPathException
*/
- public ItemState getItemState(NodeData parentData, QPathEntry name) throws
IllegalPathException
+ public ItemState getItemState(NodeData parentData, QPathEntry name, ItemType itemType)
throws IllegalPathException
{
- return index.get(new ParentIDQPathBasedKey(parentData.getIdentifier(), name));
+ if (itemType != ItemType.UNKNOWN)
+ {
+ return index.get(new ParentIDQPathBasedKey(parentData.getIdentifier(), name,
itemType));
+ }
+ else
+ {
+ ItemState state = index.get(new
ParentIDQPathBasedKey(parentData.getIdentifier(), name, ItemType.NODE));
+ if (state == null)
+ {
+ state = index.get(new ParentIDQPathBasedKey(parentData.getIdentifier(), name,
ItemType.PROPERTY));
+ }
+ return state;
+ }
}
/**
@@ -718,6 +735,8 @@
*/
private final String parentIdentifier;
+ private final ItemType itemType;
+
/**
* KeyParentUUIDQPath constructor.
*
@@ -728,6 +747,7 @@
{
this.name =
item.getData().getQPath().getEntries()[item.getData().getQPath().getEntries().length -
1];
this.parentIdentifier = item.getData().getParentIdentifier();
+ this.itemType = ItemType.getItemType(item.getData());
}
/**
@@ -738,10 +758,11 @@
* @param name
* item name
*/
- ParentIDQPathBasedKey(String parentIdentifier, QPathEntry name)
+ ParentIDQPathBasedKey(String parentIdentifier, QPathEntry name, ItemType itemType)
{
this.name = name;
this.parentIdentifier = parentIdentifier;
+ this.itemType = itemType;
}
/**
@@ -756,6 +777,7 @@
result = prime * result + name.getNamespace().hashCode();
result = prime * result + name.getIndex();
result = prime * result + (parentIdentifier == null ? 0 :
parentIdentifier.hashCode());
+ result = prime * result + itemType.ordinal();
return result;
}
@@ -782,6 +804,7 @@
else if (!name.getName().equals(other.name.getName())
|| !name.getNamespace().equals(other.name.getNamespace()) || name.getIndex()
!= other.name.getIndex())
return false;
+
if (parentIdentifier == null)
{
if (other.parentIdentifier != null)
@@ -789,6 +812,15 @@
}
else if (!parentIdentifier.equals(other.parentIdentifier))
return false;
+
+ if (itemType == null)
+ {
+ if (other.itemType != null)
+ return false;
+ }
+ else if (!itemType.equals(other.itemType))
+ return false;
+
return true;
}
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/session/TransactionableDataManager.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -29,6 +29,7 @@
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.LocalWorkspaceDataManagerStub;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -212,12 +213,12 @@
/**
* {@inheritDoc}
*/
- public ItemData getItemData(NodeData parentData, QPathEntry name) throws
RepositoryException
+ public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType)
throws RepositoryException
{
ItemData data = null;
if (txStarted())
{
- ItemState state = transactionLog.getItemState(parentData, name);
+ ItemState state = transactionLog.getItemState(parentData, name, itemType);
if (state != null)
{
data = state.getData();
@@ -229,7 +230,7 @@
}
else
{
- return storageDataManager.getItemData(parentData, name);
+ return storageDataManager.getItemData(parentData, name, itemType);
}
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/version/VersionHistoryDataHelper.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/version/VersionHistoryDataHelper.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/version/VersionHistoryDataHelper.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -29,6 +29,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
@@ -139,7 +140,8 @@
NodeData vData = (NodeData)dataManager.getItemData(getIdentifier());
- NodeData rootVersion = (NodeData)dataManager.getItemData(vData, new
QPathEntry(Constants.JCR_ROOTVERSION, 0));
+ NodeData rootVersion =
+ (NodeData)dataManager.getItemData(vData, new
QPathEntry(Constants.JCR_ROOTVERSION, 0), ItemType.NODE);
List<NodeData> vChilds = new ArrayList<NodeData>();
@@ -165,7 +167,8 @@
for (NodeData vd : versionsData)
{
- PropertyData createdData = (PropertyData)dataManager.getItemData(vd, new
QPathEntry(Constants.JCR_CREATED, 0));
+ PropertyData createdData =
+ (PropertyData)dataManager.getItemData(vd, new
QPathEntry(Constants.JCR_CREATED, 0), ItemType.PROPERTY);
if (createdData == null)
throw new VersionException("jcr:created is not found, version: " +
vd.getQPath().getAsString());
@@ -191,12 +194,12 @@
public NodeData getVersionData(InternalQName versionQName) throws VersionException,
RepositoryException
{
- return (NodeData)dataManager.getItemData(this, new QPathEntry(versionQName, 0));
+ return (NodeData)dataManager.getItemData(this, new QPathEntry(versionQName, 0),
ItemType.NODE);
}
public NodeData getVersionLabelsData() throws VersionException, RepositoryException
{
- return (NodeData)dataManager.getItemData(this, new
QPathEntry(Constants.JCR_VERSIONLABELS, 0));
+ return (NodeData)dataManager.getItemData(this, new
QPathEntry(Constants.JCR_VERSIONLABELS, 0), ItemType.NODE);
}
public List<PropertyData> getVersionLabels() throws VersionException,
RepositoryException
@@ -242,7 +245,7 @@
NodeData rootItem = (NodeData)dataManager.getItemData(Constants.SYSTEM_UUID);
NodeData versionStorageData =
- (NodeData)dataManager.getItemData(rootItem, new
QPathEntry(Constants.JCR_VERSIONSTORAGE, 1)); // Constants
+ (NodeData)dataManager.getItemData(rootItem, new
QPathEntry(Constants.JCR_VERSIONSTORAGE, 1), ItemType.NODE); // Constants
// Make versionStorageData transient
if (!(versionStorageData instanceof TransientNodeData))
versionStorageData =
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/inmemory/InmemoryStorageConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/inmemory/InmemoryStorageConnection.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/inmemory/InmemoryStorageConnection.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -24,6 +24,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.JCRPath;
import org.exoplatform.services.jcr.storage.WorkspaceStorageConnection;
import org.exoplatform.services.log.ExoLogger;
@@ -62,9 +63,16 @@
identifiers = new TreeMap();
}
- public ItemData getItemData(NodeData parentData, QPathEntry name) throws
RepositoryException, IllegalStateException
+ public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType)
throws RepositoryException,
+ IllegalStateException
{
- return getItemData(QPath.makeChildPath(parentData.getQPath(), name));
+ ItemData itemData = getItemData(QPath.makeChildPath(parentData.getQPath(), name));
+ if (itemData != null && itemType.isSuitableFor(itemData))
+ {
+ return itemData;
+ }
+
+ return null;
}
public ItemData getItemData(QPath qPath) throws RepositoryException,
IllegalStateException
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 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -33,6 +33,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.ByteArrayPersistedValueData;
import
org.exoplatform.services.jcr.impl.dataflow.persistent.CleanableFilePersistedValueData;
import org.exoplatform.services.jcr.impl.dataflow.persistent.StreamPersistedValueData;
@@ -1042,16 +1043,20 @@
return getItemByIdentifier(getInternalId(identifier));
}
- public ItemData getItemData(NodeData parentData, QPathEntry name) throws
RepositoryException, IllegalStateException
+ /**
+ * {@inheritDoc}
+ */
+ public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType)
throws RepositoryException,
+ IllegalStateException
{
if (parentData != null)
{
- return getItemByName(parentData, getInternalId(parentData.getIdentifier()),
name);
+ return getItemByName(parentData, getInternalId(parentData.getIdentifier()),
name, itemType);
}
// it's a root node
- return getItemByName(null, null, name);
+ return getItemByName(null, null, name, itemType);
}
/**
@@ -1200,30 +1205,47 @@
* - parent container internal id (depends on Multi/Single DB)
* @param name
* - item name
+ * @param itemType
+ * - item type
* @return - ItemData instance
* @throws RepositoryException
* Repository error
* @throws IllegalStateException
* if connection is closed
*/
- protected ItemData getItemByName(NodeData parent, String parentId, QPathEntry name)
throws RepositoryException,
- IllegalStateException
+ protected ItemData getItemByName(NodeData parent, String parentId, QPathEntry name,
ItemType itemType)
+ throws RepositoryException, IllegalStateException
{
checkIfOpened();
try
{
- ResultSet item = findItemByName(parentId, name.getAsString(), name.getIndex());
+ ResultSet item = null;
try
{
+ if (itemType != ItemType.PROPERTY)
+ {
+ item = findItemByName(parentId, name.getAsString(), name.getIndex());
+ }
+ else
+ {
+ item = findPropertyByName(parentId, name.getAsString());
+ }
+
if (item.next())
+ {
return itemData(parent.getQPath(), item, item.getInt(COLUMN_CLASS),
parent.getACL());
+ }
+
return null;
}
finally
{
try
{
- item.close();
+ if (item != null)
+ {
+ item.close();
+ }
}
catch (SQLException e)
{
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/SQLExceptionHandler.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/SQLExceptionHandler.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/SQLExceptionHandler.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -22,6 +22,7 @@
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.storage.JCRInvalidItemStateException;
import org.exoplatform.services.jcr.impl.storage.JCRItemExistsException;
@@ -180,7 +181,9 @@
throw ownException;
}
- me = conn.getItemData(parent, new QPathEntry(item.getQPath().getName(),
item.getQPath().getIndex()));
+ me =
+ conn.getItemData(parent, new QPathEntry(item.getQPath().getName(),
item.getQPath().getIndex()),
+ ItemType.getItemType(item));
if (me != null)
{
message += "Item already exists in storage: " + itemInfo;
@@ -261,7 +264,9 @@
throw ownException;
}
- me = conn.getItemData(parent, new QPathEntry(item.getQPath().getName(),
item.getQPath().getIndex()));
+ me =
+ conn.getItemData(parent, new QPathEntry(item.getQPath().getName(),
item.getQPath().getIndex()),
+ ItemType.getItemType(item));
if (me != null)
{
message += "Item already exists in storage: " + itemInfo;
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -20,6 +20,7 @@
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
import org.exoplatform.services.jcr.statistics.JCRStatisticsManager;
import org.exoplatform.services.jcr.statistics.Statistics;
@@ -40,7 +41,7 @@
* Created by The eXo Platform SAS
* Author : Nicolas Filotto
* nicolas.filotto(a)exoplatform.com
- * 26 f�vr. 2010
+ * 26 f�vr. 2010
*/
public class StatisticsJDBCStorageConnection implements WorkspaceStorageConnection
{
@@ -204,7 +205,6 @@
}
}
-
/**
* The nested {@link WorkspaceStorageConnection}
*/
@@ -384,15 +384,16 @@
}
/**
- * @see
org.exoplatform.services.jcr.storage.WorkspaceStorageConnection#getItemData(org.exoplatform.services.jcr.datamodel.NodeData,
org.exoplatform.services.jcr.datamodel.QPathEntry)
+ * {@inheritDoc}
*/
- public ItemData getItemData(NodeData parentData, QPathEntry name) throws
RepositoryException, IllegalStateException
+ public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType)
throws RepositoryException,
+ IllegalStateException
{
Statistics s = ALL_STATISTICS.get(GET_ITEM_DATA_BY_NODE_DATA_NQ_PATH_ENTRY_DESCR);
try
{
s.begin();
- return wcs.getItemData(parentData, name);
+ return wcs.getItemData(parentData, name, itemType);
}
finally
{
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/VersionHistoryRemover.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/VersionHistoryRemover.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/VersionHistoryRemover.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -30,6 +30,7 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.RepositoryImpl;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataRemoveVisitor;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -217,7 +218,8 @@
if (ntManager.isNodeType(Constants.NT_VERSIONEDCHILD,
vhnode.getPrimaryTypeName(), vhnode.getMixinTypeNames()))
{
PropertyData property =
- (PropertyData)dataManager.getItemData(nodeData, new
QPathEntry(Constants.JCR_CHILDVERSIONHISTORY, 1));
+ (PropertyData)dataManager.getItemData(nodeData, new
QPathEntry(Constants.JCR_CHILDVERSIONHISTORY, 1),
+ ItemType.PROPERTY);
if (property == null)
throw new RepositoryException("Property " +
Constants.JCR_CHILDVERSIONHISTORY.getAsString()
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/BaseXmlImporter.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/BaseXmlImporter.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/importing/BaseXmlImporter.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -38,6 +38,7 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.LocationFactory;
import org.exoplatform.services.jcr.impl.core.RepositoryImpl;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.value.ValueFactoryImpl;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataRemoveVisitor;
import org.exoplatform.services.jcr.impl.dataflow.version.VersionHistoryDataHelper;
@@ -228,7 +229,7 @@
ItemData sameNameNode = null;
try
{
- sameNameNode = dataConsumer.getItemData(parentData, new QPathEntry(name, 0));
+ sameNameNode = dataConsumer.getItemData(parentData, new QPathEntry(name, 0),
ItemType.NODE);
}
catch (PathNotFoundException e)
{
@@ -723,7 +724,8 @@
try
{
PropertyData vhpd =
- (PropertyData)dataConsumer.getItemData(mixVersionableNode, new
QPathEntry(Constants.JCR_VERSIONHISTORY, 1));
+ (PropertyData)dataConsumer.getItemData(mixVersionableNode, new
QPathEntry(Constants.JCR_VERSIONHISTORY, 1),
+ ItemType.PROPERTY);
try
{
String vhID = new String(vhpd.getValues().get(0).getAsByteArray());
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -22,6 +22,7 @@
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import java.util.List;
@@ -50,12 +51,14 @@
/**
* Reads <code>ItemData</code> from the storage using item's parent
and name relative the parent
- * location.
+ * location of define type.
*
* @param parentData
* - the item's parent NodeData
* @param name
* - item's path entry (QName + index)
+ * @param itemType
+ * item type
* @return - stored ItemData wich has exact the same path Entry (name+index) inside
the parent; or
* null if not such an item data found
* @throws RepositoryException
@@ -63,7 +66,8 @@
* @throws IllegalStateException
* if connection is closed
*/
- ItemData getItemData(NodeData parentData, QPathEntry name) throws RepositoryException,
IllegalStateException;
+ ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType) throws
RepositoryException,
+ IllegalStateException;
/**
* Reads <code>ItemData</code> from the storage by item identifier.
@@ -93,7 +97,7 @@
* if connection is closed
*/
List<NodeData> getChildNodesData(NodeData parent) throws RepositoryException,
IllegalStateException;
-
+
/**
* Reads count of <code>parent<code/> child nodes.
*
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestGetNode.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestGetNode.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestGetNode.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -20,6 +20,7 @@
import org.exoplatform.services.jcr.JcrImplBaseTest;
+import javax.jcr.Node;
import javax.jcr.PathNotFoundException;
/**
@@ -48,4 +49,17 @@
}
}
+ public void testGetNodeAndPropertyWithSameName() throws Exception
+ {
+ String sameName = "sameName";
+ Node rootNode = session.getRootNode();
+ Node aNode = rootNode.addNode("a");
+ aNode.addNode(sameName);
+ aNode.setProperty(sameName, "aa");
+ session.save();
+
+ assertNotNull(aNode.getProperty(sameName));
+ assertNotNull(aNode.getNode(sameName));
+ }
+
}
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestSessionDataManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestSessionDataManager.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/TestSessionDataManager.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -26,6 +26,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
@@ -34,8 +35,6 @@
import java.util.ArrayList;
import java.util.List;
-import javax.jcr.ItemNotFoundException;
-import javax.jcr.Node;
import javax.jcr.PropertyType;
import javax.jcr.RepositoryException;
@@ -314,7 +313,7 @@
{
// get non-existent data by getItemData(NodeData parent, QPathEntry name)
assertNull(modificationManager.getItemData((NodeData)((NodeImpl)root).getData(),
new QPathEntry("",
- "testgetitemNode", 0)));
+ "testgetitemNode", 0), ItemType.NODE));
// get non-existent data by ItemData getItemData(QPath path)
assertNull(modificationManager.getItemData(QPath.makeChildPath(((NodeImpl)root).getData().getQPath(),
new InternalQName("", "testgetitemNode"))));
@@ -323,7 +322,7 @@
// get data by getItemData(NodeData parent, QPathEntry name)
assertNotNull(modificationManager.getItemData((NodeData)((NodeImpl)root).getData(),
new QPathEntry("",
- "testgetitemNode", 0)));
+ "testgetitemNode", 0), ItemType.NODE));
// get data by ItemData getItemData(QPath path)
assertNotNull(modificationManager.getItemData(QPath.makeChildPath(((NodeImpl)root).getData().getQPath(),
new InternalQName("", "testgetitemNode"))));
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -27,6 +27,7 @@
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.storage.SystemDataContainerHolder;
import org.exoplatform.services.jcr.impl.storage.WorkspaceDataContainerBase;
import org.exoplatform.services.jcr.storage.WorkspaceDataContainer;
@@ -90,6 +91,7 @@
{
Thread thread = new Thread()
{
+ @Override
public void run()
{
try
@@ -147,7 +149,7 @@
{
public void execute() throws Exception
{
- ItemData item = cwdm.getItemData(nodeData, new
QPathEntry("http://www.foo.com", "foo", 0));
+ ItemData item = cwdm.getItemData(nodeData, new
QPathEntry("http://www.foo.com", "foo", 0), ItemType.NODE);
assertNotNull(item);
}
};
@@ -306,9 +308,14 @@
private volatile ItemData itemData;
- public ItemData get(String parentIdentifier, QPathEntry name)
+ public ItemData get(String parentIdentifier, QPathEntry name, ItemType itemType)
{
- return itemData;
+ if (itemData != null && itemType.isSuitableFor(itemData))
+ {
+ return itemData;
+ }
+
+ return null;
}
public ItemData get(String identifier)
@@ -426,17 +433,22 @@
getChildPropertiesDataCalls.incrementAndGet();
return Arrays
.asList((PropertyData)new
PersistedPropertyData("getChildPropertiesData", null, null, 0,
- PropertyType.STRING, false, Arrays
- .asList((ValueData)new ByteArrayPersistedValueData(1,
"foo".getBytes()))));
+ PropertyType.STRING, false,
+ Arrays.asList((ValueData)new ByteArrayPersistedValueData(1,
"foo".getBytes()))));
}
public AtomicInteger getItemDataByNodeDataNQPathEntryCalls = new AtomicInteger();
- public ItemData getItemData(NodeData parentData, QPathEntry name) throws
RepositoryException,
+ public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType
itemType) throws RepositoryException,
IllegalStateException
{
getItemDataByNodeDataNQPathEntryCalls.incrementAndGet();
- return new PersistedNodeData("getItemData", null, null, 0, 1, null,
null, null);
+ if (itemType != ItemType.PROPERTY)
+ {
+ return new PersistedNodeData("getItemData", null, null, 0, 1, null,
null, null);
+ }
+
+ return null;
}
public AtomicInteger getItemDataByIdCalls = new AtomicInteger();
@@ -471,8 +483,8 @@
listChildPropertiesDataCalls.incrementAndGet();
return Arrays
.asList((PropertyData)new
PersistedPropertyData("listChildPropertiesData", null, null, 0,
- PropertyType.STRING, false, Arrays
- .asList((ValueData)new ByteArrayPersistedValueData(1,
"foo".getBytes()))));
+ PropertyType.STRING, false,
+ Arrays.asList((ValueData)new ByteArrayPersistedValueData(1,
"foo".getBytes()))));
}
public void rename(NodeData data) throws RepositoryException,
UnsupportedOperationException,
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestLinkedCacheMultithread.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestLinkedCacheMultithread.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestLinkedCacheMultithread.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -25,6 +25,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.NodeImpl;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
@@ -79,6 +80,7 @@
super.setName(name);
}
+ @Override
public void run()
{
// log.info("START");
@@ -99,7 +101,7 @@
// by parent + name
NodeData n =
(NodeData)cache.get(rndNode.getParentIdentifier(),
rndNode.getQPath().getEntries()[rndNode
- .getQPath().getEntries().length - 1]);
+ .getQPath().getEntries().length - 1], ItemType.NODE);
if (n != null)
assertEquals(rndNode.getIdentifier(), n.getIdentifier());
}
@@ -142,6 +144,7 @@
super.setName(name);
}
+ @Override
public void run()
{
// log.info("START");
@@ -229,6 +232,7 @@
super.setName(name);
}
+ @Override
public void run()
{
// log.info("START");
@@ -280,6 +284,7 @@
this.timeout = timeout;
}
+ @Override
public void run()
{
synchronized (cache)
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspaceStorageCacheBaseCase.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspaceStorageCacheBaseCase.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspaceStorageCacheBaseCase.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -33,6 +33,7 @@
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.NodeImpl;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.util.IdGenerator;
import java.util.ArrayList;
@@ -141,6 +142,7 @@
private WorkspaceStorageCache cache;
+ @Override
public void setUp() throws Exception
{
super.setUp();
@@ -251,15 +253,15 @@
throw e;
}
assertEquals("Cached node " + nodeData1.getQPath().getAsString() + "
is not equals", cache.get(rootUuid,
- nodePath1.getEntries()[nodePath1.getEntries().length - 1]), nodeData1);
+ nodePath1.getEntries()[nodePath1.getEntries().length - 1], ItemType.NODE),
nodeData1);
assertEquals("Cached node " + nodeData2.getQPath().getAsString() + "
is not equals", cache.get(rootUuid,
- nodePath2.getEntries()[nodePath2.getEntries().length - 1]), nodeData2);
+ nodePath2.getEntries()[nodePath2.getEntries().length - 1], ItemType.NODE),
nodeData2);
assertEquals("Cached node " + nodeData1.getIdentifier() + " is not
equals", cache.get(nodeUuid1), nodeData1);
assertEquals("Cached node " + nodeData2.getIdentifier() + " is not
equals", cache.get(nodeUuid2), nodeData2);
assertEquals("Cached property " + propertyPath12.getAsString() + "
is not equals", cache.get(nodeUuid1,
- propertyPath12.getEntries()[propertyPath12.getEntries().length - 1]),
propertyData12);
+ propertyPath12.getEntries()[propertyPath12.getEntries().length - 1],
ItemType.PROPERTY), propertyData12);
assertEquals("Cached property " + propertyData12.getIdentifier() + "
is not equals", cache.get(propertyUuid12),
propertyData12);
}
@@ -300,21 +302,21 @@
}
// prev stuff
assertEquals("Cached " + nodeData1.getQPath().getAsString() + " is
not equals", cache.get(rootUuid, nodePath1
- .getEntries()[nodePath1.getEntries().length - 1]), nodeData1);
+ .getEntries()[nodePath1.getEntries().length - 1], ItemType.NODE), nodeData1);
assertEquals("Cached " + nodeData2.getQPath().getAsString() + " is
not equals", cache.get(rootUuid, nodePath2
- .getEntries()[nodePath2.getEntries().length - 1]), nodeData2);
+ .getEntries()[nodePath2.getEntries().length - 1], ItemType.NODE), nodeData2);
assertEquals("Cached " + propertyData12.getQPath().getAsString() + "
is not equals", cache.get(nodeUuid1,
- propertyPath12.getEntries()[propertyPath12.getEntries().length - 1]),
propertyData12);
+ propertyPath12.getEntries()[propertyPath12.getEntries().length - 1],
ItemType.PROPERTY), propertyData12);
// childs...
// nodes
assertEquals("Cached child node " + nodeData31.getQPath().getAsString() +
" is not equals", cache.get(nodeUuid3,
- nodePath31.getEntries()[nodePath31.getEntries().length - 1]), nodeData31);
+ nodePath31.getEntries()[nodePath31.getEntries().length - 1], ItemType.NODE),
nodeData31);
assertEquals("Cached child node " + nodeData31.getIdentifier() + "
is not equals", cache.get(nodeUuid31),
nodeData31);
assertEquals("Cached child node " + nodeData32.getQPath().getAsString() +
" is not equals", cache.get(nodeUuid3,
- nodePath32.getEntries()[nodePath32.getEntries().length - 1]), nodeData32);
+ nodePath32.getEntries()[nodePath32.getEntries().length - 1], ItemType.NODE),
nodeData32);
assertEquals("Cached child node " + nodeData32.getIdentifier() + "
is not equals", cache.get(nodeUuid32),
nodeData32);
@@ -327,20 +329,24 @@
// props
assertEquals("Cached child property " +
propertyData11.getQPath().getAsString() + " is not equals", cache.get(
- nodeUuid1, propertyPath11.getEntries()[propertyPath11.getEntries().length - 1]),
propertyData11);
+ nodeUuid1, propertyPath11.getEntries()[propertyPath11.getEntries().length - 1],
ItemType.PROPERTY),
+ propertyData11);
assertEquals("Cached child property " + propertyData11.getIdentifier() +
" is not equals", cache
.get(propertyUuid11), propertyData11);
assertEquals("Cached child property " +
propertyData12.getQPath().getAsString() + " is not equals", cache.get(
- nodeUuid1, propertyPath12.getEntries()[propertyPath12.getEntries().length - 1]),
propertyData12);
+ nodeUuid1, propertyPath12.getEntries()[propertyPath12.getEntries().length - 1],
ItemType.PROPERTY),
+ propertyData12);
assertEquals("Cached child property " + propertyData12.getIdentifier() +
" is not equals", cache
.get(propertyUuid12), propertyData12);
assertEquals("Cached child property " +
propertyData21.getQPath().getAsString() + " is not equals", cache.get(
- nodeUuid2, propertyPath21.getEntries()[propertyPath21.getEntries().length - 1]),
propertyData21);
+ nodeUuid2, propertyPath21.getEntries()[propertyPath21.getEntries().length - 1],
ItemType.PROPERTY),
+ propertyData21);
assertEquals("Cached child property " + propertyData21.getIdentifier() +
" is not equals", cache
.get(propertyUuid21), propertyData21);
assertEquals("Cached child property " +
propertyData22.getQPath().getAsString() + " is not equals", cache.get(
- nodeUuid2, propertyPath22.getEntries()[propertyPath22.getEntries().length - 1]),
propertyData22);
+ nodeUuid2, propertyPath22.getEntries()[propertyPath22.getEntries().length - 1],
ItemType.PROPERTY),
+ propertyData22);
assertEquals("Cached child property " + propertyData22.getIdentifier() +
" is not equals", cache
.get(propertyUuid22), propertyData22);
@@ -393,20 +399,24 @@
}
// props, prev stuff
assertEquals("Cached child property " +
propertyData11.getQPath().getAsString() + " is not equals", cache.get(
- nodeUuid1, propertyPath11.getEntries()[propertyPath11.getEntries().length - 1]),
propertyData11);
+ nodeUuid1, propertyPath11.getEntries()[propertyPath11.getEntries().length - 1],
ItemType.PROPERTY),
+ propertyData11);
assertEquals("Cached child property " + propertyData11.getIdentifier() +
" is not equals", cache
.get(propertyUuid11), propertyData11);
assertEquals("Cached child property " +
propertyData12.getQPath().getAsString() + " is not equals", cache.get(
- nodeUuid1, propertyPath12.getEntries()[propertyPath12.getEntries().length - 1]),
propertyData12);
+ nodeUuid1, propertyPath12.getEntries()[propertyPath12.getEntries().length - 1],
ItemType.PROPERTY),
+ propertyData12);
assertEquals("Cached child property " + propertyData12.getIdentifier() +
" is not equals", cache
.get(propertyUuid12), propertyData12);
assertEquals("Cached child property " +
propertyData21.getQPath().getAsString() + " is not equals", cache.get(
- nodeUuid2, propertyPath21.getEntries()[propertyPath21.getEntries().length - 1]),
propertyData21);
+ nodeUuid2, propertyPath21.getEntries()[propertyPath21.getEntries().length - 1],
ItemType.PROPERTY),
+ propertyData21);
assertEquals("Cached child property " + propertyData21.getIdentifier() +
" is not equals", cache
.get(propertyUuid21), propertyData21);
assertEquals("Cached child property " +
propertyData22.getQPath().getAsString() + " is not equals", cache.get(
- nodeUuid2, propertyPath22.getEntries()[propertyPath22.getEntries().length - 1]),
propertyData22);
+ nodeUuid2, propertyPath22.getEntries()[propertyPath22.getEntries().length - 1],
ItemType.PROPERTY),
+ propertyData22);
assertEquals("Cached child property " + propertyData22.getIdentifier() +
" is not equals", cache
.get(propertyUuid22), propertyData22);
@@ -429,22 +439,25 @@
// check
assertEquals("Cached child property " +
propertyData11.getQPath().getAsString() + " is not equals", cache.get(
- nodeUuid1, propertyPath11.getEntries()[propertyPath11.getEntries().length - 1]),
propertyData11);
+ nodeUuid1, propertyPath11.getEntries()[propertyPath11.getEntries().length - 1],
ItemType.PROPERTY),
+ propertyData11);
assertEquals("Cached child property " + propertyData11.getIdentifier() +
" is not equals", cache
.get(propertyUuid11), propertyData11);
// here
assertNull("Child property " + propertyData12.getQPath().getAsString() +
" is not in the cache", cache.get(
- nodeUuid1, propertyPath12.getEntries()[propertyPath12.getEntries().length -
1]));
+ nodeUuid1, propertyPath12.getEntries()[propertyPath12.getEntries().length - 1],
ItemType.PROPERTY));
assertNull("Child property " + propertyData12.getQPath().getAsString() +
" is not in the cache", cache
.get(propertyUuid12));
assertEquals("Cached child property " +
propertyData21.getQPath().getAsString() + " is not equals", cache.get(
- nodeUuid2, propertyPath21.getEntries()[propertyPath21.getEntries().length - 1]),
propertyData21);
+ nodeUuid2, propertyPath21.getEntries()[propertyPath21.getEntries().length - 1],
ItemType.PROPERTY),
+ propertyData21);
assertEquals("Cached child property " + propertyData21.getIdentifier() +
" is not equals", cache
.get(propertyUuid21), propertyData21);
assertEquals("Cached child property " +
propertyData22.getQPath().getAsString() + " is not equals", cache.get(
- nodeUuid2, propertyPath22.getEntries()[propertyPath22.getEntries().length - 1]),
propertyData22);
+ nodeUuid2, propertyPath22.getEntries()[propertyPath22.getEntries().length - 1],
ItemType.PROPERTY),
+ propertyData22);
assertEquals("Cached child property " + propertyData22.getIdentifier() +
" is not equals", cache
.get(propertyUuid22), propertyData22);
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCHWDCTest.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCHWDCTest.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCHWDCTest.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -32,11 +32,11 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
import org.exoplatform.services.jcr.impl.dataflow.session.TransactionableDataManager;
-import
org.exoplatform.services.jcr.impl.dataflow.session.WorkspaceStorageDataManagerProxy;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
import org.exoplatform.services.jcr.storage.WorkspaceStorageConnection;
import org.exoplatform.services.jcr.util.IdGenerator;
@@ -142,7 +142,7 @@
con = wdContainer.openConnection();
try
{
- NodeData storedNode = (NodeData)con.getItemData(rootData, new
QPathEntry(nodeName, 1));
+ NodeData storedNode = (NodeData)con.getItemData(rootData, new
QPathEntry(nodeName, 1), ItemType.NODE);
assertEquals(path, storedNode.getQPath());
}
catch (Exception e)
@@ -211,7 +211,7 @@
// get
try
{
- NodeData storedNode = (NodeData)wdm.getItemData(rootData, new
QPathEntry(nodeName, 1));
+ NodeData storedNode = (NodeData)wdm.getItemData(rootData, new
QPathEntry(nodeName, 1), ItemType.NODE);
assertEquals(path, storedNode.getQPath());
}
catch (Exception e)
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCStorageConnectionTest.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCStorageConnectionTest.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCStorageConnectionTest.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -33,6 +33,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
@@ -98,7 +99,7 @@
testRoot =
(NodeData)dataManager.getItemData(root,
- troot.getQPath().getEntries()[troot.getQPath().getEntries().length - 1]);
+ troot.getQPath().getEntries()[troot.getQPath().getEntries().length - 1],
ItemType.NODE);
assertNotNull("Can't find test root node " +
troot.getQPath().getAsString(), testRoot);
}
@@ -135,7 +136,8 @@
{
NodeData troot =
- (NodeData)dataManager.getItemData(root, new
QPathEntry(InternalQName.parse("[]jdbcStorageConnectionTest"), 1));
+ (NodeData)dataManager.getItemData(root, new
QPathEntry(InternalQName.parse("[]jdbcStorageConnectionTest"), 1),
+ ItemType.NODE);
assertEquals("Inherited acl should be here", root.getACL().getOwner(),
troot.getACL().getOwner());
}
@@ -160,7 +162,8 @@
// test
NodeData troot =
- (NodeData)dataManager.getItemData(root, new
QPathEntry(InternalQName.parse("[]jdbcStorageConnectionTest"), 1));
+ (NodeData)dataManager.getItemData(root, new
QPathEntry(InternalQName.parse("[]jdbcStorageConnectionTest"), 1),
+ ItemType.NODE);
assertEquals("Owner is not valid", "exo",
troot.getACL().getOwner());
}
@@ -192,7 +195,8 @@
// test
NodeData troot =
- (NodeData)dataManager.getItemData(root, new
QPathEntry(InternalQName.parse("[]jdbcStorageConnectionTest"), 1));
+ (NodeData)dataManager.getItemData(root, new
QPathEntry(InternalQName.parse("[]jdbcStorageConnectionTest"), 1),
+ ItemType.NODE);
List<String> iperms = troot.getACL().getPermissions(SystemIdentity.ANY);
assertEquals("Wrong permission for " + SystemIdentity.ANY, 1,
iperms.size());
@@ -242,7 +246,8 @@
// test
NodeData troot =
- (NodeData)dataManager.getItemData(root, new
QPathEntry(InternalQName.parse("[]jdbcStorageConnectionTest"), 1));
+ (NodeData)dataManager.getItemData(root, new
QPathEntry(InternalQName.parse("[]jdbcStorageConnectionTest"), 1),
+ ItemType.NODE);
assertEquals("Owner is not valid", "exo",
troot.getACL().getOwner());
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/StorageUpdateTest.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/StorageUpdateTest.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/StorageUpdateTest.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -25,6 +25,7 @@
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.core.PropertyImpl;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCStorageConnection;
@@ -71,6 +72,7 @@
private boolean isDefaultWsMultiDb;
+ @Override
public void setUp() throws Exception
{
super.setUp();
@@ -155,7 +157,8 @@
(NodeData)session.getTransientNodesManager().getTransactManager()
.getItemData(jcrUuid.getParentIdentifier());
QPathEntry[] qentry = bugData.getQPath().getEntries();
- PropertyData persistedBugData = (PropertyData)conn.getItemData(parent,
qentry[qentry.length - 1]);
+ PropertyData persistedBugData =
+ (PropertyData)conn.getItemData(parent, qentry[qentry.length - 1],
ItemType.PROPERTY);
log.info("node_V node BUG uuid: " + node_V.getUUID() + ",
jcr:uuid: "
+ new String(persistedBugData.getValues().get(0).getAsByteArray()));
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/fs/TestJCRVSReadWrite.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/fs/TestJCRVSReadWrite.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/fs/TestJCRVSReadWrite.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -31,6 +31,7 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.NodeImpl;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
@@ -284,13 +285,20 @@
}
// copied from SessionDataManager
- protected ItemData getItemData(DataManager manager, NodeData parent, QPathEntry[]
relPathEntries)
+ protected ItemData getItemData(DataManager manager, NodeData parent, QPathEntry[]
relPathEntries, ItemType itemType)
throws RepositoryException
{
ItemData item = parent;
for (int i = 0; i < relPathEntries.length; i++)
{
- item = manager.getItemData(parent, relPathEntries[i]);
+ if (i == relPathEntries.length - 1)
+ {
+ item = manager.getItemData(parent, relPathEntries[i], itemType);
+ }
+ else
+ {
+ item = manager.getItemData(parent, relPathEntries[i], ItemType.UNKNOWN);
+ }
if (item == null)
break;
@@ -356,7 +364,7 @@
Set<QPathEntry[]> caseProps = new HashSet<QPathEntry[]>(props);
for (QPathEntry[] prop : caseProps)
{
- PropertyData p = (PropertyData)getItemData(manager, parent, prop);
+ PropertyData p = (PropertyData)getItemData(manager, parent, prop,
ItemType.PROPERTY);
List<ValueData> vals = p.getValues();
for (int i = 0; i < vals.size(); i++)
{
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/jdbc/SQLBenchmarkTest.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/jdbc/SQLBenchmarkTest.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/jdbc/SQLBenchmarkTest.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -1,14 +1,5 @@
package org.exoplatform.services.jcr.impl.storage.jdbc;
-import java.sql.SQLException;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.jcr.InvalidItemStateException;
-import javax.jcr.RepositoryException;
-
import org.exoplatform.container.StandaloneContainer;
import org.exoplatform.services.jcr.BaseStandaloneTest;
import org.exoplatform.services.jcr.RepositoryService;
@@ -23,10 +14,20 @@
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.datamodel.ValueData;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.core.RepositoryImpl;
import org.exoplatform.services.jcr.storage.WorkspaceDataContainer;
import org.exoplatform.services.jcr.storage.WorkspaceStorageConnection;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicReference;
+
+import javax.jcr.InvalidItemStateException;
+import javax.jcr.RepositoryException;
+
/*
* Copyright (C) 2003-2009 eXo Platform SAS.
*
@@ -55,21 +56,21 @@
*/
public class SQLBenchmarkTest
{
-/*
- static
- {
- try
+ /*
+ static
{
- Class.forName("com.jdbmonitor.MonitorDriver");
- System.out.println("Driver Loaded");
+ try
+ {
+ Class.forName("com.jdbmonitor.MonitorDriver");
+ System.out.println("Driver Loaded");
+ }
+ catch (ClassNotFoundException e)
+ {
+ e.printStackTrace();
+ }
+
}
- catch (ClassNotFoundException e)
- {
- e.printStackTrace();
- }
-
- }
-*/
+ */
/**
* @param args
*/
@@ -307,7 +308,7 @@
{
public ItemData execute(Object... args) throws Exception
{
- return getItemData((WorkspaceDataContainer)args[0], (NodeData)args[1],
(QPathEntry)args[2]);
+ return getItemData((WorkspaceDataContainer)args[0], (NodeData)args[1],
(QPathEntry)args[2], ItemType.NODE);
}
};
@@ -553,13 +554,13 @@
return true;
}
- public static ItemData getItemData(WorkspaceDataContainer dataContainer, NodeData
parentData, QPathEntry name)
- throws RepositoryException, IllegalStateException
+ public static ItemData getItemData(WorkspaceDataContainer dataContainer, NodeData
parentData, QPathEntry name,
+ ItemType itemType) throws RepositoryException, IllegalStateException
{
final WorkspaceStorageConnection con = dataContainer.openConnection();
try
{
- return con.getItemData(parentData, name);
+ return con.getItemData(parentData, name, itemType);
}
finally
{
@@ -675,6 +676,7 @@
{
Thread t = new Thread()
{
+ @Override
public void run()
{
try
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/version/TestFrozenNodeInitializer.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/version/TestFrozenNodeInitializer.java 2010-09-16
11:23:57 UTC (rev 3120)
+++
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/version/TestFrozenNodeInitializer.java 2010-09-16
13:41:50 UTC (rev 3121)
@@ -27,6 +27,7 @@
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.datamodel.QPathEntry;
import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.core.ItemImpl.ItemType;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import java.util.List;
@@ -217,7 +218,7 @@
PropertyData vh =
(PropertyData)session.getTransientNodesManager().getItemData((NodeData)state.getData(),
- new QPathEntry(Constants.JCR_VERSIONHISTORY, 0));
+ new QPathEntry(Constants.JCR_VERSIONHISTORY, 0),
ItemType.PROPERTY);
String vhUuid = new String(vh.getValues().get(0).getAsByteArray());