Delegate repository access to refs, objects
Instead of using the internal field directly to access references or objects, use the getter method to obtain the proper type of database, and follow down from there. This permits us to later do a refactoring that makes those methods abstract and strips the field out of the Repository class, moving it into a concrete base class that is more storage implementation specific. Change-Id: Ic21dd48800e68a04ce372965ad233485b2a84bef Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
f6c26dabd2
commit
bd8b06427f
|
@ -453,8 +453,8 @@ public File toFile(final AnyObjectId objectId) {
|
||||||
* @return true if the specified object is stored in this repo or any of the
|
* @return true if the specified object is stored in this repo or any of the
|
||||||
* known shared repositories.
|
* known shared repositories.
|
||||||
*/
|
*/
|
||||||
public boolean hasObject(final AnyObjectId objectId) {
|
public boolean hasObject(AnyObjectId objectId) {
|
||||||
return objectDatabase.hasObject(objectId);
|
return getObjectDatabase().hasObject(objectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -485,9 +485,9 @@ public ObjectLoader openObject(final AnyObjectId id)
|
||||||
* object, or null if the object does not exist.
|
* object, or null if the object does not exist.
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public ObjectLoader openObject(final WindowCursor curs, final AnyObjectId id)
|
public ObjectLoader openObject(WindowCursor curs, AnyObjectId id)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
return objectDatabase.openObject(curs, id);
|
return getObjectDatabase().openObject(curs, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -726,7 +726,7 @@ public RefUpdate updateRef(final String ref) throws IOException {
|
||||||
* to the base ref, as the symbolic ref could not be read.
|
* to the base ref, as the symbolic ref could not be read.
|
||||||
*/
|
*/
|
||||||
public RefUpdate updateRef(final String ref, final boolean detach) throws IOException {
|
public RefUpdate updateRef(final String ref, final boolean detach) throws IOException {
|
||||||
return refs.newUpdate(ref, detach);
|
return getRefDatabase().newUpdate(ref, detach);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -742,7 +742,7 @@ public RefUpdate updateRef(final String ref, final boolean detach) throws IOExce
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public RefRename renameRef(final String fromRef, final String toRef) throws IOException {
|
public RefRename renameRef(final String fromRef, final String toRef) throws IOException {
|
||||||
return refs.newRename(fromRef, toRef);
|
return getRefDatabase().newRename(fromRef, toRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -948,16 +948,23 @@ public void incrementOpen() {
|
||||||
useCnt.incrementAndGet();
|
useCnt.incrementAndGet();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/** Decrement the use count, and maybe close resources. */
|
||||||
* Close all resources used by this repository
|
|
||||||
*/
|
|
||||||
public void close() {
|
public void close() {
|
||||||
if (useCnt.decrementAndGet() == 0) {
|
if (useCnt.decrementAndGet() == 0) {
|
||||||
objectDatabase.close();
|
doClose();
|
||||||
refs.close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invoked when the use count drops to zero during {@link #close()}.
|
||||||
|
* <p>
|
||||||
|
* The default implementation closes the object and ref databases.
|
||||||
|
*/
|
||||||
|
protected void doClose() {
|
||||||
|
getObjectDatabase().close();
|
||||||
|
getRefDatabase().close();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a single existing pack to the list of available pack files.
|
* Add a single existing pack to the list of available pack files.
|
||||||
*
|
*
|
||||||
|
@ -1058,7 +1065,7 @@ public Set<ObjectId> getAdditionalHaves() {
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
public Ref getRef(final String name) throws IOException {
|
public Ref getRef(final String name) throws IOException {
|
||||||
return refs.getRef(name);
|
return getRefDatabase().getRef(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1066,7 +1073,7 @@ public Ref getRef(final String name) throws IOException {
|
||||||
*/
|
*/
|
||||||
public Map<String, Ref> getAllRefs() {
|
public Map<String, Ref> getAllRefs() {
|
||||||
try {
|
try {
|
||||||
return refs.getRefs(RefDatabase.ALL);
|
return getRefDatabase().getRefs(RefDatabase.ALL);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
return new HashMap<String, Ref>();
|
return new HashMap<String, Ref>();
|
||||||
}
|
}
|
||||||
|
@ -1079,7 +1086,7 @@ public Map<String, Ref> getAllRefs() {
|
||||||
*/
|
*/
|
||||||
public Map<String, Ref> getTags() {
|
public Map<String, Ref> getTags() {
|
||||||
try {
|
try {
|
||||||
return refs.getRefs(Constants.R_TAGS);
|
return getRefDatabase().getRefs(Constants.R_TAGS);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
return new HashMap<String, Ref>();
|
return new HashMap<String, Ref>();
|
||||||
}
|
}
|
||||||
|
@ -1100,7 +1107,7 @@ public Map<String, Ref> getTags() {
|
||||||
*/
|
*/
|
||||||
public Ref peel(final Ref ref) {
|
public Ref peel(final Ref ref) {
|
||||||
try {
|
try {
|
||||||
return refs.peel(ref);
|
return getRefDatabase().peel(ref);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
// Historical accident; if the reference cannot be peeled due
|
// Historical accident; if the reference cannot be peeled due
|
||||||
// to some sort of repository access problem we claim that the
|
// to some sort of repository access problem we claim that the
|
||||||
|
|
Loading…
Reference in New Issue