@Override public void requestHistory(WaveletName waveletName, String domain, ProtocolHashedVersion startVersion, ProtocolHashedVersion endVersion, long lengthLimit, HistoryResponseListener listener) { listener.onFailure(FederationErrors.badRequest("Federation is not enabled!")); }
@Override public void submitRequest(WaveletName waveletName, ProtocolSignedDelta delta, SubmitResultListener listener) { listener.onFailure(FederationErrors.badRequest("Federation is not enabled!")); }
@Override public void waveletDeltaUpdate(WaveletName waveletName, List<ByteString> deltas, WaveletUpdateCallback callback) { callback.onFailure(FederationErrors.badRequest("Federation is not enabled!")); }
@Override public void postSignerInfo(String destinationDomain, ProtocolSignerInfo signerInfo, PostSignerInfoResponseListener listener) { listener.onFailure(FederationErrors.badRequest("Federation is not enabled!")); } }
@Override public void getDeltaSignerInfo(ByteString signerId, WaveletName waveletName, ProtocolHashedVersion deltaEndVersion, DeltaSignerInfoResponseListener listener) { listener.onFailure(FederationErrors.badRequest("Federation is not enabled!")); }
@Override public void waveletCommitUpdate(WaveletName waveletName, ProtocolHashedVersion committedVersion, WaveletUpdateCallback callback) { callback.onFailure(FederationErrors.badRequest("Federation is not enabled!")); } };
@Override public void onSuccess(ProtocolSignerInfo signerInfo) { try { storeSignerInfo(signerInfo); dequeueSignerInfoRequest(signerId, null); } catch (SignatureException e) { LOG.warning("Failed to verify signer info", e); dequeueSignerInfoRequest(signerId, FederationErrors.badRequest(e.toString())); } }}); }
callback.onFailure(FederationErrors.badRequest("Received update to local wavelet")); return;
@Override public void postSignerInfo(String destinationDomain, ProtocolSignerInfo signerInfo, PostSignerInfoResponseListener listener) { try { certificateManager.storeSignerInfo(signerInfo); } catch (SignatureException e) { String error = "verification failure from domain " + signerInfo.getDomain(); LOG.warning("incoming postSignerInfo: " + error, e); listener.onFailure(FederationErrors.badRequest(error)); return; } listener.onSuccess(); }
@Override public void getDeltaSignerInfo(ByteString signerId, WaveletName waveletName, ProtocolHashedVersion deltaEndVersion, DeltaSignerInfoResponseListener listener) { LocalWaveletContainer wavelet = loadLocalWavelet(waveletName, listener); if (wavelet != null) { HashedVersion endVersion = CoreWaveletOperationSerializer.deserialize(deltaEndVersion); if (wavelet.isDeltaSigner(endVersion, signerId)) { ProtocolSignerInfo signerInfo = certificateManager.retrieveSignerInfo(signerId); if (signerInfo == null) { // Oh no! We are supposed to store it, and we already know they did sign this delta. LOG.severe("No stored signer info for valid getDeltaSignerInfo on " + waveletName); listener.onFailure(FederationErrors.badRequest("Unknown signer info")); } else { listener.onSuccess(signerInfo); } } else { LOG.info("getDeltaSignerInfo was not authrorised for wavelet " + waveletName + ", end version " + deltaEndVersion); listener.onFailure(FederationErrors.badRequest("Not authorised to get signer info")); } } }
" - " + endVersion); listener.onFailure(FederationErrors.badRequest( "Server error while retrieving wavelet history.")); return;
listener.onFailure(FederationErrors.badRequest("Wavelet not hosted here.")); return null; listener.onFailure(FederationErrors.badRequest("Wavelet does not exist"));
if (!isLocalWavelet(waveletName)) { LOG.warning("Remote tried to submit to non-local wavelet " + waveletName); listener.onFailure(FederationErrors.badRequest("Non-local wavelet update")); return; } catch (InvalidProtocolBufferException e) { LOG.warning("Submit request: Invalid delta protobuf. WaveletName: " + waveletName, e); listener.onFailure(FederationErrors.badRequest("Signed delta contains invalid delta")); return; listener.onFailure(FederationErrors.badRequest("Remote users may not create wavelets.")); return; LOG.warning("Submit request: Delta failed verification. WaveletName: " + waveletName + " delta: " + signedDelta, e); listener.onFailure(FederationErrors.badRequest("Remote verification failed")); } catch (UnknownSignerException e) { LOG.warning("Submit request: unknown signer. WaveletName: " + waveletName +
FederationErrors.badRequest("Invalid applied delta protocol buffer"))); return;
@Override public void waveletCommitUpdate(WaveletName waveletName, ProtocolHashedVersion committedVersion, WaveletUpdateCallback callback) { Preconditions.checkNotNull(committedVersion); if (isLocalWavelet(waveletName)) { LOG.warning("Got commit update for local wavelet " + waveletName); callback.onFailure(FederationErrors.badRequest("Received commit update to local wavelet")); return; } RemoteWaveletContainer wavelet; try { wavelet = getRemoteWavelet(waveletName); } catch (WaveletStateException e) { LOG.warning("Failed to access wavelet " + waveletName + " for commit update", e); callback.onFailure(FederationErrors.internalServerError("Storage access failure")); return; } if (wavelet != null) { wavelet.commit(CoreWaveletOperationSerializer.deserialize(committedVersion)); } else { if(LOG.isInfoLoggable()) { LOG.info("Got commit update for missing wavelet " + waveletName); } createAndCommitRemoteWavelet(waveletName, committedVersion); } callback.onSuccess(); } };
try { if (!wavelet.checkAccessPermission(ParticipantId.of(delta.getAuthor()))) { resultListener.onFailure(FederationErrors.badRequest( delta.getAuthor() + " is not a participant of " + waveletName)); return; resultListener.onFailure(FederationErrors.badRequest( "Invalid author address: " + e.getMessage())); return; transformedDelta.getApplicationTimestamp()); } catch (OperationException e) { resultListener.onFailure(FederationErrors.badRequest(e.getMessage())); } catch (InvalidProtocolBufferException e) { resultListener.onFailure(FederationErrors.badRequest(e.getMessage())); } catch (InvalidHashException e) { resultListener.onFailure(FederationErrors.badRequest(e.getMessage())); } catch (PersistenceException e) { resultListener.onFailure(FederationErrors.internalServerError(e.getMessage()));
new FederationException(FederationErrors.badRequest(e.getMessage()))); } finally { releaseWriteLock();