getEntityHandler<T> method

EntityHandler<T>? getEntityHandler<T>({
  1. T? obj,
  2. Type? type,
  3. String? typeName,
  4. EntityHandler? knownEntityHandler,
})

Implementation

EntityHandler<T>? getEntityHandler<T>(
    {T? obj,
    Type? type,
    String? typeName,
    EntityHandler? knownEntityHandler}) {
  if (T == O && isValidEntityType<T>()) {
    return this as EntityHandler<T>;
  }

  if (obj != null) {
    if (obj is EntityReference) {
      if (obj.type == O && isValidEntityType<O>()) {
        return this as EntityHandler<T>;
      } else {
        var entityHandler = obj.entityHandler;
        if (entityHandler is EntityHandler<T>) {
          return entityHandler;
        }
      }
    } else if (obj.runtimeType == O && isValidEntityType<O>()) {
      return this as EntityHandler<T>;
    }
  }

  if (type != null && type == O && isValidEntityType<O>()) {
    return this as EntityHandler<T>;
  }

  if (typeName != null && this.typeName == typeName) {
    return this as EntityHandler<T>;
  }

  return knownEntityHandler?.getEntityHandler<T>(
          obj: obj, type: type, typeName: typeName) ??
      provider.getEntityHandler<T>(obj: obj, type: type);
}