public Tuple readOneSync(
      Pattern pattern, String restriction, String key, long timeout, Scope scope, Provider provider)
      throws TupleSpaceException, TupleSpaceSecurityException {

    Tuple tuple = null;

    switch (provider) {
      case LOCAL:
        tuple = localDomain.readOneSync(pattern, restriction, key, timeout, scope);
        break;
      case INFRA:
        tuple = infraDomain.readOneSync(pattern, restriction, key, timeout, scope);
        break;
      case ADHOC:
        tuple = adhocDomain.readOneSync(pattern, restriction, key, timeout, scope);
        break;
      default: // ANY provider
        tuple = localDomain.readOneSync(pattern, restriction, key, timeout, scope);

        if (tuple == null || tuple.size() == 0) {
          tuple = infraDomain.readOneSync(pattern, restriction, key, timeout, scope);

          if (tuple == null || tuple.size() == 0) {
            tuple = adhocDomain.readOneSync(pattern, restriction, key, timeout, scope);
          }
        }
        break;
    }
    return tuple;
  }