001// license-header java merge-point
002//
003// Attention: generated code (by Metafacade.vsl) - do not modify!
004//
005package org.andromda.metafacades.uml;
006
007import java.util.Collection;
008import org.andromda.core.metafacade.ModelValidationMessage;
009
010/**
011 * Represents the model object 'Template Parameter Substitution'. Relates the actual parameter(s) to
012 * a formal template parameter as part of a template binding.
013 *
014 * Metafacade interface to be used by AndroMDA cartridges.
015 */
016public interface TemplateArgumentFacade
017{
018    /**
019     * Indicates the metafacade type (used for metafacade mappings).
020     *
021     * @return boolean always <code>true</code>
022     */
023    public boolean isTemplateArgumentFacadeMetaType();
024
025    /**
026     * Provides any required initialization of the metafacade.
027     */
028    void initialize();
029
030    /**
031     * Gets the metafacade that acts as the <code>owner</code> of this metafacade.
032     * (for example: an operation is an owner of its parameters, etc). This is used
033     * by AndroMDA's validation framework to provide more context as to where the
034     * error has occurred.
035     * @return Object the Validation Owner
036     */
037    public Object getValidationOwner();
038
039    /**
040     * Gets the name of the metafacade used within validation messages.  This provides
041     * the full name of the metafacade.
042     * @return String the Validation Name
043     */
044    public String getValidationName();
045
046    /**
047     * Performs validation of any invariants found on this model element
048     * and stores the messages within the <code>validationMessages</code>
049     * collection.
050     *
051     * @param validationMessages the collection of messages to which additional
052     *        validation messages will be added if invariants are broken.
053     */
054    void validateInvariants(Collection<ModelValidationMessage> validationMessages);
055
056    /**
057     * Represents a model element. It may be an Element or NamedElement. A named element is an
058     * element in a
059     * model that may have a name. An element is a constituent of a model. As such, it has the
060     * capability
061     * of owning other elements.
062     * @return ModelElementFacade
063     */
064    public ModelElementFacade getElement();
065}