if (session.isRemoteUnitOfWork() && unitOfWorkIndirectionObject instanceof UnitOfWorkValueHolder) {
ValueHolderInterface valueHolder = ((UnitOfWorkValueHolder) unitOfWorkIndirectionObject).getWrappedValueHolder();
if (valueHolder == null){
// For remote session the original value holder is transient,
// so the value must be found in the registry or created.
RemoteSessionController controller = ((RemoteUnitOfWork) session).getParentSessionController();
Object id = ((UnitOfWorkValueHolder) unitOfWorkIndirectionObject).getWrappedValueHolderRemoteID();
if (id == null) {
// Must build a new value holder.
Object object = ((UnitOfWorkValueHolder) unitOfWorkIndirectionObject).getSourceObject();
AbstractRecord row = this.mapping.getDescriptor().getObjectBuilder().buildRow(object, session, WriteType.UNDEFINED);
ReadObjectQuery query = new ReadObjectQuery();
query.setSession(((RemoteUnitOfWork) session).getParent());
valueHolder = (ValueHolderInterface) this.mapping.valueFromRow(row, null, query, true);
} else {
valueHolder = (ValueHolderInterface) controller.getRemoteValueHolders().get(id);
}
}
}
if (unitOfWorkIndirectionObject instanceof WrappingValueHolder) {
ValueHolderInterface valueHolder = ((WrappingValueHolder)unitOfWorkIndirectionObject).getWrappedValueHolder();