Example #1
0
  /** @since 3.1 */
  @Override
  public <T extends Persistent> T localObject(T objectFromAnotherContext) {

    if (objectFromAnotherContext == null) {
      throw new NullPointerException("Null object argument");
    }

    ObjectId id = objectFromAnotherContext.getObjectId();

    // first look for the ID in the local GraphManager
    synchronized (getGraphManager()) {
      T localObject = (T) getGraphManager().getNode(id);
      if (localObject != null) {
        return localObject;
      }

      // create a hollow object, optimistically assuming that the ID we
      // got from
      // 'objectFromAnotherContext' is a valid ID either in the parent
      // context or in
      // the DB. This essentially defers possible FaultFailureExceptions.

      ClassDescriptor descriptor = getEntityResolver().getClassDescriptor(id.getEntityName());
      Persistent persistent = (Persistent) descriptor.createObject();

      persistent.setObjectContext(this);
      persistent.setObjectId(id);
      persistent.setPersistenceState(PersistenceState.HOLLOW);

      getGraphManager().registerNode(id, persistent);

      return (T) persistent;
    }
  }
Example #2
0
  public final void validate(T object) {
    ObjectContext workDc = object.getObjectContext(); // .createChildDataContext();
    T obj = (T) workDc.localObject(object.getObjectId(), object);

    Set<DataObject> toDelete = new HashSet<DataObject>();
    try {
      if (!fakes.isEmpty()) {
        // Simulation des fakes
        for (String prop : fakes.keySet()) {
          if (obj.readProperty(prop) != null) continue;
          DataObject value = (DataObject) workDc.newObject(fakes.get(prop));
          obj.setToOneTarget(prop, value, false);
          toDelete.add(value);
        }
      }
      // Validation
      validateImpl(obj);
    } finally {
      // Annulation des modifs
      if (!fakes.isEmpty()) {
        // Suppression des fakes
        for (String prop : fakes.keySet()) {
          DataObject value = (DataObject) obj.readProperty(prop);
          if (!toDelete.contains(value)) continue;
          workDc.deleteObject(value);
        }
      }
    }
    // childDc.rollbackChangesLocally();
  }
 protected final <T extends TridentObjectType> T findTridentObject(List<T> list, String id) {
   for (T object : list) {
     if (object.getObjectId().equals(id)) {
       return object;
     }
   }
   return null;
 }