package sharpen.xobotos; import sharpen.xobotos.config.ConfigFile; public final class XobotConfiguration extends StandardConfiguration { private final ConfigFile _configFile; public ConfigFile getConfig() { return _configFile; } public XobotConfiguration(ConfigFile configFile) { this(configFile, ConfigFlags.DEFAULT); } private XobotConfiguration(ConfigFile configFile, ConfigFlags flags) { super(flags); this._configFile = configFile; addAndroidMappings(); setCreateProblemMarkers(true); setIgnoreErrors(true); for (final NameMapping mapping : _configFile.getNamespaceMappings()) { mapNamespace(mapping.from, mapping.to); } } public XobotConfiguration clone(ConfigFlags flags) { return new XobotConfiguration(_configFile, flags); } @Override protected String reflectionRuntimeMethod(String methodName) { return "XobotOS.Runtime.Reflection." + methodName; } @Override protected String miscRuntimeMethod(String methodName) { return "XobotOS.Runtime.Util." + methodName; } private void addAndroidMappings() { mapType("android.net.Uri", "System.Uri"); mapType("android.net.Uri.Builder", "System.UriBuilder"); mapMethod("android.net.Uri.withAppendedPath", sharpenUtilMethod("AppendUri")); mapMethod("android.net.Uri.parse", sharpenUtilMethod("ParseUri")); mapMethod("android.net.Uri.encode", sharpenUtilMethod("EncodeUri")); mapMethod("android.net.Uri.toSafeString", sharpenUtilMethod("ToSafeString")); mapProperty("android.net.Uri.getScheme", "Scheme"); mapMethod("libcore.util.SneakyThrow.sneakyThrow", sharpenUtilMethod("Throw")); mapMethod("com.android.internal.os.RuntimeInit.wtf", miscRuntimeMethod("FatalError")); } }