exo-jcr SVN: r1193 - jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation.
by do-not-reply@jboss.org
Author: sergiykarpenko
Date: 2009-12-25 10:51:39 -0500 (Fri, 25 Dec 2009)
New Revision: 1193
Modified:
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java
Log:
EXOJCR-302: NewJDBCStorageConnection updated
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java 2009-12-25 15:45:38 UTC (rev 1192)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/NewJDBCStorageConnection.java 2009-12-25 15:51:39 UTC (rev 1193)
@@ -599,14 +599,14 @@
ResultSet resultSet = findChildNodesByParentIdentifierNew(getInternalId(parent.getIdentifier()));
if (resultSet.next())
{
- Map<String, TempNodeData> tempNodes = loadNodesData(resultSet, parent);
+ Map<String, TempNodeData> tempNodes = loadNodesData(resultSet);
List<NodeData> childrens = new ArrayList<NodeData>(tempNodes.size());
QPath parentQPath = parent.getQPath();
AccessControlList parentACL = parent.getACL();
for (TempNodeData data : tempNodes.values())
{
- NodeData nodeData = loadNodeRecordFromBuffer(data, parentQPath, parentACL);
+ NodeData nodeData = loadNodeFromTemporaryNodeData(data, parentQPath, parentACL);
childrens.add(nodeData);
}
return childrens;
@@ -627,8 +627,8 @@
}
}
- protected Map<String, TempNodeData> loadNodesData(ResultSet resultSet, NodeData parent) throws RepositoryException,
- IOException, SQLException
+ protected Map<String, TempNodeData> loadNodesData(ResultSet resultSet) throws RepositoryException, IOException,
+ SQLException
{
Map<String, TempNodeData> nodesData = new LinkedHashMap<String, TempNodeData>();
@@ -855,7 +855,9 @@
int itemType = resultSet.getInt(COLUMN_CLASS);
if (itemType == I_CLASS_NODE)
{
- return loadNodeRecord(resultSet, null, null);
+ Map<String, TempNodeData> node = loadNodesData(resultSet);
+ return loadNodeFromTemporaryNodeData(node.get(cid), null, null);
+ //return loadNodeRecord(resultSet, null, null);
}
else
{
@@ -921,12 +923,13 @@
String firstNodeId = resultSet.getString(COLUMN_ID);
// There may be two or more nodes, so load temp NodeDatas and return first one.
- Map<String, TempNodeData> tempNodes = loadNodesData(resultSet, parent);
+ Map<String, TempNodeData> tempNodes = loadNodesData(resultSet);
QPath parentQPath = parent.getQPath();
AccessControlList parentACL = parent.getACL();
- NodeData nodeData = loadNodeRecordFromBuffer(tempNodes.get(firstNodeId), parentQPath, parentACL);
+ NodeData nodeData = loadNodeFromTemporaryNodeData(tempNodes.get(firstNodeId), parentQPath, parentACL);
+ tempNodes.clear();
return nodeData;
//return loadNodeRecord(resultSet, parent.getQPath(), parent.getACL());
@@ -1804,6 +1807,10 @@
}
}
+ // preload properties
+
+ Map<String, List<byte[]>> properties = new LinkedHashMap<String, List<byte[]>>();
+
// PRIMARY
if (!item.next() || !item.getString(COLUMN_NAME).equals(Constants.JCR_PRIMARYTYPE.getAsString()))
{
@@ -1923,7 +1930,7 @@
}
}
- protected PersistedNodeData loadNodeRecordFromBuffer(TempNodeData buf, QPath parentPath, AccessControlList pACL)
+ protected PersistedNodeData loadNodeFromTemporaryNodeData(TempNodeData buf, QPath parentPath, AccessControlList pACL)
throws RepositoryException, SQLException, IOException
{
16 years, 6 months
exo-jcr SVN: r1192 - in jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: dataflow and 1 other directory.
by do-not-reply@jboss.org
Author: pnedonosko
Date: 2009-12-25 10:45:38 -0500 (Fri, 25 Dec 2009)
New Revision: 1192
Modified:
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataCopyIgnoredVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java
Log:
EXOJCR-347 visitors code cleanup and format
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java 2009-12-25 15:40:26 UTC (rev 1191)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java 2009-12-25 15:45:38 UTC (rev 1192)
@@ -92,12 +92,14 @@
protected void entering(PropertyData property, int level) throws RepositoryException
{
- if (log.isDebugEnabled())
+ if (log.isDebugEnabled()) {
log.debug("Entering property " + property.getQPath().getAsString());
-
- if (currentNode() == null)
+ }
+
+ if (currentNode() == null) {
// skip if no parent - parent is COMPUTE, INITIALIZE
return;
+ }
PropertyData frozenProperty = null;
InternalQName qname = property.getQPath().getName();
@@ -196,13 +198,13 @@
else
throw new RepositoryException("Unknown OnParentVersion value " + action);
}
+
changesLog.add(ItemState.createAddedState(frozenProperty));
}
@Override
protected void entering(NodeData node, int level) throws RepositoryException
{
-
// this node is not taken in account
if (level == 0)
{
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataCopyIgnoredVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataCopyIgnoredVisitor.java 2009-12-25 15:40:26 UTC (rev 1191)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataCopyIgnoredVisitor.java 2009-12-25 15:45:38 UTC (rev 1192)
@@ -63,8 +63,10 @@
if (level == 1
&& (property.getQPath().getName().equals(Constants.JCR_BASEVERSION) || property.getQPath().getName().equals(
Constants.JCR_ISCHECKEDOUT)))
+ {
// skip versionable specific props
return;
+ }
if (curParent() == null)
{
@@ -99,7 +101,9 @@
{
// copy as IGNOREd parent child, i.e. OnParentVersionAction is any
if (log.isDebugEnabled())
+ {
log.debug("A property " + property.getQPath().getAsString() + " is IGNOREd node descendant");
+ }
super.entering(property, level);
}
}
@@ -148,17 +152,23 @@
{
// copy as IGNOREd parent child, i.e. OnParentVersionAction is any
if (log.isDebugEnabled())
+ {
log.debug("A node " + node.getQPath().getAsString() + " is IGNOREd node descendant");
+ }
+
super.entering(node, level);
return;
}
}
+
parents.push(null); // skip this node as we hasn't parent in restore result
}
protected void leaving(NodeData node, int level) throws RepositoryException
{
if (parents.size() > 0)
+ {
parents.pop();
+ }
}
}
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java 2009-12-25 15:40:26 UTC (rev 1191)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java 2009-12-25 15:45:38 UTC (rev 1192)
@@ -106,7 +106,6 @@
protected class RemoveVisitor extends ItemDataRemoveVisitor
{
-
RemoveVisitor() throws RepositoryException
{
super(mergeSession.getTransientNodesManager(), null, mergeSession.getWorkspace().getNodeTypesHolder(),
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java 2009-12-25 15:40:26 UTC (rev 1191)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java 2009-12-25 15:45:38 UTC (rev 1192)
@@ -77,8 +77,6 @@
protected NodeData restored;
- // protected final NodeTypeDataManager ntManager;
-
protected final SessionImpl userSession;
protected final SessionChangesLog changes;
@@ -125,9 +123,8 @@
{
RemoveVisitor() throws RepositoryException
{
- super(userSession.getTransientNodesManager(), null,
- // userSession.getWorkspace().getNodeTypeManager(),
- nodeTypeDataManager, userSession.getAccessManager(), userSession.getUserState());
+ super(userSession.getTransientNodesManager(), null, nodeTypeDataManager, userSession.getAccessManager(),
+ userSession.getUserState());
}
protected void validateReferential(NodeData node) throws RepositoryException
@@ -171,22 +168,28 @@
private ItemData findDelegated(String identifier)
{
if (delegatedChanges != null)
+ {
for (ItemState state : delegatedChanges.getAllStates())
{
if (state.getData().getIdentifier().equals(identifier))
return state.getData();
}
+ }
+
return null;
}
private ItemData findDelegated(QPath path)
{
if (delegatedChanges != null)
+ {
for (ItemState state : delegatedChanges.getAllStates())
{
if (state.getData().getQPath().equals(path))
return state.getData();
}
+ }
+
return null;
}
@@ -379,19 +382,23 @@
if (frozen == null)
{
- if (log.isDebugEnabled())
- log.debug("Visit node " + frozen.getQPath().getAsString() + ", HAS NULL FROZEN NODE");
return;
}
+ if (log.isDebugEnabled())
+ {
+ log.debug("Visit node " + frozen.getQPath().getAsString() + ", HAS NULL FROZEN NODE");
+ }
+
InternalQName qname = frozen.getQPath().getName();
if (qname.equals(Constants.JCR_FROZENNODE) && level == 0)
{
-
// child props/nodes will be restored
if (log.isDebugEnabled())
+ {
log.debug("jcr:frozenNode " + frozen.getQPath().getAsString());
+ }
// init destenation node
initRestoreRoot(currentNode(), destName, frozen);
@@ -405,7 +412,9 @@
QPath cvhpPropPath = QPath.makeChildPath(frozen.getQPath(), Constants.JCR_CHILDVERSIONHISTORY);
if (log.isDebugEnabled())
+ {
log.debug("Versioned child node " + cvhpPropPath.getAsString());
+ }
VersionHistoryDataHelper childHistory = null;
try
@@ -490,8 +499,10 @@
currentNode().getMixinTypeNames()).getOnParentVersion();
if (log.isDebugEnabled())
+ {
log.debug("Stored node " + frozen.getQPath().getAsString() + ", "
+ OnParentVersionAction.nameFromValue(action));
+ }
if (action == OnParentVersionAction.COPY || action == OnParentVersionAction.VERSION)
{
@@ -606,10 +617,8 @@
{
// TODO what to do if REFERENCE property target doesn't exists in workspace
-
if (currentNode() != null)
{
-
NodeData frozenParent = (NodeData)dataManager.getItemData(property.getParentIdentifier());
InternalQName qname = property.getQPath().getName();
@@ -682,14 +691,15 @@
@Override
protected void leaving(NodeData frozen, int level) throws RepositoryException
{
-
InternalQName qname = frozen.getQPath().getName();
if (qname.equals(Constants.JCR_FROZENNODE) && level == 0)
{
if (log.isDebugEnabled())
+ {
log.debug("leaving jcr:frozenNode " + frozen.getQPath().getAsString());
+ }
// post init of a restored node
@@ -719,7 +729,9 @@
}
if (parents.size() <= 0)
+ {
log.error("Empty parents stack");
+ }
parents.pop();
}
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java 2009-12-25 15:40:26 UTC (rev 1191)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java 2009-12-25 15:45:38 UTC (rev 1192)
@@ -63,7 +63,6 @@
{
for (ValueData vd : src)
{
- // TODO fix according OPT branch code
if (vd.isByteArray())
{
copy.add(new TransientValueData(vd.getOrderNumber(), vd.getAsByteArray()));
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java 2009-12-25 15:40:26 UTC (rev 1191)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java 2009-12-25 15:45:38 UTC (rev 1192)
@@ -149,6 +149,7 @@
{
ancestorToSave = curParent().getQPath();
}
+
NodeData parent = curParent();
QPath qpath = calculateNewNodePath(node, level);
// Calc order number if parent supports orderable nodes...
@@ -256,7 +257,7 @@
if (level == 0)
{
qname = destNodeName;
- // [PN] 12.01.07 Calculate SNS index for dest root
+ // Calculate SNS index for dest root
for (NodeData child : existedChilds)
{
if (child.getQPath().getName().equals(qname))
@@ -278,8 +279,10 @@
NodeData parent = curParent();
List<NodeData> existedChilds = dataManager.getChildNodesData(parent);
int orderNum = 0;
- if (existedChilds.size() > 0)
+ if (existedChilds.size() > 0) {
orderNum = existedChilds.get(existedChilds.size() - 1).getOrderNumber() + 1;
+ }
+
return orderNum;
}
}
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java 2009-12-25 15:40:26 UTC (rev 1191)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java 2009-12-25 15:45:38 UTC (rev 1192)
@@ -104,8 +104,8 @@
{
Collections.reverse(itemDeletedExistingStates);
}
+
return itemDeletedExistingStates;
-
}
@Override
@@ -114,8 +114,10 @@
NodeData parent = curParent();
List<NodeData> existedChilds = getMargedChildNodesData(parent);
int orderNum = 0;
- if (existedChilds.size() > 0)
+ if (existedChilds.size() > 0) {
orderNum = existedChilds.get(existedChilds.size() - 1).getOrderNumber() + 1;
+ }
+
return orderNum;
}
@@ -131,7 +133,7 @@
if (level == 0)
{
qname = destNodeName;
- // [PN] 12.01.07 Calculate SNS index for dest root
+ // Calculate SNS index for dest root
for (NodeData child : existedChilds)
{
if (child.getQPath().getName().equals(qname))
@@ -145,6 +147,7 @@
qname = node.getQPath().getName();
newIndex = node.getQPath().getIndex();
}
+
return QPath.makeChildPath(parent.getQPath(), qname, newIndex);
}
@@ -155,6 +158,7 @@
boolean isMixReferenceable =
ntManager.isNodeType(Constants.MIX_REFERENCEABLE, node.getPrimaryTypeName(), node.getMixinTypeNames());
deletedExistingPropery = false;
+
if (isMixReferenceable)
{
String identifier = node.getIdentifier();
@@ -222,6 +226,7 @@
}
}
}
+
super.entering(property, level);
};
@@ -245,6 +250,7 @@
break;
}
}
+
return retval;
}
@@ -253,12 +259,14 @@
if (itemInItemStateList(itemDeletedExistingStates, item.getIdentifier(), ItemState.DELETED))
return true;
ItemState changesItemState = null;
+
if (changes != null)
{
changesItemState = changes.getItemState(item.getIdentifier());
if (changesItemState != null && changesItemState.isDeleted())
return true;
}
+
return false;
}
@@ -271,6 +279,7 @@
if (!isItemDeleted(nodeData))
result.add(nodeData);
}
+
return result;
}
}
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java 2009-12-25 15:40:26 UTC (rev 1191)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java 2009-12-25 15:45:38 UTC (rev 1192)
@@ -52,10 +52,6 @@
@Override
protected void entering(PropertyData property, int level) throws RepositoryException
{
-
- if (log.isDebugEnabled())
- log.debug("entering " + property.getQPath().getAsString());
-
// don't using super
InternalQName qname = property.getQPath().getName();
@@ -139,7 +135,6 @@
}
else
{
- // http://jira.exoplatform.org/browse/JCR-294
if (qname.equals(Constants.JCR_LOCKISDEEP))
{
return;
@@ -156,9 +151,10 @@
.getIdentifier() : IdGenerator.generate(), -1, property.getType(), curParent().getIdentifier(), property
.isMultiValued(), values);
- if (log.isDebugEnabled())
+ if (log.isDebugEnabled()) {
log.debug("entering COPY " + newProperty.getQPath().getAsString() + "; pidentifier: "
+ newProperty.getParentIdentifier() + "; identifier: " + newProperty.getIdentifier());
+ }
itemAddStates.add(new ItemState(newProperty, ItemState.ADDED, true, ancestorToSave, level != 0));
}
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java 2009-12-25 15:40:26 UTC (rev 1191)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java 2009-12-25 15:45:38 UTC (rev 1192)
@@ -224,7 +224,6 @@
.getMixinTypeNames())
&& qname.equals(Constants.JCR_UUID))
{
-
values = new ArrayList<ValueData>(1);
values.add(new TransientValueData(curParent().getIdentifier()));
}
@@ -241,9 +240,6 @@
addStates.add(new ItemState(newProperty, ItemState.RENAMED, false, ancestorToSave, false, false));
- // get last from super.entering(property, level)
- // ItemState copy = itemAddStates.get(itemAddStates.size() - 1);
-
deleteStates.add(new ItemState(property, ItemState.DELETED, false, ancestorToSave, false, false));
}
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java 2009-12-25 15:40:26 UTC (rev 1191)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java 2009-12-25 15:45:38 UTC (rev 1192)
@@ -135,7 +135,9 @@
// 2. check ReferentialIntegrityException - REFERENCE property target
if (nodeTypeManager.isNodeType(Constants.MIX_REFERENCEABLE, node.getPrimaryTypeName(), node.getMixinTypeNames()))
+ {
validateReferential(node);
+ }
// 3. check ConstraintViolationException - NodeDefinition for
// mandatory/protected flags
@@ -222,7 +224,9 @@
protected void entering(PropertyData property, int level) throws RepositoryException
{
if (log.isDebugEnabled())
+ {
log.debug("Entering property " + property.getQPath().getAsString());
+ }
if (validate)
{
@@ -234,17 +238,23 @@
.getQPath());
if (!itemRemovedStates.contains(state))
+ {
itemRemovedStates.add(state);
+ }
else if (log.isDebugEnabled())
+ {
// REFERENCE props usecase, see validateReferential(NodeData)
log.debug("A property " + property.getQPath().getAsString() + " is already listed for remove");
+ }
}
@Override
protected void entering(NodeData node, int level) throws RepositoryException
{
if (log.isDebugEnabled())
+ {
log.debug("Entering node " + node.getQPath().getAsString());
+ }
// this node is not taken in account
if (level == 0)
@@ -260,6 +270,7 @@
{
node = (NodeData)copyItemDataDelete(node);
}
+
ItemState state =
new ItemState(node, ItemState.DELETED, true, ancestorToSave != null ? ancestorToSave : removedRoot.getQPath());
itemRemovedStates.add(state);
@@ -282,6 +293,7 @@
Collections.reverse(itemRemovedStates);
reversedItemRemovedStates = itemRemovedStates;
}
+
return reversedItemRemovedStates;
}
@@ -298,12 +310,13 @@
{
if (item == null)
+ {
return null;
+ }
// make a copy
if (item.isNode())
{
-
final NodeData node = (NodeData)item;
// the node ACL can't be are null as ACL manager does care about this
@@ -313,6 +326,7 @@
throw new RepositoryException("Node ACL is null. " + node.getQPath().getAsString() + " "
+ node.getIdentifier());
}
+
return new TransientNodeData(node.getQPath(), node.getIdentifier(), node.getPersistedVersion(), node
.getPrimaryTypeName(), node.getMixinTypeNames(), node.getOrderNumber(), node.getParentIdentifier(), acl);
}
16 years, 6 months
exo-jcr SVN: r1191 - jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow.
by do-not-reply@jboss.org
Author: tolusha
Date: 2009-12-25 10:40:26 -0500 (Fri, 25 Dec 2009)
New Revision: 1191
Modified:
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java
Log:
EXOJCR-300: fix
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java 2009-12-25 15:25:36 UTC (rev 1190)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java 2009-12-25 15:40:26 UTC (rev 1191)
@@ -66,11 +66,11 @@
// TODO fix according OPT branch code
if (vd.isByteArray())
{
- copy.add(new TransientValueData(vd.getAsByteArray(), vd.getOrderNumber()));
+ copy.add(new TransientValueData(vd.getOrderNumber(), vd.getAsByteArray()));
}
else
{
- copy.add(new TransientValueData(vd.getAsStream(), vd.getOrderNumber()));
+ copy.add(new TransientValueData(vd.getOrderNumber(), vd.getAsStream()));
}
}
}
16 years, 6 months
exo-jcr SVN: r1190 - jcr/branches/1.12.0-JBCCACHE.
by do-not-reply@jboss.org
Author: areshetnyak
Date: 2009-12-25 10:25:36 -0500 (Fri, 25 Dec 2009)
New Revision: 1190
Modified:
jcr/branches/1.12.0-JBCCACHE/pom.xml
Log:
EXOJCR-330 : Fix root pom in 1.12.0-JBCCACHE.
Modified: jcr/branches/1.12.0-JBCCACHE/pom.xml
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/pom.xml 2009-12-25 15:15:43 UTC (rev 1189)
+++ jcr/branches/1.12.0-JBCCACHE/pom.xml 2009-12-25 15:25:36 UTC (rev 1190)
@@ -50,6 +50,8 @@
</scm>
<modules>
+ <module>applications/cluster.test.client</module>
+
<module>exo.jcr.component.core</module>
<module>exo.jcr.component.ext</module>
<module>exo.jcr.component.ftp</module>
@@ -67,10 +69,9 @@
<module>applications/java/exo.jcr.applications.rest</module>
<module>applications/java/exo.jcr.ear</module>
<module>applications/java/exo.jcr.applications.backupconsole</module>
- <module>applications/cluster.test.client</module>
<module>packaging/module</module>
- </modules>
+ </modules>
<dependencyManagement>
<dependencies>
16 years, 6 months
exo-jcr SVN: r1189 - in jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: dataflow and 1 other directory.
by do-not-reply@jboss.org
Author: pnedonosko
Date: 2009-12-25 10:15:43 -0500 (Fri, 25 Dec 2009)
New Revision: 1189
Added:
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java
Modified:
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java
Log:
EXOJCR-347 copy ValueData on copy operations (merge from JBCCACHE)
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java 2009-12-25 15:03:26 UTC (rev 1188)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java 2009-12-25 15:15:43 UTC (rev 1189)
@@ -33,6 +33,7 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
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;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
@@ -58,7 +59,7 @@
* @version $Id: FrozenNodeInitializer.java 11907 2008-03-13 15:36:21Z ksm $
*/
-public class FrozenNodeInitializer extends ItemDataTraversingVisitor
+public class FrozenNodeInitializer extends AbstractItemDataCopyVisitor
{
private static Log log = ExoLogger.getLogger("jcr.FrozenNodeInitializer");
@@ -101,11 +102,7 @@
PropertyData frozenProperty = null;
InternalQName qname = property.getQPath().getName();
- List<ValueData> values = new ArrayList<ValueData>();
- for (ValueData valueData : property.getValues())
- {
- values.add(valueData);
- }
+ List<ValueData> values = copyValues(property);
boolean mv = property.isMultiValued();
@@ -353,4 +350,4 @@
return dataManager;
}
-}
+}
\ No newline at end of file
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java 2009-12-25 15:03:26 UTC (rev 1188)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java 2009-12-25 15:15:43 UTC (rev 1189)
@@ -20,7 +20,6 @@
import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
import org.exoplatform.services.jcr.dataflow.DataManager;
-import org.exoplatform.services.jcr.dataflow.ItemDataTraversingVisitor;
import org.exoplatform.services.jcr.dataflow.ItemState;
import org.exoplatform.services.jcr.datamodel.InternalQName;
import org.exoplatform.services.jcr.datamodel.NodeData;
@@ -31,6 +30,7 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
+import org.exoplatform.services.jcr.impl.dataflow.AbstractItemDataCopyVisitor;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataCopyVisitor;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataRemoveVisitor;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
@@ -53,12 +53,10 @@
* Created by The eXo Platform SAS 06.02.2007 Traverse through merging nodes
* (destenation) and do merge to correspondent version states.
*
- * @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter
- * Nedonosko</a>
- * @version $Id: ItemDataMergeVisitor.java 14100 2008-05-12 10:53:47Z gazarenkov
- * $
+ * @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter Nedonosko</a>
+ * @version $Id: ItemDataMergeVisitor.java 14100 2008-05-12 10:53:47Z gazarenkov $
*/
-public class ItemDataMergeVisitor extends ItemDataTraversingVisitor
+public class ItemDataMergeVisitor extends AbstractItemDataCopyVisitor
{
protected static int NONE = -1;
@@ -385,8 +383,7 @@
}
}
- changes.add(new ItemState(mergedNode, ItemState.UPDATED, true, mergeNode.getQPath(), true));// XXX
- // UPDATE
+ changes.add(new ItemState(mergedNode, ItemState.UPDATED, true, mergeNode.getQPath(), true));
// replace set of properties of n with those of n'.
DataManager corrDataManager = corrSession.getTransientNodesManager().getTransactManager();
@@ -398,7 +395,7 @@
{
TransientPropertyData existed =
new TransientPropertyData(cp.getQPath(), cp.getIdentifier(), cp.getPersistedVersion(), cp.getType(), cp
- .getParentIdentifier(), cp.isMultiValued(), cp.getValues());
+ .getParentIdentifier(), cp.isMultiValued(), copyValues(cp));
changes.add(new ItemState(existed, ItemState.DELETED, true, mergedNode.getQPath(), true));
existedProps.put(existed.getQPath().getName(), existed);
@@ -410,7 +407,7 @@
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(), cp.getValues());
+ .getPersistedVersion(), cp.getType(), mergedNode.getIdentifier(), cp.isMultiValued(), copyValues(cp));
changes.add(new ItemState(mcp, ItemState.ADDED, true, mergedNode.getQPath(), true));
}
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java 2009-12-25 15:03:26 UTC (rev 1188)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java 2009-12-25 15:15:43 UTC (rev 1189)
@@ -19,7 +19,6 @@
package org.exoplatform.services.jcr.impl.core.version;
import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
-import org.exoplatform.services.jcr.dataflow.ItemDataTraversingVisitor;
import org.exoplatform.services.jcr.dataflow.ItemState;
import org.exoplatform.services.jcr.datamodel.IllegalNameException;
import org.exoplatform.services.jcr.datamodel.InternalQName;
@@ -31,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.dataflow.AbstractItemDataCopyVisitor;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataCopyVisitor;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataRemoveVisitor;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
@@ -53,14 +53,14 @@
import javax.jcr.version.OnParentVersionAction;
/**
- * Created by The eXo Platform SAS 14.12.2006
+ * Created by The eXo Platform SAS.
*
- * @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter
- * Nedonosko</a>
- * @version $Id: ItemDataRestoreVisitor.java 14100 2008-05-12 10:53:47Z
- * gazarenkov $
+ * 14.12.2006
+ *
+ * @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter Nedonosko</a>
+ * @version $Id: ItemDataRestoreVisitor.java 14100 2008-05-12 10:53:47Z gazarenkov $
*/
-public class ItemDataRestoreVisitor extends ItemDataTraversingVisitor
+public class ItemDataRestoreVisitor extends AbstractItemDataCopyVisitor
{
private final Log log = ExoLogger.getLogger("jcr.ItemDataRestoreVisitor");
@@ -660,16 +660,14 @@
{
tagetProperty =
TransientPropertyData.createPropertyData(currentNode(), qname, property.getType(), property
- .isMultiValued(), property.getValues());
+ .isMultiValued(), copyValues(property));
}
changes.add(ItemState.createAddedState(tagetProperty));
-
- // else - nothing to do, i.e. left unchanged
-
}
else if (log.isDebugEnabled())
{
+ // else - nothing to do, i.e. left unchanged
log.debug("Visit property " + property.getQPath().getAsString() + " HAS "
+ OnParentVersionAction.nameFromValue(action) + " action");
}
Copied: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java (from rev 1186, jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java)
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java (rev 0)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java 2009-12-25 15:15:43 UTC (rev 1189)
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.services.jcr.impl.dataflow;
+
+import org.exoplatform.services.jcr.dataflow.ItemDataConsumer;
+import org.exoplatform.services.jcr.dataflow.ItemDataTraversingVisitor;
+import org.exoplatform.services.jcr.datamodel.PropertyData;
+import org.exoplatform.services.jcr.datamodel.ValueData;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jcr.RepositoryException;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter Nedonosko</a>
+ * @version $Id$
+ */
+public abstract class AbstractItemDataCopyVisitor extends ItemDataTraversingVisitor
+{
+
+ public AbstractItemDataCopyVisitor(ItemDataConsumer dataManager, int maxLevel)
+ {
+ super(dataManager, maxLevel);
+ }
+
+ public AbstractItemDataCopyVisitor(ItemDataConsumer dataManager)
+ {
+ super(dataManager);
+ }
+
+ /**
+ * Do actual copy of the property ValueDatas.
+ *
+ * @param property PropertyData
+ * @return List of ValueData
+ * @throws RepositoryException if I/O error occurs
+ */
+ protected List<ValueData> copyValues(PropertyData property) throws RepositoryException
+ {
+ List<ValueData> src = property.getValues();
+ List<ValueData> copy = new ArrayList<ValueData>(src.size());
+ try
+ {
+ for (ValueData vd : src)
+ {
+ // TODO fix according OPT branch code
+ if (vd.isByteArray())
+ {
+ copy.add(new TransientValueData(vd.getAsByteArray(), vd.getOrderNumber()));
+ }
+ else
+ {
+ copy.add(new TransientValueData(vd.getAsStream(), vd.getOrderNumber()));
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ throw new RepositoryException("Error of Value copy " + property.getQPath().getAsString(), e);
+ }
+
+ return copy;
+ }
+
+}
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java 2009-12-25 15:03:26 UTC (rev 1188)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java 2009-12-25 15:15:43 UTC (rev 1189)
@@ -19,7 +19,6 @@
package org.exoplatform.services.jcr.impl.dataflow;
import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
-import org.exoplatform.services.jcr.dataflow.ItemDataTraversingVisitor;
import org.exoplatform.services.jcr.dataflow.ItemState;
import org.exoplatform.services.jcr.datamodel.InternalQName;
import org.exoplatform.services.jcr.datamodel.NodeData;
@@ -28,8 +27,12 @@
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.util.io.FileCleaner;
import org.exoplatform.services.jcr.util.IdGenerator;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
@@ -42,10 +45,10 @@
* list of <code>List<ItemState></code> for copying new nodes and their properties.
*
* @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter Nedonosko</a>
- * @version $Id: DefaultItemDataCopyVisitor.java 12306 2008-03-24 10:25:55Z ksm $
+ * @version $Id$
*/
-public abstract class DefaultItemDataCopyVisitor extends ItemDataTraversingVisitor
+public abstract class DefaultItemDataCopyVisitor extends AbstractItemDataCopyVisitor
{
/**
@@ -119,13 +122,12 @@
.getMixinTypeNames())
&& qname.equals(Constants.JCR_UUID))
{
-
values = new ArrayList<ValueData>(1);
values.add(new TransientValueData(curParent().getIdentifier()));
}
else
{
- values = property.getValues();
+ values = copyValues(property);
}
TransientPropertyData newProperty =
@@ -149,17 +151,18 @@
}
NodeData parent = curParent();
QPath qpath = calculateNewNodePath(node, level);
- // [PN] 05.01.07 Calc order number if parent supports orderable nodes...
+ // Calc order number if parent supports orderable nodes...
// If ordering is supported by the node type of the parent node of the new
- // location, then the
- // newly moved node is appended to the end of the child node list.
+ // location, then the newly moved node is appended to the end of the child node list.
int orderNum = 0;
if (ntManager.isOrderableChildNodesSupported(parent.getPrimaryTypeName(), parent.getMixinTypeNames()))
{
orderNum = calculateNewNodeOrderNumber();
}
else
+ {
orderNum = node.getOrderNumber(); // has no matter
+ }
String id = keepIdentifiers ? node.getIdentifier() : IdGenerator.generate();
Property changes on: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java 2009-12-25 15:03:26 UTC (rev 1188)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java 2009-12-25 15:15:43 UTC (rev 1189)
@@ -44,7 +44,7 @@
* <b>ItemDeletedExistingStates</b> list for remove existing nodes if <code>removeExisting</code> is
* true.
*
- * @version $Id: ItemDataCloneVisitor.java 12306 2008-03-24 10:25:55Z ksm $
+ * @version $Id$
*/
public class ItemDataCloneVisitor extends DefaultItemDataCopyVisitor
{
Property changes on: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java 2009-12-25 15:03:26 UTC (rev 1188)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java 2009-12-25 15:15:43 UTC (rev 1189)
@@ -123,21 +123,17 @@
}
else if (qname.equals(Constants.JCR_UUID))
{
- values.add(new TransientValueData(curParent().getIdentifier())); // uuid
- // of
- // the
- // parent
+ values.add(new TransientValueData(curParent().getIdentifier())); // uuid of the parent
}
else
{
- values = property.getValues(); // copy the property
+ values = copyValues(property); // copy the property
}
}
else if (ntManager.isNodeType(Constants.MIX_REFERENCEABLE, curParent().getPrimaryTypeName(), curParent()
.getMixinTypeNames())
&& qname.equals(Constants.JCR_UUID))
{
-
values = new ArrayList<ValueData>(1);
values.add(new TransientValueData(curParent().getIdentifier()));
}
@@ -152,7 +148,7 @@
{
return;
}
- values = property.getValues();
+ values = copyValues(property);
}
TransientPropertyData newProperty =
Property changes on: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java 2009-12-25 15:03:26 UTC (rev 1188)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java 2009-12-25 15:15:43 UTC (rev 1189)
@@ -43,7 +43,7 @@
* list of <code>List<ItemState></code> for copying new nodes and their properties and
* <b>itemDeletedStates</b> for deleting existing nodes and properties.
*
- * @version $Id: ItemDataMoveVisitor.java 11907 2008-03-13 15:36:21Z ksm $
+ * @version $Id$
*/
public class ItemDataMoveVisitor extends ItemDataTraversingVisitor
{
@@ -230,6 +230,7 @@
}
else
{
+ // we don't copy ValueDatas here as it's move (i.e. VS files will not be relocated)
values = property.getValues();
}
Property changes on: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java 2009-12-25 15:03:26 UTC (rev 1188)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java 2009-12-25 15:15:43 UTC (rev 1189)
@@ -46,7 +46,7 @@
* Created by The eXo Platform SAS 15.12.2006
*
* @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter Nedonosko</a>
- * @version $Id: ItemDataRemoveVisitor.java 14100 2008-05-12 10:53:47Z gazarenkov $
+ * @version $Id$
*/
public class ItemDataRemoveVisitor extends ItemDataTraversingVisitor
{
Property changes on: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id
16 years, 6 months
exo-jcr SVN: r1188 - in jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src: test/java/org/exoplatform/services/jcr/api/writing and 1 other directory.
by do-not-reply@jboss.org
Author: pnedonosko
Date: 2009-12-25 10:03:26 -0500 (Fri, 25 Dec 2009)
New Revision: 1188
Modified:
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/TransientValueData.java
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestCorrespondingNode.java
Log:
EXOJCR-347 transient VD & corr nodes test cleanup
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/TransientValueData.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/TransientValueData.java 2009-12-25 15:02:53 UTC (rev 1187)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/TransientValueData.java 2009-12-25 15:03:26 UTC (rev 1188)
@@ -125,7 +125,7 @@
* @param orderNumber
* int
*/
- protected TransientValueData(InputStream stream, int orderNumber)
+ public TransientValueData(InputStream stream, int orderNumber)
{
super(orderNumber);
this.tmpStream = stream;
@@ -428,37 +428,6 @@
}
/**
- * Create TransientCopy of data.
- *
- * TODO workaround for JBC branch, issued by the FileRestoreTest.
- *
- * @return TransientValueData
- * @throws RepositoryException
- */
- public TransientValueData createTransientCopy1() throws RepositoryException
- {
- try
- {
- if (isByteArray())
- {
- // bytes based
- return new TransientValueData(orderNumber, data, null, null, fileCleaner, maxBufferSize, tempDirectory,
- deleteSpoolFile);
- }
- else
- {
- // stream (or file) based , i.e. shared across sessions
- return new TransientValueData(orderNumber, null, getAsStream(), null, fileCleaner, maxBufferSize,
- tempDirectory, true);
- }
- }
- catch (IOException e)
- {
- throw new RepositoryException(e);
- }
- }
-
- /**
* Create editable ValueData copy.
*
* @return EditableValueData
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestCorrespondingNode.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestCorrespondingNode.java 2009-12-25 15:02:53 UTC (rev 1187)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestCorrespondingNode.java 2009-12-25 15:03:26 UTC (rev 1188)
@@ -39,16 +39,6 @@
public class TestCorrespondingNode extends JcrAPIBaseTest
{
- public void setUp() throws Exception
- {
- super.setUp();
-
- // TODO
- // if(!((RepositoryImpl) repository).isWorkspaceInitialized("ws2"));
- // ((RepositoryImpl) repository).initWorkspace("ws2", "nt:unstructured");
-
- }
-
public void testDifferentWs() throws RepositoryException
{
16 years, 6 months
exo-jcr SVN: r1187 - in jcr/branches/1.12.0-OPT/exo.jcr.component.core/src: main/java/org/exoplatform/services/jcr/impl/util and 3 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2009-12-25 10:02:53 -0500 (Fri, 25 Dec 2009)
New Revision: 1187
Added:
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/NodeIteratorOnDemand.java
Modified:
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/nodetypes/TestPredefinedPrimaryNodeTypes.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestOrderBefore.java
jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/load/perf/TestGetNodesPerf.java
Log:
EXOJCR-338: NodeIteratorOnDemand
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2009-12-25 15:02:33 UTC (rev 1186)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2009-12-25 15:02:53 UTC (rev 1187)
@@ -58,6 +58,7 @@
import org.exoplatform.services.jcr.impl.dataflow.session.SessionChangesLog;
import org.exoplatform.services.jcr.impl.dataflow.session.TransactionableDataManager;
import org.exoplatform.services.jcr.impl.util.EntityCollection;
+import org.exoplatform.services.jcr.impl.util.NodeIteratorOnDemand;
import org.exoplatform.services.jcr.observation.ExtendedEvent;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
@@ -155,18 +156,21 @@
*
* @param data
* Node data
- * @param parent
- * parent node data is used for simple calculation item definition
- * @param session
+ * @param parentPrimaryTypeName
+ * parent primary type name
+ * @param parentMixinTypeNames
+ * parent mixin type names
+ * @param session
* Session
* @throws RepositoryException
* if error occurs during the Node data loading
*/
- public NodeImpl(NodeData data, NodeData parent, SessionImpl session) throws RepositoryException
+ public NodeImpl(NodeData data, InternalQName parentPrimaryTypeName, InternalQName[] parentMixinTypeNames,
+ SessionImpl session) throws RepositoryException
{
super(data, session);
this.sysLocFactory = session.getSystemLocationFactory();
- loadData(data, parent);
+ loadData(data, parentPrimaryTypeName, parentMixinTypeNames);
}
/**
@@ -1009,7 +1013,8 @@
checkValid();
try
{
- return new EntityCollection(childNodes());
+ return new NodeIteratorOnDemand(childNodesData(), dataManager, nodeData().getPrimaryTypeName(), nodeData()
+ .getMixinTypeNames(), true);
}
finally
{
@@ -1397,14 +1402,16 @@
* Loads data.
*
* @param data
- * source item data for load
- * @param parent
- * parent node data is used for simple calculation item definition
+ * source item data for load
+ * @param parentPrimaryTypeName
+ * parent primary type name
+ * @param parentMixinTypeNames
+ * parent mixin type names
* @throws RepositoryException
* if error occurs
*/
- private void loadData(ItemData data, NodeData parent) throws RepositoryException, InvalidItemStateException,
- ConstraintViolationException
+ private void loadData(ItemData data, InternalQName parentPrimaryTypeName, InternalQName[] parentMixinTypeNames)
+ throws RepositoryException, InvalidItemStateException, ConstraintViolationException
{
if (data == null)
@@ -1432,7 +1439,7 @@
this.qpath = nodeData.getQPath();
this.location = null;
- initDefinition(parent);
+ initDefinition(parentPrimaryTypeName, parentMixinTypeNames);
}
/**
@@ -2555,6 +2562,40 @@
}
+ /**
+ * Return child Nodes list.
+ *
+ * @return List of child Nodes
+ * @throws RepositoryException
+ * if error occurs
+ * @throws AccessDeniedException
+ * if Nodes cannot be listed due to permissions on this Node
+ */
+ private List childNodesData() throws RepositoryException, AccessDeniedException
+ {
+
+ List storedNodes = dataManager.getChildNodesData(nodeData());
+ for (int i = storedNodes.size() - 1; i >= 0; i--)
+ {
+ NodeData node = (NodeData)storedNodes.get(i);
+
+ if (!(session.getAccessManager().hasPermission(node.getACL(), new String[]{PermissionType.READ}, session
+ .getUserState().getIdentity())))
+ {
+ storedNodes.remove(i);
+ }
+
+ ItemImpl pooled = dataManager.reloadItem(node);
+ if (pooled != null)
+ {
+ storedNodes.set(i, pooled);
+ }
+ }
+
+ Collections.sort(storedNodes, new ObjectOrderComparator());
+ return storedNodes;
+ }
+
private EntityCollection createMergeFailed(Map<String, String> failed, SessionChangesLog changes)
throws RepositoryException
{
@@ -2818,12 +2859,18 @@
/**
* Init NodeDefinition.
*
+ * @param parentPrimaryTypeName
+ * parent primary type name
+ * @param parentMixinTypeNames
+ * parent mixin type names
+ *
* @throws RepositoryException
* if error occurs
* @throws ConstraintViolationException
* if definition not found
*/
- private void initDefinition(NodeData parent) throws RepositoryException, ConstraintViolationException
+ private void initDefinition(InternalQName parentPrimaryTypeName, InternalQName[] parentMixinTypeNames)
+ throws RepositoryException, ConstraintViolationException
{
if (this.isRoot())
@@ -2835,8 +2882,8 @@
}
this.definition =
- session.getWorkspace().getNodeTypesHolder().getChildNodeDefinition(getInternalName(),
- parent.getPrimaryTypeName(), parent.getMixinTypeNames());
+ session.getWorkspace().getNodeTypesHolder().getChildNodeDefinition(getInternalName(), parentPrimaryTypeName,
+ parentMixinTypeNames);
if (definition == null)
throw new ConstraintViolationException("Node definition not found for " + getPath());
@@ -2943,6 +2990,17 @@
}
}
+ private static class ObjectOrderComparator implements Comparator<Object>
+ {
+ public int compare(Object n1, Object n2)
+ {
+ int order1 = n1 instanceof NodeData ? ((NodeData)n1).getOrderNumber() : ((NodeImpl)n1).getOrderNumber();
+ int order2 = n2 instanceof NodeData ? ((NodeData)n2).getOrderNumber() : ((NodeImpl)n2).getOrderNumber();
+
+ return order1 - order2;
+ }
+ }
+
// ===================== helpers =====================
private static class NodesOrderComparator implements Comparator<NodeImpl>
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java 2009-12-25 15:02:33 UTC (rev 1186)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionDataManager.java 2009-12-25 15:02:53 UTC (rev 1187)
@@ -28,6 +28,7 @@
import org.exoplatform.services.jcr.dataflow.PlainChangesLog;
import org.exoplatform.services.jcr.dataflow.SharedDataManager;
import org.exoplatform.services.jcr.datamodel.IllegalPathException;
+import org.exoplatform.services.jcr.datamodel.InternalQName;
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.datamodel.PropertyData;
@@ -581,7 +582,7 @@
for (int i = 0, length = nodeDatas.size(); i < length; i++)
{
NodeData data = nodeDatas.get(i);
- NodeImpl item = itemFactory.createNode(data, parent);
+ NodeImpl item = itemFactory.createNode(data, parent.getPrimaryTypeName(), parent.getMixinTypeNames());
session.getActionHandler().postRead(item);
@@ -833,6 +834,19 @@
}
}
+ /**
+ * Reloads item in pool.
+ *
+ * @param data
+ * item data
+ * @return
+ * @throws RepositoryException
+ */
+ ItemImpl reloadItem(ItemData data) throws RepositoryException
+ {
+ return itemsPool.reload(data);
+ }
+
public void rename(NodeData srcData, ItemDataMoveVisitor initializer) throws RepositoryException
{
@@ -1379,6 +1393,50 @@
}
/**
+ * Wraps NodeData into NodeImpl.
+ *
+ * @param data
+ * NodeData to wrap
+ * @param parentPrimaryTypeName
+ * parent primary type name
+ * @param parentMixinTypeNames
+ * parent mixin type names
+ * @param pool
+ * indicates does the item fall in pool
+ * @return NodeImpl object
+ * @throws RepositoryException
+ * if errors is occurs
+ */
+ public NodeImpl wrapNodeData(NodeData data, InternalQName parentPrimaryTypeName,
+ InternalQName[] parentMixinTypeNames, boolean pool) throws RepositoryException
+ {
+ NodeImpl item = itemFactory.createNode(data, parentPrimaryTypeName, parentMixinTypeNames);
+ session.getActionHandler().postRead(item);
+
+ if (pool)
+ {
+ NodeImpl pooledItem = (NodeImpl)itemsPool.getItem(data.getIdentifier());
+
+ if (pooledItem == null)
+ {
+ NodeData pooledData = (NodeData)itemsPool.getData(data.getIdentifier());
+ if (pooledData != null)
+ {
+ item.loadData(pooledData);
+ }
+
+ item = (NodeImpl)itemsPool.get(item);
+ }
+ else
+ {
+ item = pooledItem;
+ }
+ }
+
+ return item;
+ }
+
+ /**
* Removes all pending changes of this item
*
* @param item
@@ -1559,7 +1617,7 @@
{
retval = new ArrayList<ItemData>(desc);
}
-
+
return retval;
}
@@ -1607,7 +1665,7 @@
retval.add(itemData);
if (deep)
retval.addAll(mergeList(itemData, dataManager, true, action));
- }
+ }
}
else
{
@@ -1717,13 +1775,17 @@
private WeakHashMap<String, ItemImpl> items;
+ private WeakHashMap<String, ItemData> datas;
+
ItemReferencePool()
{
items = new WeakHashMap<String, ItemImpl>();
+ datas = new WeakHashMap<String, ItemData>();
}
ItemImpl remove(String identifier)
{
+ datas.remove(identifier);
return items.remove(identifier);
}
@@ -1755,9 +1817,11 @@
ItemImpl get(ItemImpl newItem) throws RepositoryException
{
String identifier = newItem.getInternalIdentifier();
+
ItemImpl item = items.get(identifier);
if (item == null)
{
+ datas.remove(identifier);
items.put(identifier, newItem);
return newItem;
}
@@ -1766,9 +1830,34 @@
item.loadData(newItem.getData(), newItem.getItemDefinitionData());
return item;
}
+
}
/**
+ * Gets item from pool.
+ *
+ * @param identifier
+ * item identifier
+ * @return ItemImpl object from pool
+ */
+ ItemImpl getItem(String identifier)
+ {
+ return items.get(identifier);
+ }
+
+ /**
+ * Gets item from pool.
+ *
+ * @param identifier
+ * item identifier
+ * @return ItemData object from pool
+ */
+ ItemData getData(String identifier)
+ {
+ return datas.get(identifier);
+ }
+
+ /**
* Reload an existed item in the pool with given data
*
* @param itemData
@@ -1789,6 +1878,10 @@
item.loadData(newItemData);
return item;
}
+ else
+ {
+ datas.put(identifier, newItemData);
+ }
return null;
}
@@ -1921,9 +2014,10 @@
return node;
}
- private NodeImpl createNode(NodeData data, NodeData parent) throws RepositoryException
+ private NodeImpl createNode(NodeData data, InternalQName parentPrimaryTypeName,
+ InternalQName[] parentMixinTypeNames) throws RepositoryException
{
- NodeImpl node = new NodeImpl(data, parent, session);
+ NodeImpl node = new NodeImpl(data, parentPrimaryTypeName, parentMixinTypeNames, session);
if (data.getPrimaryTypeName().equals(Constants.NT_VERSION))
{
return new VersionImpl(data, session);
Added: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/NodeIteratorOnDemand.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/NodeIteratorOnDemand.java (rev 0)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/NodeIteratorOnDemand.java 2009-12-25 15:02:53 UTC (rev 1187)
@@ -0,0 +1,181 @@
+/*
+ * Copyright (C) 2003-2009 eXo Platform SAS.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see<http://www.gnu.org/licenses/>.
+ */
+package org.exoplatform.services.jcr.impl.util;
+
+import org.exoplatform.services.jcr.datamodel.InternalQName;
+import org.exoplatform.services.jcr.datamodel.NodeData;
+import org.exoplatform.services.jcr.impl.core.NodeImpl;
+import org.exoplatform.services.jcr.impl.core.SessionDataManager;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
+import javax.jcr.RepositoryException;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * <br/>
+ * Date: 2009
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
+ * @version $Id$
+ */
+public class NodeIteratorOnDemand implements NodeIterator
+{
+
+ private Iterator iter;
+
+ private List list;
+
+ private SessionDataManager dataManager;
+
+ private InternalQName parentPrimaryTypeName;
+
+ private InternalQName[] parentMixinTypeNames;
+
+ private boolean pool;
+
+ private int pos;
+
+ /**
+ * NodeIteratorOnDemand constructor. Gets list of NodeData and returns NodeImpl object on demand.
+ * NodeImpl objects will be created on next() or nextNode() methods when will be called.
+ *
+ * @param list
+ * NodeData list
+ * @param parentPrimaryTypeName
+ * parent primary type name
+ * @param parentMixinTypeNames
+ * parent mixin type names
+ * @param pool
+ * indicates does the item fall in pool when NodeImpl will be created
+ * @param dataManager
+ * session data manager
+ */
+ public NodeIteratorOnDemand(List list, SessionDataManager dataManager, InternalQName parentPrimaryTypeName,
+ InternalQName[] parentMixinTypeNames, boolean pool)
+ {
+ if (list == null)
+ this.list = new ArrayList();
+ else
+ this.list = list;
+
+ this.dataManager = dataManager;
+ this.parentPrimaryTypeName = parentPrimaryTypeName;
+ this.parentMixinTypeNames = parentMixinTypeNames;
+ this.pool = pool;
+
+ this.iter = list.iterator();
+ this.pos = 0;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Node nextNode()
+ {
+ wrapNodeData();
+
+ pos++;
+ return (Node)iter.next();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void skip(long skipNum)
+ {
+ pos += skipNum;
+ while (skipNum-- > 0)
+ {
+ iter.next();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public long getSize()
+ {
+ return list.size();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public long getPosition()
+ {
+ return pos;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean hasNext()
+ {
+ return iter.hasNext();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object next()
+ {
+ wrapNodeData();
+
+ pos++;
+ return iter.next();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void remove()
+ {
+ iter.remove();
+ }
+
+ /**
+ * Wraps NodeData into NodeImpl.
+ */
+ private void wrapNodeData()
+ {
+ if (pos == list.size())
+ {
+ return;
+ }
+
+ Object obj = list.get(pos);
+
+ if (!(obj instanceof NodeImpl))
+ {
+ try
+ {
+ list.set(pos, dataManager.wrapNodeData((NodeData)obj, parentPrimaryTypeName, parentMixinTypeNames, pool));
+ }
+ catch (RepositoryException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+}
Property changes on: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/NodeIteratorOnDemand.java
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/nodetypes/TestPredefinedPrimaryNodeTypes.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/nodetypes/TestPredefinedPrimaryNodeTypes.java 2009-12-25 15:02:33 UTC (rev 1186)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/nodetypes/TestPredefinedPrimaryNodeTypes.java 2009-12-25 15:02:53 UTC (rev 1187)
@@ -20,7 +20,6 @@
import org.exoplatform.services.jcr.JcrAPIBaseTest;
import org.exoplatform.services.jcr.impl.Constants;
-import org.exoplatform.services.jcr.impl.util.EntityCollection;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
@@ -47,8 +46,8 @@
NodeDefinition def = node.getDefinition();
NodeType type = node.getPrimaryNodeType();
- assertTrue("have child ", ((EntityCollection)node.getNodes()).size() == 0);
- assertTrue("prop num !=1 ", ((EntityCollection)node.getProperties()).size() == 1);
+ assertTrue("have child ", node.getNodes().getSize() == 0);
+ assertTrue("prop num !=1 ", node.getProperties().getSize() == 1);
assertEquals("Prop not default ", "nt:unstructured", node.getProperty("jcr:primaryType").getString());
assertEquals("Type!= nt:unstructured", type.getName(), "nt:unstructured");
@@ -82,9 +81,8 @@
NodeDefinition def = node.getDefinition();
NodeType type = node.getPrimaryNodeType();
- assertTrue("have child ", ((EntityCollection)node.getNodes()).size() == 0);
- assertTrue("prop num !=2 ==" + ((EntityCollection)node.getProperties()).size(), ((EntityCollection)node
- .getProperties()).size() == 2);
+ assertTrue("have child ", node.getNodes().getSize() == 0);
+ assertTrue("prop num !=2 ==" + node.getProperties().getSize(), node.getProperties().getSize() == 2);
PropertyDefinition[] propertyDefinitions = type.getPropertyDefinitions();
assertTrue("typePropDefs != 3", propertyDefinitions.length == 3);
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestOrderBefore.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestOrderBefore.java 2009-12-25 15:02:33 UTC (rev 1186)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestOrderBefore.java 2009-12-25 15:02:53 UTC (rev 1187)
@@ -21,6 +21,9 @@
import org.exoplatform.services.jcr.JcrAPIBaseTest;
import org.exoplatform.services.jcr.impl.util.EntityCollection;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.jcr.ItemExistsException;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
@@ -865,7 +868,7 @@
// n1[100] -> n1[99] pos:99
testBase.orderBefore("n1[2]", "n_21");
- EntityCollection nodes = (EntityCollection)testBase.getNodes();
+ EntityCollection nodes = getEntityCollection(testBase.getNodes());
assertEquals("Nodes must be equals ", n1__2, nodes.getList().get(119)); // pos
// :
@@ -880,7 +883,7 @@
testBase.save();
- nodes = (EntityCollection)testBase.getNodes();
+ nodes = getEntityCollection(testBase.getNodes());
assertEquals("Nodes must be equals ", n1__2, nodes.getList().get(119)); // pos
// :
@@ -900,7 +903,7 @@
// n_24 -> pos:120; n1[100] -> pos:121;
testBase.orderBefore("n_24", "n1[100]");
- nodes = (EntityCollection)testBase.getNodes();
+ nodes = getEntityCollection(testBase.getNodes());
assertEquals("Nodes must be equals ", n1__100, nodes.getList().get(120)); // pos
// :
@@ -961,4 +964,15 @@
checkOrderAnotherSession(order);
}
+
+ private EntityCollection getEntityCollection(NodeIterator nodes)
+ {
+ List result = new ArrayList();
+ while (nodes.hasNext())
+ {
+ result.add(nodes.next());
+ }
+
+ return new EntityCollection(result);
+ }
}
Modified: jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/load/perf/TestGetNodesPerf.java
===================================================================
--- jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/load/perf/TestGetNodesPerf.java 2009-12-25 15:02:33 UTC (rev 1186)
+++ jcr/branches/1.12.0-OPT/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/load/perf/TestGetNodesPerf.java 2009-12-25 15:02:53 UTC (rev 1187)
@@ -35,9 +35,9 @@
{
private static final String testName = "testRoot";
- private static final int sessionCount = 10;
+ private static final int sessionCount = 1;
- private static final int tryCount = 5;
+ private static final int tryCount = 1;
private Session[] sessions = new Session[sessionCount];
@@ -92,6 +92,7 @@
break;
}
+ log.info("Memory used: " + (rt.totalMemory() - rt.freeMemory() - usedMemory) / 1024 / 1024 + "Mb");
log.info("waiting for 10 seconds...");
Thread.sleep(10000);
}
@@ -127,4 +128,20 @@
}
}
}
+
+ public void _testNodeItetatorPerfomance() throws Exception
+ {
+ Node testRoot = session.getRootNode().getNode(testName);
+
+ // Test iterator perfomance
+ NodeIterator nodes = testRoot.getNodes();
+ log.info(nodes.getSize() + " nodes");
+
+ long startTime = System.currentTimeMillis();
+ while (nodes.hasNext())
+ {
+ nodes.nextNode();
+ }
+ log.info("Iterating all nodes consumes : " + (System.currentTimeMillis() - startTime) + "ms");
+ }
}
16 years, 6 months
exo-jcr SVN: r1186 - in jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: dataflow and 1 other directory.
by do-not-reply@jboss.org
Author: pnedonosko
Date: 2009-12-25 10:02:33 -0500 (Fri, 25 Dec 2009)
New Revision: 1186
Added:
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java
Modified:
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java
Log:
EXOJCR-347 do copy of Values on copy operations
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java 2009-12-25 14:25:12 UTC (rev 1185)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/FrozenNodeInitializer.java 2009-12-25 15:02:33 UTC (rev 1186)
@@ -33,6 +33,7 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
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;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
@@ -58,7 +59,7 @@
* @version $Id: FrozenNodeInitializer.java 11907 2008-03-13 15:36:21Z ksm $
*/
-public class FrozenNodeInitializer extends ItemDataTraversingVisitor
+public class FrozenNodeInitializer extends AbstractItemDataCopyVisitor
{
private static Log log = ExoLogger.getLogger("jcr.FrozenNodeInitializer");
@@ -101,15 +102,7 @@
PropertyData frozenProperty = null;
InternalQName qname = property.getQPath().getName();
- List<ValueData> values = new ArrayList<ValueData>();
- for (ValueData valueData : property.getValues())
- {
- // values.add(((TransientValueData)valueData).createTransientCopy());
-
- // TODO workaround for JBC branch, issued by the FileRestoreTest
- TransientValueData tvd = (TransientValueData)valueData;
- values.add(tvd.createTransientCopy1());
- }
+ List<ValueData> values = copyValues(property);
boolean mv = property.isMultiValued();
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java 2009-12-25 14:25:12 UTC (rev 1185)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataMergeVisitor.java 2009-12-25 15:02:33 UTC (rev 1186)
@@ -20,7 +20,6 @@
import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
import org.exoplatform.services.jcr.dataflow.DataManager;
-import org.exoplatform.services.jcr.dataflow.ItemDataTraversingVisitor;
import org.exoplatform.services.jcr.dataflow.ItemState;
import org.exoplatform.services.jcr.datamodel.InternalQName;
import org.exoplatform.services.jcr.datamodel.NodeData;
@@ -31,6 +30,7 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
+import org.exoplatform.services.jcr.impl.dataflow.AbstractItemDataCopyVisitor;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataCopyVisitor;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataRemoveVisitor;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
@@ -53,12 +53,10 @@
* Created by The eXo Platform SAS 06.02.2007 Traverse through merging nodes
* (destenation) and do merge to correspondent version states.
*
- * @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter
- * Nedonosko</a>
- * @version $Id: ItemDataMergeVisitor.java 14100 2008-05-12 10:53:47Z gazarenkov
- * $
+ * @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter Nedonosko</a>
+ * @version $Id: ItemDataMergeVisitor.java 14100 2008-05-12 10:53:47Z gazarenkov $
*/
-public class ItemDataMergeVisitor extends ItemDataTraversingVisitor
+public class ItemDataMergeVisitor extends AbstractItemDataCopyVisitor
{
protected static int NONE = -1;
@@ -385,8 +383,7 @@
}
}
- changes.add(new ItemState(mergedNode, ItemState.UPDATED, true, mergeNode.getQPath(), true));// XXX
- // UPDATE
+ changes.add(new ItemState(mergedNode, ItemState.UPDATED, true, mergeNode.getQPath(), true));
// replace set of properties of n with those of n'.
DataManager corrDataManager = corrSession.getTransientNodesManager().getTransactManager();
@@ -409,7 +406,7 @@
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());
- mcp.setValues(cp.getValues());
+ mcp.setValues(copyValues(cp));
changes.add(new ItemState(mcp, ItemState.ADDED, true, mergedNode.getQPath(), true));
}
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java 2009-12-25 14:25:12 UTC (rev 1185)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/version/ItemDataRestoreVisitor.java 2009-12-25 15:02:33 UTC (rev 1186)
@@ -19,7 +19,6 @@
package org.exoplatform.services.jcr.impl.core.version;
import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
-import org.exoplatform.services.jcr.dataflow.ItemDataTraversingVisitor;
import org.exoplatform.services.jcr.dataflow.ItemState;
import org.exoplatform.services.jcr.datamodel.IllegalNameException;
import org.exoplatform.services.jcr.datamodel.InternalQName;
@@ -31,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.dataflow.AbstractItemDataCopyVisitor;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataCopyVisitor;
import org.exoplatform.services.jcr.impl.dataflow.ItemDataRemoveVisitor;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
@@ -53,14 +53,14 @@
import javax.jcr.version.OnParentVersionAction;
/**
- * Created by The eXo Platform SAS 14.12.2006
+ * Created by The eXo Platform SAS.
*
- * @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter
- * Nedonosko</a>
- * @version $Id: ItemDataRestoreVisitor.java 14100 2008-05-12 10:53:47Z
- * gazarenkov $
+ * 14.12.2006
+ *
+ * @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter Nedonosko</a>
+ * @version $Id: ItemDataRestoreVisitor.java 14100 2008-05-12 10:53:47Z gazarenkov $
*/
-public class ItemDataRestoreVisitor extends ItemDataTraversingVisitor
+public class ItemDataRestoreVisitor extends AbstractItemDataCopyVisitor
{
private final Log log = ExoLogger.getLogger("jcr.ItemDataRestoreVisitor");
@@ -660,16 +660,14 @@
{
tagetProperty =
TransientPropertyData.createPropertyData(currentNode(), qname, property.getType(), property
- .isMultiValued(), property.getValues());
+ .isMultiValued(), copyValues(property));
}
changes.add(ItemState.createAddedState(tagetProperty));
-
- // else - nothing to do, i.e. left unchanged
-
}
else if (log.isDebugEnabled())
{
+ // else - nothing to do, i.e. left unchanged
log.debug("Visit property " + property.getQPath().getAsString() + " HAS "
+ OnParentVersionAction.nameFromValue(action) + " action");
}
Added: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java (rev 0)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java 2009-12-25 15:02:33 UTC (rev 1186)
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.services.jcr.impl.dataflow;
+
+import org.exoplatform.services.jcr.dataflow.ItemDataConsumer;
+import org.exoplatform.services.jcr.dataflow.ItemDataTraversingVisitor;
+import org.exoplatform.services.jcr.datamodel.PropertyData;
+import org.exoplatform.services.jcr.datamodel.ValueData;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jcr.RepositoryException;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter Nedonosko</a>
+ * @version $Id$
+ */
+public abstract class AbstractItemDataCopyVisitor extends ItemDataTraversingVisitor
+{
+
+ public AbstractItemDataCopyVisitor(ItemDataConsumer dataManager, int maxLevel)
+ {
+ super(dataManager, maxLevel);
+ }
+
+ public AbstractItemDataCopyVisitor(ItemDataConsumer dataManager)
+ {
+ super(dataManager);
+ }
+
+ /**
+ * Do actual copy of the property ValueDatas.
+ *
+ * @param property PropertyData
+ * @return List of ValueData
+ * @throws RepositoryException if I/O error occurs
+ */
+ protected List<ValueData> copyValues(PropertyData property) throws RepositoryException
+ {
+ List<ValueData> src = property.getValues();
+ List<ValueData> copy = new ArrayList<ValueData>(src.size());
+ try
+ {
+ for (ValueData vd : src)
+ {
+ // TODO fix according OPT branch code
+ if (vd.isByteArray())
+ {
+ copy.add(new TransientValueData(vd.getAsByteArray(), vd.getOrderNumber()));
+ }
+ else
+ {
+ copy.add(new TransientValueData(vd.getAsStream(), vd.getOrderNumber()));
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ throw new RepositoryException("Error of Value copy " + property.getQPath().getAsString(), e);
+ }
+
+ return copy;
+ }
+
+}
Property changes on: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/AbstractItemDataCopyVisitor.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Id
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java 2009-12-25 14:25:12 UTC (rev 1185)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java 2009-12-25 15:02:33 UTC (rev 1186)
@@ -19,7 +19,6 @@
package org.exoplatform.services.jcr.impl.dataflow;
import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
-import org.exoplatform.services.jcr.dataflow.ItemDataTraversingVisitor;
import org.exoplatform.services.jcr.dataflow.ItemState;
import org.exoplatform.services.jcr.datamodel.InternalQName;
import org.exoplatform.services.jcr.datamodel.NodeData;
@@ -42,10 +41,10 @@
* list of <code>List<ItemState></code> for copying new nodes and their properties.
*
* @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter Nedonosko</a>
- * @version $Id: DefaultItemDataCopyVisitor.java 12306 2008-03-24 10:25:55Z ksm $
+ * @version $Id$
*/
-public abstract class DefaultItemDataCopyVisitor extends ItemDataTraversingVisitor
+public abstract class DefaultItemDataCopyVisitor extends AbstractItemDataCopyVisitor
{
/**
@@ -119,13 +118,12 @@
.getMixinTypeNames())
&& qname.equals(Constants.JCR_UUID))
{
-
values = new ArrayList<ValueData>(1);
values.add(new TransientValueData(curParent().getIdentifier()));
}
else
{
- values = property.getValues();
+ values = copyValues(property);
}
TransientPropertyData newProperty =
Property changes on: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/DefaultItemDataCopyVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java 2009-12-25 14:25:12 UTC (rev 1185)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java 2009-12-25 15:02:33 UTC (rev 1186)
@@ -44,7 +44,7 @@
* <b>ItemDeletedExistingStates</b> list for remove existing nodes if <code>removeExisting</code> is
* true.
*
- * @version $Id: ItemDataCloneVisitor.java 12306 2008-03-24 10:25:55Z ksm $
+ * @version $Id$
*/
public class ItemDataCloneVisitor extends DefaultItemDataCopyVisitor
{
Property changes on: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCloneVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java 2009-12-25 14:25:12 UTC (rev 1185)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java 2009-12-25 15:02:33 UTC (rev 1186)
@@ -123,21 +123,17 @@
}
else if (qname.equals(Constants.JCR_UUID))
{
- values.add(new TransientValueData(curParent().getIdentifier())); // uuid
- // of
- // the
- // parent
+ values.add(new TransientValueData(curParent().getIdentifier())); // uuid of the parent
}
else
{
- values = property.getValues(); // copy the property
+ values = copyValues(property); // copy the property
}
}
else if (ntManager.isNodeType(Constants.MIX_REFERENCEABLE, curParent().getPrimaryTypeName(), curParent()
.getMixinTypeNames())
&& qname.equals(Constants.JCR_UUID))
{
-
values = new ArrayList<ValueData>(1);
values.add(new TransientValueData(curParent().getIdentifier()));
}
@@ -152,7 +148,7 @@
{
return;
}
- values = property.getValues();
+ values = copyValues(property);
}
TransientPropertyData newProperty =
Property changes on: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataCopyVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java 2009-12-25 14:25:12 UTC (rev 1185)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java 2009-12-25 15:02:33 UTC (rev 1186)
@@ -43,7 +43,7 @@
* list of <code>List<ItemState></code> for copying new nodes and their properties and
* <b>itemDeletedStates</b> for deleting existing nodes and properties.
*
- * @version $Id: ItemDataMoveVisitor.java 11907 2008-03-13 15:36:21Z ksm $
+ * @version $Id$
*/
public class ItemDataMoveVisitor extends ItemDataTraversingVisitor
{
@@ -230,6 +230,7 @@
}
else
{
+ // we don't copy ValueDatas here as it's move (i.e. VS files will not be relocated)
values = property.getValues();
}
Property changes on: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java 2009-12-25 14:25:12 UTC (rev 1185)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java 2009-12-25 15:02:33 UTC (rev 1186)
@@ -46,7 +46,7 @@
* Created by The eXo Platform SAS 15.12.2006
*
* @author <a href="mailto:peter.nedonosko@exoplatform.com.ua">Peter Nedonosko</a>
- * @version $Id: ItemDataRemoveVisitor.java 14100 2008-05-12 10:53:47Z gazarenkov $
+ * @version $Id$
*/
public class ItemDataRemoveVisitor extends ItemDataTraversingVisitor
{
Property changes on: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataRemoveVisitor.java
___________________________________________________________________
Name: svn:keywords
+ Id
16 years, 6 months
exo-jcr SVN: r1185 - jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/persistent.
by do-not-reply@jboss.org
Author: areshetnyak
Date: 2009-12-25 09:25:12 -0500 (Fri, 25 Dec 2009)
New Revision: 1185
Modified:
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/persistent/PersistedNodeData.java
Log:
EXOJCR-327 : The serialization PersistentNodeData was changed ( checking if acl is null).
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/persistent/PersistedNodeData.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/persistent/PersistedNodeData.java 2009-12-25 13:45:08 UTC (rev 1184)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/dataflow/persistent/PersistedNodeData.java 2009-12-25 14:25:12 UTC (rev 1185)
@@ -49,6 +49,10 @@
* serialVersionUID to serialization.
*/
private static final long serialVersionUID = 3033563403958948338L;
+
+ private static final int ACL_IS_NULL = -1;
+
+ private static final int ACL_IS_NOT_NULL = 1;
//TODO remove final
protected int orderNumber;
@@ -64,7 +68,6 @@
public PersistedNodeData()
{
super();
- this.acl = new AccessControlList();
}
public PersistedNodeData(String id, QPath qpath, String parentId, int version, int orderNumber,
@@ -207,7 +210,11 @@
}
// acl
- acl.readExternal(in);
+ if (in.readInt() == ACL_IS_NOT_NULL)
+ {
+ acl = new AccessControlList();
+ acl.readExternal(in);
+ }
}
@@ -231,7 +238,15 @@
out.write(buf);
}
- acl.writeExternal(out);
+ if (acl == null)
+ {
+ out.writeInt(ACL_IS_NULL);
+ }
+ else
+ {
+ out.writeInt(ACL_IS_NOT_NULL);
+ acl.writeExternal(out);
+ }
}
}
16 years, 6 months
exo-jcr SVN: r1184 - jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache.
by do-not-reply@jboss.org
Author: skabashnyuk
Date: 2009-12-25 08:45:08 -0500 (Fri, 25 Dec 2009)
New Revision: 1184
Modified:
jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java
Log:
EXOJCR-331 : Enabled default implementations
Modified: jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java
===================================================================
--- jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java 2009-12-25 13:43:32 UTC (rev 1183)
+++ jcr/branches/1.12.0-JBCCACHE/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JbossCacheIndexChangesFilter.java 2009-12-25 13:45:08 UTC (rev 1184)
@@ -122,15 +122,15 @@
if (!parentHandler.isInitialized())
{
// TODO: uncomment it, when JbossCacheIndexInfos is finished.
- //parentHandler.setIndexInfos(new JbossCacheIndexInfos(cache, true, ioMode));
- //parentHandler.setIndexUpdateMonitor(new JbossCacheIndexUpdateMonitor(cache));
+ parentHandler.setIndexInfos(new JbossCacheIndexInfos(cache, true, ioMode));
+ parentHandler.setIndexUpdateMonitor(new JbossCacheIndexUpdateMonitor(cache));
parentHandler.init();
}
if (!handler.isInitialized())
{
// TODO: uncomment it, when JbossCacheIndexInfos is finished.
- //handler.setIndexInfos(new JbossCacheIndexInfos(cache, false, ioMode));
- //handler.setIndexUpdateMonitor(new JbossCacheIndexUpdateMonitor(cache));
+ handler.setIndexInfos(new JbossCacheIndexInfos(cache, false, ioMode));
+ handler.setIndexUpdateMonitor(new JbossCacheIndexUpdateMonitor(cache));
handler.init();
}
16 years, 6 months