@Override public <T> Observable<T> update(T objectToSave, PersistTo persistTo, ReplicateTo replicateTo) { return doPersist(objectToSave, PersistType.UPDATE, persistTo, replicateTo); }
public <T> Observable<T> remove(T objectToRemove, PersistTo persistTo, ReplicateTo replicateTo) { return doRemove(objectToRemove, persistTo, replicateTo); }
private <T> Long getVersion(T object) { CouchbasePersistentProperty versionProperty = versionProperty(object); return versionProperty == null // ? null // : getPropertyAccessor(object).getProperty(versionProperty, Long.class); }
private <T> Observable<T> doPersist(T objectToPersist, PersistType persistType, PersistTo persistTo, ReplicateTo replicateTo) { Long version = getVersion(objectToPersist); Func3<RawJsonDocument, PersistTo, ReplicateTo, Observable<RawJsonDocument>> persistFunction; switch (persistType) { break; return persistFunction.call(toJsonDocument(objectToPersist), persistTo, replicateTo) .flatMap(storedDoc -> Observable.just(storedDoc != null && storedDoc.cas() != 0 ? setVersion(objectToPersist, storedDoc.cas()) : objectToPersist)) .onErrorResumeNext(e -> {
public RxJavaCouchbaseTemplate(final ClusterInfo clusterInfo, final Bucket client, final CouchbaseConverter converter, final TranslationService translationService) { this.syncClient = client; this.clusterInfo = clusterInfo; this.client = client.async(); this.converter = converter == null ? getDefaultConverter() : converter; this.translationService = translationService == null ? getDefaultTranslationService() : translationService; this.mappingContext = this.converter.getMappingContext(); }
private <T> RawJsonDocument toJsonDocument(T object) { ensureNotIterable(object); final CouchbaseDocument converted = new CouchbaseDocument(); converter.write(object, converted); return encodeAndWrap(converted, getVersion(object)); }
private <T> T mapToEntity(String id, Document<String> data, Class<T> entityClass) { if (data == null) { return null; } final CouchbaseDocument converted = new CouchbaseDocument(id); Object readEntity = converter.read(entityClass, (CouchbaseDocument) decodeAndUnwrap(data, converted)); final ConvertingPropertyAccessor accessor = getPropertyAccessor(readEntity); CouchbasePersistentEntity<?> persistentEntity = mappingContext.getRequiredPersistentEntity(readEntity.getClass()); CouchbasePersistentProperty versionProperty = persistentEntity.getVersionProperty(); if (versionProperty != null) { accessor.setProperty(versionProperty, data.cas()); } return (T) readEntity; }
/** * Creates a {@link RxJavaCouchbaseTemplate}. * * This uses {@link #mappingCouchbaseConverter()}, {@link #translationService()} and {@link #getDefaultConsistency()} * for construction. * * * @throws Exception on Bean construction failure. */ @Bean(name = BeanNames.RXJAVA1_COUCHBASE_TEMPLATE) public RxJavaCouchbaseTemplate reactiveCouchbaseTemplate() throws Exception { RxJavaCouchbaseTemplate template = new RxJavaCouchbaseTemplate(couchbaseConfigurer().couchbaseClusterInfo(), couchbaseConfigurer().couchbaseClient(), mappingCouchbaseConverter(), translationService()); template.setDefaultConsistency(getDefaultConsistency()); return template; }
@Override public <T> Observable<T> insert(T objectToSave) { return insert(objectToSave, PersistTo.NONE, ReplicateTo.NONE); }
private <T> Observable<T> doPersist(T objectToPersist, PersistType persistType, PersistTo persistTo, ReplicateTo replicateTo) { Long version = getVersion(objectToPersist); Func3<RawJsonDocument, PersistTo, ReplicateTo, Observable<RawJsonDocument>> persistFunction; switch (persistType) { break; return persistFunction.call(toJsonDocument(objectToPersist), persistTo, replicateTo) .flatMap(storedDoc -> Observable.just(storedDoc != null && storedDoc.cas() != 0 ? setVersion(objectToPersist, storedDoc.cas()) : objectToPersist)) .onErrorResumeNext(e -> {
public RxJavaCouchbaseTemplate(final ClusterInfo clusterInfo, final Bucket client, final CouchbaseConverter converter, final TranslationService translationService) { this.syncClient = client; this.clusterInfo = clusterInfo; this.client = client.async(); this.converter = converter == null ? getDefaultConverter() : converter; this.translationService = translationService == null ? getDefaultTranslationService() : translationService; this.mappingContext = this.converter.getMappingContext(); }
private <T> RawJsonDocument toJsonDocument(T object) { ensureNotIterable(object); final CouchbaseDocument converted = new CouchbaseDocument(); converter.write(object, converted); return encodeAndWrap(converted, getVersion(object)); }
private <T> T mapToEntity(String id, Document<String> data, Class<T> entityClass) { if (data == null) { return null; } final CouchbaseDocument converted = new CouchbaseDocument(id); Object readEntity = converter.read(entityClass, (CouchbaseDocument) decodeAndUnwrap(data, converted)); final ConvertingPropertyAccessor accessor = getPropertyAccessor(readEntity); CouchbasePersistentEntity<?> persistentEntity = mappingContext.getRequiredPersistentEntity(readEntity.getClass()); CouchbasePersistentProperty versionProperty = persistentEntity.getVersionProperty(); if (versionProperty != null) { accessor.setProperty(versionProperty, data.cas()); } return (T) readEntity; }
/** * Creates a {@link RxJavaCouchbaseTemplate}. * * This uses {@link #mappingCouchbaseConverter()}, {@link #translationService()} and {@link #getDefaultConsistency()} * for construction. * * * @throws Exception on Bean construction failure. */ @Bean(name = BeanNames.RXJAVA1_COUCHBASE_TEMPLATE) public RxJavaCouchbaseTemplate reactiveCouchbaseTemplate() throws Exception { RxJavaCouchbaseTemplate template = new RxJavaCouchbaseTemplate(couchbaseConfigurer().couchbaseClusterInfo(), couchbaseConfigurer().couchbaseClient(), mappingCouchbaseConverter(), translationService()); template.setDefaultConsistency(getDefaultConsistency()); return template; }
@Override public <T> Observable<T> insert(T objectToSave) { return insert(objectToSave, PersistTo.NONE, ReplicateTo.NONE); }
private <T> Long getVersion(T object) { CouchbasePersistentProperty versionProperty = versionProperty(object); return versionProperty == null // ? null // : getPropertyAccessor(object).getProperty(versionProperty, Long.class); }
@Override public <T> Observable<T> update(T objectToSave, PersistTo persistTo, ReplicateTo replicateTo) { return doPersist(objectToSave, PersistType.UPDATE, persistTo, replicateTo); }
@Override public <T> Observable<T> insert(Iterable<T> batchToSave, PersistTo persistTo, ReplicateTo replicateTo) { return Observable.from(batchToSave) .flatMap(objectToSave -> insert(objectToSave, persistTo, replicateTo)); }
public <T> Observable<T> remove(T objectToRemove) { return doRemove(objectToRemove, PersistTo.NONE, ReplicateTo.NONE); }
private <T> T setVersion(T object, long version) { CouchbasePersistentProperty versionProperty = versionProperty(object); if (versionProperty == null) { return object; } final ConvertingPropertyAccessor<T> accessor = getPropertyAccessor(object); accessor.setProperty(versionProperty, version); return accessor.getBean(); }