Author: yurize
Date: Sat Apr 28 14:50:37 2012
New Revision: 1331779
URL: http://svn.apache.org/viewvc?rev=1331779&view=rev
Log:
Adds NullPointerException protection when accessing cached deltas in
DeltaStoreBasedWaveletState.
https://reviews.apache.org/r/4923/
Modified:
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/DeltaStoreBasedWaveletState.java
Modified:
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/DeltaStoreBasedWaveletState.java
URL:
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/DeltaStoreBasedWaveletState.java?rev=1331779&r1=1331778&r2=1331779&view=diff
==============================================================================
---
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/DeltaStoreBasedWaveletState.java
(original)
+++
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/DeltaStoreBasedWaveletState.java
Sat Apr 28 14:50:37 2012
@@ -158,7 +158,7 @@ class DeltaStoreBasedWaveletState implem
private final DeltaStore.DeltasAccess deltasAccess;
/** The lock that guards access to persistence related state. */
- private Object persistLock = new Object();
+ private final Object persistLock = new Object();
/**
* Indicates the version of the latest appended delta that was already
requested to be
@@ -321,13 +321,17 @@ class DeltaStoreBasedWaveletState implem
public TransformedWaveletDelta getTransformedDeltaByEndVersion(final
HashedVersion endVersion) {
Preconditions.checkArgument(endVersion.getVersion() > 0, "end version %s
is not positive",
endVersion);
- final TransformedWaveletDelta cachedDelta =
transformedDeltas.lowerEntry(endVersion).getValue();
+ Entry<HashedVersion, TransformedWaveletDelta> transformedEntry =
+ transformedDeltas.lowerEntry(endVersion);
+ final TransformedWaveletDelta cachedDelta =
+ transformedEntry != null ? transformedEntry.getValue() : null;
if (snapshot == null) {
return null;
} else {
WaveletDeltaRecord deltaRecord = getDeltaRecordByEndVersion(endVersion);
TransformedWaveletDelta delta;
- if (deltaRecord == null &&
cachedDelta.getResultingVersion().equals(endVersion)) {
+ if (deltaRecord == null && cachedDelta != null
+ && cachedDelta.getResultingVersion().equals(endVersion)) {
delta = cachedDelta;
} else {
delta = deltaRecord != null ? deltaRecord.getTransformedDelta() : null;
@@ -393,8 +397,10 @@ class DeltaStoreBasedWaveletState implem
final HashedVersion endVersion) {
Preconditions.checkArgument(endVersion.getVersion() > 0,
"end version %s is not positive", endVersion);
+ Entry<HashedVersion, ByteStringMessage<ProtocolAppliedWaveletDelta>>
appliedEntry =
+ appliedDeltas.lowerEntry(endVersion);
final ByteStringMessage<ProtocolAppliedWaveletDelta> cachedDelta =
- appliedDeltas.lowerEntry(endVersion).getValue();
+ appliedEntry != null ? appliedEntry.getValue() : null;
WaveletDeltaRecord deltaRecord = getDeltaRecordByEndVersion(endVersion);
ByteStringMessage<ProtocolAppliedWaveletDelta> appliedDelta;
if (deltaRecord == null && isDeltaBoundary(endVersion)) {