1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_jvmfwk.hxx" 26 27 #include "osl/thread.h" 28 #include "sunjre.hxx" 29 #include "sunversion.hxx" 30 #include "diagnostics.h" 31 32 using namespace std; 33 34 #define OUSTR(x) ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(x) ) 35 namespace jfw_plugin 36 { 37 38 rtl::Reference<VendorBase> SunInfo::createInstance() 39 { 40 return new SunInfo; 41 } 42 43 char const* const* SunInfo::getJavaExePaths(int * size) 44 { 45 static char const * ar[] = { 46 #if defined(WNT) || defined(OS2) 47 "java.exe", 48 "bin/java.exe", 49 "jre/bin/java.exe" 50 #elif UNX 51 "java", 52 "bin/java", 53 "jre/bin/java" 54 #endif 55 }; 56 *size = sizeof (ar) / sizeof (char*); 57 return ar; 58 } 59 60 char const* const* SunInfo::getRuntimePaths(int * size) 61 { 62 static char const* ar[]= { 63 #if defined(WNT) 64 "/bin/client/jvm.dll", 65 "/bin/hotspot/jvm.dll", 66 "/bin/classic/jvm.dll", 67 "/bin/jrockit/jvm.dll" 68 #elif defined(OS2) 69 "/bin/classic/jvm.dll", 70 "/bin/client/jvm.dll", 71 // TODO add jrockit here 72 #elif defined(MACOSX) 73 "/lib/server/libjvm.dylib" 74 #elif defined(UNX) 75 "/lib/" JFW_PLUGIN_ARCH "/client/libjvm.so", 76 "/lib/" JFW_PLUGIN_ARCH "/server/libjvm.so", 77 "/lib/" JFW_PLUGIN_ARCH "/classic/libjvm.so", 78 "/lib/" JFW_PLUGIN_ARCH "/jrockit/libjvm.so" 79 #endif 80 }; 81 *size = sizeof(ar) / sizeof (char*); 82 return ar; 83 } 84 85 char const* const* SunInfo::getLibraryPaths(int* size) 86 { 87 #ifdef UNX 88 static char const * ar[] = { 89 90 "/lib/" JFW_PLUGIN_ARCH "/client", 91 "/lib/" JFW_PLUGIN_ARCH "/native_threads", 92 "/lib/" JFW_PLUGIN_ARCH 93 94 }; 95 *size = sizeof(ar) / sizeof (char*); 96 return ar; 97 #else 98 size = 0; 99 return NULL; 100 #endif 101 } 102 103 int SunInfo::compareVersions(const rtl::OUString& sSecond) const 104 { 105 rtl::OUString sFirst = getVersion(); 106 107 SunVersion version1(sFirst); 108 JFW_ENSURE(version1, OUSTR("[Java framework] sunjavaplugin" SAL_DLLEXTENSION 109 " does not know the version: ") 110 + sFirst + OUSTR(" as valid for a SUN/Oracle JRE.")); 111 SunVersion version2(sSecond); 112 if ( ! version2) 113 throw MalformedVersionException(); 114 115 if(version1 == version2) 116 return 0; 117 if(version1 > version2) 118 return 1; 119 else 120 return -1; 121 } 122 123 124 } 125