this.secondaryTypes = null;
this.extensions = new HashMap<ExtensionLevel, List<CmisExtensionElement>>();
this.creationContext = new OperationContextImpl(context);
this.refreshTimestamp = System.currentTimeMillis();
ObjectFactory of = getObjectFactory();
if (objectData != null) {
// handle properties
if (objectData.getProperties() != null) {
// get secondary types
if (objectData.getProperties().getProperties() != null
&& objectData.getProperties().getProperties()
.containsKey(PropertyIds.SECONDARY_OBJECT_TYPE_IDS)) {
@SuppressWarnings("unchecked")
List<String> stids = (List<String>) objectData.getProperties().getProperties()
.get(PropertyIds.SECONDARY_OBJECT_TYPE_IDS).getValues();
if (stids != null && stids.size() > 0) {
secondaryTypes = new ArrayList<SecondaryType>();
for (String stid : stids) {
if (stid != null) {
ObjectType type = session.getTypeDefinition(stid);
if (type instanceof SecondaryType) {
secondaryTypes.add((SecondaryType) type);
}
}
}
}
}
this.properties = of.convertProperties(objectType, secondaryTypes, objectData.getProperties());
extensions.put(ExtensionLevel.PROPERTIES, objectData.getProperties().getExtensions());
}
// handle allowable actions
if (objectData.getAllowableActions() != null) {
this.allowableActions = objectData.getAllowableActions();
extensions.put(ExtensionLevel.ALLOWABLE_ACTIONS, objectData.getAllowableActions().getExtensions());
}
// handle renditions
if (objectData.getRenditions() != null) {
this.renditions = new ArrayList<Rendition>();
for (RenditionData rd : objectData.getRenditions()) {
this.renditions.add(of.convertRendition(getId(), rd));
}
}
// handle ACL
if (objectData.getAcl() != null) {
acl = objectData.getAcl();
extensions.put(ExtensionLevel.ACL, objectData.getAcl().getExtensions());
}
// handle policies
if ((objectData.getPolicyIds() != null) && (objectData.getPolicyIds().getPolicyIds() != null)) {
policies = new ArrayList<Policy>();
for (String pid : objectData.getPolicyIds().getPolicyIds()) {
CmisObject policy = session.getObject(getSession().createObjectId(pid));
if (policy instanceof Policy) {
policies.add((Policy) policy);
}
}
extensions.put(ExtensionLevel.POLICIES, objectData.getPolicyIds().getExtensions());
}
// handle relationships
if (objectData.getRelationships() != null) {
relationships = new ArrayList<Relationship>();
for (ObjectData rod : objectData.getRelationships()) {
CmisObject relationship = of.convertObject(rod, this.creationContext);
if (relationship instanceof Relationship) {
relationships.add((Relationship) relationship);
}
}
}