1 7 package org.mmbase.applications.packaging.providerhandlers; 8 9 import java.util.Iterator ; 10 11 import org.mmbase.applications.packaging.BundleManager; 12 import org.mmbase.applications.packaging.PackageManager; 13 import org.mmbase.applications.packaging.ProviderManager; 14 import org.mmbase.util.logging.Logger; 15 import org.mmbase.util.logging.Logging; 16 17 23 public class PackageDiscovery implements Runnable { 24 private static Logger log = Logging.getLoggerInstance(PackageDiscovery.class); 25 private Thread kicker; 26 private int delay = 10; 27 private int runtimes = 5; 28 private int runtimecount = 1; 29 30 31 public PackageDiscovery() { 32 start(); 33 } 34 35 public void resetSleepCounter() { 36 runtimecount = 1; 37 delay = 10; 38 if (kicker == null) { 39 start(); 40 } else { 41 kicker.interrupt(); 42 } 43 } 44 45 46 49 public void start() { 50 53 if (kicker == null) { 54 kicker = new Thread (this, "package discovery thread"); 55 kicker.start(); 56 } 57 } 58 59 60 63 public void run() { 64 while (kicker != null && runtimes>runtimecount) { 65 try { 66 getPackages(); 67 runtimecount++; 68 Thread.sleep(delay * 1000); 69 delay += delay * 2; } catch (InterruptedException e) { 71 } catch (Exception e) { 72 log.error("problem in package discovery thread"); 73 } 74 } 75 kicker = null; 76 } 77 78 public void getPackages() { 79 Iterator i = ProviderManager.getProviders(); 81 while (i.hasNext()) { 82 ProviderInterface pi = (ProviderInterface)i.next(); 83 try { 84 pi.getPackages(); 85 PackageManager.removeOfflinePackages(pi); 86 BundleManager.removeOfflineBundles(pi); 87 } catch (Exception e) { 88 log.error("Something went wring in package discovery : "+pi.getPath()); 89 e.printStackTrace(); 90 } 91 } 92 } 93 94 } 95 96 | Popular Tags |