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

org.nakedobjects.metamodel.adapter.InstanceAbstract Maven / Gradle / Ivy

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

import org.nakedobjects.metamodel.spec.Specification;


public abstract class InstanceAbstract implements Instance {

    private final NakedObject owner;
    private Specification specification;
    

    protected InstanceAbstract() {
        this(null, null);
    }

    protected InstanceAbstract(final NakedObject owner) {
        this(owner, null);
    }

    protected InstanceAbstract(final NakedObject owner, final Specification specification) {
        this.owner = owner;
        this.specification = specification;
    }

    public final NakedObject getOwner() {
        return owner;
    }

    public Specification getSpecification() {
        if (specification == null) {
            specification = loadSpecification();
        }
        return specification;
    }

    /**
     * Allows the specification to be lazily loaded.
   */
    protected Specification loadSpecification() {
        return null;
    }

    /**
     * Allows subclasses to get specification without necessarily
     * triggering {@link #loadSpecification() loading} if not
     * yet known.
     */
    protected final Specification getSpecificationNoLoad() {
        return specification;
    }




}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy