Author: vjrj_ Date: 2012-04-12 12:35:47 +0200 (Thu, 12 Apr 2012) New Revision: 1843 Modified: trunk/debian/changelog trunk/debian/files trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java Log: Fix wave multiple operations errors Modified: trunk/debian/changelog =================================================================== --- trunk/debian/changelog 2012-04-12 01:13:37 UTC (rev 1842) +++ trunk/debian/changelog 2012-04-12 10:35:47 UTC (rev 1843) @@ -1,3 +1,9 @@ +kune (0.1.0+b14) unstable; urgency=low + + * Fix wave multiple operations errors + + -- Vicente J. Ruiz Jurado <[email protected]> Thu, 12 Apr 2012 12:33:54 +0200 + kune (0.1.0+b13) unstable; urgency=low * Minor changes for screencasts Modified: trunk/debian/files =================================================================== --- trunk/debian/files 2012-04-12 01:13:37 UTC (rev 1842) +++ trunk/debian/files 2012-04-12 10:35:47 UTC (rev 1843) @@ -1 +1 @@ -kune_0.1.0+b12_all.deb java optional +kune_0.1.0+b13_all.deb java optional Modified: trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java 2012-04-12 01:13:37 UTC (rev 1842) +++ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java 2012-04-12 10:35:47 UTC (rev 1843) @@ -38,6 +38,7 @@ import org.waveprotocol.box.server.robots.OperationContextImpl; import org.waveprotocol.box.server.robots.OperationServiceRegistry; import org.waveprotocol.box.server.robots.util.ConversationUtil; +import org.waveprotocol.box.server.robots.util.LoggingRequestListener; import org.waveprotocol.box.server.robots.util.OperationUtil; import org.waveprotocol.box.server.waveserver.WaveletProvider; import org.waveprotocol.box.server.waveserver.WaveletProvider.SubmitRequestListener; @@ -186,7 +187,7 @@ operationRequest.addParameter(Parameter.of(ParamsProperty.MODIFY_ACTION, new DocumentModifyAction( ModifyHow.INSERT, NO_VALUES, NO_ANNOTATION_KEY, elementsIn, NO_BUNDLED_ANNOTATIONS, false))); operationRequest.addParameter(Parameter.of(ParamsProperty.INDEX, 1)); - doOperation(author, opQueue, "add gadget"); + doOperations(author, opQueue, "add gadget"); } @Override @@ -206,11 +207,12 @@ // opQueue is added (try to // fix this in WAVE) LOG.debug("Adding as participant: " + newPartWithDomain); + opQueue.addParticipantToWavelet(wavelet, newPartWithDomain); added = true; } } - doOperation(whoAdd, opQueue, "add participant"); + doOperations(whoAdd, opQueue, "add participant"); return added; } @@ -298,7 +300,9 @@ final JsonRpcResponse response = context.getResponse(reqId); if (response != null) { if (response.isError()) { - onFailure(context.getResponse(reqId).getErrorMessage()); + final String errorMessage = processErrorMessage(context.getResponse(reqId).getErrorMessage()); + onFailure(errorMessage); + throw new DefaultException(errorMessage); } else { final Object responseWaveId = response.getData().get(ParamsProperty.WAVE_ID); final Object responseWaveletId = response.getData().get(ParamsProperty.WAVELET_ID); @@ -349,43 +353,18 @@ opQueue.removeParticipantFromWavelet(wavelet, partWithDomain); } } - doOperation(whoDel, opQueue, "del participant"); + doOperations(whoDel, opQueue, "del participant"); } - private void doOperation(final String author, final OperationQueue opQueue, final String logComment) { - // FIXME: do here a callback!!! + // final SubmitRequestListener listener + private void doOperations(final String author, final OperationQueue opQueue, final String logComment) { final OperationContextImpl context = new OperationContextImpl(waveletProvider, converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); - for (final OperationRequest request : opQueue.getPendingOperations()) { - // final OperationRequest request = opQueue.getPendingOperations().get(0); - OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author)); - final String reqId = request.getId(); - final JsonRpcResponse response = context.getResponse(reqId); - if (response != null && response.isError()) { - onFailure(context.getResponse(reqId).getErrorMessage()); - } - OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() { - @Override - public void onFailure(final String arg0) { - KuneWaveServiceDefault.this.onFailure("Wave " + logComment + " failed, onFailure: " + arg0); - } - - @Override - public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) { - LOG.info("Wave " + logComment + " success: " + arg1); - } - }); - } - } - - public void doOperations(final WaveRef waveName, final String author, final OperationQueue opQueue, - final SubmitRequestListener listener) { - final OperationContextImpl context = new OperationContextImpl(waveletProvider, - converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); for (final OperationRequest req : opQueue.getPendingOperations()) { OperationUtil.executeOperation(req, operationRegistry, context, participantUtils.of(author)); } - OperationUtil.submitDeltas(context, waveletProvider, listener); + OperationUtil.submitDeltas(context, waveletProvider, new LoggingRequestListener( + org.waveprotocol.wave.util.logging.Log.get(KuneWaveServiceDefault.class))); } private void doSubmit(final SimpleArgCallback<WaveRef> onCreate, final OperationContextImpl context, @@ -416,7 +395,9 @@ final String reqId = request.getId(); final JsonRpcResponse response = context.getResponse(reqId); if (response != null && response.isError()) { - onFailure(context.getResponse(reqId).getErrorMessage()); + final String errorMessage = processErrorMessage(context.getResponse(reqId).getErrorMessage()); + onFailure(errorMessage); + throw new DefaultException(errorMessage); } else { // Duplicate code from WaveService assert response != null; @@ -485,9 +466,12 @@ } private void onFailure(final String message) { + LOG.error(message); + } + + private String processErrorMessage(final String message) { final String errorMsg = TextUtils.notEmpty(message) ? message : "Wave operation failed"; - LOG.error(errorMsg); - throw new DefaultException(errorMsg); + return errorMsg; } @Override @@ -532,7 +516,7 @@ ParamsProperty.MODIFY_QUERY, new DocumentModifyQuery(ElementType.GADGET, ImmutableMap.of(Gadget.URL, gadgetUrl.toString()), -1))); - doOperation(author, opQueue, "set gadget property"); + doOperations(author, opQueue, "set gadget property"); break; } } @@ -544,7 +528,7 @@ final Wavelet wavelet = fetchWave(waveName, author); final OperationQueue opQueue = new OperationQueue(); opQueue.setTitleOfWavelet(wavelet, title); - doOperation(author, opQueue, "set title"); + doOperations(author, opQueue, "set title"); } private Set<String> toSet(final String[] array) {