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

org.unidal.initialization.DefaultModuleContext Maven / Gradle / Ivy

The newest version!
package org.unidal.initialization;

import java.util.HashMap;
import java.util.Map;

import org.unidal.lookup.ComponentLookupException;
import org.unidal.lookup.PlexusContainer;
import org.unidal.lookup.annotation.Named;
import org.unidal.lookup.extension.Contextualizable;
import org.unidal.lookup.logging.Logger;
import org.unidal.lookup.logging.TimedConsoleLoggerManager;

@Named(type = ModuleContext.class)
public class DefaultModuleContext implements ModuleContext, Contextualizable {
	private PlexusContainer m_container;

	private Map m_attributes = new HashMap();

	private Logger m_logger;

	public DefaultModuleContext() {
	}

	public DefaultModuleContext(PlexusContainer container) {
		m_container = container;

		setup();
	}

	@Override
	public void contextualize(Map context) {
		m_container = (PlexusContainer) context.get("plexus");

		setup();
	}

	@Override
	public void error(String message) {
		m_logger.error(message);
	}

	@Override
	public void error(String message, Throwable e) {
		m_logger.error(message, e);
	}

	@Override
	public  T getAttribute(String name) {
		return getAttribute(name, null);
	}

	@SuppressWarnings("unchecked")
	@Override
	public  T getAttribute(String name, T defaultValue) {
		Object value = m_attributes.get(name);

		if (value != null) {
			return (T) value;
		} else {
			return defaultValue;
		}
	}

	public PlexusContainer getContainer() {
		return m_container;
	}

	@Override
	public Module[] getModules(String... names) {
		Module[] modules = new Module[names.length];
		int index = 0;

		for (String name : names) {
			modules[index++] = lookup(Module.class, name);
		}

		return modules;
	}

	@Override
	public void info(String message) {
		m_logger.info(message);
	}

	@Override
	public  T lookup(Class role) {
		return lookup(role, null);
	}

	@Override
	public  T lookup(Class role, String roleHint) {
		try {
			return m_container.lookup(role, roleHint);
		} catch (ComponentLookupException e) {
			throw new RuntimeException("Unable to get component: " + role + ".", e);
		}
	}

	@Override
	public void release(Object component) {
		m_container.release(component);
	}

	@Override
	public void setAttribute(String name, Object value) {
		m_attributes.put(name, value);
	}

	private void setup() {
		try {
			m_logger = m_container.getLogger();
		} catch (Exception e) {
			throw new RuntimeException("Unable to get instance of Logger, please make sure " //
			      + "the environment was setup correctly!", e);
		}

		skipClassForLogger(getClass());
	}

	public void skipClassForLogger(Class clazz) {
		TimedConsoleLoggerManager.skipClass(clazz);
	}

	@Override
	public void warn(String message) {
		m_logger.warn(message);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy