@Override
  public List<StoredObject> getRelationships(
      String objectId, List<String> typeIds, RelationshipDirection direction) {

    List<StoredObject> res = new ArrayList<StoredObject>();

    if (typeIds != null && typeIds.size() > 0) {
      for (String typeId : typeIds) {
        for (StoredObject so : fStoredObjectMap.values()) {
          if (so instanceof Relationship && so.getTypeId().equals(typeId)) {
            Relationship ro = (Relationship) so;
            if (ro.getSourceObjectId().equals(objectId)
                && (RelationshipDirection.EITHER == direction
                    || RelationshipDirection.SOURCE == direction)) {
              res.add(so);
            } else if (ro.getTargetObjectId().equals(objectId)
                && (RelationshipDirection.EITHER == direction
                    || RelationshipDirection.TARGET == direction)) {
              res.add(so);
            }
          }
        }
      }
    } else {
      res = getAllRelationships(objectId, direction);
    }
    return res;
  }
  private List<StoredObject> getAllRelationships(String objectId, RelationshipDirection direction) {

    List<StoredObject> res = new ArrayList<StoredObject>();

    for (StoredObject so : fStoredObjectMap.values()) {
      if (so instanceof Relationship) {
        Relationship ro = (Relationship) so;
        if (ro.getSourceObjectId().equals(objectId)
            && (RelationshipDirection.EITHER == direction
                || RelationshipDirection.SOURCE == direction)) {
          res.add(so);
        } else if (ro.getTargetObjectId().equals(objectId)
            && (RelationshipDirection.EITHER == direction
                || RelationshipDirection.TARGET == direction)) {
          res.add(so);
        }
      }
    }
    return res;
  }