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());
}
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;
}
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;
}
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;
}
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;
}
Aggregations