package AIClientFacade.Interface;
import AIClientFacade.Implementation.AIClientFacade;
import AIRunner.Implementation.AIRunnerComponent;
import AIRunner.Interface.IAIRunner;
import AgentProvider.Implementation.AgentProviderComponent;
import AgentSystemManagement.Interface.IAgentSystemManagement;
import AgentSystemManagement.Implementation.AgentSystemManagementComponent;
import NetworkAdapter.Implementation.ClientNetworkAdapterComponent;
import NetworkAdapter.Interface.IClientNetworkAdapter;
import PluginLoader.Implementation.AgentSystemPluginLoaderComponent;
import PluginLoader.Interface.IAgentSystemPluginLoader;
import org.picocontainer.DefaultPicoContainer;
import org.picocontainer.MutablePicoContainer;
import AgentProvider.Interface.IAgentProvider;
import static org.picocontainer.Characteristics.CACHE;
public class AIClientApplicationCoreFactory {
public static IAIClientFacade getProductionApplicationCore(){
MutablePicoContainer container = new DefaultPicoContainer();
container.addComponent(container);
container.as(CACHE).addComponent(IAgentProvider.class, AgentProviderComponent.class);
container.as(CACHE).addComponent(IAgentSystemManagement.class, AgentSystemManagementComponent.class);
container.as(CACHE).addComponent(IClientNetworkAdapter.class, ClientNetworkAdapterComponent.class);
container.as(CACHE).addComponent(IAIRunner.class, AIRunnerComponent.class);
container.as(CACHE).addComponent(IAIClientFacade.class, AIClientFacade.class);
container.as(CACHE).addComponent(IAgentSystemPluginLoader.class, AgentSystemPluginLoaderComponent.class);
IAIClientFacade facade = container.getComponent(IAIClientFacade.class);
return facade;
}
}