PropertyDefinitionDatas defs;
ItemImpl prevItem =
dataManager.getItem(parentNode.nodeData(), new QPathEntry(propertyName, 0), true,
dataManager.isNew(parentNode.getIdentifier()), ItemType.PROPERTY);
NodeTypeDataManager ntm = session.getWorkspace().getNodeTypesHolder();
NodeData parentData = (NodeData)parentNode.getData();
boolean isMultiValue = multiValue;
PropertyImpl prevProperty = null;
if (prevItem == null || prevItem.isNode())
{ // new property
identifier = IdGenerator.generate();
version = -1;
if (propertyValues == null)
{
// new property null values;
TransientPropertyData nullData =
new TransientPropertyData(qpath, identifier, version, PropertyType.UNDEFINED,
parentNode.getInternalIdentifier(), isMultiValue);
PropertyImpl nullProperty = new PropertyImpl(nullData, session);
nullProperty.invalidate();
return nullProperty;
}
defs =
ntm.getPropertyDefinitions(propertyName, parentData.getPrimaryTypeName(), parentData.getMixinTypeNames());
prevProp = null;
state = ItemState.ADDED;
}
else
{
// update of the property
prevProp = (PropertyImpl)prevItem;
prevProperty = new PropertyImpl(prevProp.getData(), prevProp.parentData(), prevProp.getSession());
isMultiValue = prevProp.isMultiValued();
defs =
ntm.getPropertyDefinitions(propertyName, parentData.getPrimaryTypeName(), parentData.getMixinTypeNames());
identifier = prevProp.getInternalIdentifier();
version = prevProp.getData().getPersistedVersion();
if (propertyValues == null)
{