org.directwebremoting.Container Maven / Gradle / Ivy
package org.directwebremoting;
import java.lang.reflect.InvocationTargetException;
import java.util.Collection;
/**
* A very basic IoC container.
* See ContainerUtil for information on how to setup a {@link Container}
* @author Joe Walker [joe at getahead dot ltd dot uk]
*/
public interface Container
{
/**
* Get the contained instance of a bean/setting of a given name.
* @param id The type to get an instance of
* @return The object of the given type, or null if the object does not exist
*/
Object getBean(String id);
/**
* Get the contained instance of a bean of a given type
* @param ...
* @param type The type to get an instance of
* @return The object of the given type, or null if the object does not exist
*/
T getBean(Class type);
/**
* Get a list of all the available beans.
* Implementation of this method is optional so it is valid for this method
* to return an empty collection, but to return Objects when queried
* directly using {@link #getBean(String)}. This method should only be used
* for debugging purposes.
* @return A collection containing all the available bean names.
*/
Collection getBeanNames();
/**
* Closes down all parts of DWR in a timely way, stops threads,
* and performs tidy-up.
*/
void destroy();
/**
* Sometimes we need to create a bean as a one-off object and have it
* injected with settings by the container.
* This does not make the object part of the container.
* @param ...
* @param type The type to get an instance of
* @return ...
* @throws InstantiationException ...
* @throws IllegalAccessException ...
* @throws NoSuchMethodException ...
* @throws InvocationTargetException ...
*/
T newInstance(Class type) throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException;
/**
* Sometimes we need to take a bean not created by the container, and inject
* it with the data that it would contain if it was created by the
* container.
* This does not make the object part of the container.
* @param object The object to inject.
*/
void initializeBean(Object object);
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy