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 }