code: protected ValueStorageURLConnection createURLConnection(URL u, String repository, String workspace,
        String valueStorageId) throws IOException
     {
        ExoContainer container = ExoContainerContext.getCurrentContainer();
        RepositoryService repositoryService =
           (RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
        if (repositoryService == null)
           throw new IOException("Could not find the repository service");
        try
        {
           ManageableRepository repo = repositoryService.getRepository(repository);
           WorkspaceContainerFacade workspaceContainer = repo.getWorkspaceContainer(workspace);
           ValueStoragePluginProvider provider =
              (ValueStoragePluginProvider)workspaceContainer.getComponent(ValueStoragePluginProvider.class);
           if (provider == null)
              throw new IOException("Could not find the ValueStoragePluginProvider for " + repository + "/" + workspace);
           return provider.createURLConnection(valueStorageId, u);
        }
        catch (IOException e)
        {
           throw e;
        }
        catch (Exception e)
        {
           throw new IOException("Could not get ValueStorageURLConnection from the value storage " + repository + "/"
              + workspace + "/" + valueStorageId, e);
        }
     }
docs: <p>Creates a new instance of {@link ValueStorageURLConnection} from the
  value storage that belongs to the provided <code>repository</code> and <code>workspace</code>
  and whose id is the provided <code>valueStorageId</code>.</p>
  <p><b>NB:</b> <i>For performance reason, this method should be overridden by
  sub classes. Indeed the default implementation will get {@link ValueStoragePluginProvider}
  from the current context but in practice, sub classes should already have it.
  The default implementation only makes sense, when it will be called directly by
  {@link ValueStorageURLStreamHandler#openConnection(URL)} which happens when
  we try to read the content of the target resource outside the context of the
  value storage.</i>
  </p>
  @param u the {@link URL} of the resource
  @param repository the name of the repository that owns the value storage
  @param workspace the name of the workspace that owns the value storage
  @param valueStorageId the id of the value storage
  @return the {@link ValueStorageURLConnection} corresponding to the resource
  @throws IOException if the {@link ValueStorageURLConnection} could not be created