@Override public void close() { actual.close(); snapshot.close(); }
/** * The new ref if created or updated a sym ref, or the old one if deleting it */ @Override protected Optional<Ref> _call() { Preconditions.checkState(name != null, "name has not been set"); Preconditions.checkState(delete || newValue != null, "value has not been set"); if (oldValue != null) { String storedValue; try { storedValue = refDatabase().getSymRef(name); } catch (IllegalArgumentException e) { // may be updating what used to be a direct ref to be a symbolic ref storedValue = refDatabase().getRef(name); } Preconditions.checkState(oldValue.equals(storedValue), "Old value (" + storedValue + ") doesn't match expected value '" + oldValue + "'"); } if (delete) { Optional<Ref> oldRef = command(RefParse.class).setName(name).call(); if (oldRef.isPresent()) { refDatabase().remove(name); } return oldRef; } refDatabase().putSymRef(name, newValue); Optional<Ref> ref = command(RefParse.class).setName(name).call(); return ref; }
@Override public Map<String, String> getAll(final String prefix) { Map<String, String> originals = refDb.getAll(append(this.txOrigNamespace, prefix)); Map<String, String> changed = refDb.getAll(append(this.txChangedNamespace, prefix)); Map<String, String> externalOriginals = toExternal(originals); Map<String, String> externalChanged = toExternal(changed); Map<String, String> composite = Maps.newHashMap(externalOriginals); // Overwrite originals composite.putAll(externalChanged); return composite; }
/** * Releases all the references for this transaction, but does not close the original * {@link RefDatabase} */ @Override public void close() { refDb.removeAll(this.txNamespace); }
@Test public void testPutGetRef() { byte[] raw = new byte[20]; Arrays.fill(raw, (byte) 1); ObjectId oid = new ObjectId(raw); String value = refDb.getRef(Ref.MASTER); assertNull(value + " is not null", value); refDb.putRef(Ref.MASTER, oid.toString()); assertEquals(oid.toString(), refDb.getRef(Ref.MASTER)); refDb.putRef(Ref.WORK_HEAD, sampleId.toString()); assertEquals(sampleId.toString(), refDb.getRef(Ref.WORK_HEAD)); }
@Override public void open() throws RepositoryConnectionException { Optional<URI> repoUrl = command(ResolveGeogigURI.class).call(); Preconditions.checkState(repoUrl.isPresent(), "Repository URL can't be located"); this.repositoryLocation = repoUrl.get(); if (!context.refDatabase().checkConfig()) { context.refDatabase().configure(); } if (!context.objectDatabase().checkConfig()) { context.objectDatabase().configure(); } if (!context.indexDatabase().checkConfig()) { context.indexDatabase().configure(); } context.refDatabase().create(); context.objectDatabase().open(); context.indexDatabase().open(); context.conflictsDatabase().open(); for (RepositoryListener l : listeners) { l.opened(this); } open = true; }
@Override public void putRef(String refName, String refValue) { actual.putRef(refName, refValue); snapshot.putRef(refName, refValue); }
@Override public void putSymRef(String name, String val) { actual.putSymRef(name, val); snapshot.putSymRef(name, val); }
@Override public String remove(final String refName) { String internal = toChangedInternal(refName); String removedValue = refDb.remove(internal); return removedValue; }
@Before public void setUp() throws Exception { File repoDir = tmpFolder.newFolder("repo", ".geogig"); File workingDirectory = repoDir.getParentFile(); File userHomeDirectory = tmpFolder.newFolder("home"); Platform platform = new TestPlatform(workingDirectory, userHomeDirectory); refDb = createDatabase(platform); refDb.create(); }
@Override public String getSymRef(final String name) { String internalName; String value; if (name.startsWith("changed") || name.startsWith("orig")) { internalName = append(txNamespace, name); value = refDb.getSymRef(internalName); } else { internalName = toChangedInternal(name); value = refDb.getSymRef(internalName); } return value; }
/** * Gets the requested ref value from {@code transactions/<tx id>/<name>} */ @Override public String getRef(final String name) { String internalName; String value; if (name.startsWith("changed") || name.startsWith("orig")) { internalName = append(txNamespace, name); value = refDb.getRef(internalName); } else { internalName = toChangedInternal(name); value = refDb.getRef(internalName); } return value; }
@Override public boolean checkConfig() throws RepositoryConnectionException { return actual.checkConfig(); }
/** * The new ref if created or updated a sym ref, or the old one if deleting it */ @Override protected Optional<Ref> _call() { Preconditions.checkState(name != null, "name has not been set"); Preconditions.checkState(delete || newValue != null, "value has not been set"); if (oldValue != null) { String storedValue; try { storedValue = refDatabase().getSymRef(name); } catch (IllegalArgumentException e) { // may be updating what used to be a direct ref to be a symbolic ref storedValue = refDatabase().getRef(name); } Preconditions.checkState(oldValue.equals(storedValue), "Old value (" + storedValue + ") doesn't match expected value '" + oldValue + "'"); } if (delete) { Optional<Ref> oldRef = command(RefParse.class).setName(name).call(); if (oldRef.isPresent()) { refDatabase().remove(name); } return oldRef; } refDatabase().putSymRef(name, newValue); Optional<Ref> ref = command(RefParse.class).setName(name).call(); return ref; }