⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jmpiprovidermanager.cpp

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// 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// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions://// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF 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.////==============================================================================////%/////////////////////////////////////////////////////////////////////////////#include "JMPIProviderManager.h"#include "JMPIImpl.h"#include <Pegasus/Common/CIMMessage.h>#include <Pegasus/Common/OperationContext.h>#include <Pegasus/Common/Tracer.h>#include <Pegasus/Common/StatisticalData.h>#include <Pegasus/Common/Logger.h>#include <Pegasus/Common/MessageLoader.h> //l10n#include <Pegasus/Common/Constants.h>#include <Pegasus/Common/FileSystem.h>#include <Pegasus/Common/ArrayInternal.h>#include <Pegasus/Config/ConfigManager.h>#include <Pegasus/ProviderManager2/ProviderName.h>#include <Pegasus/ProviderManager2/JMPI/JMPIProvider.h>#include <Pegasus/ProviderManager2/JMPI/JMPIProviderModule.h>PEGASUS_USING_STD;PEGASUS_NAMESPACE_BEGINint JMPIProviderManager::trace=0;#ifdef PEGASUS_DEBUG#define DDD(x) if (JMPIProviderManager::trace) x;#else#define DDD(x)#endif// request->localOnly is replaced with JMPI_LOCALONLY for getInstance () and enumerateInstances ()#define JMPI_LOCALONLY false/* Fix for 4092 */// request->includeQualifiers is replaced with JMPI_INCLUDE_QUALIFIERS for getInstance (),//    setInstance (), enumerateInstances (), associators (), and references ()#define JMPI_INCLUDE_QUALIFIERS false#include "Convert.h"void JMPIProviderManager::debugPrintMethodPointers (JNIEnv *env, jclass jc){   // cd ${PEGAUSE_HOME}/src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/JMPI_TestPropertyTypes   // javap -s -p JMPI_TestPropertyTypes   static const char *methodNames[][3] = {      // CIMProvider      //   cimom-2003-11-24/org/snia/wbem/provider/CIMProvider.java      //   src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMProvider.java      {"snia 2.0","initialize","(Lorg/pegasus/jmpi/CIMOMHandle;)V"},      {"snia 2.0","cleanup","()V"},      // InstanceProvider      //   cimom-2003-11-24/org/snia/wbem/provider/InstanceProvider.java      //   src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMInstanceProvider.java      {"snia 2.0","enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;Z)Ljava/util/Vector;"},      {"pegasus 2.4","enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;"},      /* Begin Fix for 4189 */      {"pegasus 2.5","enumerateInstances","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;ZZ[Ljava/lang/String;)Ljava/util/Vector;"},      /* End Fix for 4189 */      {"snia 2.0","enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"},      {"pegasus 2.4","enumerateInstanceNames","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMObjectPath;"},      {"pegasus 2.5","enumerateInstanceNames","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"},      {"snia 2.0","getInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Z)Lorg/pegasus/jmpi/CIMInstance;"},      {"pegasus 2.4","getInstance","(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)Lorg/pegasus/jmpi/CIMInstance;"},      /* Begin Fix for 4238 */      {"pegasus 2.5","getInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;ZZ[Ljava/lang/String;)Lorg/pegasus/jmpi/CIMInstance;"},      /* End Fix for 4238 */      {"snia 2.0","createInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)Lorg/pegasus/jmpi/CIMObjectPath;"},      {"snia 2.0","setInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)V"},      {"pegasus 2.4","setInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Z[Ljava/lang/String)V"},      {"snia 2.0","deleteInstance","(Lorg/pegasus/jmpi/CIMObjectPath;)V"},      {"snia 2.0","execQuery","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ILorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"},      {"pegasus 2.4","execQuery","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;"},      {"pegasus 2.5","execQuery","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"},      // MethodProvider      //   cimom-2003-11-24/org/snia/wbem/provider/MethodProvider.java      //   src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMMethodProvider.java      {"snia 2.0","invokeMethod","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/util/Vector;Ljava/util/Vector;)Lorg/pegasus/jmpi/CIMValue;"},      {"pegasus 2.4","invokeMethod","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;[Lorg/pegasus/jmpi/CIMArgument;[Lorg/pegasus/jmpi/CIMArgument;)Lorg/pegasus/jmpi/CIMValue;"},      // PropertyProvider      //   cimom-2003-11-24/org/snia/wbem/provider/PropertyProvider.java      //   src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/PropertyProvider.java      {"snia 2.0","getPropertyValue","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;)Lorg/pegasus/jmpi/CIMValue;"},      {"snia 2.0","setPropertyValue","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Lorg/pegasus/jmpi/CIMValue;)V"},      // AssociatorProvider      //   cimom-2003-11-24/org/snia/wbem/provider20/AssociatorProvider.java      //   src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/AssociatorProvider.java      {"snia 2.0","associators","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"},      {"pegasus 2.4","associators","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"},      {"snia 2.0","associatorNames","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"},      {"pegasus 2.4","associatorNames","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"},      {"snia 2.0","references","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"},      {"pegasus 2.4","references","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"},      {"snia 2.0","referenceNames","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;"},      {"pegasus 2.4","referenceNames","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;"},      // CIMProviderRouter      //   cimom-2003-11-24/org/snia/wbem/provider20/CIMProviderRouter.java      // EventProvider      //   cimom-2003-11-24/org/snia/wbem/provider20/EventProvider.java      //   src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/EventProvider.java      {"snia 2.0","activateFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"},      {"snia 2.0","deActivateFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"},      // IndicationHandler      //   cimom-2003-11-24/org/snia/wbem/provider20/IndicationHandler.java      // ProviderAdapter      //   cimom-2003-11-24/org/snia/wbem/provider20/ProviderAdapter.java      // JMPI_TestPropertyTypes      {"JMPI_TestPropertyTypes","findObjectPath","(Lorg/pegasus/jmpi/CIMObjectPath;)I"},      {"JMPI_TestPropertyTypes","testPropertyTypesValue","(Lorg/pegasus/jmpi/CIMInstance;)V"}   };   if (!env)   {      DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugPrintMethodPointers: env is NULL!"<<PEGASUS_STD(endl));      return;   }   if (!jc)   {      DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugPrintMethodPointers: jc is NULL!"<<PEGASUS_STD(endl));      return;   }   for (int i = 0; i < (int)(sizeof (methodNames)/sizeof (methodNames[0])); i++)   {      jmethodID id = env->GetMethodID(jc,methodNames[i][1], methodNames[i][2]);      DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugPrintMethodPointers: "<<methodNames[i][0]<<", "<<methodNames[i][1]<<", id = "<<PEGASUS_STD(hex)<<(long)id<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));      env->ExceptionClear();   }   env->ExceptionClear();}voiddebugIntrospectJavaObject (JNIEnv *env, jobject jInst){   jclass       jInstClass             = env->GetObjectClass(jInst);   jclass       jInstSuperClass        = env->GetSuperclass(jInstClass);   jmethodID    jmidGetDeclaredMethods = env->GetMethodID(jInstClass, "getDeclaredMethods", "()[Ljava/lang/reflect/Method;");   if (!jmidGetDeclaredMethods)   {      env->ExceptionClear();      jmidGetDeclaredMethods = env->GetMethodID(jInstSuperClass, "getDeclaredMethods", "()[Ljava/lang/reflect/Method;");   }   if (jmidGetDeclaredMethods)   {      jobjectArray jarrayDeclaredMethods  = (jobjectArray)env->CallObjectMethod(jInstClass,                                                                                jmidGetDeclaredMethods);      if (jarrayDeclaredMethods)      {         for (int i = 0, iLen = env->GetArrayLength (jarrayDeclaredMethods); i < iLen; i++)         {            JMPIjvm::checkException(env);            jobject jDeclaredMethod      = env->GetObjectArrayElement (jarrayDeclaredMethods, i);            jclass  jDeclaredMethodClass = env->GetObjectClass (jDeclaredMethod);            JMPIjvm::checkException(env);            jmethodID   jmidToString  = env->GetMethodID (jDeclaredMethodClass, "toString", "()Ljava/lang/String;");            jstring     jstringResult = (jstring)env->CallObjectMethod (jDeclaredMethod, jmidToString);            const char *pszResult     = env->GetStringUTFChars(jstringResult, 0);            PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugIntrospectJavaObject: "<<pszResult<<PEGASUS_STD(endl);            env->ReleaseStringUTFChars (jstringResult, pszResult);         }      }   }   env->ExceptionClear();}voiddebugDumpJavaObject (JNIEnv *env, jobject jInst){   jclass      jInstClass      = env->GetObjectClass(jInst);   jclass      jInstSuperClass = env->GetSuperclass(jInstClass);   jmethodID   jmidToString1   = env->GetMethodID(jInstClass,      "toString", "()Ljava/lang/String;");   jmethodID   jmidToString2   = env->GetMethodID(jInstSuperClass, "toString", "()Ljava/lang/String;");   if (!jmidToString1 || !jmidToString2)   {      env->ExceptionClear();      return;   }   jstring     jstringResult1  = (jstring)env->CallObjectMethod(jInstClass,      jmidToString1);   jstring     jstringResult2  = (jstring)env->CallObjectMethod(jInstSuperClass, jmidToString2);   jstring     jstringResult3  = (jstring)env->CallObjectMethod(jInst,           jmidToString1);   const char *pszResult1      = env->GetStringUTFChars(jstringResult1, 0);   const char *pszResult2      = env->GetStringUTFChars(jstringResult2, 0);   const char *pszResult3      = env->GetStringUTFChars(jstringResult3, 0);   jmethodID jmidCInst = env->GetMethodID(env->GetObjectClass(jInst),JMPIjvm::jv.instanceMethodNames[22].methodName, JMPIjvm::jv.instanceMethodNames[22].signature);   PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugIntrospectJavaObject: jInstClass = "<<jInstClass<<", jInstSuperClass = "<<jInstSuperClass<<", jClassShouldBe = "<<JMPIjvm::jv.classRefs[18]<<", jmidCInst = "<<jmidCInst<<PEGASUS_STD(endl);   PEGASUS_STD(cout)<<"pszResult1 = "<<pszResult1<<PEGASUS_STD(endl);   PEGASUS_STD(cout)<<"pszResult2 = "<<pszResult2<<PEGASUS_STD(endl);   PEGASUS_STD(cout)<<"pszResult3 = "<<pszResult3<<PEGASUS_STD(endl);   env->ReleaseStringUTFChars (jstringResult1, pszResult1);   env->ReleaseStringUTFChars (jstringResult2, pszResult2);   env->ReleaseStringUTFChars (jstringResult3, pszResult3);   env->ExceptionClear();}bool JMPIProviderManager::getInterfaceType (ProviderIdContainer pidc,                                            String&             interfaceType,                                            String&             interfaceVersion){///CIMInstance ciProvider       = pidc.getProvider ();   CIMInstance ciProviderModule = pidc.getModule ();   Uint32      idx;   bool        fRet             = true;///PEGASUS_STD(cout)<<"--- JMPIProviderManager::getInterfaceType: ciProvider       = "<<ciProvider.getPath ().toString ()<<PEGASUS_STD(endl);///PEGASUS_STD(cout)<<"--- JMPIProviderManager::getInterfaceType: ciProviderModule = "<<ciProviderModule.getPath ().toString ()<<PEGASUS_STD(endl);   idx = ciProviderModule.findProperty ("InterfaceType");   if (idx != PEG_NOT_FOUND)   {      CIMValue itValue;      itValue = ciProviderModule.getProperty (idx).getValue ();      itValue.get (interfaceType);      DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::getInterfaceType: interfaceType = "<<interfaceType<<PEGASUS_STD(endl));   }   else   {      fRet = false;   }   idx = ciProviderModule.findProperty ("InterfaceVersion");   if (idx != PEG_NOT_FOUND)   {      CIMValue itValue;      itValue = ciProviderModule.getProperty (idx).getValue ();      itValue.get (interfaceVersion);      DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::getInterfaceType: interfaceVersion = "<<interfaceVersion<<PEGASUS_STD(endl));   }   else   {      fRet = false;   }   return fRet;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -