Hello!! I’m having a eception when I call a couchbase view.
I’m using the following method:
public static List<Object> getView(String designDoc, String view, final Class<?> class1) {
System.out.println("CouchBase: getView " + designDoc + " " + view);
final List<Object> result = new ArrayList<Object>();
final CountDownLatch latch = new CountDownLatch(1);
System.out.println("METHOD START");
bucket.async().query(
ViewQuery.from(designDoc, view).limit(300).stale(Stale.FALSE))
.doOnNext(new rx.functions.Action1<AsyncViewResult>() {
public void call(AsyncViewResult viewResult) {
if (!viewResult.success()) {
System.out.println("ERROR" + viewResult.error());
} else {
System.out.println("Query is running!");
}
}
}).flatMap(new Func1<AsyncViewResult, Observable<AsyncViewRow>>() {
public Observable<AsyncViewRow> call(AsyncViewResult viewResult) {
return viewResult.rows();
}
}).subscribe(new Subscriber<AsyncViewRow>() {
public void onCompleted() {
latch.countDown();
}
public void onError(Throwable throwable) {
System.err.println("Whoops: " + throwable.getMessage());
}
public void onNext(AsyncViewRow viewRow) {
Class<?> c;
Constructor<?> cons;
Object object = null;
try {
c = Class.forName(class1.getName());
cons = c.getConstructor();
object = cons.newInstance();
Class[] paramTypes = new Class[1];
paramTypes[0]=AsyncViewRow.class;
Method m = c.getDeclaredMethod("getClass", paramTypes);
Object object2 = m.invoke(object, viewRow);
result.add(object2);
} catch (Exception e) {
e.printStackTrace();
}
}
});
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
return result;
}
And the exception is the following:
SEVERE: Exception processing: 19 com.couchbase.client.core.ResponseEvent@77ae1d74
java.lang.NoSuchMethodError: com.couchbase.client.core.message.view.ViewQueryResponse.responseCode()I
at com.couchbase.client.java.view.ViewRetryHandler.passThroughOrThrow(ViewRetryHandler.java:97)
at com.couchbase.client.java.view.ViewRetryHandler.access$100(ViewRetryHandler.java:43)
at com.couchbase.client.java.view.ViewRetryHandler$2.call(ViewRetryHandler.java:67)
at com.couchbase.client.java.view.ViewRetryHandler$2.call(ViewRetryHandler.java:64)
at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:55)
at rx.internal.operators.OperatorSubscribeOn$1$1$1.onNext(OperatorSubscribeOn.java:76)
at rx.subjects.SubjectSubscriptionManager$SubjectObserver.onNext(SubjectSubscriptionManager.java:224)
at rx.internal.operators.NotificationLite.accept(NotificationLite.java:150)
at rx.subjects.ReplaySubject$UnboundedReplayState.accept(ReplaySubject.java:473)
at rx.subjects.ReplaySubject$UnboundedReplayState.replayObserverFromIndex(ReplaySubject.java:522)
at rx.subjects.ReplaySubject$UnboundedReplayState.replayObserver(ReplaySubject.java:510)
at rx.subjects.ReplaySubject.caughtUp(ReplaySubject.java:430)
at rx.subjects.ReplaySubject.onNext(ReplaySubject.java:370)
at com.couchbase.client.core.ResponseHandler.onEvent(ResponseHandler.java:97)
at com.couchbase.client.core.ResponseHandler.onEvent(ResponseHandler.java:43)
at com.couchbase.client.deps.com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:128)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at com.couchbase.client.deps.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "cb-core-6-1" java.lang.RuntimeException: java.lang.NoSuchMethodError: com.couchbase.client.core.message.view.ViewQueryResponse.responseCode()I
at com.couchbase.client.deps.com.lmax.disruptor.FatalExceptionHandler.handleEventException(FatalExceptionHandler.java:45)
at com.couchbase.client.deps.com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:147)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at com.couchbase.client.deps.io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: com.couchbase.client.core.message.view.ViewQueryResponse.responseCode()I
at com.couchbase.client.java.view.ViewRetryHandler.passThroughOrThrow(ViewRetryHandler.java:97)
at com.couchbase.client.java.view.ViewRetryHandler.access$100(ViewRetryHandler.java:43)
at com.couchbase.client.java.view.ViewRetryHandler$2.call(ViewRetryHandler.java:67)
at com.couchbase.client.java.view.ViewRetryHandler$2.call(ViewRetryHandler.java:64)
at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:55)
at rx.internal.operators.OperatorSubscribeOn$1$1$1.onNext(OperatorSubscribeOn.java:76)
at rx.subjects.SubjectSubscriptionManager$SubjectObserver.onNext(SubjectSubscriptionManager.java:224)
at rx.internal.operators.NotificationLite.accept(NotificationLite.java:150)
at rx.subjects.ReplaySubject$UnboundedReplayState.accept(ReplaySubject.java:473)
at rx.subjects.ReplaySubject$UnboundedReplayState.replayObserverFromIndex(ReplaySubject.java:522)
at rx.subjects.ReplaySubject$UnboundedReplayState.replayObserver(ReplaySubject.java:510)
at rx.subjects.ReplaySubject.caughtUp(ReplaySubject.java:430)
at rx.subjects.ReplaySubject.onNext(ReplaySubject.java:370)
at com.couchbase.client.core.ResponseHandler.onEvent(ResponseHandler.java:97)
at com.couchbase.client.core.ResponseHandler.onEvent(ResponseHandler.java:43)
at com.couchbase.client.deps.com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:128)
... 4 more
I tested the indicated method from a java program and worked fine. However, I have this error when I tried to run it from the Web Application.
I have to define another method or event?
Thanks!
Carlos