@Override public Key<T> save(final T entity) { return ds.save(entity); }
@Override public <T> Iterable<Key<T>> save(final Iterable<T> entities, final InsertOptions options) { final List<Key<T>> savedKeys = new ArrayList<Key<T>>(); for (final T ent : entities) { savedKeys.add(save(ent, options)); } return savedKeys; }
@Override public <T> Key<T> save(final T entity) { return save(entity, new InsertOptions()); }
@Override public <T> Iterable<Key<T>> save(final Iterable<T> entities) { Iterator<T> iterator = entities.iterator(); return !iterator.hasNext() ? Collections.<Key<T>>emptyList() : save(entities, getWriteConcern(iterator.next())); }
@Override @Deprecated public <T> Iterable<Key<T>> save(final T... entities) { return save(asList(entities), new InsertOptions()); }
@Override @Deprecated public <T> Key<T> save(final T entity, final WriteConcern wc) { return save(entity, new InsertOptions() .writeConcern(wc)); }
@Override public <T> Key<T> save(final String collection, final T entity) { final T unwrapped = ProxyHelper.unwrap(entity); return save(collection, entity, getWriteConcern(unwrapped)); }
@Override public Key<T> save(final T entity, final WriteConcern wc) { return ds.save(entity, new InsertOptions().writeConcern(wc)); }
@Override public <T> Iterable<Key<T>> save(final Iterable<T> entities, final WriteConcern wc) { return save(entities, new InsertOptions().writeConcern(wc)); }
@Override public <T> Key<T> save(final String collection, final T entity, final InsertOptions options) { return save(getCollection(collection), ProxyHelper.unwrap(entity), options); }
@Override public <T> Key<T> save(final T entity, final InsertOptions options) { if (entity == null) { throw new UpdateException("Can not persist a null entity"); } final T unwrapped = ProxyHelper.unwrap(entity); return save(getCollection(unwrapped), unwrapped, enforceWriteConcern(options, entity.getClass())); }
@Override public <T> Key<T> save(final String collection, final T entity, final WriteConcern wc) { return save(getCollection(collection), ProxyHelper.unwrap(entity), new InsertOptions().writeConcern(wc)); }