blob: ba318115da9582607ca89eec2d847ed38bd00015 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2010 VMware Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware Inc. - initial contribution
*******************************************************************************/
package org.eclipse.virgo.kernel.module;
/**
* {@link ModuleContext} is the kernel standard interface to application contexts. Its purpose is to isolate the kernel
* and server code from Spring DM and Spring application context related types which vary by Spring DM and Spring
* release and which are multiply loaded.
*
* Eventually, this interface should be able to extend an OSGi standard ModuleContext type. For this reason, this
* interface talks about 'components' rather than 'beans'.
*
*/
public interface ModuleContext {
/**
* Return a user-friendly name for this {@link ModuleContext}.
*
* @return a user-friendly name for this <code>ModuleContext</code>
*/
String getDisplayName();
/**
* Return the names of all the named components in this <code>ModuleContext</code>.
*
* @return an array of component names in this <code>ModuleContext</code>
*/
String[] getComponentNames();
/**
* Return the component instance with the given name.
* @param componentName the name of the component to retrieve
* @return an instance of the component
* @throws NoSuchComponentException if the module does not contain a component with the given name
*/
Component getComponent(String componentName) throws NoSuchComponentException;
/**
* Return the application context underpinning this <code>ModuleContext</code>. <p /> This method must be used with
* extreme caution. Any attempt to cast the return value may result in a class cast exception if the wrong type is
* used.
*
* @return the <code>ApplicationContext</code> underpinning this <code>ModuleContext</code>
*/
Object getApplicationContext();
}