@Override public NImmutableEnvironment getEnvironment(NSmartContract smartContract) { NImmutableEnvironment nim = getEnvironment(smartContract.getId()); if(nim == null && smartContract.getParent() != null) nim = getEnvironment(smartContract.getParent()); if (nim == null) { long envId = saveEnvironmentToStorage(smartContract.getExtendedType(), smartContract.getId(), Boss.pack(new Binder()), smartContract.getPackedTransaction()); nim = getEnvironment(envId); } else { nim.setContract(smartContract); } return nim; }
private NImmutableEnvironment getEnvironment(NSmartContract item) { NImmutableEnvironment result = envCache.get(item.getId()); if(result == null && item.getParent() != null) { result = envCache.get(item.getParent()); } if(result == null) { result = ledger.getEnvironment(item); envCache.put(result); } return result; }
public void save() { ledger.updateEnvironment(getId(),contract.getExtendedType(),contract.getId(), Boss.pack(kvStore),contract.getPackedTransaction());
@Override public Set<HashId> saveEnvironment(NImmutableEnvironment environment) { Set<HashId> conflicts = saveEnvironment_getConflicts(environment); if (conflicts.size() == 0) { NSmartContract nsc = environment.getContract(); removeEnvironment(nsc.getId()); long envId = saveEnvironmentToStorage(nsc.getExtendedType(), nsc.getId(), Boss.pack(environment.getMutable().getKVStore()), nsc.getPackedTransaction()); for (NameRecord nr : environment.nameRecords()) { NNameRecord nnr = (NNameRecord)nr; nnr.setEnvironmentId(envId); addNameRecord(nnr); } for (ContractSubscription css : environment.subscriptions()) saveSubscriptionInStorage(css.getHashId(), css.isChainSubscription(), css.expiresAt(), envId); for (ContractStorage cst : environment.storages()) saveContractInStorage(cst.getContract().getId(), cst.getPackedContract(), cst.expiresAt(), cst.getContract().getOrigin(), envId); FollowerService fs = environment.getFollowerService(); if (fs != null) saveFollowerEnvironment(envId, fs.expiresAt(), fs.mutedAt(), fs.getCallbacksSpent(), fs.getStartedCallbacks()); } return conflicts; }
assertNull(ledger.getEnvironment(rev1.getId())); NImmutableEnvironment environment = new NImmutableEnvironment(rev1,new Binder(),Do.listOf(),Do.listOf(),Do.listOf(),null,null); ledger.saveEnvironment(environment); assertNotNull(ledger.getEnvironment(rev1.getId())); testSpace.clients.get(testSpace.clients.size()-1).resyncItem(rev1.getId()); long millisToWait = 60000; long waitPeriod = 2000; Thread.sleep(waitPeriod); millisToWait -= waitPeriod; ir = testSpace.clients.get(testSpace.clients.size()-1).getState(rev1.getId()); if (ir.state == ItemState.REVOKED) break; assertNull(ledger.getEnvironment(rev1.getId()));