Search in sources :

Example 21 with RevValue

use of com.google.nigori.common.RevValue in project nigori by ucam-cl-dtg.

the class AppEngineDatabase method getRecord.

@Override
public Collection<RevValue> getRecord(User user, byte[] index) throws IOException {
    PersistenceManager pm = pmfInstance.getPersistenceManager();
    try {
        // TODO(drt24): cleanup this method
        Key lookupKey = getLookupKey(user, index);
        // If this doesn't exist there is no key so null gets returned by JDOObjectNotFoundException
        Lookup lookup = pm.getObjectById(Lookup.class, lookupKey);
        List<RevValue> answer = new ArrayList<RevValue>();
        Query getRevisionValues = new Query(AppEngineRecord.class.getSimpleName());
        getRevisionValues.setAncestor(lookupKey);
        DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
        List<Entity> results = datastore.prepare(getRevisionValues).asList(FetchOptions.Builder.withDefaults());
        for (Entity result : results) {
            ByteArrayInputStream bais = new ByteArrayInputStream(((Blob) result.getProperty("revision")).getBytes());
            ObjectInputStream ndis = new ObjectInputStream(bais);
            answer.add(new RevValue(((Revision) ndis.readObject()).getBytes(), ((Blob) result.getProperty("value")).getBytes()));
        }
        if (lookup != null) {
            return answer;
        } else {
            return null;
        }
    } catch (JDOObjectNotFoundException e) {
        return null;
    } catch (ClassNotFoundException e) {
        throw new IOException(e);
    } finally {
        pm.close();
    }
}
Also used : Entity(com.google.appengine.api.datastore.Entity) ShortBlob(com.google.appengine.api.datastore.ShortBlob) Blob(com.google.appengine.api.datastore.Blob) Query(com.google.appengine.api.datastore.Query) PersistenceManager(javax.jdo.PersistenceManager) DatastoreService(com.google.appengine.api.datastore.DatastoreService) ArrayList(java.util.ArrayList) IOException(java.io.IOException) JDOObjectNotFoundException(javax.jdo.JDOObjectNotFoundException) RevValue(com.google.nigori.common.RevValue) ByteArrayInputStream(java.io.ByteArrayInputStream) Key(com.google.appengine.api.datastore.Key) ObjectInputStream(java.io.ObjectInputStream)

Example 22 with RevValue

use of com.google.nigori.common.RevValue in project nigori by ucam-cl-dtg.

the class ComparableMergerTest method mergeTwoEquivOneGreater.

@Test
public void mergeTwoEquivOneGreater() throws IOException, NigoriCryptographyException, UnauthorisedException {
    Collection<RevValue> heads = new ArrayList<RevValue>();
    byte[] test = MessageLibrary.toBytes("test");
    byte[] test1 = MessageLibrary.toBytes("test1");
    RevValue rv = new RevValue(Revision.EMPTY, test);
    RevValue rv1 = new RevValue(Revision.EMPTY, test);
    RevValue rv2 = new RevValue(Revision.EMPTY, test1);
    heads.add(rv);
    heads.add(rv1);
    heads.add(rv2);
    MigoriDatastore store = createMock(MigoriDatastore.class);
    expect(store.put(eq(INDEX), aryEq(test), eq(rv), eq(rv1))).andReturn(rv);
    expect(store.put(eq(INDEX), aryEq(test1), eq(rv), eq(rv2))).andReturn(rv2);
    replay(store);
    RevValue value = merger.merge(store, INDEX, heads);
    verify(store);
    assertEquals(rv2, value);
}
Also used : RevValue(com.google.nigori.common.RevValue) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Example 23 with RevValue

use of com.google.nigori.common.RevValue in project nigori by ucam-cl-dtg.

the class ComparableMergerTest method mergeTwoDiff.

@Test
public void mergeTwoDiff() throws IOException, NigoriCryptographyException, UnauthorisedException {
    Collection<RevValue> heads = new ArrayList<RevValue>();
    byte[] test = MessageLibrary.toBytes("test");
    byte[] test1 = MessageLibrary.toBytes("test1");
    RevValue rv = new RevValue(Revision.EMPTY, test);
    RevValue rv1 = new RevValue(Revision.EMPTY, test1);
    heads.add(rv);
    heads.add(rv1);
    MigoriDatastore store = createMock(MigoriDatastore.class);
    expect(store.put(eq(INDEX), aryEq(test1), eq(rv), eq(rv1))).andReturn(rv1);
    replay(store);
    RevValue value = merger.merge(store, INDEX, heads);
    verify(store);
    assertEquals(rv1, value);
}
Also used : RevValue(com.google.nigori.common.RevValue) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Aggregations

RevValue (com.google.nigori.common.RevValue)23 ArrayList (java.util.ArrayList)10 Test (org.junit.Test)9 IOException (java.io.IOException)7 Index (com.google.nigori.common.Index)6 MigoriDatastore (com.google.nigori.client.MigoriDatastore)3 Revision (com.google.nigori.common.Revision)3 Key (com.google.appengine.api.datastore.Key)2 GetResponse (com.google.nigori.common.NigoriMessages.GetResponse)2 RevisionValue (com.google.nigori.common.NigoriMessages.RevisionValue)2 NotFoundException (com.google.nigori.common.NotFoundException)2 DatabaseEntry (com.sleepycat.je.DatabaseEntry)2 DatabaseException (com.sleepycat.je.DatabaseException)2 OperationStatus (com.sleepycat.je.OperationStatus)2 JDOObjectNotFoundException (javax.jdo.JDOObjectNotFoundException)2 PersistenceManager (javax.jdo.PersistenceManager)2 Blob (com.google.appengine.api.datastore.Blob)1 DatastoreService (com.google.appengine.api.datastore.DatastoreService)1 Entity (com.google.appengine.api.datastore.Entity)1 Query (com.google.appengine.api.datastore.Query)1