code: protected DataResourceProvider<? extends DataResource> getProvider(ResourceUri resourceUri) throws ResourceUriUndefinedException {
  
      String schemePrefix = resourceUri.getSchemePrefix();
      if (schemePrefix == null) {
        // default is file://
        schemePrefix = FileResource.SCHEME_PREFIX;
      }
      DataResourceProvider<? extends DataResource> provider = this.schema2providerMap.get(schemePrefix);
      if (provider == null) {
        throw new ResourceUriUndefinedException(resourceUri.getUri());
      }
      return provider;
    }
docs: This method gets the {@link DataResourceProvider provider} for the given {@code resourceUri}.
  
  @param resourceUri is the {@link ResourceUriImpl}.
  @return the {@link DataResourceProvider} {@link DataResourceProvider#getSchemePrefixes() responsible} for
  the given {@code resourceUri}.
  @throws ResourceUriUndefinedException if no {@link DataResourceProvider provider} is
  {@link #registerProvider(DataResourceProvider) registered} that is responsible.