All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.appdapter.gui.util.NamingResolverFromConfiguration Maven / Gradle / Ivy

Go to download

Appdapter Maven project including Java and Scala, produces jar, not bundle. Excludes concrete SLF4J binding.

The newest version!
package org.appdapter.gui.util;

import java.util.Collection;

import org.appdapter.gui.util.ObjectFinder.Found;
import org.appdapter.gui.util.ObjectFinder.FoundObject;


public class NamingResolverFromConfiguration implements NamingResolver {

	public interface Configuration {
		 T loadObject(Class cls, String name);
	}

	Configuration configuration = null;

	public NamingResolverFromConfiguration(Configuration cfg) {
		configuration = cfg;
	}

	@SuppressWarnings("unchecked")
	@Override
	public  Found lookup(String name, Class cls,
			boolean createIfNotFound, Collection dontUse) {
		if (dontUse.contains(this))
			return null;
		dontUse.add(this);
		if (dontUse.contains(configuration))
			return null;
		dontUse.add(configuration);
		O o;
		try {
			T loadObject = configuration.loadObject(cls, name);
			o = ((O) loadObject);
			return new FoundObject(name, o);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	public static void installNamingResolver(Configuration cfg) {
		InitialBoxedContext
				.installNamingResolver(new NamingResolverFromConfiguration(cfg));
	}

}