Search in sources :

Example 16 with Key

use of org.mongodb.morphia.Key in project morphia by mongodb.

the class TestQuery method testKeyList.

@Test
public void testKeyList() {
    final Rectangle rect = new Rectangle(1000, 1);
    final Key<Rectangle> rectKey = getDs().save(rect);
    assertEquals(rectKey.getId(), rect.getId());
    final FacebookUser fbUser1 = new FacebookUser(1, "scott");
    final FacebookUser fbUser2 = new FacebookUser(2, "tom");
    final FacebookUser fbUser3 = new FacebookUser(3, "oli");
    final FacebookUser fbUser4 = new FacebookUser(4, "frank");
    final Iterable<Key<FacebookUser>> fbKeys = getDs().save(asList(fbUser1, fbUser2, fbUser3, fbUser4));
    assertEquals(1, fbUser1.getId());
    final List<Key<FacebookUser>> fbUserKeys = new ArrayList<Key<FacebookUser>>();
    for (final Key<FacebookUser> key : fbKeys) {
        fbUserKeys.add(key);
    }
    assertEquals(fbUser1.getId(), fbUserKeys.get(0).getId());
    assertEquals(fbUser2.getId(), fbUserKeys.get(1).getId());
    assertEquals(fbUser3.getId(), fbUserKeys.get(2).getId());
    assertEquals(fbUser4.getId(), fbUserKeys.get(3).getId());
    final KeysKeysKeys k1 = new KeysKeysKeys(rectKey, fbUserKeys);
    final Key<KeysKeysKeys> k1Key = getDs().save(k1);
    assertEquals(k1.getId(), k1Key.getId());
    final KeysKeysKeys k1Loaded = getDs().get(k1);
    for (final Key<FacebookUser> key : k1Loaded.getUsers()) {
        assertNotNull(key.getId());
    }
    assertNotNull(k1Loaded.getRect().getId());
}
Also used : KeysKeysKeys(org.mongodb.morphia.TestDatastore.KeysKeysKeys) Rectangle(org.mongodb.morphia.testmodel.Rectangle) ArrayList(java.util.ArrayList) Key(org.mongodb.morphia.Key) FacebookUser(org.mongodb.morphia.TestDatastore.FacebookUser) Test(org.junit.Test)

Example 17 with Key

use of org.mongodb.morphia.Key in project morphia by mongodb.

the class MapObjectReference method fetch.

@Override
@SuppressWarnings("unchecked")
protected Object fetch() {
    final Map m = (Map) object;
    m.clear();
    // that should really be done in datastore.
    for (final Map.Entry<?, Key<?>> e : keyMap.entrySet()) {
        final Key<?> entityKey = e.getValue();
        m.put(e.getKey(), fetch(entityKey));
    }
    return m;
}
Also used : LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) HashMap(java.util.HashMap) Key(org.mongodb.morphia.Key)

Example 18 with Key

use of org.mongodb.morphia.Key in project morphia by mongodb.

the class Mapper method getKeysByManualRefs.

/**
     * Gets the Keys for a list of objects
     *
     * @param clazz the Class of the objects
     * @param refs  the objects to fetch the keys for
     * @param <T>   the type of the entity
     * @return the list of Keys
     */
public <T> List<Key<T>> getKeysByManualRefs(final Class<T> clazz, final List<Object> refs) {
    final String collection = getCollectionName(clazz);
    final List<Key<T>> keys = new ArrayList<Key<T>>(refs.size());
    for (final Object ref : refs) {
        keys.add(this.<T>manualRefToKey(collection, ref));
    }
    return keys;
}
Also used : ArrayList(java.util.ArrayList) DBObject(com.mongodb.DBObject) BasicDBObject(com.mongodb.BasicDBObject) Key(org.mongodb.morphia.Key)

Example 19 with Key

use of org.mongodb.morphia.Key in project morphia by mongodb.

the class Mapper method getKeysByRefs.

/**
     * Gets the Keys for a list of objects
     *
     * @param refs the objects to process
     * @param <T>  the type of the objects
     * @return the list of Keys
     */
public <T> List<Key<T>> getKeysByRefs(final List<DBRef> refs) {
    final List<Key<T>> keys = new ArrayList<Key<T>>(refs.size());
    for (final DBRef ref : refs) {
        final Key<T> testKey = refToKey(ref);
        keys.add(testKey);
    }
    return keys;
}
Also used : ArrayList(java.util.ArrayList) DBRef(com.mongodb.DBRef) Key(org.mongodb.morphia.Key)

Example 20 with Key

use of org.mongodb.morphia.Key in project morphia by mongodb.

the class ReferenceMapper method createOrReuseProxy.

private Object createOrReuseProxy(final Datastore datastore, final Mapper mapper, final Class referenceObjClass, final Object ref, final EntityCache cache, final Reference anntotation) {
    final Key key = anntotation.idOnly() ? mapper.manualRefToKey(referenceObjClass, ref) : mapper.refToKey((DBRef) ref);
    final Object proxyAlreadyCreated = cache.getProxy(key);
    if (proxyAlreadyCreated != null) {
        return proxyAlreadyCreated;
    }
    final Object newProxy = mapper.getProxyFactory().createProxy(datastore, referenceObjClass, key, anntotation.ignoreMissing());
    cache.putProxy(key, newProxy);
    return newProxy;
}
Also used : DBRef(com.mongodb.DBRef) DBObject(com.mongodb.DBObject) Key(org.mongodb.morphia.Key)

Aggregations

Key (org.mongodb.morphia.Key)25 DBObject (com.mongodb.DBObject)13 ArrayList (java.util.ArrayList)11 Test (org.junit.Test)8 BasicDBObject (com.mongodb.BasicDBObject)7 MappedField (org.mongodb.morphia.mapping.MappedField)5 ProxiedEntityReference (org.mongodb.morphia.mapping.lazy.proxy.ProxiedEntityReference)5 DBRef (com.mongodb.DBRef)4 Map (java.util.Map)3 ObjectId (org.bson.types.ObjectId)3 FacebookUser (org.mongodb.morphia.TestDatastore.FacebookUser)3 MappedClass (org.mongodb.morphia.mapping.MappedClass)3 Mapper (org.mongodb.morphia.mapping.Mapper)3 ReflectionUtils.getParameterizedClass (org.mongodb.morphia.utils.ReflectionUtils.getParameterizedClass)3 BasicDBList (com.mongodb.BasicDBList)2 HashMap (java.util.HashMap)2 List (java.util.List)2 Datastore (org.mongodb.morphia.Datastore)2 KeysKeysKeys (org.mongodb.morphia.TestDatastore.KeysKeysKeys)2 Reference (org.mongodb.morphia.annotations.Reference)2