public Repository open(C req, String name)throws RepositoryNotFoundException, ServiceNotEnabledException {if (isUnreasonableName(name))throw new RepositoryNotFoundException(name);Repository db = exports.get(nameWithDotGit(name));if (db != null) {db.incrementOpen();return db;}for (File base : exportBase) {File dir = FileKey.resolve(new File(base, name), FS.DETECTED);if (dir == null)continue;try {FileKey key = FileKey.exact(dir, FS.DETECTED);db = RepositoryCache.open(key, true);} catch (IOException e) {throw new RepositoryNotFoundException(name, e);}try {if (isExportOk(req, name, db)) {return db;}throw new ServiceNotEnabledException();} catch (RuntimeException | IOException e) {db.close();throw new RepositoryNotFoundException(name, e);} catch (ServiceNotEnabledException e) {db.close();throw e;}}if (exportBase.size() == 1) {File dir = new File(exportBase.iterator().next(), name);throw new RepositoryNotFoundException(name,new RepositoryNotFoundException(dir));}throw new RepositoryNotFoundException(name);}

public Repository open ( C req , String name ) throws RepositoryNotFoundException , ServiceNotEnabledException { if ( isUnreasonableName ( name ) ) throw new RepositoryNotFoundException ( name ) ; Repository db = exports . get ( nameWithDotGit ( name ) ) ; if ( db != null ) { db . incrementOpen ( ) ; return db ; } for ( File base : exportBase ) { File dir = FileKey . resolve ( new File ( base , name ) , FS . DETECTED ) ; if ( dir == null ) continue ; try { FileKey key = FileKey . exact ( dir , FS . DETECTED ) ; db = RepositoryCache . open ( key , true ) ; } catch ( IOException e ) { throw new RepositoryNotFoundException ( name , e ) ; } try { if ( isExportOk ( req , name , db ) ) { return db ; } throw new ServiceNotEnabledException ( ) ; } catch ( RuntimeException | IOException e ) { db . close ( ) ; throw new RepositoryNotFoundException ( name , e ) ; } catch ( ServiceNotEnabledException e ) { db . close ( ) ; throw e ; } } if ( exportBase . size ( ) == 1 ) { File dir = new File ( exportBase . iterator ( ) . next ( ) , name ) ; throw new RepositoryNotFoundException ( name , new RepositoryNotFoundException ( dir ) ) ; } throw new RepositoryNotFoundException ( name ) ; }
public override Repository Open(C req, string name){if (IsUnreasonableName(name)){throw new RepositoryNotFoundException(name);}Repository db = exports.Get(NameWithDotGit(name));if (db != null){db.IncrementOpen();return db;}foreach (FilePath @base in exportBase){FilePath dir = RepositoryCache.FileKey.Resolve(new FilePath(@base, name), FS.DETECTED);if (dir == null){continue;}try{RepositoryCache.FileKey key = RepositoryCache.FileKey.Exact(dir, FS.DETECTED);db = RepositoryCache.Open(key, true);}catch (IOException e){throw new RepositoryNotFoundException(name, e);}try{if (IsExportOk(req, name, db)){return db;}else{throw new ServiceNotEnabledException();}}catch (RuntimeException e){db.Close();throw new RepositoryNotFoundException(name, e);}catch (IOException e){db.Close();throw new RepositoryNotFoundException(name, e);}catch (ServiceNotEnabledException e){db.Close();throw;}}if (exportBase.Count == 1){FilePath dir = new FilePath(exportBase.Iterator().Next(), name);throw new RepositoryNotFoundException(name, new RepositoryNotFoundException(dir));}throw new RepositoryNotFoundException(name);}
