targetObject.register();
return targetObject;
}
public void updateObjectWithData(String entityType, String entityId, RepositoryValueObject valueObject) {
RepositoryObject repositoryObject = getRepositoryObject(entityType, entityId);
// first handle the attributes
for (Entry<String, String> attribute : valueObject.attributes.entrySet()) {
String key = attribute.getKey();
String value = attribute.getValue();
// only add/update the attribute if it actually changed
if (!value.equals(repositoryObject.getAttribute(key))) {
repositoryObject.addAttribute(key, value);
}
}
Enumeration<String> keys = repositoryObject.getAttributeKeys();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
if (!valueObject.attributes.containsKey(key)) {
// TODO since we cannot remove keys right now, we null them
repositoryObject.addAttribute(key, null);
}
}
if (ARTIFACT2FEATURE.equals(entityType) || FEATURE2DISTRIBUTION.equals(entityType) || DISTRIBUTION2TARGET.equals(entityType)) {
String leftAttribute = repositoryObject.getAttribute("left");
String rightAttribute = repositoryObject.getAttribute("right");
RepositoryObject left = null;
if (leftAttribute != null) {
left = getLeft(entityType, leftAttribute);
}
RepositoryObject right = null;
if (rightAttribute != null) {
right = getRight(entityType, rightAttribute);
}
if (left != null) {
if (left instanceof StatefulTargetObject) {
if (((StatefulTargetObject) left).isRegistered()) {
repositoryObject.addAttribute("leftEndpoint", ((StatefulTargetObject) left).getTargetObject().getAssociationFilter(getAttributes(((StatefulTargetObject) left).getTargetObject())));
}
}
else {
repositoryObject.addAttribute("leftEndpoint", left.getAssociationFilter(getAttributes(left)));
}
}
if (right != null) {
if (right instanceof StatefulTargetObject) {
if (((StatefulTargetObject) right).isRegistered()) {
repositoryObject.addAttribute("rightEndpoint", ((StatefulTargetObject) right).getTargetObject().getAssociationFilter(getAttributes(((StatefulTargetObject) right).getTargetObject())));
}
}
else {
repositoryObject.addAttribute("rightEndpoint", right.getAssociationFilter(getAttributes(right)));
}
}
}
// now handle the tags in a similar way
for (Entry<String, String> attribute : valueObject.tags.entrySet()) {