Hello!
So I have a situation where I have to update a document and right after that make a REST API call to the server that will need that updated document.
To make sure that the document was updated remotely I was using a push replication like this:
Database db = DataStore.getDatabase();
db.setFilter(SyncManager.REPL_FILTER_BY_CUSTOMER, new ReplicationFilter() {
@Override
public boolean filter(SavedRevision revision, Map<String, Object> params) {
String nameParam = (String) params.get(KEY_NAME);
return nameParam != null && nameParam.equals(revision.getProperty(KEY_EMAIL));
}
});
push = db.createPushReplication(new URL(URLSTRING));
push.setContinuous(false);
Authenticator auth = AuthenticatorFactory.createBasicAuthenticator(username, password);
push.setAuthenticator(auth);
push.setFilter(SyncManager.REPL_FILTER_BY_CUSTOMER);
Map<String, Object> params = new HashMap<String, Object>();
params.put(KEY_NAME, customer_email);
push.setFilterParams(params);
push.addChangeListener(new Replication.ChangeListener() {
@Override
public void changed(Replication.ChangeEvent event) {
if(push.getStatus() == Replication.ReplicationStatus.REPLICATION_STOPPED){
push.stop();
doTheRESTCall();
}
}
});
push.start();
I was hoping to catch the replication stop to continue with the REST API call?
I’m I looking to the replication mechanism in the wrong way?
Currently I’m getting this error:
E/Sync﹕ com.couchbase.lite.replicator.ReplicationInternal$4@15fc7a99 checkSessionAtPath() response: {authentication_handlers=[default, cookie], ok=true, userCtx={channels={account_*****=*****, public=*****, user_***=*****}, name=customer@email.email}}
E/RemoteRequest﹕ Got error status: 404 for *couchbaseurl*. Reason: Not Found
Thanks!