/** * Copyright (C) 2013 Kametic <epo.jemba@kametic.com> * * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3, 29 June 2007; * or any later version * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.gnu.org/licenses/lgpl-3.0.txt * * 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 org.nuunframework.kernel.context; import java.lang.annotation.Annotation; import java.util.Collection; import java.util.List; import java.util.Map; import org.nuunframework.kernel.commons.specification.Specification; import org.nuunframework.kernel.plugin.Plugin; import com.google.inject.Module; /** * * @author Epo Jemba * */ @SuppressWarnings("rawtypes") public interface InitContext { public abstract Map<Class<?>, Collection<Class<?>>> scannedSubTypesByParentClass(); public abstract Map<Class<?>, Collection<Class<?>>> scannedSubTypesByAncestorClass(); public abstract Map<String, Collection<Class<?>>> scannedSubTypesByParentRegex(); public abstract Map<Class<? extends Annotation>, Collection<Class<?>>> scannedClassesByAnnotationClass(); public abstract Map<String, Collection<Class<?>>> scannedClassesByAnnotationRegex(); public abstract Map<String, Collection<String>> mapPropertiesFilesByPrefix(); public abstract String getKernelParam(String key); public abstract Collection<Class<?>> classesToBind(); public abstract List<Module> moduleResults(); public abstract List<Module> moduleOverridingResults(); public abstract Collection<String> propertiesFiles(); public abstract Map<String, Collection<Class<?>>> scannedTypesByRegex(); public abstract Map<String, Collection<String>> mapResourcesByRegex(); public abstract Map<Specification, Collection<Class<?>>> scannedTypesBySpecification(); /** * Return instances of the Plugin asked by the plugin * * @return the instances of the plugin declared required by the method Plugin.pluginDependenciesRequired() */ public abstract Collection<? extends Plugin> pluginsRequired (); /** * Returns instances of the plugins that become dependent on this plugin. * * @return */ public abstract Collection<? extends Plugin> dependentPlugins (); /** * Round Number of the initialization. * * @return */ public abstract int roundNumber(); }