@Override public <X> void remove(Key<X, ?> key) { String keyJson = namespace + key.toJson(); LocalStorage.remove(keyJson); }
@Override public <X> boolean isModified(Key<X, ?> key, X value) { ErraiManagedType<X> entityType = key.getEntityType(); String keyJson = namespace + key.toJson(); JSONValue newValueJson = entityType.toJson(em, value); JSONValue oldValueJson = JSONParser.parseStrict(LocalStorage.get(keyJson)); boolean modified = !JsonUtil.equals(newValueJson, oldValueJson); if (modified) { logger.trace("Detected modified entity " + key); logger.trace(" Old: " + oldValueJson); logger.trace(" New: " + newValueJson); } return modified; }
@Override public <X> void put(Key<X,?> key, X value) { ErraiManagedType<X> entityType = key.getEntityType(); String keyJson = namespace + key.toJson(); JSONValue valueJson = entityType.toJson(em, value); logger.trace(">>>put '" + keyJson + "'"); LocalStorage.put(keyJson, valueJson.toString()); }
@Override public <X, Y> boolean contains(Key<X, Y> key) { boolean contains = false; for (ErraiManagedType<X> type : key.getEntityType().getSubtypes()) { Key<?, ?> k = new Key<X, Y>(type, key.getId()); String keyJson = namespace + k.toJson(); contains = LocalStorage.get(keyJson) != null; logger.trace("<<<contains '" + keyJson + "' : " + contains); if (contains) break; } return contains; }
@Override public <X> X get(Key<X, ?> requestedKey) { for (ErraiManagedType<? extends X> entityType : requestedKey.getEntityType().getSubtypes()) { Key<X, ?> key = new Key<X, Object>((ErraiManagedType<X>) entityType, (Object) requestedKey.getId()); String keyJson = namespace + key.toJson(); String valueJson = LocalStorage.get(keyJson); logger.trace("<<<get '" + keyJson + "' : " + valueJson); X entity; if (valueJson != null) { entity = entityType.fromJson(em, JSONParser.parseStrict(valueJson)); logger.trace(" returning " + entity); return entity; } } return null; }