package org.wikiwebserver.distribute.se;

import org.wikiwebserver.distribute.interfaces.RemoteWorker;


public class RemoteWorkerLoader implements Runnable {
	
	private RemoteWorker worker;
	
	public void run() {

		try {
			ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
			String workerClassName = ConfigManager.getString("remoteWorkerClassName");
			Class<?> workerClass = classLoader.loadClass(workerClassName);
			worker = (RemoteWorker) workerClass.newInstance();
			synchronized (this) {
				this.notifyAll();
			}
			worker.run();
			
		} catch (ClassNotFoundException ex) {
			ex.printStackTrace();
		} catch (InstantiationException ex) {
			ex.printStackTrace();
		} catch (IllegalAccessException ex) {
			ex.printStackTrace();
		}
	}
	
	public synchronized RemoteWorker getRemoteWorker() {
		if (worker == null) {
			try {
				this.wait();
			} catch (InterruptedException ex) {
				ex.printStackTrace();
			}
		}
		return worker;
	}
}

