[
https://issues.redhat.com/browse/ISPN-11249?page=com.atlassian.jira.plugi...
]
Will Burns commented on ISPN-11249:
-----------------------------------
For now I will just add in UnsupportedOperationException, however compute is more than
doable with an override of the following:
```
@Override
public V compute(K key, BiFunction<? super K, ? super V, ? extends V>
remappingFunction, long lifespan, TimeUnit lifespanUnit, long maxIdleTime, TimeUnit
maxIdleTimeUnit) {
V newValue;
while (true) {
MetadataValue<V> metadataValue = getWithMetadata(key);
V oldValue;
long version;
if (metadataValue != null) {
oldValue = metadataValue.getValue();
version = metadataValue.getVersion();
} else {
oldValue = null;
version = -1;
}
newValue = remappingFunction.apply(key, oldValue);
boolean done;
if (newValue != null) {
if (oldValue != null) {
done = replaceWithVersion(key, newValue, version, lifespan, lifespanUnit,
maxIdleTime, maxIdleTimeUnit);
} else {
done = putIfAbsent(key, newValue, lifespan, lifespanUnit, maxIdleTime,
maxIdleTimeUnit) != null;
}
} else {
done = removeWithVersion(key, version);
}
if (done) {
break;
}
}
return newValue;
}
```
Unexpected functionality added by Java8 default interface methods
-----------------------------------------------------------------
Key: ISPN-11249
URL:
https://issues.redhat.com/browse/ISPN-11249
Project: Infinispan
Issue Type: Bug
Reporter: Wolf-Dieter Fink
Priority: Critical
With Java8 there are interfaces which implement default methods.
Those defaults are available if not overridden, but the function behind might not be
correct because the method was not meant to be implemented.
There are issues with the transaction and locking because of the remote invocation, so
the conditional operation will not work consistent.
Such methods need to be checked and throw a UnsupportedOperation.
This appears for the compute(...) methods
compute(key, BiFunct) -> default to java.util.concurrent.ConcurrentMap interface
compute() methods with expiration will throw an UnsupportedOperationException as
expected.
--
This message was sent by Atlassian Jira
(v7.13.8#713008)