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

org.nakedobjects.metamodel.runtimecontext.RuntimeContextAbstract Maven / Gradle / Ivy

The newest version!
package org.nakedobjects.metamodel.runtimecontext;

import org.nakedobjects.applib.DomainObjectContainer;
import org.nakedobjects.metamodel.services.container.DomainObjectContainerAware;
import org.nakedobjects.metamodel.specloader.NakedObjectReflectorAbstract;
import org.nakedobjects.metamodel.specloader.SpecificationLoader;
import org.nakedobjects.metamodel.specloader.SpecificationLoaderAware;


public abstract class RuntimeContextAbstract implements RuntimeContext, SpecificationLoaderAware, DomainObjectContainerAware {

	private SpecificationLoader specificationLoader;
	private DomainObjectContainer container;

	public RuntimeContextAbstract() {
	}

	public void injectInto(Object candidate) {
        if (RuntimeContextAware.class.isAssignableFrom(candidate.getClass())) {
        	RuntimeContextAware cast = RuntimeContextAware.class.cast(candidate);
            cast.setRuntimeContext(this);
        }
	}

	
	public SpecificationLoader getSpecificationLoader() {
		return specificationLoader;
	}
	
	/**
	 * Is injected into when the reflector is {@link NakedObjectReflectorAbstract#init() initialized}.
	 */
	public void setSpecificationLoader(SpecificationLoader specificationLoader) {
		this.specificationLoader = specificationLoader;
	}
	
	

	protected DomainObjectContainer getContainer() {
		return container;
	}
	/**
	 * So that {@link #injectDependenciesInto(Object)} can also inject the {@link DomainObjectContainer}.
	 */
	public void setContainer(DomainObjectContainer container) {
		this.container = container;
	}
	


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy