/** * Deletes email packets. * @param delRequest An instance of {@link EmailPacketDeleteRequest} */ @Override public synchronized void process(DeleteRequest delRequest) { log.debug("Processing delete request: " + delRequest); if (!(delRequest instanceof EmailPacketDeleteRequest)) log.error("Invalid type of delete request for EmailPacketFolder: " + delRequest.getClass()); EmailPacketDeleteRequest emailPacketDelRequest = (EmailPacketDeleteRequest)delRequest; // see if the packet exists Hash dhtKey = emailPacketDelRequest.getDhtKey(); DhtStorablePacket storedPacket = retrieve(dhtKey); if (storedPacket instanceof EncryptedEmailPacket) { // verify Hash verificationHash = ((EncryptedEmailPacket)storedPacket).getDeleteVerificationHash(); UniqueId delAuthorization = emailPacketDelRequest.getAuthorization(); boolean valid = Util.isDeleteAuthorizationValid(verificationHash, delAuthorization); if (valid) delete(dhtKey, delAuthorization); else log.debug("Invalid Delete Authorization in EmailPacketDeleteRequest. Should be: <" + verificationHash.toBase64() + ">"); } else if (storedPacket != null) log.debug("EncryptedEmailPacket expected for DHT key <" + dhtKey + ">, found " + storedPacket.getClass().getSimpleName()); }
EmailPacketDeleteRequest newEmailPacketDelRequest1 = (EmailPacketDeleteRequest)newDelRequest1; assertEquals(newEmailPacketDelRequest1.getDhtKey(), emailPacket1.getDhtKey()); assertEquals(newEmailPacketDelRequest1.getAuthorization(), delAuthKey1); DeleteRequest newDelRequest2 = packetFolder.storeAndCreateDeleteRequest(emailPacket2); assertTrue(newDelRequest2 instanceof EmailPacketDeleteRequest); EmailPacketDeleteRequest newEmailPacketDelRequest2 = (EmailPacketDeleteRequest)newDelRequest2; assertEquals(newEmailPacketDelRequest2.getDhtKey(), emailPacket2.getDhtKey()); assertEquals(newEmailPacketDelRequest2.getAuthorization(), delAuthKey2);