package com.ciant.techgallery.transaction.idempotency;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.ObjectifyService;
import java.lang.reflect.Method;
public class KeyIdempotencyHandler implements IdempotencyHandler {
private Object result;
@Override
public boolean shouldTransactionProceed(Object target, Method method, Object[] args) {
if (args != null) {
Key<?> key;
for (Object arg : args) {
if (arg instanceof Key<?>) {
key = (Key<?>) arg;
Object result = ObjectifyService.ofy().load().key(key).now();
return result == null;
}
}
}
return false;
}
@Override
public void setReturn(Object object) {
this.result = object;
}
@Override
public Object getReturn() {
return this.result;
}
}