diff options
Diffstat (limited to 'external/ikvm/runtime/openjdk/misc.cs')
-rw-r--r-- | external/ikvm/runtime/openjdk/misc.cs | 585 |
1 files changed, 585 insertions, 0 deletions
diff --git a/external/ikvm/runtime/openjdk/misc.cs b/external/ikvm/runtime/openjdk/misc.cs new file mode 100644 index 0000000000..85529d9578 --- /dev/null +++ b/external/ikvm/runtime/openjdk/misc.cs @@ -0,0 +1,585 @@ +/* + Copyright (C) 2007-2013 Jeroen Frijters + Copyright (C) 2009 Volker Berlin (i-net software) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jeroen Frijters + jeroen@frijters.net + +*/ +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Security; +using System.Security.Cryptography; +using System.Security.Principal; +using IKVM.Internal; + +static class Java_ikvm_runtime_Startup +{ + // this method is called from ikvm.runtime.Startup.exitMainThread() and from JNI's DetachCurrentThread + public static void jniDetach() + { +#if !FIRST_PASS + java.lang.Thread.currentThread().die(); +#endif + } + + public static void addBootClassPathAssembly(Assembly asm) + { + ClassLoaderWrapper.GetBootstrapClassLoader().AddDelegate(AssemblyClassLoader.FromAssembly(asm)); + } +} + +static class Java_java_lang_ref_Reference +{ + public static bool noclassgc() + { +#if CLASSGC + return !JVM.classUnloading; +#else + return true; +#endif + } +} + +static class Java_java_util_logging_FileHandler +{ + public static bool isSetUID() + { + // TODO + return false; + } +} + +static class Java_java_util_jar_JarFile +{ + public static string[] getMetaInfEntryNames(object thisJarFile) + { +#if FIRST_PASS + return null; +#else + java.util.zip.ZipFile zf = (java.util.zip.ZipFile)thisJarFile; + java.util.Enumeration entries = zf.entries(); + List<string> list = null; + while (entries.hasMoreElements()) + { + java.util.zip.ZipEntry entry = (java.util.zip.ZipEntry)entries.nextElement(); + if (entry.getName().StartsWith("META-INF/", StringComparison.OrdinalIgnoreCase)) + { + if (list == null) + { + list = new List<string>(); + } + list.Add(entry.getName()); + } + } + return list == null ? null : list.ToArray(); +#endif + } +} + +static class Java_java_util_zip_ClassStubZipEntry +{ + public static void expandIkvmClasses(object _zipFile, object _entries) + { +#if !FIRST_PASS + java.util.zip.ZipFile zipFile = (java.util.zip.ZipFile)_zipFile; + java.util.LinkedHashMap entries = (java.util.LinkedHashMap)_entries; + + try + { + string path = zipFile.getName(); + java.util.zip.ZipEntry entry = (java.util.zip.ZipEntry)entries.get(JVM.JarClassList); + if (entry != null && VirtualFileSystem.IsVirtualFS(path)) + { + using (VirtualFileSystem.ZipEntryStream stream = new VirtualFileSystem.ZipEntryStream(zipFile, entry)) + { + entries.remove(entry.name); + BinaryReader br = new BinaryReader(stream); + int count = br.ReadInt32(); + for (int i = 0; i < count; i++) + { + java.util.zip.ClassStubZipEntry classEntry = new java.util.zip.ClassStubZipEntry(path, br.ReadString()); + classEntry.setMethod(java.util.zip.ClassStubZipEntry.STORED); + classEntry.setTime(entry.getTime()); + entries.put(classEntry.name, classEntry); + } + } + } + } + catch (java.io.IOException) + { + } + catch (IOException) + { + } +#endif + } +} + +static class Java_sun_awt_image_ByteComponentRaster +{ + public static void initIDs() + { + } +} + +static class Java_sun_awt_image_BytePackedRaster +{ + public static void initIDs() + { + } +} + +static class Java_sun_awt_image_IntegerComponentRaster +{ + public static void initIDs() + { + } +} + +static class Java_sun_awt_image_ShortComponentRaster +{ + public static void initIDs() + { + } +} + +static class Java_sun_awt_FontDescriptor +{ + public static void initIDs() + { + } +} + +static class Java_sun_invoke_anon_AnonymousClassLoader +{ + public static java.lang.Class loadClassInternal(java.lang.Class hostClass, byte[] classFile, object[] patchArray) + { + throw new NotImplementedException(); + } +} + +static class Java_sun_net_spi_DefaultProxySelector +{ + public static bool init() + { + return true; + } + + public static object getSystemProxy(object thisDefaultProxySelector, string protocol, string host) + { + // TODO on Whidbey we might be able to use System.Net.Configuration.DefaultProxySection.Proxy + return null; + } +} + +static class Java_sun_nio_fs_NetPath +{ + public static string toRealPathImpl(string path) + { +#if FIRST_PASS + return null; +#else + path = java.io.FileSystem.getFileSystem().canonicalize(path); + if (VirtualFileSystem.IsVirtualFS(path)) + { + if (VirtualFileSystem.CheckAccess(path, Java_java_io_Win32FileSystem.ACCESS_READ)) + { + return path; + } + throw new java.nio.file.NoSuchFileException(path); + } + try + { + File.GetAttributes(path); + return path; + } + catch (FileNotFoundException) + { + throw new java.nio.file.NoSuchFileException(path); + } + catch (DirectoryNotFoundException) + { + throw new java.nio.file.NoSuchFileException(path); + } + catch (UnauthorizedAccessException) + { + throw new java.nio.file.AccessDeniedException(path); + } + catch (SecurityException) + { + throw new java.nio.file.AccessDeniedException(path); + } + catch (ArgumentException x) + { + throw new java.nio.file.FileSystemException(path, null, x.Message); + } + catch (NotSupportedException x) + { + throw new java.nio.file.FileSystemException(path, null, x.Message); + } + catch (IOException x) + { + throw new java.nio.file.FileSystemException(path, null, x.Message); + } +#endif + } +} + +static class Java_sun_rmi_server_MarshalInputStream +{ + public static object latestUserDefinedLoader() + { + return Java_java_io_ObjectInputStream.latestUserDefinedLoader(); + } +} + +static class Java_sun_security_provider_NativeSeedGenerator +{ + public static bool nativeGenerateSeed(byte[] result) + { + try + { + RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider(); + csp.GetBytes(result); + return true; + } + catch (CryptographicException) + { + return false; + } + } +} + +static class Java_com_sun_java_util_jar_pack_NativeUnpack +{ + public static void initIDs() + { + } + + public static long start(object thisNativeUnpack, object buf, long offset) + { + throw new NotImplementedException(); + } + + public static bool getNextFile(object thisNativeUnpack, object[] parts) + { + throw new NotImplementedException(); + } + + public static object getUnusedInput(object thisNativeUnpack) + { + throw new NotImplementedException(); + } + + public static long finish(object thisNativeUnpack) + { + throw new NotImplementedException(); + } + + public static bool setOption(object thisNativeUnpack, string opt, string value) + { + throw new NotImplementedException(); + } + + public static string getOption(object thisNativeUnpack, string opt) + { + throw new NotImplementedException(); + } +} + +static class Java_com_sun_security_auth_module_NTSystem +{ + public static void getCurrent(object thisObj, bool debug) + { + WindowsIdentity id = WindowsIdentity.GetCurrent(); + string[] name = id.Name.Split('\\'); + SetField(thisObj, "userName", name[1]); + SetField(thisObj, "domain", name[0]); + SetField(thisObj, "domainSID", id.User.AccountDomainSid.Value); + SetField(thisObj, "userSID", id.User.Value); + string[] groups = new string[id.Groups.Count]; + for (int i = 0; i < groups.Length; i++) + { + groups[i] = id.Groups[i].Value; + } + SetField(thisObj, "groupIDs", groups); + // HACK it turns out that Groups[0] is the primary group, but AFAIK this is not documented anywhere + SetField(thisObj, "primaryGroupID", groups[0]); + } + + private static void SetField(object thisObj, string field, object value) + { + thisObj.GetType().GetField(field, BindingFlags.NonPublic | BindingFlags.Instance).SetValue(thisObj, value); + } + + public static long getImpersonationToken0(object thisObj) + { + return WindowsIdentity.GetCurrent().Token.ToInt64(); + } +} + +static class Java_com_sun_security_auth_module_SolarisSystem +{ + public static void getSolarisInfo(object thisObj) + { + throw new NotImplementedException(); + } +} + +static class Java_com_sun_security_auth_module_UnixSystem +{ + public static void getUnixInfo(object thisObj) + { + throw new NotImplementedException(); + } +} + +static class Java_com_sun_media_sound_JDK13Services +{ + public static string getDefaultProviderClassName(object deviceClass) + { + return null; + } + + public static string getDefaultInstanceName(object deviceClass) + { + return null; + } + + public static object getProviders(object providerClass) + { +#if FIRST_PASS + return null; +#else + return new java.util.ArrayList(); +#endif + } +} + +static class Java_java_awt_AWTEvent +{ + public static void initIDs() { } + public static void nativeSetSource(object thisObj, object peer) { } +} + +static class Java_java_awt_Button +{ + public static void initIDs() { } +} + +static class Java_java_awt_Checkbox +{ + public static void initIDs() { } +} + +static class Java_java_awt_CheckboxMenuItem +{ + public static void initIDs() { } +} + +static class Java_java_awt_Color +{ + public static void initIDs() { } +} + +static class Java_java_awt_Component +{ + public static void initIDs() { } +} + +static class Java_java_awt_Container +{ + public static void initIDs() { } +} + +static class Java_java_awt_Cursor +{ + public static void initIDs() { } + public static void finalizeImpl(Int64 pData) { } +} + +static class Java_java_awt_Dialog +{ + public static void initIDs() { } +} + +static class Java_java_awt_Dimension +{ + public static void initIDs() { } +} + +static class Java_java_awt_Event +{ + public static void initIDs() { } +} + +static class Java_java_awt_FileDialog +{ + public static void initIDs() { } +} + +static class Java_java_awt_Frame +{ + public static void initIDs() { } +} + +static class Java_java_awt_FontMetrics +{ + public static void initIDs() { } +} + +static class Java_java_awt_Insets +{ + public static void initIDs() { } +} + +static class Java_java_awt_KeyboardFocusManager +{ + public static void initIDs() { } +} + +static class Java_java_awt_Label +{ + public static void initIDs() { } +} + +static class Java_java_awt_Menu +{ + public static void initIDs() { } +} + +static class Java_java_awt_MenuBar +{ + public static void initIDs() { } +} + +static class Java_java_awt_MenuComponent +{ + public static void initIDs() { } +} + +static class Java_java_awt_MenuItem +{ + public static void initIDs() { } +} + +static class Java_java_awt_Rectangle +{ + public static void initIDs() { } +} + +static class Java_java_awt_Scrollbar +{ + public static void initIDs() { } +} + +static class Java_java_awt_ScrollPane +{ + public static void initIDs() { } +} + +static class Java_java_awt_ScrollPaneAdjustable +{ + public static void initIDs() { } +} + +static class Java_java_awt_SplashScreen +{ + public static void _update(long splashPtr, int[] data, int x, int y, int width, int height, int scanlineStride) { } + public static bool _isVisible(long splashPtr) { return false; } + public static object _getBounds(long splashPtr) { return null; } + public static long _getInstance() { return 0; } + public static void _close(long splashPtr) { } + public static String _getImageFileName(long splashPtr) { return null; } + public static String _getImageJarName(long splashPtr) { return null; } + public static bool _setImageData(long splashPtr, byte[] data) { return false; } +} + +static class Java_java_awt_TextArea +{ + public static void initIDs() { } +} + +static class Java_java_awt_TextField +{ + public static void initIDs() { } +} + +static class Java_java_awt_Toolkit +{ + public static void initIDs() { } +} + +static class Java_java_awt_TrayIcon +{ + public static void initIDs() { } +} + +static class Java_java_awt_Window +{ + public static void initIDs() { } +} + +static class Java_java_awt_event_InputEvent +{ + public static void initIDs() { } +} + +static class Java_java_awt_event_MouseEvent +{ + public static void initIDs() { } +} + +static class Java_java_awt_event_KeyEvent +{ + public static void initIDs() { } +} + +static class Java_java_awt_image_ColorModel +{ + public static void initIDs() { } +} + +static class Java_java_awt_image_ComponentSampleModel +{ + public static void initIDs() { } +} + +static class Java_java_awt_image_Kernel +{ + public static void initIDs() { } +} + +static class Java_java_awt_image_Raster +{ + public static void initIDs() { } +} + +static class Java_java_awt_image_SinglePixelPackedSampleModel +{ + public static void initIDs() { } +} + +static class Java_java_awt_image_SampleModel +{ + public static void initIDs() { } +} |