public void registerNewObject(Object object) {
if (object == null) {
throw new NullPointerException("Can't register null object.");
}
ObjEntity entity = getEntityResolver().lookupObjEntity(object);
if (entity == null) {
throw new IllegalArgumentException(
"Can't find ObjEntity for Persistent class: "
+ object.getClass().getName()
+ ", class is likely not mapped.");
}
final Persistent persistent = (Persistent) object;
// sanity check - maybe already registered
if (persistent.getObjectId() != null) {
if (persistent.getObjectContext() == this) {
// already registered, just ignore
return;
}
else if (persistent.getObjectContext() != null) {
throw new IllegalStateException(
"Persistent is already registered with another DataContext. "
+ "Try using 'localObjects()' instead.");
}
}
else {
persistent.setObjectId(new ObjectId(entity.getName()));
}
persistent.setObjectContext(this);
persistent.setPersistenceState(PersistenceState.NEW);
getObjectStore().registerNode(persistent.getObjectId(), object);
getObjectStore().nodeCreated(persistent.getObjectId());
// now we need to find all arc changes, inject missing value holders and pull in
// all transient connected objects
ClassDescriptor descriptor = getEntityResolver().getClassDescriptor(
entity.getName());
if (descriptor == null) {
throw new IllegalArgumentException("Invalid entity name: " + entity.getName());
}
descriptor.visitProperties(new PropertyVisitor() {
public boolean visitToMany(ToManyProperty property) {