// ACT_RUN
PersistenceCapable pc;
if (sm != null) {
if (sm.isDetached())
throw new ObjectExistsException(_loc.get
("persist-detached", Exceptions.toString(obj))).
setFailedObject(obj);
if (!sm.isEmbedded()) {
sm.persist();
_cache.persist(sm);
if ((action & OpCallbacks.ACT_CASCADE) != 0)
sm.cascadePersist(call);
return sm;
}
// an embedded field; notify the owner that the value has
// changed by becoming independently persistent
sm.getOwner().dirty(sm.getOwnerIndex());
_cache.persist(sm);
pc = sm.getPersistenceCapable();
} else {
pc = assertPersistenceCapable(obj);
if (pc.pcIsDetached() == Boolean.TRUE)
throw new ObjectExistsException(_loc.get
("persist-detached", Exceptions.toString(obj))).
setFailedObject(obj);
}
ClassMetaData meta = _conf.getMetaDataRepositoryInstance().