[infinispan-commits] Infinispan SVN: r421 - in trunk/core/src: test/java/org/infinispan/expiry and 2 other directories.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Wed Jun 10 08:22:33 EDT 2009
Author: mircea.markus
Date: 2009-06-10 08:22:33 -0400 (Wed, 10 Jun 2009)
New Revision: 421
Modified:
trunk/core/src/main/java/org/infinispan/container/entries/AbstractInternalCacheEntry.java
trunk/core/src/main/java/org/infinispan/container/entries/ImmortalCacheEntry.java
trunk/core/src/main/java/org/infinispan/container/entries/ImmortalCacheValue.java
trunk/core/src/main/java/org/infinispan/container/entries/MortalCacheEntry.java
trunk/core/src/main/java/org/infinispan/container/entries/MortalCacheValue.java
trunk/core/src/main/java/org/infinispan/container/entries/TransientCacheEntry.java
trunk/core/src/main/java/org/infinispan/container/entries/TransientCacheValue.java
trunk/core/src/main/java/org/infinispan/container/entries/TransientMortalCacheEntry.java
trunk/core/src/main/java/org/infinispan/container/entries/TransientMortalCacheValue.java
trunk/core/src/test/java/org/infinispan/expiry/ExpiryTest.java
trunk/core/src/test/java/org/infinispan/loaders/CacheLoaderFunctionalTest.java
trunk/core/src/test/java/org/infinispan/loaders/decorators/ChainingCacheLoaderTest.java
Log:
[ISPN-86] (InternalCacheValue/InternalCacheEntry optimization) implemented
Modified: trunk/core/src/main/java/org/infinispan/container/entries/AbstractInternalCacheEntry.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/container/entries/AbstractInternalCacheEntry.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/main/java/org/infinispan/container/entries/AbstractInternalCacheEntry.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -11,22 +11,14 @@
public abstract class AbstractInternalCacheEntry implements InternalCacheEntry {
Object key;
- Object value;
AbstractInternalCacheEntry() {
}
- AbstractInternalCacheEntry(Object key, Object value) {
+ AbstractInternalCacheEntry(Object key) {
this.key = key;
- this.value = value;
}
- public final Object setValue(Object value) {
- Object old = this.value;
- this.value = value;
- return old;
- }
-
public final void commit(DataContainer container) {
// no-op
}
@@ -71,10 +63,6 @@
return key;
}
- public final Object getValue() {
- return value;
- }
-
@Override
public String toString() {
return getClass().getSimpleName() + "{" +
Modified: trunk/core/src/main/java/org/infinispan/container/entries/ImmortalCacheEntry.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/container/entries/ImmortalCacheEntry.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/main/java/org/infinispan/container/entries/ImmortalCacheEntry.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -8,8 +8,11 @@
*/
public class ImmortalCacheEntry extends AbstractInternalCacheEntry {
+ private ImmortalCacheValue cacheValue;
+
ImmortalCacheEntry(Object key, Object value) {
- super(key, value);
+ super(key);
+ this.cacheValue = new ImmortalCacheValue(value);
}
public final boolean isExpired() {
@@ -22,11 +25,7 @@
public InternalCacheEntry setMaxIdle(long maxIdle) {
if (maxIdle > -1) {
- TransientCacheEntry tce = new TransientCacheEntry();
- tce.setMaxIdle(maxIdle);
- tce.key = key;
- tce.value = value;
- return tce;
+ return new TransientCacheEntry(key, cacheValue.value, maxIdle);
} else {
return this;
}
@@ -34,11 +33,7 @@
public InternalCacheEntry setLifespan(long lifespan) {
if (lifespan > -1) {
- MortalCacheEntry mce = new MortalCacheEntry();
- mce.setLifespan(lifespan);
- mce.key = key;
- mce.value = value;
- return mce;
+ return new MortalCacheEntry(key, cacheValue.value, lifespan);
} else {
return this;
}
@@ -69,9 +64,17 @@
}
public InternalCacheValue toInternalCacheValue() {
- return new ImmortalCacheValue(value);
+ return cacheValue;
}
+ public Object getValue() {
+ return cacheValue.value;
+ }
+
+ public Object setValue(Object value) {
+ return this.cacheValue.setValue(value);
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
@@ -80,7 +83,7 @@
ImmortalCacheEntry that = (ImmortalCacheEntry) o;
if (key != null ? !key.equals(that.key) : that.key != null) return false;
- if (value != null ? !value.equals(that.value) : that.value != null) return false;
+ if (cacheValue != null ? !cacheValue.equals(that.cacheValue) : that.cacheValue != null) return false;
return true;
}
@@ -88,7 +91,7 @@
@Override
public int hashCode() {
int result = key != null ? key.hashCode() : 0;
- result = 31 * result + (value != null ? value.hashCode() : 0);
+ result = 31 * result + (cacheValue != null ? cacheValue.hashCode() : 0);
return result;
}
}
Modified: trunk/core/src/main/java/org/infinispan/container/entries/ImmortalCacheValue.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/container/entries/ImmortalCacheValue.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/main/java/org/infinispan/container/entries/ImmortalCacheValue.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -13,18 +13,20 @@
this.value = value;
}
- public void setValue(Object value) {
+ public InternalCacheEntry toInternalCacheEntry(Object key) {
+ return new ImmortalCacheEntry(key, value);
+ }
+
+ public final Object setValue(Object value) {
+ Object old = this.value;
this.value = value;
+ return old;
}
public Object getValue() {
return value;
}
- public InternalCacheEntry toInternalCacheEntry(Object key) {
- return new ImmortalCacheEntry(key, value);
- }
-
public boolean isExpired() {
return false;
}
@@ -48,4 +50,28 @@
public long getMaxIdle() {
return -1;
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof ImmortalCacheValue)) return false;
+
+ ImmortalCacheValue that = (ImmortalCacheValue) o;
+
+ if (value != null ? !value.equals(that.value) : that.value != null) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ return value != null ? value.hashCode() : 0;
+ }
+
+ @Override
+ public String toString() {
+ return "ImmortalCacheValue{" +
+ "value=" + value +
+ '}';
+ }
}
Modified: trunk/core/src/main/java/org/infinispan/container/entries/MortalCacheEntry.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/container/entries/MortalCacheEntry.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/main/java/org/infinispan/container/entries/MortalCacheEntry.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -7,27 +7,28 @@
* @since 4.0
*/
public class MortalCacheEntry extends AbstractInternalCacheEntry {
- long created;
- long lifespan = -1;
- MortalCacheEntry() {
- created = System.currentTimeMillis();
+ private MortalCacheValue cacheValue;
+
+ public Object getValue() {
+ return cacheValue.value;
}
+ public Object setValue(Object value) {
+ return cacheValue.setValue(value);
+ }
+
MortalCacheEntry(Object key, Object value, long lifespan) {
- super(key, value);
- created = System.currentTimeMillis();
- this.lifespan = lifespan;
+ this(key, value, lifespan, System.currentTimeMillis());
}
MortalCacheEntry(Object key, Object value, long lifespan, long created) {
- super(key, value);
- this.created = created;
- this.lifespan = lifespan;
+ super(key);
+ cacheValue = new MortalCacheValue(value, created, lifespan);
}
public final boolean isExpired() {
- return ExpiryHelper.isExpiredMortal(lifespan, created);
+ return ExpiryHelper.isExpiredMortal(cacheValue.lifespan, cacheValue.created);
}
public final boolean canExpire() {
@@ -36,7 +37,7 @@
public InternalCacheEntry setMaxIdle(long maxIdle) {
if (maxIdle > -1) {
- TransientMortalCacheEntry tmce = new TransientMortalCacheEntry(key, value);
+ TransientMortalCacheEntry tmce = new TransientMortalCacheEntry(key, cacheValue.value );
tmce.setMaxIdle(maxIdle);
return tmce;
} else {
@@ -46,15 +47,15 @@
public InternalCacheEntry setLifespan(long lifespan) {
if (lifespan < 0) {
- return new ImmortalCacheEntry(key, value);
+ return new ImmortalCacheEntry(key, cacheValue.value);
} else {
- this.lifespan = lifespan;
+ cacheValue.lifespan = lifespan;
return this;
}
}
public final long getCreated() {
- return created;
+ return cacheValue.created;
}
public final long getLastUsed() {
@@ -62,7 +63,7 @@
}
public final long getLifespan() {
- return lifespan;
+ return cacheValue.lifespan;
}
public final long getMaxIdle() {
@@ -70,7 +71,7 @@
}
public final long getExpiryTime() {
- return lifespan > -1 ? created + lifespan : -1;
+ return cacheValue.lifespan > -1 ? cacheValue.created + cacheValue.lifespan : -1;
}
public final void touch() {
@@ -78,7 +79,7 @@
}
public InternalCacheValue toInternalCacheValue() {
- return new MortalCacheValue(value, created, lifespan);
+ return cacheValue;
}
@Override
@@ -89,19 +90,17 @@
MortalCacheEntry that = (MortalCacheEntry) o;
if (key != null ? !key.equals(that.key) : that.key != null) return false;
- if (value != null ? !value.equals(that.value) : that.value != null) return false;
- if (created != that.created) return false;
- if (lifespan != that.lifespan) return false;
-
- return true;
+ if (cacheValue.value != null ? !cacheValue.value.equals(that.cacheValue.value) : that.cacheValue.value != null) return false;
+ if (cacheValue.created != that.cacheValue.created) return false;
+ return cacheValue.lifespan == that.cacheValue.lifespan;
}
@Override
public int hashCode() {
int result = key != null ? key.hashCode() : 0;
- result = 31 * result + (value != null ? value.hashCode() : 0);
- result = 31 * result + (int) (created ^ (created >>> 32));
- result = 31 * result + (int) (lifespan ^ (lifespan >>> 32));
+ result = 31 * result + (cacheValue.value != null ? cacheValue.value.hashCode() : 0);
+ result = 31 * result + (int) (cacheValue.created ^ (cacheValue.created >>> 32));
+ result = 31 * result + (int) (cacheValue.lifespan ^ (cacheValue.lifespan >>> 32));
return result;
}
}
Modified: trunk/core/src/main/java/org/infinispan/container/entries/MortalCacheValue.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/container/entries/MortalCacheValue.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/main/java/org/infinispan/container/entries/MortalCacheValue.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -7,6 +7,7 @@
* @since 4.0
*/
public class MortalCacheValue extends ImmortalCacheValue {
+
long created;
long lifespan = -1;
@@ -17,20 +18,20 @@
}
@Override
- public long getCreated() {
+ public final long getCreated() {
return created;
}
- public void setCreated(long created) {
+ public final void setCreated(long created) {
this.created = created;
}
@Override
- public long getLifespan() {
+ public final long getLifespan() {
return lifespan;
}
- public void setLifespan(long lifespan) {
+ public final void setLifespan(long lifespan) {
this.lifespan = lifespan;
}
@@ -40,7 +41,7 @@
}
@Override
- public boolean canExpire() {
+ public final boolean canExpire() {
return true;
}
@@ -48,4 +49,34 @@
public InternalCacheEntry toInternalCacheEntry(Object key) {
return new MortalCacheEntry(key, value, lifespan, created);
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof MortalCacheValue)) return false;
+ if (!super.equals(o)) return false;
+
+ MortalCacheValue that = (MortalCacheValue) o;
+
+ if (created != that.created) return false;
+ if (lifespan != that.lifespan) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = super.hashCode();
+ result = 31 * result + (int) (created ^ (created >>> 32));
+ result = 31 * result + (int) (lifespan ^ (lifespan >>> 32));
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "MortalCacheValue{" +
+ "created=" + created +
+ ", lifespan=" + lifespan +
+ "} " + super.toString();
+ }
}
Modified: trunk/core/src/main/java/org/infinispan/container/entries/TransientCacheEntry.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/container/entries/TransientCacheEntry.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/main/java/org/infinispan/container/entries/TransientCacheEntry.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -1,34 +1,34 @@
package org.infinispan.container.entries;
/**
- * A cache entry that is transient, i.e., it can be considered expired afer a period of not being used
+ * A cache entry that is transient, i.e., it can be considered expired afer a period of not being used.
*
* @author Manik Surtani
* @since 4.0
*/
public class TransientCacheEntry extends AbstractInternalCacheEntry {
- long maxIdle = -1;
- long lastUsed;
+ private TransientCacheValue cacheValue;
- TransientCacheEntry() {
- touch();
- }
-
TransientCacheEntry(Object key, Object value, long maxIdle) {
- super(key, value);
- this.maxIdle = maxIdle;
- touch();
+ this(key, value, maxIdle, System.currentTimeMillis());
}
TransientCacheEntry(Object key, Object value, long maxIdle, long lastUsed) {
- super(key, value);
- this.maxIdle = maxIdle;
- this.lastUsed = lastUsed;
+ super(key);
+ cacheValue = new TransientCacheValue(value, maxIdle, lastUsed);
}
+ public Object getValue() {
+ return cacheValue.value;
+ }
+
+ public Object setValue(Object value) {
+ return cacheValue.setValue(value);
+ }
+
public final void touch() {
- lastUsed = System.currentTimeMillis();
+ cacheValue.lastUsed = System.currentTimeMillis();
}
public final boolean canExpire() {
@@ -36,21 +36,21 @@
}
public boolean isExpired() {
- return ExpiryHelper.isExpiredTransient(maxIdle, lastUsed);
+ return cacheValue.isExpired();
}
public InternalCacheEntry setMaxIdle(long maxIdle) {
if (maxIdle < 0) {
- return new ImmortalCacheEntry(key, value);
+ return new ImmortalCacheEntry(key, cacheValue.value);
} else {
- this.maxIdle = maxIdle;
+ cacheValue.maxIdle = maxIdle;
return this;
}
}
public InternalCacheEntry setLifespan(long lifespan) {
if (lifespan > -1) {
- TransientMortalCacheEntry tmce = new TransientMortalCacheEntry(key, value);
+ TransientMortalCacheEntry tmce = new TransientMortalCacheEntry(key, cacheValue.value);
tmce.setLifespan(lifespan);
return tmce;
} else {
@@ -63,7 +63,7 @@
}
public final long getLastUsed() {
- return lastUsed;
+ return cacheValue.lastUsed;
}
public long getLifespan() {
@@ -75,11 +75,11 @@
}
public final long getMaxIdle() {
- return maxIdle;
+ return cacheValue.maxIdle;
}
public InternalCacheValue toInternalCacheValue() {
- return new TransientCacheValue(value, maxIdle, lastUsed);
+ return cacheValue;
}
@Override
@@ -90,9 +90,9 @@
TransientCacheEntry that = (TransientCacheEntry) o;
if (key != null ? !key.equals(that.key) : that.key != null) return false;
- if (value != null ? !value.equals(that.value) : that.value != null) return false;
- if (lastUsed != that.lastUsed) return false;
- if (maxIdle != that.maxIdle) return false;
+ if (cacheValue.value != null ? !cacheValue.value.equals(that.cacheValue.value) : that.cacheValue.value != null) return false;
+ if (cacheValue.lastUsed != that.cacheValue.lastUsed) return false;
+ if (cacheValue.maxIdle != that.cacheValue.maxIdle) return false;
return true;
}
@@ -100,9 +100,9 @@
@Override
public int hashCode() {
int result = key != null ? key.hashCode() : 0;
- result = 31 * result + (value != null ? value.hashCode() : 0);
- result = 31 * result + (int) (lastUsed ^ (lastUsed >>> 32));
- result = 31 * result + (int) (maxIdle ^ (maxIdle >>> 32));
+ result = 31 * result + (cacheValue.value != null ? cacheValue.value.hashCode() : 0);
+ result = 31 * result + (int) (cacheValue.lastUsed ^ (cacheValue.lastUsed >>> 32));
+ result = 31 * result + (int) (cacheValue.maxIdle ^ (cacheValue.maxIdle >>> 32));
return result;
}
}
Modified: trunk/core/src/main/java/org/infinispan/container/entries/TransientCacheValue.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/container/entries/TransientCacheValue.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/main/java/org/infinispan/container/entries/TransientCacheValue.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -35,7 +35,7 @@
}
@Override
- public boolean isExpired() {
+ public final boolean isExpired() {
return ExpiryHelper.isExpiredTransient(maxIdle, lastUsed);
}
@@ -48,4 +48,34 @@
public InternalCacheEntry toInternalCacheEntry(Object key) {
return new TransientCacheEntry(key, value, maxIdle, lastUsed);
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof TransientCacheValue)) return false;
+ if (!super.equals(o)) return false;
+
+ TransientCacheValue that = (TransientCacheValue) o;
+
+ if (lastUsed != that.lastUsed) return false;
+ if (maxIdle != that.maxIdle) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = super.hashCode();
+ result = 31 * result + (int) (maxIdle ^ (maxIdle >>> 32));
+ result = 31 * result + (int) (lastUsed ^ (lastUsed >>> 32));
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "TransientCacheValue{" +
+ "maxIdle=" + maxIdle +
+ ", lastUsed=" + lastUsed +
+ "} " + super.toString();
+ }
}
Modified: trunk/core/src/main/java/org/infinispan/container/entries/TransientMortalCacheEntry.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/container/entries/TransientMortalCacheEntry.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/main/java/org/infinispan/container/entries/TransientMortalCacheEntry.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -6,97 +6,98 @@
* @author Manik Surtani
* @since 4.0
*/
-public class TransientMortalCacheEntry extends TransientCacheEntry {
- private long created;
- private long lifespan = -1;
+public class TransientMortalCacheEntry extends AbstractInternalCacheEntry {
- TransientMortalCacheEntry() {
- super();
- created = System.currentTimeMillis();
- }
+ private TransientMortalCacheValue cacheValue;
TransientMortalCacheEntry(Object key, Object value, long maxIdle, long lifespan) {
- super(key, value, maxIdle);
- created = System.currentTimeMillis();
- this.lifespan = lifespan;
+ super(key);
+ cacheValue = new TransientMortalCacheValue(value, System.currentTimeMillis(), lifespan, maxIdle);
+ touch();
}
TransientMortalCacheEntry(Object key, Object value) {
- super(key, value, -1);
- created = System.currentTimeMillis();
+ super(key);
+ cacheValue = new TransientMortalCacheValue(value, System.currentTimeMillis());
+ touch();
}
public TransientMortalCacheEntry(Object key, Object value, long maxIdle, long lifespan, long lastUsed, long created) {
- super(key, value, maxIdle, lastUsed);
- this.created = created;
- this.lifespan = lifespan;
+ super(key);
+ this.cacheValue = new TransientMortalCacheValue(value, created, lifespan, maxIdle, lastUsed);
}
- @Override
public InternalCacheEntry setLifespan(long lifespan) {
if (lifespan < 0) {
- TransientCacheEntry tce = new TransientCacheEntry();
- tce.key = key;
- tce.value = value;
- tce.lastUsed = lastUsed;
- tce.maxIdle = maxIdle;
- return tce;
+ return new TransientCacheEntry(key, cacheValue.value, cacheValue.lastUsed, cacheValue.maxIdle);
} else {
- this.lifespan = lifespan;
+ this.cacheValue.lifespan = lifespan;
return this;
}
}
- @Override
public InternalCacheEntry setMaxIdle(long maxIdle) {
if (maxIdle < 0) {
- MortalCacheEntry mce = new MortalCacheEntry();
- mce.key = key;
- mce.value = value;
- mce.created = created;
- mce.lifespan = lifespan;
- return mce;
+ return new MortalCacheEntry(key, cacheValue.value, cacheValue.lifespan, cacheValue.created);
} else {
- this.maxIdle = maxIdle;
+ this.cacheValue.maxIdle = maxIdle;
return this;
}
}
- @Override
+ public Object getValue() {
+ return cacheValue.value;
+ }
+
public long getLifespan() {
- return lifespan;
+ return cacheValue.lifespan;
}
- @Override
+ public final boolean canExpire() {
+ return true;
+ }
+
public long getCreated() {
- return created;
+ return cacheValue.created;
}
- @Override
public boolean isExpired() {
- return ExpiryHelper.isExpiredTransientMortal(maxIdle, lastUsed, lifespan, created);
+ return cacheValue.isExpired();
}
- @Override
public final long getExpiryTime() {
- return lifespan > -1 ? created + lifespan : -1;
+ return cacheValue.lifespan > -1 ? cacheValue.created + cacheValue.lifespan : -1;
}
- @Override
public InternalCacheValue toInternalCacheValue() {
- return new TransientMortalCacheValue(value, created, lifespan, maxIdle, lastUsed);
+ return cacheValue;
}
+ public long getLastUsed() {
+ return cacheValue.lastUsed;
+ }
+
+ public final void touch() {
+ cacheValue.lastUsed = System.currentTimeMillis();
+ }
+
+ public long getMaxIdle() {
+ return cacheValue.maxIdle;
+ }
+
+ public Object setValue(Object value) {
+ return cacheValue.maxIdle;
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
- if (!super.equals(o)) return false;
TransientMortalCacheEntry that = (TransientMortalCacheEntry) o;
- if (created != that.created) return false;
- if (lifespan != that.lifespan) return false;
+ if (cacheValue.created != that.cacheValue.created) return false;
+ if (cacheValue.lifespan != that.cacheValue.lifespan) return false;
return true;
}
@@ -104,8 +105,8 @@
@Override
public int hashCode() {
int result = super.hashCode();
- result = 31 * result + (int) (created ^ (created >>> 32));
- result = 31 * result + (int) (lifespan ^ (lifespan >>> 32));
+ result = 31 * result + (int) (cacheValue.created ^ (cacheValue.created >>> 32));
+ result = 31 * result + (int) (cacheValue.lifespan ^ (cacheValue.lifespan >>> 32));
return result;
}
}
Modified: trunk/core/src/main/java/org/infinispan/container/entries/TransientMortalCacheValue.java
===================================================================
--- trunk/core/src/main/java/org/infinispan/container/entries/TransientMortalCacheValue.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/main/java/org/infinispan/container/entries/TransientMortalCacheValue.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -7,15 +7,23 @@
* @since 4.0
*/
public class TransientMortalCacheValue extends MortalCacheValue {
- private long maxIdle = -1;
- private long lastUsed;
+ long maxIdle = -1;
+ long lastUsed;
TransientMortalCacheValue(Object value, long created, long lifespan, long maxIdle, long lastUsed) {
+ this(value, created, lifespan, maxIdle);
+ this.lastUsed = lastUsed;
+ }
+
+ public TransientMortalCacheValue(Object value, long created, long lifespan, long maxIdle) {
super(value, created, lifespan);
this.maxIdle = maxIdle;
- this.lastUsed = lastUsed;
}
+ public TransientMortalCacheValue(Object value, long created) {
+ super(value, created, -1);
+ }
+
@Override
public long getMaxIdle() {
return maxIdle;
@@ -34,7 +42,6 @@
this.lastUsed = lastUsed;
}
- @Override
public boolean isExpired() {
return ExpiryHelper.isExpiredTransientMortal(maxIdle, lastUsed, lifespan, created);
}
@@ -43,4 +50,34 @@
public InternalCacheEntry toInternalCacheEntry(Object key) {
return new TransientMortalCacheEntry(key, value, maxIdle, lifespan, lastUsed, created);
}
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof TransientMortalCacheValue)) return false;
+ if (!super.equals(o)) return false;
+
+ TransientMortalCacheValue that = (TransientMortalCacheValue) o;
+
+ if (lastUsed != that.lastUsed) return false;
+ if (maxIdle != that.maxIdle) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = super.hashCode();
+ result = 31 * result + (int) (maxIdle ^ (maxIdle >>> 32));
+ result = 31 * result + (int) (lastUsed ^ (lastUsed >>> 32));
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return "TransientMortalCacheValue{" +
+ "maxIdle=" + maxIdle +
+ ", lastUsed=" + lastUsed +
+ "} " + super.toString();
+ }
}
Modified: trunk/core/src/test/java/org/infinispan/expiry/ExpiryTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/expiry/ExpiryTest.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/test/java/org/infinispan/expiry/ExpiryTest.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -9,6 +9,7 @@
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
+import static org.testng.Assert.assertEquals;
import java.util.HashMap;
import java.util.Map;
@@ -187,7 +188,7 @@
cache.put("k", "v-old");
assert cache.get("k").equals("v-old");
assert cache.replace("k", "v", -1, MILLISECONDS, idleTime, MILLISECONDS) != null;
- assert cache.get("k").equals("v");
+ assertEquals(cache.get("k"), "v");
Thread.sleep(idleTime + 100);
assert cache.get("k") == null;
Modified: trunk/core/src/test/java/org/infinispan/loaders/CacheLoaderFunctionalTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/loaders/CacheLoaderFunctionalTest.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/test/java/org/infinispan/loaders/CacheLoaderFunctionalTest.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -178,6 +178,7 @@
cache.replace("k1", "v1-REPLACED");
assertNoLocks(cache);
cache.replace("k2", "v2-REPLACED", lifespan, MILLISECONDS);
+ assertInCacheAndStore("k2", "v2-REPLACED", lifespan);
assertNoLocks(cache);
cache.replace("k3", "v3", "v3-REPLACED");
assertNoLocks(cache);
Modified: trunk/core/src/test/java/org/infinispan/loaders/decorators/ChainingCacheLoaderTest.java
===================================================================
--- trunk/core/src/test/java/org/infinispan/loaders/decorators/ChainingCacheLoaderTest.java 2009-06-09 21:29:03 UTC (rev 420)
+++ trunk/core/src/test/java/org/infinispan/loaders/decorators/ChainingCacheLoaderTest.java 2009-06-10 12:22:33 UTC (rev 421)
@@ -17,6 +17,7 @@
import org.infinispan.transaction.xa.GlobalTransaction;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;
+import static org.testng.Assert.assertEquals;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -127,12 +128,17 @@
// k1 is on store1
store1.store(InternalEntryFactory.create("k1", "v1"));
+
+ assertEquals(cs.loadAll().size(), 1);
// k2 is on store2
store2.store(InternalEntryFactory.create("k2", "v2"));
+ assertEquals(cs.loadAll().size(), 2);
// k3 is on both
store1.store(InternalEntryFactory.create("k3", "v3"));
+ assertEquals(cs.loadAll().size(), 3);
store2.store(InternalEntryFactory.create("k3", "v3"));
+ assertEquals(cs.loadAll().size(), 3);
// k4 is on neither
@@ -143,7 +149,7 @@
Set<InternalCacheEntry> all = cs.loadAll();
- assert all.size() == 3;
+ assertEquals(all.size(),3);
Set<Object> expectedKeys = new HashSet<Object>();
expectedKeys.add("k1");
expectedKeys.add("k2");
More information about the infinispan-commits
mailing list