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]

Reply via email to