/** * Copyright 2003-2005 the original author or authors. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.jdon.container; import java.util.List; /** * ContainerWrapper is a main interface of jdon framework * * @author banq */ public interface ContainerWrapper { public String OrignalKey = "OrignalKey"; /** * register a component class * * @param name * component name * @param className * component class */ public void register(String name, Class className); /** * register a component class with constructors of String type * * @param name * component name * @param className * component class * @param constructors * component constructor parameters */ public void register(String name, Class className, String[] constructors); /** * register a component instance * * @param name * component name * @param instance * component instance */ public void register(String name, Object instance); /** * register a component, its class value is its name value * * @param name * the name must be a class string */ public void register(String name); /** * start the container this method will active all components's startup * methods in container, * */ public void start(); /** * stop the container this method will active all components's stop methods * in container. * */ public void stop(); boolean isStart(); void setStart(boolean start); /** * return all instances * * @return all instances collection in container */ public List getAllInstances(); /** * return singleton component instance from container every times it return * same a instance * * @param name * component name * @return component single instance */ public Object lookup(String name); /** * return new component instance from container .every times it return a new * instance when access this method, will return a new component instance it * is difference with lookup method. * * @param name * @return a new component instance */ public Object getComponentNewInstance(String name); /** * return singleton component instance without proxy. * * @param name * @return */ public Object lookupOriginal(String name); /** * return a component class from container * * @param name * @return component Class */ public Class getComponentClass(String name); /** * get all instances of a class type * * @param componentType * @return */ public List getComponentInstancesOfType(Class componentType); /** * return all registered components's class/name in container. * * @return */ RegistryDirectory getRegistryDirectory(); }