private List<HashId> getOriginsToCheck() { Set<HashId> origins = new HashSet<>(); for (UnsName unsName : storedNames) for (UnsRecord unsRecord : unsName.getUnsRecords()) if (unsRecord.getOrigin() != null) origins.add(unsRecord.getOrigin()); for (Approvable revoked : getRevokingItems()) removeRevokedOrigins(revoked, origins); return new ArrayList<>(origins); }
private List<String> getAddressesToCheck() { Set<String> addresses = new HashSet<>(); for (UnsName unsName : storedNames) for (UnsRecord unsRecord : unsName.getUnsRecords()) for (KeyAddress keyAddress : unsRecord.getAddresses()) addresses.add(keyAddress.toString()); for (Approvable revoked : getRevokingItems()) removeRevokedAddresses(revoked, addresses); return new ArrayList<>(addresses); }
@Override public Binder onUpdated(MutableEnvironment me) { ZonedDateTime expiresAt = calcExpiresAt(); Map<String, UnsName> newNames = storedNames.stream().collect(Collectors.toMap(UnsName::getUnsName, un -> un)); me.nameRecords().forEach( nameRecord -> { UnsName unsName = newNames.get(nameRecord.getName()); if(unsName != null && unsName.getUnsRecords().size() == nameRecord.getEntries().size() && unsName.getUnsRecords().stream().allMatch(unsRecord -> nameRecord.getEntries().stream().anyMatch(nameRecordEntry -> unsRecord.equalsTo(nameRecordEntry)))) { me.setNameRecordExpiresAt(nameRecord,expiresAt); newNames.remove(nameRecord.getName()); } else { me.destroyNameRecord(nameRecord); } }); newNames.values().forEach(sn -> me.createNameRecord(sn,expiresAt)); return Binder.fromKeysValues("status", "ok"); }
private void removeRevokedOrigins(Approvable approvable, Set<HashId> set) { if (approvable instanceof UnsContract) { UnsContract unsContract = (UnsContract) approvable; for (UnsName unsName : unsContract.storedNames) for (UnsRecord unsRecord : unsName.getUnsRecords()) if (unsRecord.getOrigin() != null) set.remove(unsRecord.getOrigin()); } for (Approvable revoked : approvable.getRevokingItems()) removeRevokedOrigins(revoked, set); }
private void removeRevokedAddresses(Approvable approvable, Set<String> set) { if (approvable instanceof UnsContract) { UnsContract unsContract = (UnsContract) approvable; for (UnsName unsName : unsContract.storedNames) for (UnsRecord unsRecord : unsName.getUnsRecords()) for (KeyAddress keyAddress : unsRecord.getAddresses()) set.remove(keyAddress.toString()); } for (Approvable revoked : approvable.getRevokingItems()) removeRevokedAddresses(revoked, set); }
private void saveOriginReferencesToState() { Set<HashId> origins = new HashSet<>(); storedNames.forEach(sn->sn.getUnsRecords().forEach(unsRecord -> { if(unsRecord.getOrigin()!=null) { origins.add(unsRecord.getOrigin());
public NNameRecord(@NonNull UnsName unsName, @NonNull ZonedDateTime expiresAt) { name = unsName.getUnsName(); nameReduced = unsName.getUnsReducedName(); description = unsName.getUnsDescription(); url = unsName.getUnsURL(); this.expiresAt = expiresAt; unsName.getUnsRecords().forEach(unsRecord -> { String longAddress = null; String shortAddress = null; for (KeyAddress keyAddress : unsRecord.getAddresses()) { if (keyAddress.isLong()) longAddress = keyAddress.toString(); else shortAddress = keyAddress.toString(); } entries.add(new NNameRecordEntry(unsRecord.getOrigin(), shortAddress, longAddress)); }); }
checkResult = storedNames.stream().allMatch(n -> n.getUnsRecords().stream().allMatch(unsRecord -> { if(unsRecord.getOrigin() != null) { if(!unsRecord.getAddresses().isEmpty()) {
for(int i = 0; i < unsNameToChangeCopy.getUnsRecords().size();i++) { UnsRecord unsRecord = unsNameToChangeCopy.getUnsRecord(i); if(unsRecord.getAddresses().equals(unsRecordToRemove.getAddresses())) { unsNameToChangeCopy.getUnsRecords().remove(i); i--; continue;
assertTrue(nnr2.getEntries().stream().anyMatch(nre -> unsName.getUnsRecords().stream().anyMatch(ur -> ur.equalsTo(nre)))); assertEquals(nnr2.getEntries().size(),unsName.getRecordsCount()); assertEquals(nnr2.getName(),unsName.getUnsName());