+ private static class NewEditionFound implements USKCallback {
+
+ private final Sone sone;
+ private final SoneDownloader soneDownloader;
+
+ public NewEditionFound(Sone sone, SoneDownloader soneDownloader) {
+ this.sone = sone;
+ this.soneDownloader = soneDownloader;
+ }
+
+ @Override
+ @SuppressWarnings("synthetic-access")
+ public void onFoundEdition(long edition, USK key, ObjectContainer objectContainer, ClientContext clientContext, boolean metadata, short codec, byte[] data, boolean newKnownGood, boolean newSlotToo) {
+ logger.log(FINE, format("Found USK update for Sone “%s” at %s, new known good: %s, new slot too: %s.", sone, key, newKnownGood, newSlotToo));
+ if (edition > sone.getLatestEdition()) {
+ sone.modify().setLatestEdition(edition).update();
+ new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ soneDownloader.fetchSone(sone);
+ }
+ }, format("Sone Downloader for %s", sone.getId())).start();
+ }
+ }
+
+ @Override
+ public short getPollingPriorityProgress() {
+ return INTERACTIVE_PRIORITY_CLASS;
+ }
+
+ @Override
+ public short getPollingPriorityNormal() {
+ return INTERACTIVE_PRIORITY_CLASS;
+ }
+ }
+
+ private static class CallbackWrapper implements USKCallback {
+
+ private final Callback callback;
+
+ public CallbackWrapper(Callback callback) {
+ this.callback = callback;
+ }
+
+ @Override
+ public void onFoundEdition(long edition, USK key, ObjectContainer objectContainer, ClientContext clientContext, boolean metadata, short codec, byte[] data, boolean newKnownGood, boolean newSlotToo) {
+ callback.editionFound(key.getURI(), edition, newKnownGood, newSlotToo);
+ }
+
+ @Override
+ public short getPollingPriorityNormal() {
+ return PREFETCH_PRIORITY_CLASS;
+ }
+
+ @Override
+ public short getPollingPriorityProgress() {
+ return INTERACTIVE_PRIORITY_CLASS;
+ }
+
+ }
+