code: protected TransientItemData copyItemDataDelete(final ItemData item) throws RepositoryException
     {
  
        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
           final AccessControlList acl = node.getACL();
           if (acl == null)
           {
              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);
        }
  
        // else - property
        final PropertyData prop = (PropertyData)item;
  
        // make a copy, value wil be null for deleting items
        TransientPropertyData newData =
           new TransientPropertyData(prop.getQPath(), prop.getIdentifier(), prop.getPersistedVersion(), prop.getType(),
              prop.getParentIdentifier(), prop.isMultiValued());
  
        return newData;
     }
docs: Copy ItemData for Delete operation.
  
  @param item
  ItemData
  @return TransientItemData
  @throws RepositoryException
  if error occurs