@Test public void testUpdateListener() throws Exception { Log.info(Log.FAC_TEST, "Starting testUpdateListener"); SaveType saveType = SaveType.REPOSITORY; NDNHandle writeHandle = NDNHandle.open(); NDNHandle readHandle = NDNHandle.open(); try { ContentName testName = new ContentName(testHelper.getTestNamespace("testUpdateListener"), stringObjName); NDNStringObject writeObject = new NDNStringObject(testName, "Something to listen to.", saveType, writeHandle); writeObject.save(); CounterListener ourListener = new CounterListener(); NDNStringObject readObject = new NDNStringObject(testName, null, null, readHandle); readObject.addListener(ourListener); boolean result = readObject.update(); Assert.assertTrue(result); Assert.assertTrue(ourListener.getCounter() == 1); readObject.updateInBackground(); writeObject.save("New stuff! New stuff!"); synchronized (readObject) { while (ourListener.getCounter() == 1) readObject.wait(); } // For some reason, we're getting two updates on our updateInBackground... Assert.assertTrue(ourListener.getCounter() > 1); } finally { writeHandle.close(); readHandle.close(); KeyManager.closeDefaultKeyManager(); } Log.info(Log.FAC_TEST, "Completed testUpdateListener"); }