/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.gosu.init;
import gw.internal.gosu.parser.ExecutionEnvironment;
import gw.internal.gosu.parser.TypeLoaderAccess;
import gw.lang.init.GosuPathEntry;
import gw.lang.reflect.module.IExecutionEnvironment;
import gw.lang.reflect.module.IModule;
import java.util.List;
public class InternalGosuInit {
// single module (i.e. runtime)
public static void initializeRuntime( IExecutionEnvironment execEnv, List<? extends GosuPathEntry> pathEntries ) {
((ExecutionEnvironment)execEnv).initializeDefaultSingleModule(pathEntries);
}
public static void reinitializeRuntime( IExecutionEnvironment execEnv, List<? extends GosuPathEntry> pathEntries ) {
((ExecutionEnvironment)execEnv).initializeDefaultSingleModule( pathEntries );
TypeLoaderAccess.instance().incrementChecksums();
}
public static void uninitializeRuntime( IExecutionEnvironment execEnv ) {
((ExecutionEnvironment)execEnv).uninitializeDefaultSingleModule();
}
// multiple modules
public static void initializeMultipleModules( IExecutionEnvironment execEnv, List<? extends IModule> modules ) {
((ExecutionEnvironment)execEnv).initializeMultipleModules( modules );
}
public static void uninitializeMultipleModules( IExecutionEnvironment execEnv ) {
if (execEnv.isSingleModuleMode()) {
throw new IllegalStateException( "The typestem is not in multi-module mode." );
}
((ExecutionEnvironment)execEnv).uninitializeMultipleModules();
}
}