001 /*
002 * Copyright (c) 2009 The JOMC Project
003 * Copyright (c) 2005 Christian Schulte <cs@jomc.org>
004 * All rights reserved.
005 *
006 * Redistribution and use in source and binary forms, with or without
007 * modification, are permitted provided that the following conditions
008 * are met:
009 *
010 * o Redistributions of source code must retain the above copyright
011 * notice, this list of conditions and the following disclaimer.
012 *
013 * o Redistributions in binary form must reproduce the above copyright
014 * notice, this list of conditions and the following disclaimer in
015 * the documentation and/or other materials provided with the
016 * distribution.
017 *
018 * THIS SOFTWARE IS PROVIDED BY THE JOMC PROJECT AND CONTRIBUTORS "AS IS"
019 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
020 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
021 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JOMC PROJECT OR
022 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
023 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
024 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
025 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
026 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
027 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
028 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029 *
030 * $Id: ModelProvider.java 959 2009-11-18 05:34:07Z schulte2005 $
031 *
032 */
033 package org.jomc.model;
034
035 import java.io.IOException;
036
037 /**
038 * Object management and configuration model provider interface.
039 *
040 * @author <a href="mailto:cs@jomc.org">Christian Schulte</a>
041 * @version $Id: ModelProvider.java 959 2009-11-18 05:34:07Z schulte2005 $
042 */
043 public interface ModelProvider
044 {
045
046 /**
047 * Gets the modules of the provider.
048 *
049 * @param classLoader The class loader to use for providing modules; {@code null} to use the platform's bootstrap
050 * class loader.
051 * @param modules The already provided modules or {@code null}.
052 *
053 * @return The modules provided by this provider or {@code null} if this provider does not choose to provide any
054 * modules.
055 *
056 * @throws IOException if providing modules fails.
057 */
058 Modules getModules( ClassLoader classLoader, Modules modules ) throws IOException;
059
060 }