001    /*
002     *  jDTAUS - DTAUS fileformat.
003     *  Copyright (c) 2005 Christian Schulte <cs@schulte.it>
004     *
005     *  This library is free software; you can redistribute it and/or
006     *  modify it under the terms of the GNU Lesser General Public
007     *  License as published by the Free Software Foundation; either
008     *  version 2.1 of the License, or any later version.
009     *
010     *  This library is distributed in the hope that it will be useful,
011     *  but WITHOUT ANY WARRANTY; without even the implied warranty of
012     *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
013     *  Lesser General Public License for more details.
014     *
015     *  You should have received a copy of the GNU Lesser General Public
016     *  License along with this library; if not, write to the Free Software
017     *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
018     */
019    package org.jdtaus.core.container;
020    
021    /**
022     * Container model.
023     * <p>The container model's base entity is a module defining specifications
024     * and implementations. Specifications define a public API. Implementations
025     * implement specifications and are expected to change independently of the
026     * specifications they implement. Implementations implementing the same
027     * specification can be exchanged during application assembly. Implementations
028     * may define configuration properties and dependencies to other implementations.
029     * When defining dependencies, properties defined for the implementation of the
030     * dependency may be overwritten by properties defined for the dependency.</p>
031     *
032     * @author <a href="mailto:cs@schulte.it">Christian Schulte</a>
033     * @version $Id: Model.java 1914 2007-03-01 02:20:44Z schulte2005 $
034     *
035     * @see ModelFactory
036     */
037    public interface Model
038    {
039    
040        /**
041         * Gets the modules of the model.
042         *
043         * @return the modules of the model.
044         *
045         * @throws ModelError for unrecoverable model errors.
046         */
047        Modules getModules();
048    
049    }