package cz.nkp.differ.plugins.tools; import java.io.IOException; import com.vaadin.ui.Component; import cz.nkp.differ.compare.io.CompareComponent; import cz.nkp.differ.listener.ProgressListener; public class PluginPollingThread extends Thread{ private volatile Component comp = null; private volatile ProgressListener callback; private volatile CompareComponent plugin; public PluginPollingThread(final CompareComponent plugin, final ProgressListener callback) throws IOException{ if(plugin == null || callback == null){ throw new IOException("Plugin or callback null!"); } this.plugin = plugin; this.callback = callback; } volatile boolean continueRun = true; public void run() { while(continueRun){ if(checkCallback()){ continueRun = false; }else{ try { sleep(1000); } catch (InterruptedException e) { continueRun = false; } } } } private synchronized final boolean checkCallback(){ if(comp != null){ return true;// Empty cycles if we have finished } comp = plugin.getPluginDisplayComponent(callback); if(comp != null){ callback.ready(comp); return true; } return false; } }