
org.nakedobjects.plugins.headless.embedded.NakedObjectsMetaModel Maven / Gradle / Ivy
The newest version!
package org.nakedobjects.plugins.headless.embedded;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.nakedobjects.metamodel.commons.ensure.Ensure.ensureThatArg;
import static org.nakedobjects.metamodel.commons.ensure.Ensure.ensureThatState;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import org.nakedobjects.metamodel.commons.component.ApplicationScopedComponent;
import org.nakedobjects.metamodel.commons.exceptions.NakedObjectException;
import org.nakedobjects.metamodel.config.NakedObjectConfiguration;
import org.nakedobjects.metamodel.config.internal.PropertiesConfiguration;
import org.nakedobjects.metamodel.facetdecorator.FacetDecorator;
import org.nakedobjects.metamodel.spec.IntrospectableSpecification;
import org.nakedobjects.metamodel.spec.NakedObjectSpecification;
import org.nakedobjects.metamodel.services.ServicesInjector;
import org.nakedobjects.metamodel.services.container.DomainObjectContainerDefault;
import org.nakedobjects.metamodel.specloader.NakedObjectReflectorAbstract;
import org.nakedobjects.metamodel.specloader.SpecificationLoader;
import org.nakedobjects.metamodel.specloader.classsubstitutor.ClassSubstitutor;
import org.nakedobjects.metamodel.specloader.classsubstitutor.ClassSubstitutorIdentity;
import org.nakedobjects.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistry;
import org.nakedobjects.metamodel.specloader.collectiontyperegistry.CollectionTypeRegistryDefault;
import org.nakedobjects.metamodel.specloader.progmodelfacets.ProgrammingModelFacets;
import org.nakedobjects.metamodel.specloader.progmodelfacets.ProgrammingModelFacetsJava5;
import org.nakedobjects.metamodel.specloader.traverser.SpecificationTraverser;
import org.nakedobjects.metamodel.specloader.traverser.SpecificationTraverserDefault;
import org.nakedobjects.metamodel.specloader.validator.MetaModelValidator;
import org.nakedobjects.metamodel.specloader.validator.MetaModelValidatorNoop;
import org.nakedobjects.plugins.headless.applib.HeadlessViewer;
import org.nakedobjects.plugins.headless.embedded.internal.RuntimeContextForEmbeddedMetaModel;
import org.nakedobjects.plugins.headless.viewer.DomainObjectContainerHeadlessViewer;
import org.nakedobjects.plugins.headless.viewer.internal.HeadlessViewerImpl;
/**
* Facade for the entire NakedObjects metamodel and supporting components.
*/
public class NakedObjectsMetaModel implements ApplicationScopedComponent {
private static enum State {
NOT_INITIALIZED,
INITIALIZED,
SHUTDOWN;
}
private final List> serviceTypes = new ArrayList>();
private State state = State.NOT_INITIALIZED;
private NakedObjectReflectorAbstract reflector;
private RuntimeContextForEmbeddedMetaModel runtimeContext;
private NakedObjectConfiguration configuration;
private ClassSubstitutor classSubstitutor;
private CollectionTypeRegistry collectionTypeRegistry;
private ProgrammingModelFacets programmingModelFacets;
private SpecificationTraverser specificationTraverser;
private Set facetDecorators;
private MetaModelValidator metaModelValidator;
private HeadlessViewer viewer;
private EmbeddedContext context;
private List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy