stefan 2004/07/10 09:52:13
Modified: proposals/jcrri/src/org/apache/slide/jcr/core NodeImpl.java
Log:
jcrri
Revision Changes Path
1.20 +14 -8
jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/NodeImpl.java
Index: NodeImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/NodeImpl.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- NodeImpl.java 9 Jul 2004 16:48:44 -0000 1.19
+++ NodeImpl.java 10 Jul 2004 16:52:13 -0000 1.20
@@ -1388,12 +1388,15 @@
while (iter.hasNext()) {
NodeState.PropertyEntry entry = (NodeState.PropertyEntry) iter.next();
PropertyImpl prop = (PropertyImpl) itemMgr.getItem(new
PropertyId(thisState.getUUID(), entry.getName()));
- // check if property has been defined by mixin type
+ // check if property has been defined by mixin type (or one of its
supertypes)
NodeTypeImpl declaringNT = (NodeTypeImpl)
prop.getDefinition().getDeclaringNodeType();
if (mixin.getQName().equals(declaringNT.getQName())
|| mixin.isDerivedFrom(declaringNT.getQName())) {
- // remove property
- removeChildProperty(entry.getName());
+ // make sure declaring type is not included in primary type
+ if (!nodeType.isDerivedFrom(declaringNT.getQName())) {
+ // remove property
+ removeChildProperty(entry.getName());
+ }
}
}
// use temp array to avoid ConcurrentModificationException
@@ -1402,12 +1405,15 @@
while (iter.hasNext()) {
NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) iter.next();
NodeImpl node = (NodeImpl) itemMgr.getItem(new NodeId(entry.getUUID()));
- // check if node has been defined by mixin type
+ // check if node has been defined by mixin type (or one of its supertypes)
NodeTypeImpl declaringNT = (NodeTypeImpl)
node.getDefinition().getDeclaringNodeType();
if (mixin.getQName().equals(declaringNT.getQName())
|| mixin.isDerivedFrom(declaringNT.getQName())) {
- // remove node
- removeChildNode(entry.getName(), entry.getIndex());
+ // make sure declaring type is not included in primary type
+ if (!nodeType.isDerivedFrom(declaringNT.getQName())) {
+ // remove node
+ removeChildNode(entry.getName(), entry.getIndex());
+ }
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]