version 1.27, 2006/11/02 16:58:29
|
version 1.34, 2008/12/16 18:57:00
|
|
|
//%2006//////////////////////////////////////////////////////////////////////// |
//%LICENSE//////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development |
// Licensed to The Open Group (TOG) under one or more contributor license |
// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. |
// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with |
// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.; |
// this work for additional information regarding copyright ownership. |
// IBM Corp.; EMC Corporation, The Open Group. |
// Each contributor licenses this file to you under the OpenPegasus Open |
// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.; |
// Source License; you may not use this file except in compliance with the |
// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. |
// License. |
// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
|
// EMC Corporation; VERITAS Software Corporation; The Open Group. |
|
// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
|
// EMC Corporation; Symantec Corporation; The Open Group. |
|
// | // |
// Permission is hereby granted, free of charge, to any person obtaining a copy |
// Permission is hereby granted, free of charge, to any person obtaining a |
// of this software and associated documentation files (the "Software"), to |
// copy of this software and associated documentation files (the "Software"), |
// deal in the Software without restriction, including without limitation the |
// to deal in the Software without restriction, including without limitation |
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
// the rights to use, copy, modify, merge, publish, distribute, sublicense, |
// sell copies of the Software, and to permit persons to whom the Software is |
// and/or sell copies of the Software, and to permit persons to whom the |
// furnished to do so, subject to the following conditions: |
// Software is furnished to do so, subject to the following conditions: |
// | // |
// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN |
// The above copyright notice and this permission notice shall be included |
// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED |
// in all copies or substantial portions of the Software. |
// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT |
|
// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR |
|
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
|
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
|
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
// | // |
//============================================================================== |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
|
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
|
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY |
|
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
|
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
|
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
// |
|
////////////////////////////////////////////////////////////////////////// |
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
|
|
| |
#ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU | #ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU |
#if defined (__GNUC__) && GCC_VERSION >= 40000 | #if defined (__GNUC__) && GCC_VERSION >= 40000 |
// If gcc is compiled with -fvisibility=hidden then JMPI is broken. This is because |
// If gcc is compiled with -fvisibility=hidden then JMPI is broken. |
// the JNI h file defines JNIEXPORT as empty since the default is visible. |
// This is because the JNI h file defines JNIEXPORT as empty since |
|
// the default is visible. |
#undef JNIEXPORT | #undef JNIEXPORT |
#define JNIEXPORT __attribute__ ((visibility("default"))) | #define JNIEXPORT __attribute__ ((visibility("default"))) |
#endif | #endif |
|
|
#define Catch(jEnv) \ | #define Catch(jEnv) \ |
catch(CIMException & e) { \ | catch(CIMException & e) { \ |
JMPIjvm::cacheIDs(jEnv); \ | JMPIjvm::cacheIDs(jEnv); \ |
jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewISt,(jint)e.getCode(),jEnv->NewStringUTF(e.getMessage().getCString())); \ |
jobject ev=jEnv->NewObject( \ |
|
JMPIjvm::jv.CIMExceptionClassRef, \ |
|
JMPIjvm::jv.CIMExceptionNewISt, \ |
|
(jint)e.getCode(), \ |
|
jEnv->NewStringUTF(e.getMessage().getCString())); \ |
jEnv->Throw((jthrowable)ev); \ | jEnv->Throw((jthrowable)ev); \ |
} \ | } \ |
catch(Exception & e) { \ | catch(Exception & e) { \ |
JMPIjvm::cacheIDs(jEnv);\ | JMPIjvm::cacheIDs(jEnv);\ |
jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewISt,(jint)1,jEnv->NewStringUTF(e.getMessage().getCString())); \ |
jobject ev=jEnv->NewObject( \ |
|
JMPIjvm::jv.CIMExceptionClassRef, \ |
|
JMPIjvm::jv.CIMExceptionNewISt, \ |
|
(jint)1, \ |
|
jEnv->NewStringUTF(e.getMessage().getCString())); \ |
jEnv->Throw((jthrowable)ev); \ | jEnv->Throw((jthrowable)ev); \ |
} \ | } \ |
catch(...) { \ | catch(...) { \ |
JMPIjvm::cacheIDs(jEnv); \ | JMPIjvm::cacheIDs(jEnv); \ |
jobject ev=jEnv->NewObject(JMPIjvm::jv.CIMExceptionClassRef,JMPIjvm::jv.CIMExceptionNewISt,(jint)1,jEnv->NewStringUTF("Exception: Unknown")); \ |
jobject ev=jEnv->NewObject( \ |
|
JMPIjvm::jv.CIMExceptionClassRef, \ |
|
JMPIjvm::jv.CIMExceptionNewISt, \ |
|
(jint)1, \ |
|
jEnv->NewStringUTF("Exception: Unknown")); \ |
jEnv->Throw((jthrowable)ev); \ | jEnv->Throw((jthrowable)ev); \ |
} | } |
| |
|
|
static JNIEnv* attachThread(JvmVector **jvp); | static JNIEnv* attachThread(JvmVector **jvp); |
static void detachThread(); | static void detachThread(); |
static jobject getProvider(JNIEnv *env, const char *cn, jclass *cls) ; | static jobject getProvider(JNIEnv *env, const char *cn, jclass *cls) ; |
static jobject getProvider(JNIEnv *env, String jar, String cln, const char *cn, jclass *cls) ; |
static jobject getProvider( |
|
JNIEnv *env, |
|
String jar, |
|
String cln, |
|
const char *cn, |
|
jclass *cls) ; |
static void checkException(JNIEnv *env); | static void checkException(JNIEnv *env); |
static jstring NewPlatformString(JNIEnv *env,char *s); | static jstring NewPlatformString(JNIEnv *env,char *s); |
static jobjectArray NewPlatformStringArray(JNIEnv *env,char **strv, int strc); |
static jobjectArray NewPlatformStringArray( |
|
JNIEnv *env, |
|
char **strv, |
|
int strc); |
static int cacheIDs(JNIEnv *env); | static int cacheIDs(JNIEnv *env); |
static int destroyJVM(); | static int destroyJVM(); |
| |
|
|
static jclass getGlobalClassRef(JNIEnv *env, const char* name); | static jclass getGlobalClassRef(JNIEnv *env, const char* name); |
static int initJVM(); | static int initJVM(); |
| |
typedef HashTable<String,jclass,EqualFunc<String>,HashFunc<String> > ClassTable; |
typedef HashTable< |
typedef HashTable<String,jobject,EqualFunc<String>,HashFunc<String> > ObjectTable; |
String, |
|
jclass, |
|
EqualFunc<String>, |
|
HashFunc<String> > ClassTable; |
|
typedef HashTable< |
|
String, |
|
jobject, |
|
EqualFunc<String>, |
|
HashFunc<String> > ObjectTable; |
| |
static ClassTable _classTable; | static ClassTable _classTable; |
static ObjectTable _objectTable; | static ObjectTable _objectTable; |
|
|
int port(); | int port(); |
String hostName(); | String hostName(); |
String nameSpace(); | String nameSpace(); |
|
Boolean isHttps (); |
int port_; | int port_; |
String protocol_; | String protocol_; |
String hostName_; | String hostName_; |
String nameSpace_; | String nameSpace_; |
|
Boolean fHttps; |
}; | }; |
| |
class _dataType { | class _dataType { |
|
|
#define CharacterClassRef classRefs[32] | #define CharacterClassRef classRefs[32] |
#define OperationContextClassRef classRefs[33] | #define OperationContextClassRef classRefs[33] |
#define ClassClassRef classRefs[34] | #define ClassClassRef classRefs[34] |
|
#define ByteArrayOutputStreamClassRef classRefs[35] |
|
#define PrintStreamClassRef classRefs[36] |
| |
#define BigIntegerValueOf staticMethodIDs[0] | #define BigIntegerValueOf staticMethodIDs[0] |
#define JarClassLoaderLoad staticMethodIDs[1] | #define JarClassLoaderLoad staticMethodIDs[1] |
|
|
#define ClassGetInterfaces instMethodIDs[50] | #define ClassGetInterfaces instMethodIDs[50] |
#define ClassGetName instMethodIDs[51] | #define ClassGetName instMethodIDs[51] |
#define UnsignedInt64NewStr instMethodIDs[52] | #define UnsignedInt64NewStr instMethodIDs[52] |
|
#define ByteArrayOutputStreamNew instMethodIDs[53] |
|
#define PrintStreamNewOb instMethodIDs[54] |
|
#define ThrowablePrintStackTrace instMethodIDs[55] |
|
#define ByteArrayOutputStreamToString instMethodIDs[56] |
| |
//extern "C" JNIEnv* attachThread(JvmVector**); | //extern "C" JNIEnv* attachThread(JvmVector**); |
//extern "C" void detachThread(); | //extern "C" void detachThread(); |