public OpaqueValue<T> update(Long batchTxid, T newVal) { T prev; if (batchTxid == null || (this.currTxid < batchTxid)) { prev = this.curr; } else if (batchTxid.equals(this.currTxid)) { prev = this.prev; } else { throw new RuntimeException("Current batch (" + batchTxid + ") is behind state's batch: " + this.toString()); } return new OpaqueValue<T>(batchTxid, newVal, prev); }
@Override public OpaqueValue deserialize(byte[] b) { try { String s = new String(b, "UTF-8"); List deser = (List) JSONValue.parseWithException(s); return new OpaqueValue((Long) deser.get(0), deser.get(1), deser.get(2)); } catch (UnsupportedEncodingException | ParseException e) { throw new RuntimeException(e); } }
OpaqueValue<T> newOpaqueVal; if (val == null) { newOpaqueVal = new OpaqueValue<T>(_currTx, newVal); } else { newOpaqueVal = val.update(_currTx, newVal);
@Override @SuppressWarnings("unchecked") public T fromValues(List<Values> valuesSet) { if (valuesSet == null || valuesSet.size() == 0) { return null; } else if (valuesSet.size() == 1) { Values values = valuesSet.get(0); if (values == null) { return null; } switch (stateType) { case NON_TRANSACTIONAL: return (T) values.get(0); case TRANSACTIONAL: return (T) new TransactionalValue((Long) values.get(0), values.get(1)); case OPAQUE: return (T) new OpaqueValue((Long) values.get(0), values.get(1), values.get(2)); default: throw new IllegalStateException("Unknown state type " + stateType); } } throw new IllegalStateException("State query returned multiple results."); }
@Override public OpaqueValue<ITuple> fromValues(List<Values> valuesList) { if (valuesList == null || valuesList.size() == 0) { return null; } Values values = valuesList.get(0); int index = 0; Long currTx = (Long) values.get(index++); SimpleTuple curr = new SimpleTuple(tupleFields); for (String valueField : tupleFields) { curr.put(valueField, values.get(index++)); } if (isAllNull(curr)) { curr = null; } SimpleTuple prev = new SimpleTuple(tupleFields); for (String valueField : tupleFields) { prev.put(valueField, values.get(index++)); } if (isAllNull(prev)) { prev = null; } return new OpaqueValue<ITuple>(currTx, curr, prev); }
public OpaqueValue<T> update(Long batchTxid, T newVal) { T prev; if(batchTxid==null || (this.currTxid < batchTxid)) { prev = this.curr; } else if(batchTxid.equals(this.currTxid)){ prev = this.prev; } else { throw new RuntimeException("Current batch (" + batchTxid + ") is behind state's batch: " + this.toString()); } return new OpaqueValue<T>(batchTxid, newVal, prev); }
@Override public OpaqueValue deserialize(byte[] b) { try { String s = new String(b, "UTF-8"); List deser = (List) JSONValue.parseWithException(s); return new OpaqueValue((Long) deser.get(0), deser.get(1), deser.get(2)); } catch (UnsupportedEncodingException | ParseException e) { throw new RuntimeException(e); } }
OpaqueValue<T> newOpaqueVal; if(val==null) { newOpaqueVal = new OpaqueValue<T>(_currTx, newVal); } else { newOpaqueVal = val.update(_currTx, newVal);