1 karl 1.18 //%2005////////////////////////////////////////////////////////////////////////
|
2 schuur 1.1 //
|
3 karl 1.17 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
4 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
5 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
|
6 schuur 1.1 // IBM Corp.; EMC Corporation, The Open Group.
|
7 karl 1.17 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
8 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
|
9 karl 1.18 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10 // EMC Corporation; VERITAS Software Corporation; The Open Group.
|
11 schuur 1.1 //
12 // Permission is hereby granted, free of charge, to any person obtaining a copy
13 // of this software and associated documentation files (the "Software"), to
14 // deal in the Software without restriction, including without limitation the
15 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16 // sell copies of the Software, and to permit persons to whom the Software is
17 // furnished to do so, subject to the following conditions:
|
18 mark.hamzy 1.23 //
|
19 schuur 1.1 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
20 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
21 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
22 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
23 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
24 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
25 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28 //==============================================================================
29 //
|
30 mark.hamzy 1.23 // Author: Adrian Schuur, schuur@de.ibm.com
|
31 schuur 1.1 //
|
32 se.gupta 1.9 // Modified By: Seema Gupta (gseema@in.ibm.com) for PEP135
|
33 joyce.j 1.19 // Josephine Eskaline Joyce, IBM (jojustin@in.ibm.com) for PEP#101
|
34 schuur 1.1 //
35 //%/////////////////////////////////////////////////////////////////////////////
36
37 #include "JMPIProviderManager.h"
38
39 #include "JMPIImpl.h"
40
41 #include <Pegasus/Common/CIMMessage.h>
42 #include <Pegasus/Common/OperationContext.h>
43 #include <Pegasus/Common/Tracer.h>
44 #include <Pegasus/Common/StatisticalData.h>
45 #include <Pegasus/Common/Logger.h>
46 #include <Pegasus/Common/MessageLoader.h> //l10n
|
47 kumpf 1.10 #include <Pegasus/Common/Constants.h>
|
48 schuur 1.1
49 #include <Pegasus/Config/ConfigManager.h>
50
51 #include <Pegasus/ProviderManager2/ProviderName.h>
52 #include <Pegasus/ProviderManager2/JMPI/JMPIProvider.h>
|
53 konrad.r 1.22 #include <Pegasus/ProviderManager2/JMPI/JMPIProviderModule.h>
|
54 schuur 1.1 #include <Pegasus/ProviderManager2/ProviderManagerService.h>
55
|
56 schuur 1.12 #include <Pegasus/ProviderManager2/CMPI/CMPI_SelectExp.h>
57
|
58 schuur 1.1
59 PEGASUS_USING_STD;
60 PEGASUS_NAMESPACE_BEGIN
61
|
62 mark.hamzy 1.23 int JMPIProviderManager::trace=0;
|
63 mark.hamzy 1.24
64 #ifdef PEGASUS_DEBUG
|
65 mark.hamzy 1.23 #define DDD(x) if (JMPIProviderManager::trace) x;
|
66 mark.hamzy 1.24 #else
67 #define DDD(x)
68 #endif
|
69 mark.hamzy 1.30 #define JMPI_LOCALONLY false
70 #define JMPI_DEEPINHERITANCE true
|
71 mark.hamzy 1.32 /* Fix for 4092 */
72 #define JMPI_INCLUDE_QUALIFIERS false
|
73 mark.hamzy 1.23
74 #include "Convert.h"
|
75 schuur 1.1
|
76 mark.hamzy 1.23 void JMPIProviderManager::debugPrintMethodPointers (JNIEnv *env, jclass jc)
77 {
78 // cd ${PEGAUSE_HOME}/src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/tests/JMPI_TestPropertyTypes
79 // javap -s -p JMPI_TestPropertyTypes
80 static const char *methodNames[][2] = {
|
81 mark.hamzy 1.24 // CIMProvider
82 // cimom-2003-11-24/org/snia/wbem/provider/CIMProvider.java
83 // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMProvider.java
84 {"initialize","(Lorg/pegasus/jmpi/CIMOMHandle;)V"},
|
85 mark.hamzy 1.23 {"cleanup","()V"},
|
86 mark.hamzy 1.24 // InstanceProvider
87 // cimom-2003-11-24/org/snia/wbem/provider/InstanceProvider.java
88 // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMInstanceProvider.java
89 {"enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"},
90 {"enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;Z)Ljava/util/Vector;"},
|
91 mark.hamzy 1.33 /* Fix for 4189 */
92 {"enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;ZZZ[Ljava/lang/String;)Ljava/util/Vector;"},
93 {"enumInstances","(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;Z)Ljava/util/Vector;"},
94 /* Fix for 4189 */
|
95 mark.hamzy 1.24 {"getInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Z)Lorg/pegasus/jmpi/CIMInstance;"},
|
96 mark.hamzy 1.23 {"createInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)Lorg/pegasus/jmpi/CIMObjectPath;"},
97 {"setInstance","(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)V"},
98 {"deleteInstance","(Lorg/pegasus/jmpi/CIMObjectPath;)V"},
99 {"execQuery","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ILorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;"},
|
100 mark.hamzy 1.24 // MethodProvider
101 // cimom-2003-11-24/org/snia/wbem/provider/MethodProvider.java
102 // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMMethodProvider.java
|
103 mark.hamzy 1.23 {"invokeMethod","(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/util/Vector;Ljava/util/Vector;)Lorg/pegasus/jmpi/CIMValue;"},
|
104 mark.hamzy 1.24 // PropertyProvider
105 // cimom-2003-11-24/org/snia/wbem/provider/PropertyProvider.java
106 // AssociatorProvider
107 // cimom-2003-11-24/org/snia/wbem/provider20/AssociatorProvider.java
108 // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/CIMAssociationProvider.java
109 // CIMProviderRouter
110 // cimom-2003-11-24/org/snia/wbem/provider20/CIMProviderRouter.java
111 // EventProvider
112 // cimom-2003-11-24/org/snia/wbem/provider20/EventProvider.java
113 // src/Pegasus/ProviderManager2/JMPI/org/pegasus/jmpi/EventProvider.java
|
114 mark.hamzy 1.23 {"authorizeFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)V"},
115 {"mustPoll","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;)Z"},
116 {"activateFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"},
|
117 mark.hamzy 1.24 {"deActivateFilter","(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V"},
118 // IndicationHandler
119 // cimom-2003-11-24/org/snia/wbem/provider20/IndicationHandler.java
120 // ProviderAdapter
121 // cimom-2003-11-24/org/snia/wbem/provider20/ProviderAdapter.java
122 // JMPI_TestPropertyTypes
123 {"findObjectPath","(Lorg/pegasus/jmpi/CIMObjectPath;)I"},
124 {"testPropertyTypesValue","(Lorg/pegasus/jmpi/CIMInstance;)V"}
|
125 mark.hamzy 1.23 };
126
127 if (!env)
128 {
129 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugPrintMethodPointers: env is NULL!"<<PEGASUS_STD(endl));
130 return;
131 }
132 if (!jc)
133 {
134 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugPrintMethodPointers: jc is NULL!"<<PEGASUS_STD(endl));
135 return;
136 }
137
138 for (int i = 0; i < (int)(sizeof (methodNames)/sizeof (methodNames[0])); i++)
139 {
140 jmethodID id = env->GetMethodID(jc,methodNames[i][0], methodNames[i][1]);
141 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugPrintMethodPointers: "<<methodNames[i][0]<<", id = "<<PEGASUS_STD(hex)<<(int)id<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
142 env->ExceptionClear();
143 }
|
144 mark.hamzy 1.29
145 env->ExceptionClear();
146 }
147
148 void
149 debugIntrospectJavaObject (JNIEnv *env, jobject jInst)
150 {
151 jclass jInstClass = env->GetObjectClass(jInst);
152 jclass jInstSuperClass = env->GetSuperclass(jInstClass);
153 jmethodID jmidGetDeclaredMethods = env->GetMethodID(jInstClass, "getDeclaredMethods", "()[Ljava/lang/reflect/Method;");
154
155 if (!jmidGetDeclaredMethods)
156 {
157 env->ExceptionClear();
158 jmidGetDeclaredMethods = env->GetMethodID(jInstSuperClass, "getDeclaredMethods", "()[Ljava/lang/reflect/Method;");
159 }
160
161 if (jmidGetDeclaredMethods)
162 {
163 jobjectArray jarrayDeclaredMethods = (jobjectArray)env->CallObjectMethod(jInstClass,
164 jmidGetDeclaredMethods);
165 mark.hamzy 1.29
166 if (jarrayDeclaredMethods)
167 {
168 for (int i = 0, iLen = env->GetArrayLength (jarrayDeclaredMethods); i < iLen; i++)
169 {
170 JMPIjvm::checkException(env);
171
172 jobject jDeclaredMethod = env->GetObjectArrayElement (jarrayDeclaredMethods, i);
173 jclass jDeclaredMethodClass = env->GetObjectClass (jDeclaredMethod);
174
175 JMPIjvm::checkException(env);
176
177 jmethodID jmidToString = env->GetMethodID (jDeclaredMethodClass, "toString", "()Ljava/lang/String;");
178 jstring jstringResult = (jstring)env->CallObjectMethod (jDeclaredMethod, jmidToString);
179 const char *pszResult = env->GetStringUTFChars(jstringResult, 0);
180
181 PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugIntrospectJavaObject: "<<pszResult<<PEGASUS_STD(endl);
182
183 env->ReleaseStringUTFChars (jstringResult, pszResult);
184 }
185 }
186 mark.hamzy 1.29 }
187
188
189 env->ExceptionClear();
190 }
191
192 void
193 debugDumpJavaObject (JNIEnv *env, jobject jInst)
194 {
195 jclass jInstClass = env->GetObjectClass(jInst);
196 jclass jInstSuperClass = env->GetSuperclass(jInstClass);
197 jmethodID jmidToString1 = env->GetMethodID(jInstClass, "toString", "()Ljava/lang/String;");
198 jmethodID jmidToString2 = env->GetMethodID(jInstSuperClass, "toString", "()Ljava/lang/String;");
199 if (!jmidToString1 || !jmidToString2)
200 {
201 env->ExceptionClear();
202 return;
203 }
204 jstring jstringResult1 = (jstring)env->CallObjectMethod(jInstClass, jmidToString1);
205 jstring jstringResult2 = (jstring)env->CallObjectMethod(jInstSuperClass, jmidToString2);
206 jstring jstringResult3 = (jstring)env->CallObjectMethod(jInst, jmidToString1);
207 mark.hamzy 1.29 const char *pszResult1 = env->GetStringUTFChars(jstringResult1, 0);
208 const char *pszResult2 = env->GetStringUTFChars(jstringResult2, 0);
209 const char *pszResult3 = env->GetStringUTFChars(jstringResult3, 0);
210
211 jmethodID jmidCInst = env->GetMethodID(env->GetObjectClass(jInst),JMPIjvm::jv.instanceMethodNames[22].methodName, JMPIjvm::jv.instanceMethodNames[22].signature);
212
213 PEGASUS_STD(cout)<<"--- JMPIProviderManager::debugIntrospectJavaObject: jInstClass = "<<jInstClass<<", jInstSuperClass = "<<jInstSuperClass<<", jClassShouldBe = "<<JMPIjvm::jv.classRefs[18]<<", jmidCInst = "<<jmidCInst<<PEGASUS_STD(endl);
214 PEGASUS_STD(cout)<<"pszResult1 = "<<pszResult1<<PEGASUS_STD(endl);
215 PEGASUS_STD(cout)<<"pszResult2 = "<<pszResult2<<PEGASUS_STD(endl);
216 PEGASUS_STD(cout)<<"pszResult3 = "<<pszResult3<<PEGASUS_STD(endl);
217
218 env->ReleaseStringUTFChars (jstringResult1, pszResult1);
219 env->ReleaseStringUTFChars (jstringResult2, pszResult2);
220 env->ReleaseStringUTFChars (jstringResult3, pszResult3);
221
222 env->ExceptionClear();
|
223 mark.hamzy 1.23 }
|
224 schuur 1.1
225 JMPIProviderManager::IndProvTab JMPIProviderManager::provTab;
226 JMPIProviderManager::IndSelectTab JMPIProviderManager::selxTab;
227 JMPIProviderManager::ProvRegistrar JMPIProviderManager::provReg;
228
229 JMPIProviderManager::JMPIProviderManager(Mode m)
230 {
231 mode=m;
|
232 carolann.graves 1.21 _subscriptionInitComplete = false;
|
233 mark.hamzy 1.23
234 #ifdef PEGASUS_DEBUG
235 if (getenv("PEGASUS_JMPI_TRACE"))
236 JMPIProviderManager::trace = 1;
237 else
238 JMPIProviderManager::trace = 0;
239 #else
240 JMPIProviderManager::trace = 0;
241 #endif
|
242 schuur 1.1 }
243
244 JMPIProviderManager::~JMPIProviderManager(void)
245 {
246 }
247
|
248 schuur 1.12 Boolean JMPIProviderManager::insertProvider(const ProviderName & name,
|
249 schuur 1.1 const String &ns, const String &cn)
250 {
251 String key(ns+String("::")+cn+String("::")+CIMValue(name.getCapabilitiesMask()).toString());
|
252 mark.hamzy 1.23
253 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::insertProvider: "<<key<<PEGASUS_STD(endl));
254
|
255 schuur 1.1 return provReg.insert(key,name);
256 }
|
257 mark.hamzy 1.23
|
258 schuur 1.1 Message * JMPIProviderManager::processMessage(Message * request) throw()
259 {
|
260 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::processMessage()");
|
261 schuur 1.1
262 Message * response = 0;
|
263 mark.hamzy 1.23
|
264 schuur 1.1 // pass the request message to a handler method based on message type
265 switch(request->getType())
266 {
267 case CIM_GET_INSTANCE_REQUEST_MESSAGE:
268 response = handleGetInstanceRequest(request);
|
269 mark.hamzy 1.25 break;
|
270 schuur 1.1
271 case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
272 response = handleEnumerateInstancesRequest(request);
|
273 mark.hamzy 1.25 break;
|
274 schuur 1.1
275 case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:
276 response = handleEnumerateInstanceNamesRequest(request);
|
277 mark.hamzy 1.25 break;
|
278 schuur 1.1
279 case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:
280 response = handleCreateInstanceRequest(request);
|
281 mark.hamzy 1.25 break;
|
282 schuur 1.1
283 case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:
284 response = handleModifyInstanceRequest(request);
|
285 mark.hamzy 1.25 break;
|
286 schuur 1.1
287 case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:
288 response = handleDeleteInstanceRequest(request);
|
289 mark.hamzy 1.25 break;
|
290 schuur 1.1
|
291 mark.hamzy 1.25 case CIM_EXEC_QUERY_REQUEST_MESSAGE:
292 response = handleExecQueryRequest(request);
|
293 schuur 1.1 break;
294
295 case CIM_ASSOCIATORS_REQUEST_MESSAGE:
296 response = handleAssociatorsRequest(request);
|
297 mark.hamzy 1.25 break;
|
298 schuur 1.1
299 case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:
300 response = handleAssociatorNamesRequest(request);
|
301 mark.hamzy 1.25 break;
|
302 schuur 1.1
303 case CIM_REFERENCES_REQUEST_MESSAGE:
304 response = handleReferencesRequest(request);
|
305 mark.hamzy 1.25 break;
|
306 schuur 1.1
307 case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:
308 response = handleReferenceNamesRequest(request);
|
309 mark.hamzy 1.25 break;
|
310 schuur 1.1
|
311 mark.hamzy 1.26 case CIM_GET_PROPERTY_REQUEST_MESSAGE:
312 response = handleGetPropertyRequest(request);
313 break;
314
315 case CIM_SET_PROPERTY_REQUEST_MESSAGE:
316 response = handleSetPropertyRequest(request);
317 break;
318
|
319 schuur 1.11 case CIM_INVOKE_METHOD_REQUEST_MESSAGE:
|
320 schuur 1.1 response = handleInvokeMethodRequest(request);
|
321 mark.hamzy 1.25 break;
|
322 schuur 1.1
|
323 schuur 1.12 case CIM_CREATE_SUBSCRIPTION_REQUEST_MESSAGE:
|
324 schuur 1.1 response = handleCreateSubscriptionRequest(request);
|
325 mark.hamzy 1.25 break;
|
326 schuur 1.1
|
327 mark.hamzy 1.25 /* case CIM_MODIFY_SUBSCRIPTION_REQUEST_MESSAGE:
|
328 schuur 1.1 response = handleModifySubscriptionRequest(request);
329 break;
|
330 schuur 1.12 */
|
331 schuur 1.1 case CIM_DELETE_SUBSCRIPTION_REQUEST_MESSAGE:
332 response = handleDeleteSubscriptionRequest(request);
|
333 mark.hamzy 1.25 break;
|
334 schuur 1.1
|
335 mark.hamzy 1.26 /* case CIM_EXPORT_INDICATION_REQUEST_MESSAGE:
|
336 kumpf 1.7 response = handleExportIndicationRequest(request);
|
337 schuur 1.1 break;
|
338 schuur 1.12 */
|
339 schuur 1.1 case CIM_DISABLE_MODULE_REQUEST_MESSAGE:
340 response = handleDisableModuleRequest(request);
|
341 mark.hamzy 1.25 break;
|
342 schuur 1.1
343 case CIM_ENABLE_MODULE_REQUEST_MESSAGE:
344 response = handleEnableModuleRequest(request);
|
345 mark.hamzy 1.25 break;
|
346 schuur 1.1
347 case CIM_STOP_ALL_PROVIDERS_REQUEST_MESSAGE:
348 response = handleStopAllProvidersRequest(request);
|
349 mark.hamzy 1.25 break;
|
350 schuur 1.1
|
351 kumpf 1.4 case CIM_INITIALIZE_PROVIDER_REQUEST_MESSAGE:
|
352 mark.hamzy 1.23 response = handleInitializeProviderRequest(request);
|
353 mark.hamzy 1.25 break;
|
354 kumpf 1.4
|
355 carolann.graves 1.21 case CIM_SUBSCRIPTION_INIT_COMPLETE_REQUEST_MESSAGE:
356 response = handleSubscriptionInitCompleteRequest (request);
|
357 mark.hamzy 1.25 break;
|
358 carolann.graves 1.21
|
359 schuur 1.1 default:
|
360 mark.hamzy 1.23 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL2,
361 "*** Unsupported Request "+request->getType());
362 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::processMessage: Unsupported request "<<request->getType ()<<PEGASUS_STD(endl));
|
363 mark.hamzy 1.25
|
364 schuur 1.1 response = handleUnsupportedRequest(request);
365 break;
366 }
367
368 PEG_METHOD_EXIT();
369
370 return(response);
371 }
372
|
373 kumpf 1.6 Boolean JMPIProviderManager::hasActiveProviders()
374 {
375 return providerManager.hasActiveProviders();
376 }
377
378 void JMPIProviderManager::unloadIdleProviders()
|
379 schuur 1.1 {
|
380 kumpf 1.6 providerManager.unloadIdleProviders();
|
381 schuur 1.1 }
382
383 #define STRDUPA(s,o) \
384 if (s) { \
385 o=(const char*)alloca(strlen(s)); \
386 strcpy((char*)(o),(s)); \
387 } \
388 else o=NULL;
389
390 #define CHARS(cstring) (char*)(strlen(cstring)?(const char*)cstring:NULL)
391
392
393 #define HandlerIntroBase(type,type1,message,request,response,handler,respType) \
394 CIM##type##RequestMessage * request = \
395 dynamic_cast<CIM##type##RequestMessage *>(const_cast<Message *>(message)); \
396 PEGASUS_ASSERT(request != 0); \
397 CIM##type##ResponseMessage * response = \
398 new CIM##type##ResponseMessage( \
399 request->messageId, \
400 CIMException(), \
401 request->queueIds.copyAndPop() \
402 schuur 1.1 respType \
403 PEGASUS_ASSERT(response != 0); \
404 response->setKey(request->getKey()); \
405 response->setHttpMethod(request->getHttpMethod()); \
406 type1##ResponseHandler handler(request, response);
407
408 #define VOIDINTRO );
409 #define NOVOIDINTRO(type) ,type);
410 #define METHODINTRO ,CIMValue(), Array<CIMParamValue>(), request->methodName );
411
412
413 #define HandlerIntroVoid(type,message,request,response,handler) \
414 HandlerIntroBase(type,type,message,request,response,handler,VOIDINTRO)
415
416 #define HandlerIntroMethod(type,message,request,response,handler) \
417 HandlerIntroBase(type,type,message,request,response,handler,METHODINTRO)
418
419 #define HandlerIntroInd(type,message,request,response,handler) \
420 HandlerIntroBase(type,Operation,message,request,response,handler,VOIDINTRO)
421
|
422 kumpf 1.4 #define HandlerIntroInit(type,message,request,response,handler) \
423 HandlerIntroBase(type,Operation,message,request,response,handler,VOIDINTRO)
424
|
425 schuur 1.1 #define HandlerIntro(type,message,request,response,handler,respType) \
426 HandlerIntroBase(type,type,message,request,response,handler,NOVOIDINTRO(respType))
427
428 #define HandlerCatch(handler) \
429 catch(CIMException & e) \
430 { PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \
431 "Exception: " + e.getMessage()); \
432 handler.setStatus(e.getCode(), e.getContentLanguages(), e.getMessage()); \
433 } \
434 catch(Exception & e) \
435 { PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \
436 "Exception: " + e.getMessage()); \
437 handler.setStatus(CIM_ERR_FAILED, e.getContentLanguages(), e.getMessage()); \
438 } \
439 catch(...) \
440 { PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, \
441 "Exception: Unknown"); \
442 handler.setStatus(CIM_ERR_FAILED, "Unknown error."); \
443 }
444
|
445 schuur 1.13 static jobjectArray getList(JvmVector *jv, JNIEnv *env, CIMPropertyList &list)
446 {
447 Uint32 s=list.size();
448 jobjectArray pl=NULL;
449 if (s) {
450 jstring initial=env->NewString(NULL,0);
|
451 mark.hamzy 1.23 pl=(jobjectArray)env->NewObjectArray(s,jv->StringClassRef,initial);
|
452 schuur 1.13 for (Uint32 i=0; i<s; i++) {
453 env->SetObjectArrayElement
454 (pl,i,env->NewStringUTF(list[i].getString().getCString()));
455 }
456 }
457 return pl;
458 }
|
459 schuur 1.1
460 Message * JMPIProviderManager::handleGetInstanceRequest(const Message * message) throw()
461 {
|
462 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleGetInstanceRequest");
|
463 schuur 1.1
464 HandlerIntro(GetInstance,message,request,response,handler,CIMInstance());
465
|
466 mark.hamzy 1.25 typedef enum {
467 METHOD_UNKNOWN = 0,
468 METHOD_PEGASUS_24,
469 METHOD_SNIA_PROVIDER20,
470 } METHOD_VERSION;
471 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
472 JNIEnv *env = NULL;
|
473 schuur 1.13
|
474 schuur 1.1 try {
|
475 mark.hamzy 1.23 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
|
476 schuur 1.1 "JMPIProviderManager::handleGetInstanceRequest - Host name: $0 Name space: $1 Class name: $2",
477 System::getHostName(),
478 request->nameSpace.getString(),
479 request->instanceName.getClassName().getString());
480
|
481 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->instanceName.getClassName().getString()<<PEGASUS_STD(endl));
482
|
483 schuur 1.1 // make target object path
|
484 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
485 request->nameSpace,
486 request->instanceName.getClassName(),
487 request->instanceName.getKeyBindings());
|
488 schuur 1.1
489 // resolve provider name
|
490 kumpf 1.2 ProviderName name = _resolveProviderName(
491 request->operationContext.get(ProviderIdContainer::NAME));
|
492 schuur 1.1
493 // get cached or load new provider module
494 JMPIProvider::OpProviderHolder ph = providerManager.getProvider(name.getPhysicalName(),
|
495 mark.hamzy 1.23 name.getLogicalName());
|
496 schuur 1.1 OperationContext context;
497
|
498 mark.hamzy 1.23 // forward request
|
499 mark.hamzy 1.25 JMPIProvider &pr=ph.GetProvider();
|
500 schuur 1.1
|
501 mark.hamzy 1.25 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.getInstance: " + pr.getName());
|
502 schuur 1.1
|
503 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: Calling provider getInstance: "<<pr.getName()<<PEGASUS_STD(endl));
|
504 schuur 1.1
|
505 mark.hamzy 1.25 JvmVector *jv = 0;
506
507 env = JMPIjvm::attachThread(&jv);
508
509 JMPIProvider::pm_service_op_lock op_lock(&pr);
510
511 STAT_GETSTARTTIME;
512
513 jmethodID id = NULL;
514
515 // public abstract org.pegasus.jmpi.CIMInstance getInstance (org.pegasus.jmpi.CIMObjectPath cop,
516 // org.pegasus.jmpi.CIMClass cimClass,
517 // boolean localOnly)
518 // throws org.pegasus.jmpi.CIMException
519 id = env->GetMethodID((jclass)pr.jProviderClass,
520 "getInstance",
521 "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;Z)Lorg/pegasus/jmpi/CIMInstance;");
522
523 if (id != NULL)
524 {
525 eMethodFound = METHOD_SNIA_PROVIDER20;
526 mark.hamzy 1.25 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
527 }
528
529 if (id == NULL)
530 {
531 env->ExceptionClear();
532
533 // public org.pegasus.jmpi.CIMInstance getInstance (org.pegasus.jmpi.CIMObjectPath op,
534 // boolean localOnly,
535 // boolean includeQualifiers,
536 // boolean includeClassOrigin,
537 // java.lang.String[] propertyList,
538 // org.pegasus.jmpi.CIMClass cc)
539 // throws org.pegasus.jmpi.CIMException
540 id = env->GetMethodID((jclass)pr.jProviderClass,
541 "getInstance",
542 "(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)Lorg/pegasus/jmpi/CIMInstance;");
543
544 if (id != NULL)
545 {
546 eMethodFound = METHOD_PEGASUS_24;
547 mark.hamzy 1.25 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
548 }
549 }
550
|
551 schuur 1.1 JMPIjvm::checkException(env);
|
552 mark.hamzy 1.23
|
553 mark.hamzy 1.25 switch (eMethodFound)
554 {
555 case METHOD_PEGASUS_24:
556 {
|
557 mark.hamzy 1.29 jint jopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
558 jobject jop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jopRef);
|
559 mark.hamzy 1.25
560 JMPIjvm::checkException(env);
561
562 CIMClass cls = pr._cimom_handle->getClass(context,
563 request->nameSpace,
564 request->instanceName.getClassName(),
565 false,
566 true,
567 true,
568 CIMPropertyList());
|
569 mark.hamzy 1.27 CIMClass *pcls = new CIMClass (cls);
570
571 JMPIjvm::checkException(env);
|
572 mark.hamzy 1.25
|
573 mark.hamzy 1.29 jint jcimClassRef = DEBUG_ConvertCToJava (CIMClass*, jint, pcls);
574 jobject jcimClass = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcimClassRef);
|
575 mark.hamzy 1.25
576 JMPIjvm::checkException(env);
|
577 mark.hamzy 1.23
|
578 mark.hamzy 1.25 jobjectArray jPropertyList = getList(jv,env,request->propertyList);
|
579 schuur 1.1
|
580 mark.hamzy 1.29 jobject jciRet = env->CallObjectMethod((jobject)pr.jProvider,
581 id,
582 jop,
583 request->localOnly,
584 request->includeQualifiers,
585 request->includeClassOrigin,
586 jPropertyList,
587 jcimClass);
|
588 mark.hamzy 1.23
|
589 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
590 mark.hamzy 1.23
|
591 mark.hamzy 1.25 STAT_PMS_PROVIDEREND;
|
592 schuur 1.1
|
593 mark.hamzy 1.25 handler.processing();
|
594 schuur 1.1
|
595 mark.hamzy 1.29 if (jciRet) {
596 jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst);
597 CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef);
|
598 schuur 1.13
|
599 mark.hamzy 1.29 handler.deliver(*ciRet);
|
600 mark.hamzy 1.25 }
601 handler.complete();
602 break;
|
603 mark.hamzy 1.23 }
|
604 schuur 1.13
|
605 mark.hamzy 1.25 case METHOD_SNIA_PROVIDER20:
606 {
|
607 mark.hamzy 1.29 jint jopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
608 jobject jop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jopRef);
|
609 mark.hamzy 1.25
610 JMPIjvm::checkException(env);
611
612 CIMClass cls = pr._cimom_handle->getClass(context,
613 request->nameSpace,
614 request->instanceName.getClassName(),
615 false,
616 true,
617 true,
618 CIMPropertyList());
|
619 mark.hamzy 1.27 CIMClass *pcls = new CIMClass (cls);
|
620 mark.hamzy 1.25
|
621 mark.hamzy 1.27 JMPIjvm::checkException(env);
622
|
623 mark.hamzy 1.29 jint jcimClassRef = DEBUG_ConvertCToJava (CIMClass*, jint, pcls);
624 jobject jcimClass = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcimClassRef);
|
625 mark.hamzy 1.25
626 JMPIjvm::checkException(env);
627
|
628 mark.hamzy 1.30 // Modified for Bugzilla# 3679
|
629 mark.hamzy 1.29 jobject jciRet = env->CallObjectMethod((jobject)pr.jProvider,
630 id,
631 jop,
632 jcimClass,
|
633 mark.hamzy 1.30 JMPI_LOCALONLY);
|
634 mark.hamzy 1.25
635 JMPIjvm::checkException(env);
636
637 STAT_PMS_PROVIDEREND;
|
638 schuur 1.1
|
639 mark.hamzy 1.25 handler.processing();
|
640 schuur 1.13
|
641 mark.hamzy 1.29 if (jciRet) {
642 jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst);
643 CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef);
|
644 schuur 1.13
|
645 mark.hamzy 1.29 handler.deliver(*ciRet);
|
646 mark.hamzy 1.25 }
647 handler.complete();
648 break;
649 }
|
650 mark.hamzy 1.23
|
651 mark.hamzy 1.25 case METHOD_UNKNOWN:
652 {
653 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetInstanceRequest: should not be here!"<<PEGASUS_STD(endl));
654 break;
655 }
|
656 schuur 1.1 }
|
657 schuur 1.13 }
|
658 schuur 1.1 HandlerCatch(handler);
|
659 schuur 1.13
|
660 schuur 1.1 if (env) JMPIjvm::detachThread();
|
661 schuur 1.13
|
662 schuur 1.1 PEG_METHOD_EXIT();
663
|
664 w.white 1.31 STAT_COPYDISPATCHER
665
|
666 schuur 1.1 return(response);
667 }
668
669 Message * JMPIProviderManager::handleEnumerateInstancesRequest(const Message * message) throw()
670 {
|
671 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleEnumerateInstanceRequest");
672
673 HandlerIntro(EnumerateInstances,message,request,response,handler,Array<CIMInstance>());
|
674 schuur 1.1
|
675 mark.hamzy 1.25 typedef enum {
676 METHOD_UNKNOWN = 0,
677 METHOD_PEGASUS_24,
|
678 mark.hamzy 1.33 METHOD_SNIA_PROVIDER20_VER1,
679 METHOD_SNIA_PROVIDER20_VER2,
|
680 mark.hamzy 1.25 } METHOD_VERSION;
681 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
682 JNIEnv *env = NULL;
|
683 schuur 1.13
684 try {
|
685 schuur 1.1 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
686 "JMPIProviderManager::handleEnumerateInstancesRequest - Host name: $0 Name space: $1 Class name: $2",
687 System::getHostName(),
688 request->nameSpace.getString(),
689 request->className.getString());
690
|
691 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->className.getString()<<PEGASUS_STD(endl));
692
|
693 schuur 1.1 // make target object path
|
694 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
695 request->nameSpace,
696 request->className);
|
697 schuur 1.1
698 // resolve provider name
|
699 kumpf 1.2 ProviderName name = _resolveProviderName(
700 request->operationContext.get(ProviderIdContainer::NAME));
|
701 schuur 1.1
702 // get cached or load new provider module
703 JMPIProvider::OpProviderHolder ph =
704 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(),
705 String::EMPTY);
706
|
707 schuur 1.12 // convert arguments
|
708 schuur 1.1 OperationContext context;
709
|
710 schuur 1.12 context.insert(request->operationContext.get(IdentityContainer::NAME));
711 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
712 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
|
713 schuur 1.1
714 // forward request
|
715 mark.hamzy 1.25 JMPIProvider &pr = ph.GetProvider();
|
716 schuur 1.1
|
717 mark.hamzy 1.25 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.enumerateInstances: " + pr.getName());
|
718 schuur 1.1
|
719 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: Calling provider enumerateInstances: "<<pr.getName()<<PEGASUS_STD(endl));
|
720 schuur 1.12
|
721 mark.hamzy 1.25 JvmVector *jv = 0;
722
723 env = JMPIjvm::attachThread(&jv);
724
725 JMPIProvider::pm_service_op_lock op_lock(&pr);
726
727 STAT_GETSTARTTIME;
728
729 jmethodID id = NULL;
730
|
731 mark.hamzy 1.33 /* Fix for 4189 */
732 // public synchronized Vector enumInstances(CIMObjectPath cop,
733 // boolean deep,
734 // CIMClass cimClass,
735 // boolean localOnly,
736 // boolean includeQualifiers,
737 // boolean includeClassOrigin,
738 // String propertyList[])
|
739 mark.hamzy 1.25 // throws org.pegasus.jmpi.CIMException
740 id = env->GetMethodID((jclass)pr.jProviderClass,
741 "enumInstances",
|
742 mark.hamzy 1.33 "(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;ZZZ[Ljava/lang/String;)Ljava/util/Vector;");
|
743 mark.hamzy 1.25
744 if (id != NULL)
745 {
|
746 mark.hamzy 1.33 eMethodFound = METHOD_SNIA_PROVIDER20_VER1;
747 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: found METHOD_SNIA_PROVIDER20_VER1."<<PEGASUS_STD(endl));
748 }
749 /* Fix for 4189 */
750
751 if (id == NULL)
752 {
753 env->ExceptionClear();
754
755 // public abstract java.util.Vector enumInstances (org.pegasus.jmpi.CIMObjectPath cop,
756 // boolean deep,
757 // org.pegasus.jmpi.CIMClass cimClass,
758 // boolean localOnly)
759 // throws org.pegasus.jmpi.CIMException
760 id = env->GetMethodID((jclass)pr.jProviderClass,
761 "enumInstances",
762 "(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;Z)Ljava/util/Vector;");
763
764 if (id != NULL)
765 {
766 eMethodFound = METHOD_SNIA_PROVIDER20_VER2;
767 mark.hamzy 1.33 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: found METHOD_SNIA_PROVIDER20_VER2."<<PEGASUS_STD(endl));
768 }
|
769 mark.hamzy 1.25 }
770
771 if (id == NULL)
772 {
773 env->ExceptionClear();
|
774 schuur 1.1
|
775 mark.hamzy 1.25 // public org.pegasus.jmpi.CIMInstance[] enumerateInstances (org.pegasus.jmpi.CIMObjectPath op,
776 // boolean localOnly,
777 // boolean includeQualifiers,
778 // boolean includeClassOrigin,
779 // java.lang.String[] propertyList,
780 // org.pegasus.jmpi.CIMClass cc)
781 // throws org.pegasus.jmpi.CIMException
782 id = env->GetMethodID((jclass)pr.jProviderClass,
783 "enumerateInstances",
784 "(Lorg/pegasus/jmpi/CIMObjectPath;ZZZ[Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;");
|
785 mark.hamzy 1.23
|
786 mark.hamzy 1.25 if (id != NULL)
787 {
788 eMethodFound = METHOD_PEGASUS_24;
789 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
790 }
791 }
|
792 schuur 1.12
793 JMPIjvm::checkException(env);
|
794 mark.hamzy 1.23
|
795 mark.hamzy 1.25 switch (eMethodFound)
796 {
797 case METHOD_PEGASUS_24:
798 {
|
799 mark.hamzy 1.29 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
800 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
|
801 mark.hamzy 1.23
|
802 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
803 schuur 1.1
|
804 mark.hamzy 1.25 CIMClass cls = pr._cimom_handle->getClass(context,
805 request->nameSpace,
806 request->className,
807 false,
808 true,
809 true,
810 CIMPropertyList());
|
811 mark.hamzy 1.27 CIMClass *pcls = new CIMClass (cls);
812
|
813 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
814 schuur 1.1
|
815 mark.hamzy 1.29 jint jccRef = DEBUG_ConvertCToJava (CIMClass*, jint, pcls);
816 jobject jcc = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jccRef);
|
817 schuur 1.13
|
818 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
819 schuur 1.1
|
820 mark.hamzy 1.25 jobjectArray jPropertyList = getList(jv,env,request->propertyList);
821
822 jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
823 id,
|
824 mark.hamzy 1.29 jcop,
|
825 mark.hamzy 1.25 request->localOnly,
826 request->includeQualifiers,
827 request->includeClassOrigin,
828 jPropertyList,
|
829 mark.hamzy 1.29 jcc);
|
830 mark.hamzy 1.25
|
831 mark.hamzy 1.23 JMPIjvm::checkException(env);
832
833 STAT_PMS_PROVIDEREND;
834
835 handler.processing();
|
836 mark.hamzy 1.25 if (jAr) {
837 for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) {
|
838 mark.hamzy 1.23 JMPIjvm::checkException(env);
839
|
840 mark.hamzy 1.29 jobject jciRet = env->GetObjectArrayElement(jAr,i);
841
|
842 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
843 schuur 1.13
|
844 mark.hamzy 1.29 jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst);
845 CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef);
|
846 schuur 1.13
|
847 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
848 schuur 1.13
|
849 mark.hamzy 1.29 handler.deliver(*ciRet);
|
850 mark.hamzy 1.23 }
851 }
852 handler.complete();
|
853 mark.hamzy 1.25 break;
|
854 schuur 1.13 }
|
855 mark.hamzy 1.25
|
856 mark.hamzy 1.33 /* Fix for 4189 */
857 case METHOD_SNIA_PROVIDER20_VER1:
858 {
859 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
860 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
861
862 JMPIjvm::checkException(env);
863
864 CIMClass cls = pr._cimom_handle->getClass(context,
865 request->nameSpace,
866 request->className,
867 false,
868 true,
869 true,
870 CIMPropertyList());
871 CIMClass *pcls = new CIMClass (cls);
872
873 JMPIjvm::checkException(env);
874
875 jint jccRef = DEBUG_ConvertCToJava (CIMClass*, jint, pcls);
876 jobject jcc = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jccRef);
877 mark.hamzy 1.33
878 JMPIjvm::checkException(env);
879
880 jobjectArray jPropertyList = getList(jv,env,request->propertyList);
881 jobject jVec = env->CallObjectMethod((jobject)pr.jProvider,
882 id,
883 jcop,
884 request->deepInheritance,
885 jcc,
886 JMPI_LOCALONLY,
887 JMPI_INCLUDE_QUALIFIERS,
888 request->includeClassOrigin,
889 jPropertyList);
890
891 JMPIjvm::checkException(env);
892
893 STAT_PMS_PROVIDEREND;
894
895 handler.processing();
896 if (jVec) {
897 for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) {
898 mark.hamzy 1.33 JMPIjvm::checkException(env);
899
900 jobject jciRet = env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i);
901
902 JMPIjvm::checkException(env);
903
904 jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst);
905 CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef);
906
907 /* Fix for 4237 */
908 CIMClass cls = pr._cimom_handle->getClass(context,
909 request->nameSpace,
910 ciRet->getClassName(),
911 false,
912 true,
913 true,
914 CIMPropertyList());
915 const CIMObjectPath& op = ciRet->getPath();
916 CIMObjectPath iop = ciRet->buildPath(cls);
917
918 JMPIjvm::checkException(env);
919 mark.hamzy 1.33
920 iop.setNameSpace(op.getNameSpace());
921
922 ciRet->setPath(iop);
923 /* Fix for 4237*/
924
925 handler.deliver(*ciRet);
926 }
927 }
928 handler.complete();
929 break;
930 }
931 /* Fix for 4189 */
932
933 case METHOD_SNIA_PROVIDER20_VER2:
|
934 mark.hamzy 1.25 {
|
935 mark.hamzy 1.29 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
936 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
|
937 mark.hamzy 1.25
938 JMPIjvm::checkException(env);
939
940 CIMClass cls = pr._cimom_handle->getClass(context,
941 request->nameSpace,
942 request->className,
943 false,
944 true,
945 true,
946 CIMPropertyList());
|
947 mark.hamzy 1.27 CIMClass *pcls = new CIMClass (cls);
948
|
949 mark.hamzy 1.25 JMPIjvm::checkException(env);
950
|
951 mark.hamzy 1.29 jint jccRef = DEBUG_ConvertCToJava (CIMClass*, jint, pcls);
952 jobject jcc = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jccRef);
|
953 mark.hamzy 1.25
954 JMPIjvm::checkException(env);
955
|
956 mark.hamzy 1.30 // Modified for Bugzilla# 3679
|
957 mark.hamzy 1.25 jobject jVec = env->CallObjectMethod((jobject)pr.jProvider,
958 id,
|
959 mark.hamzy 1.29 jcop,
|
960 mark.hamzy 1.33 request->deepInheritance,
|
961 mark.hamzy 1.29 jcc,
|
962 mark.hamzy 1.30 JMPI_LOCALONLY);
|
963 mark.hamzy 1.25
|
964 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
965 schuur 1.12
|
966 mark.hamzy 1.23 STAT_PMS_PROVIDEREND;
967
968 handler.processing();
|
969 mark.hamzy 1.25 if (jVec) {
970 for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) {
|
971 mark.hamzy 1.23 JMPIjvm::checkException(env);
972
|
973 mark.hamzy 1.29 jobject jciRet = env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i);
974
|
975 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
976 schuur 1.12
|
977 mark.hamzy 1.29 jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst);
978 CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef);
|
979 schuur 1.12
|
980 mark.hamzy 1.33 /* Fix for 4237 */
981 CIMClass cls = pr._cimom_handle->getClass(context,
982 request->nameSpace,
983 ciRet->getClassName(),
984 false,
985 true,
986 true,
987 CIMPropertyList());
988 const CIMObjectPath& op = ciRet->getPath();
989 CIMObjectPath iop = ciRet->buildPath(cls);
990
991 JMPIjvm::checkException(env);
992
993 iop.setNameSpace(op.getNameSpace());
994
995 ciRet->setPath(iop);
996 /* Fix for 4237*/
997
|
998 mark.hamzy 1.29 handler.deliver(*ciRet);
|
999 mark.hamzy 1.23 }
1000 }
1001 handler.complete();
|
1002 mark.hamzy 1.25 break;
1003 }
1004
1005 case METHOD_UNKNOWN:
1006 {
1007 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstancesRequest: should not be here!"<<PEGASUS_STD(endl));
1008 break;
1009 }
|
1010 schuur 1.1 }
1011 }
1012 HandlerCatch(handler);
|
1013 schuur 1.12
|
1014 schuur 1.11 if (env) JMPIjvm::detachThread();
|
1015 schuur 1.12
|
1016 schuur 1.1 PEG_METHOD_EXIT();
1017
|
1018 w.white 1.31 STAT_COPYDISPATCHER
1019
|
1020 schuur 1.1 return(response);
1021 }
1022
1023 Message * JMPIProviderManager::handleEnumerateInstanceNamesRequest(const Message * message) throw()
1024 {
1025 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::handleEnumerateInstanceNamesRequest");
1026
|
1027 mark.hamzy 1.23 HandlerIntro(EnumerateInstanceNames,message,request,response, handler,Array<CIMObjectPath>());
1028
|
1029 mark.hamzy 1.25 typedef enum {
1030 METHOD_UNKNOWN = 0,
1031 METHOD_PEGASUS_24,
1032 METHOD_SNIA_PROVIDER20,
1033 } METHOD_VERSION;
1034 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
1035 JNIEnv *env = NULL;
|
1036 schuur 1.13
|
1037 schuur 1.1 try {
1038 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
1039 "JMPIProviderManager::handleEnumerateInstanceNamesRequest - Host name: $0 Name space: $1 Class name: $2",
1040 System::getHostName(),
1041 request->nameSpace.getString(),
1042 request->className.getString());
|
1043 mark.hamzy 1.23
1044 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->className.getString()<<PEGASUS_STD(endl));
1045
|
1046 mark.hamzy 1.25 // make target object path
|
1047 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
1048 request->nameSpace,
1049 request->className);
|
1050 schuur 1.1
1051 // resolve provider name
|
1052 kumpf 1.2 ProviderName name = _resolveProviderName(
1053 request->operationContext.get(ProviderIdContainer::NAME));
|
1054 schuur 1.1
1055 // get cached or load new provider module
1056 JMPIProvider::OpProviderHolder ph =
1057 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName());
1058
1059 // convert arguments
1060 OperationContext context;
1061
|
1062 mark.hamzy 1.23 context.insert(request->operationContext.get(IdentityContainer::NAME));
1063 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
1064 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
|
1065 schuur 1.1
|
1066 mark.hamzy 1.25 JMPIProvider &pr = ph.GetProvider();
|
1067 schuur 1.1
|
1068 mark.hamzy 1.25 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.enumerateInstanceNames: " + pr.getName());
|
1069 schuur 1.1
|
1070 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: Calling provider : enumerateInstanceNames"<<pr.getName()<<PEGASUS_STD(endl));
|
1071 schuur 1.1
|
1072 mark.hamzy 1.25 JvmVector *jv = 0;
|
1073 schuur 1.12
|
1074 mark.hamzy 1.25 env = JMPIjvm::attachThread(&jv);
|
1075 schuur 1.1
|
1076 mark.hamzy 1.25 JMPIProvider::pm_service_op_lock op_lock(&pr);
|
1077 schuur 1.12
|
1078 mark.hamzy 1.25 STAT_GETSTARTTIME;
|
1079 mark.hamzy 1.23
|
1080 mark.hamzy 1.25 jmethodID id = NULL;
|
1081 mark.hamzy 1.23
|
1082 mark.hamzy 1.25 // public abstract java.util.Vector enumInstances (org.pegasus.jmpi.CIMObjectPath cop,
1083 // boolean deep,
1084 // org.pegasus.jmpi.CIMClass cimClass)
1085 // throws org.pegasus.jmpi.CIMException
1086 id = env->GetMethodID((jclass)pr.jProviderClass,
1087 "enumInstances",
1088 "(Lorg/pegasus/jmpi/CIMObjectPath;ZLorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;");
|
1089 schuur 1.1
|
1090 mark.hamzy 1.25 if (id != NULL)
1091 {
1092 eMethodFound = METHOD_SNIA_PROVIDER20;
1093 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
1094 }
|
1095 schuur 1.1
|
1096 mark.hamzy 1.25 if (id == NULL)
1097 {
1098 env->ExceptionClear();
|
1099 schuur 1.1
|
1100 mark.hamzy 1.25 // public org.pegasus.jmpi.CIMObjectPath[] enumerateInstanceNames (org.pegasus.jmpi.CIMObjectPath op,
1101 // org.pegasus.jmpi.CIMClass cc)
1102 // throws org.pegasus.jmpi.CIMException
1103 id = env->GetMethodID((jclass)pr.jProviderClass,
1104 "enumerateInstanceNames",
1105 "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMObjectPath;");
|
1106 schuur 1.13
|
1107 mark.hamzy 1.25 if (id != NULL)
1108 {
1109 eMethodFound = METHOD_PEGASUS_24;
1110 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
1111 }
|
1112 mark.hamzy 1.23 }
|
1113 mark.hamzy 1.25
|
1114 schuur 1.1 JMPIjvm::checkException(env);
1115
|
1116 mark.hamzy 1.25 switch (eMethodFound)
1117 {
1118 case METHOD_PEGASUS_24:
1119 {
|
1120 mark.hamzy 1.29 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
1121 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
|
1122 mark.hamzy 1.25
1123 JMPIjvm::checkException(env);
1124
1125 CIMClass cls = pr._cimom_handle->getClass(context,
1126 request->nameSpace,
1127 request->className,
1128 false,
1129 true,
1130 true,
1131 CIMPropertyList());
|
1132 mark.hamzy 1.27 CIMClass *pcls = new CIMClass (cls);
|
1133 mark.hamzy 1.25
1134 JMPIjvm::checkException(env);
1135
|
1136 mark.hamzy 1.29 jint jcimClassRef = DEBUG_ConvertCToJava (CIMClass*, jint, pcls);
1137 jobject jcimClass = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcimClassRef);
|
1138 mark.hamzy 1.25
1139 JMPIjvm::checkException(env);
1140
1141 jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
1142 id,
|
1143 mark.hamzy 1.29 jcop,
1144 jcimClass);
|
1145 mark.hamzy 1.25
|
1146 mark.hamzy 1.23 JMPIjvm::checkException(env);
1147
1148 STAT_PMS_PROVIDEREND;
1149
1150 handler.processing();
|
1151 mark.hamzy 1.25 if (jAr) {
1152 for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) {
|
1153 mark.hamzy 1.23 JMPIjvm::checkException(env);
1154
|
1155 mark.hamzy 1.29 jobject jcopRet = env->GetObjectArrayElement(jAr,i);
1156
|
1157 mark.hamzy 1.23 JMPIjvm::checkException(env);
1158
|
1159 mark.hamzy 1.29 jint jcopRetRef = env->CallIntMethod(jcopRet,JMPIjvm::jv.CIMObjectPathCInst);
1160 CIMObjectPath *copRet = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jcopRetRef);
|
1161 schuur 1.13
|
1162 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
1163 schuur 1.13
|
1164 mark.hamzy 1.29 handler.deliver(*copRet);
|
1165 mark.hamzy 1.23 }
1166 }
1167 handler.complete();
|
1168 mark.hamzy 1.25 break;
|
1169 schuur 1.13 }
|
1170 mark.hamzy 1.25
1171 case METHOD_SNIA_PROVIDER20:
1172 {
|
1173 mark.hamzy 1.29 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
1174 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
|
1175 mark.hamzy 1.25
1176 JMPIjvm::checkException(env);
1177
1178 CIMClass cls = pr._cimom_handle->getClass(context,
1179 request->nameSpace,
1180 request->className,
1181 false,
1182 true,
1183 true,
1184 CIMPropertyList());
|
1185 mark.hamzy 1.27 CIMClass *pcls = new CIMClass (cls);
|
1186 mark.hamzy 1.25
1187 JMPIjvm::checkException(env);
1188
|
1189 mark.hamzy 1.29 jint jcimClassRef = DEBUG_ConvertCToJava (CIMClass*, jint, pcls);
1190 jobject jcimClass = env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcimClassRef);
|
1191 mark.hamzy 1.25
1192 JMPIjvm::checkException(env);
1193
1194 jobject jVec = env->CallObjectMethod((jobject)pr.jProvider,
1195 id,
|
1196 mark.hamzy 1.29 jcop,
|
1197 mark.hamzy 1.25 true,
|
1198 mark.hamzy 1.29 jcimClass);
|
1199 mark.hamzy 1.25
|
1200 mark.hamzy 1.23 JMPIjvm::checkException(env);
1201
1202 STAT_PMS_PROVIDEREND;
1203
1204 handler.processing();
|
1205 mark.hamzy 1.25 if (jVec) {
1206 for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) {
|
1207 mark.hamzy 1.23 JMPIjvm::checkException(env);
1208
|
1209 mark.hamzy 1.29 jobject jcopRet = env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i);
1210
|
1211 mark.hamzy 1.23 JMPIjvm::checkException(env);
1212
|
1213 mark.hamzy 1.29 jint jcopRetRef = env->CallIntMethod(jcopRet,JMPIjvm::jv.CIMObjectPathCInst);
1214 CIMObjectPath *copRet = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jcopRetRef);
|
1215 schuur 1.13
|
1216 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
1217 schuur 1.13
|
1218 mark.hamzy 1.29 handler.deliver(*copRet);
|
1219 mark.hamzy 1.23 }
1220 }
1221 handler.complete();
|
1222 mark.hamzy 1.25 break;
1223 }
1224
1225 case METHOD_UNKNOWN:
1226 {
1227 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleEnumerateInstanceNamesRequest: should not be here!"<<PEGASUS_STD(endl));
1228 break;
1229 }
|
1230 schuur 1.1 }
1231 }
1232 HandlerCatch(handler);
|
1233 mark.hamzy 1.23
1234 if (env) JMPIjvm::detachThread();
|
1235 schuur 1.1
1236 PEG_METHOD_EXIT();
1237
|
1238 w.white 1.31 STAT_COPYDISPATCHER
1239
|
1240 schuur 1.1 return(response);
1241 }
1242
1243 Message * JMPIProviderManager::handleCreateInstanceRequest(const Message * message) throw()
1244 {
|
1245 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleCreateInstanceRequest");
1246
1247 HandlerIntro(CreateInstance,message,request,response,handler,CIMObjectPath());
|
1248 schuur 1.1
|
1249 mark.hamzy 1.25 typedef enum {
1250 METHOD_UNKNOWN = 0,
1251 METHOD_SNIA_PROVIDER20,
1252 } METHOD_VERSION;
1253 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
1254 JNIEnv *env = NULL;
1255
|
1256 schuur 1.1 try {
1257 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
1258 "JMPIProviderManager::handleCreateInstanceRequest - Host name: $0 Name space: $1 Class name: $2",
1259 System::getHostName(),
1260 request->nameSpace.getString(),
1261 request->newInstance.getPath().getClassName().getString());
1262
|
1263 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->newInstance.getPath().getClassName().getString()<<PEGASUS_STD(endl));
1264
|
1265 schuur 1.1 // make target object path
|
1266 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
1267 request->nameSpace,
1268 request->newInstance.getPath().getClassName(),
1269 request->newInstance.getPath().getKeyBindings());
|
1270 schuur 1.1
1271 // resolve provider name
|
1272 kumpf 1.2 ProviderName name = _resolveProviderName(
1273 request->operationContext.get(ProviderIdContainer::NAME));
|
1274 schuur 1.1
1275 // get cached or load new provider module
1276 JMPIProvider::OpProviderHolder ph =
1277 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(),
|
1278 mark.hamzy 1.23 String::EMPTY);
|
1279 schuur 1.1
1280 // convert arguments
1281 OperationContext context;
1282
|
1283 mark.hamzy 1.23 context.insert(request->operationContext.get(IdentityContainer::NAME));
1284 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
1285 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
|
1286 schuur 1.1
1287 // forward request
|
1288 mark.hamzy 1.25 JMPIProvider &pr = ph.GetProvider();
|
1289 schuur 1.1
|
1290 mark.hamzy 1.25 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.createInstance: " + ph.GetProvider().getName());
|
1291 schuur 1.1
|
1292 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: Calling provider createInstance: "<<pr.getName()<<PEGASUS_STD(endl));
|
1293 schuur 1.12
|
1294 mark.hamzy 1.25 JvmVector *jv = 0;
1295
1296 env = JMPIjvm::attachThread(&jv);
1297
1298 JMPIProvider::pm_service_op_lock op_lock(&pr);
1299
1300 STAT_GETSTARTTIME;
1301
1302 jmethodID id = NULL;
1303
1304 // public abstract org.pegasus.jmpi.CIMObjectPath createInstance (org.pegasus.jmpi.CIMObjectPath cop,
1305 // org.pegasus.jmpi.CIMInstance cimInstance)
1306 // throws org.pegasus.jmpi.CIMException
1307 id = env->GetMethodID((jclass)pr.jProviderClass,
1308 "createInstance",
1309 "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)Lorg/pegasus/jmpi/CIMObjectPath;");
|
1310 schuur 1.1
|
1311 mark.hamzy 1.25 if (id != NULL)
1312 {
1313 eMethodFound = METHOD_SNIA_PROVIDER20;
1314 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
1315 }
|
1316 mark.hamzy 1.23
1317 JMPIjvm::checkException(env);
1318
|
1319 mark.hamzy 1.25 switch (eMethodFound)
1320 {
1321 case METHOD_SNIA_PROVIDER20:
1322 {
|
1323 mark.hamzy 1.29 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
1324 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
|
1325 mark.hamzy 1.25
1326 JMPIjvm::checkException(env);
1327
|
1328 mark.hamzy 1.29 CIMInstance *ci = new CIMInstance (request->newInstance);
1329 jint jciRef = DEBUG_ConvertCToJava (CIMInstance*, jint, ci);
1330 jobject jci = env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jciRef);
|
1331 mark.hamzy 1.25
1332 JMPIjvm::checkException(env);
|
1333 schuur 1.1
|
1334 mark.hamzy 1.29 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: id = "<<id<<", jcop = "<<jcop<<", jci = "<<jci<<PEGASUS_STD(endl));
|
1335 schuur 1.1
|
1336 mark.hamzy 1.29 jobject jcopRet = env->CallObjectMethod((jobject)pr.jProvider,
1337 id,
1338 jcop,
1339 jci);
|
1340 schuur 1.1
|
1341 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
1342 schuur 1.1
|
1343 mark.hamzy 1.25 STAT_PMS_PROVIDEREND;
|
1344 mark.hamzy 1.23
|
1345 mark.hamzy 1.25 handler.processing();
|
1346 mark.hamzy 1.23
|
1347 mark.hamzy 1.29 if (jcopRet) {
1348 jint jCopRetRef = env->CallIntMethod(jcopRet,JMPIjvm::jv.CIMObjectPathCInst);
1349 CIMObjectPath *copRet = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jCopRetRef);
|
1350 mark.hamzy 1.23
|
1351 mark.hamzy 1.29 handler.deliver(*copRet);
|
1352 mark.hamzy 1.25 }
1353 handler.complete();
1354 break;
1355 }
|
1356 mark.hamzy 1.23
|
1357 mark.hamzy 1.25 case METHOD_UNKNOWN:
1358 {
1359 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateInstanceRequest: should not be here!"<<PEGASUS_STD(endl));
1360 break;
1361 }
|
1362 schuur 1.1 }
1363 }
1364 HandlerCatch(handler);
|
1365 mark.hamzy 1.23
|
1366 schuur 1.1 if (env) JMPIjvm::detachThread();
|
1367 mark.hamzy 1.23
|
1368 schuur 1.1 PEG_METHOD_EXIT();
1369
|
1370 w.white 1.31 STAT_COPYDISPATCHER
1371
|
1372 schuur 1.1 return(response);
1373 }
1374
1375 Message * JMPIProviderManager::handleModifyInstanceRequest(const Message * message) throw()
1376 {
|
1377 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleModifyInstanceRequest");
|
1378 schuur 1.1
1379 HandlerIntroVoid(ModifyInstance,message,request,response,handler);
|
1380 mark.hamzy 1.23
|
1381 mark.hamzy 1.25 typedef enum {
1382 METHOD_UNKNOWN = 0,
1383 METHOD_PEGASUS_24,
1384 METHOD_SNIA_PROVIDER20,
1385 } METHOD_VERSION;
1386 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
1387 JNIEnv *env = NULL;
|
1388 schuur 1.13
|
1389 schuur 1.1 try {
1390 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
|
1391 konrad.r 1.15 "JMPIProviderManager::handleModifyInstanceRequest - Host name: $0 Name space: $1 Class name: $2",
|
1392 schuur 1.1 System::getHostName(),
1393 request->nameSpace.getString(),
1394 request->modifiedInstance.getPath().getClassName().getString());
1395
|
1396 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->modifiedInstance.getPath().getClassName().getString()<<PEGASUS_STD(endl));
1397
|
1398 schuur 1.1 // make target object path
|
1399 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
1400 request->nameSpace,
1401 request->modifiedInstance.getPath ().getClassName(),
1402 request->modifiedInstance.getPath ().getKeyBindings());
|
1403 schuur 1.1
1404 // resolve provider name
|
1405 kumpf 1.2 ProviderName name = _resolveProviderName(
1406 request->operationContext.get(ProviderIdContainer::NAME));
|
1407 schuur 1.1
|
1408 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: provider name physical = "<<name.getPhysicalName()<<", logical = "<<name.getLogicalName()<<PEGASUS_STD(endl));
1409
|
1410 schuur 1.1 // get cached or load new provider module
1411 JMPIProvider::OpProviderHolder ph =
1412 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
1413
1414 // convert arguments
1415 OperationContext context;
1416
|
1417 mark.hamzy 1.23 context.insert(request->operationContext.get(IdentityContainer::NAME));
1418 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
1419 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
|
1420 schuur 1.1
1421 // forward request
|
1422 mark.hamzy 1.25 JMPIProvider &pr = ph.GetProvider();
|
1423 mark.hamzy 1.23
1424 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.modifyInstance: " + pr.getName());
1425
|
1426 mark.hamzy 1.25 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: Calling provider "<<PEGASUS_STD(hex)<<(int)&pr<<PEGASUS_STD(dec)<<", name = "<<pr.getName ()<<", module = "<<pr.getModule()<<" modifyInstance: "<<pr.getName()<<PEGASUS_STD(endl));
1427 ////////DDD(debugPrintMethodPointers (env, (jclass)pr.jProviderClass));
1428
1429 JvmVector *jv = 0;
1430
1431 env = JMPIjvm::attachThread(&jv);
1432
1433 JMPIProvider::pm_service_op_lock op_lock(&pr);
|
1434 mark.hamzy 1.23
|
1435 mark.hamzy 1.25 STAT_GETSTARTTIME;
1436
1437 jmethodID id = NULL;
1438
1439 // public abstract void setInstance (org.pegasus.jmpi.CIMObjectPath cop,
1440 // org.pegasus.jmpi.CIMInstance cimInstance)
1441 // org.pegasus.jmpi.throws CIMException
1442 id = env->GetMethodID((jclass)pr.jProviderClass,
1443 "setInstance",
1444 "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMInstance;)V");
1445
1446 if (id != NULL)
1447 {
1448 eMethodFound = METHOD_SNIA_PROVIDER20;
1449 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
1450 }
1451
1452 if (id == NULL)
1453 {
1454 env->ExceptionClear();
1455
1456 mark.hamzy 1.25 // public void setInstance (org.pegasus.jmpi.CIMObjectPath op,
1457 // org.pegasus.jmpi.CIMInstance ci,
1458 // boolean includeQualifiers,
1459 // java.lang.String[] propertyList)
1460 // throws org.pegasus.jmpi.CIMException
1461 id = env->GetMethodID((jclass)pr.jProviderClass,
1462 "setInstance",
1463 "(Lorg/pegasus/jmpi/CIMObjectPath;Z[Ljava/lang/String)V");
|
1464 schuur 1.1
|
1465 mark.hamzy 1.25 if (id != NULL)
1466 {
1467 eMethodFound = METHOD_PEGASUS_24;
1468 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
1469 }
1470 }
|
1471 schuur 1.1
|
1472 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
1473 schuur 1.1
|
1474 mark.hamzy 1.25 switch (eMethodFound)
1475 {
1476 case METHOD_PEGASUS_24:
1477 {
|
1478 mark.hamzy 1.29 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
1479 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
|
1480 mark.hamzy 1.25
1481 JMPIjvm::checkException(env);
1482
|
1483 mark.hamzy 1.29 CIMInstance *ci = new CIMInstance (request->modifiedInstance);
1484 jint jciRef = DEBUG_ConvertCToJava (CIMInstance*, jint, ci);
1485 jobject jci = env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jciRef);
|
1486 mark.hamzy 1.25
1487 JMPIjvm::checkException(env);
|
1488 schuur 1.1
|
1489 mark.hamzy 1.25 jobjectArray jPropertyList = getList(jv,env,request->propertyList);
|
1490 schuur 1.1
|
1491 mark.hamzy 1.25 env->CallVoidMethod((jobject)pr.jProvider,
1492 id,
|
1493 mark.hamzy 1.29 jcop,
1494 jci,
|
1495 mark.hamzy 1.25 jPropertyList);
|
1496 schuur 1.1
|
1497 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
1498 schuur 1.13
|
1499 mark.hamzy 1.25 STAT_PMS_PROVIDEREND;
1500 break;
|
1501 schuur 1.13 }
|
1502 schuur 1.1
|
1503 mark.hamzy 1.25 case METHOD_SNIA_PROVIDER20:
1504 {
|
1505 mark.hamzy 1.29 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
1506 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
|
1507 mark.hamzy 1.25
1508 JMPIjvm::checkException(env);
1509
|
1510 mark.hamzy 1.29 CIMInstance *ci = new CIMInstance (request->modifiedInstance);
1511 jint jciRef = DEBUG_ConvertCToJava (CIMInstance*, jint, ci);
1512 jobject jci = env->NewObject(jv->CIMInstanceClassRef,jv->CIMInstanceNewI,jciRef);
|
1513 mark.hamzy 1.25
1514 JMPIjvm::checkException(env);
1515
1516 env->CallVoidMethod((jobject)pr.jProvider,
1517 id,
|
1518 mark.hamzy 1.29 jcop,
1519 jci);
|
1520 mark.hamzy 1.25
1521 JMPIjvm::checkException(env);
|
1522 schuur 1.13
|
1523 mark.hamzy 1.25 STAT_PMS_PROVIDEREND;
1524 break;
1525 }
|
1526 mark.hamzy 1.23
|
1527 mark.hamzy 1.25 case METHOD_UNKNOWN:
1528 {
1529 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleModifyInstanceRequest: should not be here!"<<PEGASUS_STD(endl));
1530 break;
1531 }
1532 }
|
1533 schuur 1.1 }
1534 HandlerCatch(handler);
|
1535 mark.hamzy 1.23
|
1536 schuur 1.1 if (env) JMPIjvm::detachThread();
|
1537 mark.hamzy 1.23
|
1538 schuur 1.1 PEG_METHOD_EXIT();
1539
|
1540 w.white 1.31 STAT_COPYDISPATCHER
1541
|
1542 schuur 1.1 return(response);
1543 }
1544
1545 Message * JMPIProviderManager::handleDeleteInstanceRequest(const Message * message) throw()
1546 {
|
1547 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleDeleteInstanceRequest");
1548
1549 HandlerIntroVoid(DeleteInstance,message,request,response,handler);
|
1550 schuur 1.1
|
1551 mark.hamzy 1.25 typedef enum {
1552 METHOD_UNKNOWN = 0,
1553 METHOD_SNIA_PROVIDER20,
1554 } METHOD_VERSION;
1555 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
1556 JNIEnv *env = NULL;
1557
|
1558 schuur 1.1 try {
1559 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
|
1560 konrad.r 1.15 "JMPIProviderManager::handleDeleteInstanceRequest - Host name: $0 Name space: $1 Class name: $2",
|
1561 schuur 1.1 System::getHostName(),
1562 request->nameSpace.getString(),
1563 request->instanceName.getClassName().getString());
1564
|
1565 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->instanceName.getClassName().getString()<<PEGASUS_STD(endl));
1566
|
1567 schuur 1.1 // make target object path
|
1568 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
1569 request->nameSpace,
1570 request->instanceName.getClassName(),
1571 request->instanceName.getKeyBindings());
|
1572 schuur 1.1
1573 // resolve provider name
|
1574 kumpf 1.2 ProviderName name = _resolveProviderName(
1575 request->operationContext.get(ProviderIdContainer::NAME));
|
1576 schuur 1.1
1577 // get cached or load new provider module
1578 JMPIProvider::OpProviderHolder ph =
1579 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
1580
1581 // convert arguments
1582 OperationContext context;
1583
|
1584 mark.hamzy 1.23 context.insert(request->operationContext.get(IdentityContainer::NAME));
1585 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
1586 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
|
1587 schuur 1.1
1588 // forward request
|
1589 mark.hamzy 1.25 JMPIProvider &pr = ph.GetProvider();
|
1590 schuur 1.1
|
1591 mark.hamzy 1.25 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.deleteInstance: " + pr.getName());
|
1592 schuur 1.1
|
1593 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: Calling provider deleteInstance: "<<pr.getName()<<PEGASUS_STD(endl));
|
1594 schuur 1.1
|
1595 mark.hamzy 1.25 JvmVector *jv = 0;
1596
1597 env = JMPIjvm::attachThread(&jv);
1598
1599 JMPIProvider::pm_service_op_lock op_lock(&pr);
1600
1601 STAT_GETSTARTTIME;
1602
1603 jmethodID id = NULL;
1604
1605 // public abstract void deleteInstance (org.pegasus.jmpi.CIMObjectPath cop)
1606 // throws org.pegasus.jmpi.CIMException
1607 id = env->GetMethodID((jclass)pr.jProviderClass,
1608 "deleteInstance",
1609 "(Lorg/pegasus/jmpi/CIMObjectPath;)V");
|
1610 schuur 1.1
|
1611 mark.hamzy 1.25 if (id != NULL)
1612 {
1613 eMethodFound = METHOD_SNIA_PROVIDER20;
1614 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
1615 }
|
1616 mark.hamzy 1.23
1617 JMPIjvm::checkException(env);
|
1618 schuur 1.1
|
1619 mark.hamzy 1.25 switch (eMethodFound)
1620 {
1621 case METHOD_SNIA_PROVIDER20:
1622 {
|
1623 mark.hamzy 1.29 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
1624 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
|
1625 mark.hamzy 1.25
1626 JMPIjvm::checkException(env);
1627
|
1628 mark.hamzy 1.29 env->CallVoidMethod((jobject)pr.jProvider,id,jcop);
|
1629 mark.hamzy 1.25
1630 JMPIjvm::checkException(env);
1631
1632 STAT_PMS_PROVIDEREND;
1633 break;
1634 }
1635
1636 case METHOD_UNKNOWN:
1637 {
1638 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteInstanceRequest: should not be here!"<<PEGASUS_STD(endl));
1639 break;
1640 }
1641 }
1642 }
1643 HandlerCatch(handler);
1644
1645 if (env) JMPIjvm::detachThread();
1646
1647 PEG_METHOD_EXIT();
1648
|
1649 w.white 1.31 STAT_COPYDISPATCHER
1650
|
1651 mark.hamzy 1.25 return(response);
1652 }
1653
1654 Message * JMPIProviderManager::handleExecQueryRequest(const Message * message) throw()
1655 {
1656 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleExecQueryRequest");
1657
1658 HandlerIntro(ExecQuery,message,request,response,handler,Array<CIMObject>());
1659
1660 typedef enum {
1661 METHOD_UNKNOWN = 0,
1662 METHOD_PEGASUS_24,
1663 METHOD_SNIA_PROVIDER20,
1664 } METHOD_VERSION;
1665 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
1666 JNIEnv *env = NULL;
1667
1668 try {
1669 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
1670 "JMPIProviderManager::handleExecQueryRequest - Host name: $0 Name space: $1 Class name: $2",
1671 System::getHostName(),
1672 mark.hamzy 1.25 request->nameSpace.getString(),
1673 request->className.getString());
1674
1675 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->className.getString()<<PEGASUS_STD(endl));
1676
1677 // make target object path
|
1678 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
1679 request->nameSpace,
1680 request->className);
|
1681 mark.hamzy 1.25
1682 // resolve provider name
1683 ProviderName name = _resolveProviderName(
1684 request->operationContext.get(ProviderIdContainer::NAME));
1685
1686 // get cached or load new provider module
1687 JMPIProvider::OpProviderHolder ph =
1688 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
1689
1690 // convert arguments
1691 OperationContext context;
1692
1693 context.insert(request->operationContext.get(IdentityContainer::NAME));
1694 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
1695 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
1696
1697 // forward request
1698 JMPIProvider &pr = ph.GetProvider();
1699
1700 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.execQuery: " + pr.getName());
1701
1702 mark.hamzy 1.25 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: Calling provider execQuery: "<<pr.getName()<<", queryLanguage: "<<request->queryLanguage<<", query: "<<request->query<<PEGASUS_STD(endl));
1703
1704 JvmVector *jv = 0;
1705
1706 env = JMPIjvm::attachThread(&jv);
1707
|
1708 mark.hamzy 1.23 JMPIProvider::pm_service_op_lock op_lock(&pr);
|
1709 schuur 1.1
|
1710 mark.hamzy 1.23 STAT_GETSTARTTIME;
|
1711 schuur 1.1
|
1712 mark.hamzy 1.25 jmethodID id = NULL;
1713
1714 // public abstract java.util.Vector execQuery (org.pegasus.jmpi.CIMObjectPath cop,
1715 // java.lang.String queryStatement,
1716 // int ql,
1717 // org.pegasus.jmpi.CIMClass cimClass)
1718 // throws org.pegasus.jmpi.CIMException
1719 //
1720 id = env->GetMethodID((jclass)pr.jProviderClass,
1721 "execQuery",
1722 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ILorg/pegasus/jmpi/CIMClass;)Ljava/util/Vector;");
1723
1724 if (id != NULL)
1725 {
1726 eMethodFound = METHOD_SNIA_PROVIDER20;
1727 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
1728 }
1729
1730 if (id == NULL)
1731 {
1732 env->ExceptionClear();
1733 mark.hamzy 1.25
1734 // public abstract org.pegasus.jmpi.CIMInstance[] execQuery(org.pegasus.jmpi.CIMObjectPath op,
1735 // java.lang.String query,
1736 // java.lang.String ql,
1737 // org.pegasus.jmpi.CIMClass cc)
1738 // throws org.pegasus.jmpi.CIMException
1739 id = env->GetMethodID((jclass)pr.jProviderClass,
1740 "execQuery",
1741 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Lorg/pegasus/jmpi/CIMClass;)[Lorg/pegasus/jmpi/CIMInstance;");
1742
1743 if (id != NULL)
1744 {
1745 eMethodFound = METHOD_PEGASUS_24;
1746 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
1747 }
1748 }
1749
1750 if (id == NULL)
1751 {
1752 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: found no method!"<<PEGASUS_STD(endl));
1753 }
1754 mark.hamzy 1.25
|
1755 schuur 1.1 JMPIjvm::checkException(env);
1756
|
1757 mark.hamzy 1.25 switch (eMethodFound)
1758 {
1759 case METHOD_PEGASUS_24:
1760 {
|
1761 mark.hamzy 1.27 jint jcopref = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
|
1762 mark.hamzy 1.25 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef, jv->CIMObjectPathNewI, jcopref);
1763
1764 JMPIjvm::checkException(env);
1765
1766 jstring jqueryLanguage = env->NewStringUTF(request->queryLanguage.getCString());
1767 jstring jquery = env->NewStringUTF(request->query.getCString());
1768
1769 CIMClass cls = pr._cimom_handle->getClass(context,
1770 request->nameSpace,
1771 request->className,
1772 false,
1773 true,
1774 true,
1775 CIMPropertyList());
|
1776 mark.hamzy 1.27 CIMClass *pcls = new CIMClass (cls);
1777
|
1778 mark.hamzy 1.25 JMPIjvm::checkException(env);
1779
|
1780 mark.hamzy 1.27 jint jcls = DEBUG_ConvertCToJava (CIMClass*, jint, pcls);
|
1781 mark.hamzy 1.25
1782 jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcls);
1783
1784 JMPIjvm::checkException(env);
1785
1786 jobjectArray jAr = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
1787 id,
1788 jcop,
1789 jquery,
1790 jqueryLanguage,
1791 jCc);
|
1792 mark.hamzy 1.23
|
1793 mark.hamzy 1.25 JMPIjvm::checkException(env);
1794
1795 STAT_PMS_PROVIDEREND;
1796
1797 handler.processing();
1798 if (jAr) {
1799 for (int i=0,m=env->GetArrayLength(jAr); i<m; i++) {
1800 JMPIjvm::checkException(env);
1801
|
1802 mark.hamzy 1.29 jobject jciRet = env->GetObjectArrayElement(jAr,i);
1803
|
1804 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
1805 mark.hamzy 1.23
|
1806 mark.hamzy 1.29 jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst);
1807 CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef);
|
1808 mark.hamzy 1.25
1809 JMPIjvm::checkException(env);
1810
|
1811 mark.hamzy 1.29 handler.deliver(*ciRet);
|
1812 mark.hamzy 1.25 }
1813 }
1814 handler.complete();
1815 break;
1816 }
1817
1818 case METHOD_SNIA_PROVIDER20:
1819 {
|
1820 mark.hamzy 1.27 jint jcopref = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
|
1821 mark.hamzy 1.25 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef, jv->CIMObjectPathNewI, jcopref);
1822
1823 JMPIjvm::checkException(env);
1824
1825 jstring jqueryLanguage = env->NewStringUTF(request->queryLanguage.getCString());
1826 jstring jquery = env->NewStringUTF(request->query.getCString());
1827
1828 CIMClass cls = pr._cimom_handle->getClass(context,
1829 request->nameSpace,
1830 request->className,
1831 false,
1832 true,
1833 true,
1834 CIMPropertyList());
|
1835 mark.hamzy 1.27 CIMClass *pcls = new CIMClass (cls);
1836
|
1837 mark.hamzy 1.25 JMPIjvm::checkException(env);
1838
|
1839 mark.hamzy 1.27 jint jcls = DEBUG_ConvertCToJava (CIMClass*, jint, pcls);
|
1840 mark.hamzy 1.25
1841 jobject jCc=env->NewObject(jv->CIMClassClassRef,jv->CIMClassNewI,jcls);
1842
1843 JMPIjvm::checkException(env);
1844
1845 jint jql = 0; // @BUG - how to convert?
1846
1847 jobjectArray jVec = (jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
1848 id,
1849 jcop,
1850 jquery,
1851 jql,
1852 jCc);
1853
1854 JMPIjvm::checkException(env);
1855
1856 STAT_PMS_PROVIDEREND;
1857
1858 handler.processing();
1859 if (jVec) {
1860 for (int i=0,m=env->GetArrayLength(jVec); i<m; i++) {
1861 mark.hamzy 1.25 JMPIjvm::checkException(env);
1862
|
1863 mark.hamzy 1.29 jobject jciRet = env->GetObjectArrayElement(jVec,i);
1864
|
1865 mark.hamzy 1.25 JMPIjvm::checkException(env);
1866
|
1867 mark.hamzy 1.29 jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst);
1868 CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef);
|
1869 mark.hamzy 1.25
1870 JMPIjvm::checkException(env);
1871
|
1872 mark.hamzy 1.29 handler.deliver(*ciRet);
|
1873 mark.hamzy 1.25 }
1874 }
1875 handler.complete();
1876 break;
1877 }
1878
1879 case METHOD_UNKNOWN:
1880 {
1881 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleExecQueryRequest: should not be here!"<<PEGASUS_STD(endl));
1882 break;
1883 }
1884 }
|
1885 schuur 1.1 }
1886 HandlerCatch(handler);
|
1887 mark.hamzy 1.23
|
1888 schuur 1.1 if (env) JMPIjvm::detachThread();
|
1889 mark.hamzy 1.23
|
1890 schuur 1.1 PEG_METHOD_EXIT();
1891
|
1892 w.white 1.31 STAT_COPYDISPATCHER
1893
|
1894 schuur 1.1 return(response);
1895 }
1896
1897 Message * JMPIProviderManager::handleAssociatorsRequest(const Message * message) throw()
1898 {
|
1899 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleAssociatorsRequest");
1900
1901 HandlerIntro(Associators,message,request,response,handler,Array<CIMObject>());
|
1902 schuur 1.1
|
1903 mark.hamzy 1.24 typedef enum {
1904 METHOD_UNKNOWN = 0,
|
1905 mark.hamzy 1.25 METHOD_PEGASUS_24,
|
1906 mark.hamzy 1.24 METHOD_SNIA_PROVIDER20,
1907 } METHOD_VERSION;
1908 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
1909 JNIEnv *env = NULL;
|
1910 schuur 1.13
|
1911 schuur 1.1 try {
1912 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
1913 "JMPIProviderManager::handleAssociatorsRequest - Host name: $0 Name space: $1 Class name: $2",
1914 System::getHostName(),
1915 request->nameSpace.getString(),
1916 request->objectName.getClassName().getString());
1917
|
1918 mark.hamzy 1.25 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->objectName.getClassName().getString()<<PEGASUS_STD(endl));
|
1919 mark.hamzy 1.23
|
1920 schuur 1.1 // make target object path
|
1921 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
1922 request->nameSpace,
1923 request->objectName.getClassName(),
1924 request->objectName.getKeyBindings());
1925 CIMObjectPath *assocPath = new CIMObjectPath (System::getHostName(),
1926 request->nameSpace,
1927 request->assocClass.getString());
|
1928 schuur 1.1
1929 // resolve provider name
|
1930 kumpf 1.2 ProviderName name = _resolveProviderName(
1931 request->operationContext.get(ProviderIdContainer::NAME));
|
1932 schuur 1.1
1933 // get cached or load new provider module
1934 JMPIProvider::OpProviderHolder ph =
1935 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
1936
|
1937 mark.hamzy 1.24 // convert arguments
|
1938 schuur 1.1 OperationContext context;
1939
|
1940 mark.hamzy 1.23 context.insert(request->operationContext.get(IdentityContainer::NAME));
1941 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
1942 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
|
1943 schuur 1.1
1944 // forward request
|
1945 mark.hamzy 1.24 JMPIProvider &pr = ph.GetProvider();
1946
1947 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.associators: " + pr.getName());
|
1948 schuur 1.1
|
1949 mark.hamzy 1.24 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: Calling provider associators: "<<pr.getName()<<", role: "<<request->role<<", aCls: "<<request->assocClass<<PEGASUS_STD(endl));
|
1950 schuur 1.1
|
1951 mark.hamzy 1.24 JvmVector *jv = 0;
|
1952 schuur 1.1
|
1953 mark.hamzy 1.24 env = JMPIjvm::attachThread(&jv);
|
1954 schuur 1.1
1955 JMPIProvider::pm_service_op_lock op_lock(&pr);
1956
1957 STAT_GETSTARTTIME;
1958
|
1959 mark.hamzy 1.24 jmethodID id = NULL;
1960
1961 // public abstract java.util.Vector associators (org.pegasus.jmpi.CIMObjectPath assocName,
|
1962 mark.hamzy 1.25 // org.pegasus.jmpi.CIMObjectPath pathName,
|
1963 mark.hamzy 1.24 // java.lang.String resultClass,
1964 // java.lang.String role,
1965 // java.lang.String resultRole,
1966 // boolean includeQualifiers,
1967 // boolean includeClassOrigin,
1968 // java.lang.String[] propertyList)
|
1969 mark.hamzy 1.25 // throws org.pegasus.jmpi.CIMException
|
1970 mark.hamzy 1.24 //
1971 id = env->GetMethodID((jclass)pr.jProviderClass,
1972 "associators",
|
1973 mark.hamzy 1.25 "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");
1974 //@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath; Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"
|
1975 mark.hamzy 1.24
1976 if (id != NULL)
1977 {
|
1978 mark.hamzy 1.25 eMethodFound = METHOD_SNIA_PROVIDER20;
1979 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
|
1980 mark.hamzy 1.24 }
|
1981 schuur 1.12
|
1982 mark.hamzy 1.24 if (id == NULL)
1983 {
1984 env->ExceptionClear();
1985
1986 // public abstract java.util.Vector associators (org.pegasus.jmpi.CIMObjectPath assocName,
1987 // java.lang.String resultClass,
1988 // java.lang.String role,
1989 // java.lang.String resultRole,
1990 // boolean includeQualifiers,
1991 // boolean includeClassOrigin,
1992 // java.lang.String[] propertyList)
|
1993 mark.hamzy 1.25 // throws org.pegasus.jmpi.CIMException
|
1994 mark.hamzy 1.24 //
1995 id = env->GetMethodID((jclass)pr.jProviderClass,
1996 "associators",
|
1997 mark.hamzy 1.25 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");
1998 //@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMInstance;"
|
1999 mark.hamzy 1.24
2000 if (id != NULL)
2001 {
|
2002 mark.hamzy 1.25 eMethodFound = METHOD_PEGASUS_24;
2003 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
|
2004 mark.hamzy 1.24 }
2005 }
2006
2007 if (id == NULL)
2008 {
2009 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: found no method!"<<PEGASUS_STD(endl));
|
2010 mark.hamzy 1.23 }
|
2011 mark.hamzy 1.24
|
2012 schuur 1.1 JMPIjvm::checkException(env);
2013
|
2014 mark.hamzy 1.24 switch (eMethodFound)
2015 {
|
2016 mark.hamzy 1.25 case METHOD_PEGASUS_24:
|
2017 mark.hamzy 1.24 {
|
2018 mark.hamzy 1.29 jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, assocPath);
|
2019 mark.hamzy 1.25 jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
2020
2021 JMPIjvm::checkException(env);
2022
2023 jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString());
2024 jstring jRole = env->NewStringUTF(request->role.getCString());
2025 jstring jResultRole = env->NewStringUTF(request->resultRole.getCString());
2026
2027 JMPIjvm::checkException(env);
2028
2029 jobjectArray jPropertyList = getList(jv,env,request->propertyList);
2030
|
2031 mark.hamzy 1.29 #ifdef PEGASUS_DEBUG
2032 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: assocName = "<<assocPath->toString ()<<PEGASUS_STD(endl));
2033 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: resultClass = "<<request->resultClass<<PEGASUS_STD(endl));
2034 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: role = "<<request->role<<PEGASUS_STD(endl));
2035 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: resultRole = "<<request->resultRole<<PEGASUS_STD(endl));
2036 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: includeQualifiers = "<<false<<PEGASUS_STD(endl));
2037 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: includeClassOrigin = "<<false<<PEGASUS_STD(endl));
2038 #endif
2039
|
2040 mark.hamzy 1.24 jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
2041 id,
2042 jAssociationName,
2043 jResultClass,
2044 jRole,
2045 jResultRole,
2046 false,
2047 false,
2048 jPropertyList);
|
2049 mark.hamzy 1.25
|
2050 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
2051 schuur 1.13
|
2052 mark.hamzy 1.23 STAT_PMS_PROVIDEREND;
|
2053 schuur 1.1
|
2054 mark.hamzy 1.23 handler.processing();
2055 if (jVec) {
|
2056 mark.hamzy 1.24 for (int i=0,m=env->GetArrayLength(jVec); i<m; i++) {
|
2057 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
2058 schuur 1.1
|
2059 mark.hamzy 1.29 jobject jciRet = env->GetObjectArrayElement(jVec,i);
|
2060 mark.hamzy 1.24
|
2061 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
2062 schuur 1.13
|
2063 mark.hamzy 1.29 jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst);
|
2064 schuur 1.13
|
2065 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
2066 schuur 1.13
|
2067 mark.hamzy 1.29 CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef);
2068 CIMClass cls = pr._cimom_handle->getClass(context,
2069 request->nameSpace,
2070 ciRet->getClassName(),
2071 false,
2072 true,
2073 true,
2074 CIMPropertyList());
2075 const CIMObjectPath& op = ciRet->getPath();
2076 CIMObjectPath iop = ciRet->buildPath(cls);
|
2077 mark.hamzy 1.24
|
2078 mark.hamzy 1.27 JMPIjvm::checkException(env);
2079
|
2080 mark.hamzy 1.23 iop.setNameSpace(op.getNameSpace());
|
2081 mark.hamzy 1.29 ciRet->setPath(iop);
|
2082 schuur 1.13
|
2083 mark.hamzy 1.29 handler.deliver(*ciRet);
|
2084 mark.hamzy 1.23 }
2085 }
|
2086 mark.hamzy 1.24 handler.complete();
2087 break;
|
2088 mark.hamzy 1.23 }
|
2089 mark.hamzy 1.24
2090 case METHOD_SNIA_PROVIDER20:
2091 {
|
2092 mark.hamzy 1.29 jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, assocPath);
|
2093 mark.hamzy 1.25 jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
2094
2095 JMPIjvm::checkException(env);
2096
|
2097 mark.hamzy 1.29 jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
|
2098 mark.hamzy 1.24 jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);
2099
2100 JMPIjvm::checkException(env);
2101
|
2102 mark.hamzy 1.25 jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString());
2103 jstring jRole = env->NewStringUTF(request->role.getCString());
2104 jstring jResultRole = env->NewStringUTF(request->resultRole.getCString());
2105
2106 JMPIjvm::checkException(env);
2107
2108 jobjectArray jPropertyList = getList(jv,env,request->propertyList);
2109
|
2110 mark.hamzy 1.29 #ifdef PEGASUS_DEBUG
2111 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: assocName = "<<assocPath->toString ()<<PEGASUS_STD(endl));
2112 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: pathName = "<<objectPath->toString ()<<PEGASUS_STD(endl));
2113 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: resultClass = "<<request->resultClass<<PEGASUS_STD(endl));
2114 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: role = "<<request->role<<PEGASUS_STD(endl));
2115 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: resultRole = "<<request->resultRole<<PEGASUS_STD(endl));
2116 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: includeQualifiers = "<<false<<PEGASUS_STD(endl));
2117 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorsRequest: includeClassOrigin = "<<false<<PEGASUS_STD(endl));
2118 #endif
2119
|
2120 mark.hamzy 1.24 jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
2121 id,
2122 jAssociationName,
2123 jPathName,
2124 jResultClass,
2125 jRole,
2126 jResultRole,
|
2127 mark.hamzy 1.32 JMPI_INCLUDE_QUALIFIERS,
2128 request->includeClassOrigin,
|
2129 mark.hamzy 1.24 jPropertyList);
|
2130 mark.hamzy 1.25
|
2131 mark.hamzy 1.23 JMPIjvm::checkException(env);
2132
2133 STAT_PMS_PROVIDEREND;
2134
2135 handler.processing();
|
2136 mark.hamzy 1.24 if (jVec) {
|
2137 mark.hamzy 1.29 for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) {
|
2138 mark.hamzy 1.23 JMPIjvm::checkException(env);
2139
|
2140 mark.hamzy 1.29 jobject jciRet = env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i);
|
2141 mark.hamzy 1.24
|
2142 mark.hamzy 1.23 JMPIjvm::checkException(env);
2143
|
2144 mark.hamzy 1.29 jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst);
2145 CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef);
2146 CIMClass cls = pr._cimom_handle->getClass(context,
2147 request->nameSpace,
2148 ciRet->getClassName(),
2149 false,
2150 true,
2151 true,
2152 CIMPropertyList());
2153 const CIMObjectPath& op = ciRet->getPath();
2154 CIMObjectPath iop = ciRet->buildPath(cls);
|
2155 mark.hamzy 1.24
|
2156 mark.hamzy 1.27 JMPIjvm::checkException(env);
2157
|
2158 mark.hamzy 1.23 iop.setNameSpace(op.getNameSpace());
|
2159 mark.hamzy 1.29 ciRet->setPath(iop);
|
2160 schuur 1.13
|
2161 mark.hamzy 1.29 handler.deliver(*ciRet);
|
2162 mark.hamzy 1.23 }
2163 }
|
2164 mark.hamzy 1.24 handler.complete();
2165 break;
2166 }
2167
2168 case METHOD_UNKNOWN:
2169 {
2170 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorsRequest: should not be here!"<<PEGASUS_STD(endl));
2171 break;
2172 }
|
2173 mark.hamzy 1.23 }
|
2174 schuur 1.1 }
2175 HandlerCatch(handler);
|
2176 schuur 1.13
2177 if (env) JMPIjvm::detachThread();
2178
|
2179 schuur 1.1 PEG_METHOD_EXIT();
2180
|
2181 w.white 1.31 STAT_COPYDISPATCHER
2182
|
2183 schuur 1.1 return(response);
2184 }
|
2185 schuur 1.13
|
2186 schuur 1.1 Message * JMPIProviderManager::handleAssociatorNamesRequest(const Message * message) throw()
2187 {
|
2188 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleAssociatorNamesRequest");
2189
2190 HandlerIntro(AssociatorNames,message,request,response,handler,Array<CIMObjectPath>());
|
2191 schuur 1.1
|
2192 mark.hamzy 1.24 typedef enum {
2193 METHOD_UNKNOWN = 0,
|
2194 mark.hamzy 1.25 METHOD_PEGASUS_24,
|
2195 mark.hamzy 1.24 METHOD_SNIA_PROVIDER20
2196 } METHOD_VERSION;
2197 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
2198 JNIEnv *env = NULL;
|
2199 schuur 1.13
|
2200 schuur 1.1 try {
2201 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
2202 "JMPIProviderManager::handleAssociatorNamesRequest - Host name: $0 Name space: $1 Class name: $2",
2203 System::getHostName(),
2204 request->nameSpace.getString(),
2205 request->objectName.getClassName().getString());
2206
|
2207 mark.hamzy 1.29 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->objectName.getClassName().getString()<<", assocName = "<<request->assocClass.getString()<<PEGASUS_STD(endl));
|
2208 mark.hamzy 1.23
|
2209 schuur 1.1 // make target object path
|
2210 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
2211 request->nameSpace,
2212 request->objectName.getClassName(),
2213 request->objectName.getKeyBindings());
2214 CIMObjectPath *assocPath = new CIMObjectPath (System::getHostName(),
2215 request->nameSpace,
2216 request->assocClass.getString());
|
2217 mark.hamzy 1.23
|
2218 schuur 1.1 // resolve provider name
|
2219 kumpf 1.2 ProviderName name = _resolveProviderName(
2220 request->operationContext.get(ProviderIdContainer::NAME));
|
2221 schuur 1.1
2222 // get cached or load new provider module
2223 JMPIProvider::OpProviderHolder ph =
2224 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
2225
2226 // convert arguments
2227 OperationContext context;
2228
|
2229 mark.hamzy 1.23 context.insert(request->operationContext.get(IdentityContainer::NAME));
2230 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
2231 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
|
2232 schuur 1.1
2233 // forward request
|
2234 mark.hamzy 1.24 JMPIProvider &pr = ph.GetProvider();
|
2235 schuur 1.1
|
2236 mark.hamzy 1.24 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.associatorNames: " + pr.getName());
|
2237 schuur 1.1
|
2238 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: Calling provider associatorNames: "<<pr.getName()<<", role: "<<request->role<<", aCls: "<<request->assocClass<<PEGASUS_STD(endl));
|
2239 schuur 1.1
|
2240 mark.hamzy 1.24 JvmVector *jv = 0;
2241
2242 env = JMPIjvm::attachThread(&jv);
|
2243 schuur 1.1
2244 JMPIProvider::pm_service_op_lock op_lock(&pr);
2245
2246 STAT_GETSTARTTIME;
2247
|
2248 mark.hamzy 1.24 jmethodID id = NULL;
2249
2250 // public abstract java.util.Vector associatorNames (org.pegasus.jmpi.CIMObjectPath assocName,
|
2251 mark.hamzy 1.25 // org.pegasus.jmpi.CIMObjectPath pathName,
|
2252 mark.hamzy 1.24 // java.lang.String resultClass,
2253 // java.lang.String role,
2254 // java.lang.String resultRole)
2255 // throws org.pegasus.jmpi.CIMException
2256 id = env->GetMethodID((jclass)pr.jProviderClass,
2257 "associatorNames",
|
2258 mark.hamzy 1.25 "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;");
2259 //@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath; Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;"
|
2260 mark.hamzy 1.24
2261 if (id != NULL)
2262 {
|
2263 mark.hamzy 1.25 eMethodFound = METHOD_SNIA_PROVIDER20;
2264 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
|
2265 mark.hamzy 1.24 }
2266
2267 if (id == NULL)
2268 {
2269 env->ExceptionClear();
2270
2271 // public abstract java.util.Vector associatorNames (org.pegasus.jmpi.CIMObjectPath assocName,
2272 // java.lang.String resultClass,
2273 // java.lang.String role,
2274 // java.lang.String resultRole)
2275 // throws org.pegasus.jmpi.CIMException
2276 id = env->GetMethodID((jclass)pr.jProviderClass,
2277 "associatorNames",
|
2278 mark.hamzy 1.25 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Vector;");
2279 //@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMObjectPath;"
|
2280 mark.hamzy 1.24
2281 if (id != NULL)
2282 {
|
2283 mark.hamzy 1.25 eMethodFound = METHOD_PEGASUS_24;
2284 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
|
2285 mark.hamzy 1.24 }
2286 }
|
2287 schuur 1.13
|
2288 mark.hamzy 1.24 if (id == NULL)
2289 {
2290 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: found no method!"<<PEGASUS_STD(endl));
|
2291 mark.hamzy 1.23 }
|
2292 mark.hamzy 1.24
|
2293 schuur 1.1 JMPIjvm::checkException(env);
2294
|
2295 mark.hamzy 1.24 switch (eMethodFound)
2296 {
|
2297 mark.hamzy 1.25 case METHOD_PEGASUS_24:
|
2298 mark.hamzy 1.24 {
|
2299 mark.hamzy 1.29 jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, assocPath);
|
2300 mark.hamzy 1.25 jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
2301
2302 JMPIjvm::checkException(env);
2303
2304 jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString());
2305 jstring jRole = env->NewStringUTF(request->role.getCString());
2306 jstring jResultRole = env->NewStringUTF(request->resultRole.getCString());
2307
2308 JMPIjvm::checkException(env);
2309
|
2310 mark.hamzy 1.29 #ifdef PEGASUS_DEBUG
2311 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: assocName = "<<assocPath->toString ()<<PEGASUS_STD(endl));
2312 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: resultClass = "<<request->resultClass<<PEGASUS_STD(endl));
2313 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: role = "<<request->role<<PEGASUS_STD(endl));
2314 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: resultRole = "<<request->resultRole<<PEGASUS_STD(endl));
2315 #endif
2316
|
2317 mark.hamzy 1.24 jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
2318 id,
2319 jAssociationName,
2320 jResultClass,
2321 jRole,
2322 jResultRole);
|
2323 mark.hamzy 1.25
|
2324 mark.hamzy 1.23 JMPIjvm::checkException(env);
2325
2326 STAT_PMS_PROVIDEREND;
2327
2328 handler.processing();
2329 if (jVec) {
|
2330 mark.hamzy 1.24 for (int i=0,m=env->GetArrayLength(jVec); i<m; i++) {
|
2331 mark.hamzy 1.23 JMPIjvm::checkException(env);
2332
|
2333 mark.hamzy 1.29 jobject jcopRet = env->GetObjectArrayElement(jVec,i);
|
2334 mark.hamzy 1.24
|
2335 mark.hamzy 1.23 JMPIjvm::checkException(env);
2336
|
2337 mark.hamzy 1.29 jint jcopRetRef = env->CallIntMethod(jcopRet,JMPIjvm::jv.CIMObjectPathCInst);
2338 CIMObjectPath *copRet = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jcopRet);
|
2339 mark.hamzy 1.23
2340 JMPIjvm::checkException(env);
2341
|
2342 mark.hamzy 1.29 handler.deliver(*copRet);
|
2343 mark.hamzy 1.23 }
2344 }
2345 handler.complete();
|
2346 mark.hamzy 1.24 break;
|
2347 mark.hamzy 1.23 }
|
2348 mark.hamzy 1.24
2349 case METHOD_SNIA_PROVIDER20:
2350 {
|
2351 mark.hamzy 1.29 jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, assocPath);
|
2352 mark.hamzy 1.25 jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
2353
2354 JMPIjvm::checkException(env);
2355
|
2356 mark.hamzy 1.29 jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
|
2357 mark.hamzy 1.24 jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);
2358
2359 JMPIjvm::checkException(env);
2360
|
2361 mark.hamzy 1.25 jstring jResultClass = env->NewStringUTF(request->resultClass.getString().getCString());
2362 jstring jRole = env->NewStringUTF(request->role.getCString());
2363 jstring jResultRole = env->NewStringUTF(request->resultRole.getCString());
2364
2365 JMPIjvm::checkException(env);
2366
|
2367 mark.hamzy 1.29 #ifdef PEGASUS_DEBUG
2368 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: assocName = "<<assocPath->toString ()<<PEGASUS_STD(endl));
2369 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: pathName = "<<objectPath->toString ()<<PEGASUS_STD(endl));
2370 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: resultClass = "<<request->resultClass<<PEGASUS_STD(endl));
2371 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: role = "<<request->role<<PEGASUS_STD(endl));
2372 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: resultRole = "<<request->resultRole<<PEGASUS_STD(endl));
2373 #endif
2374
|
2375 mark.hamzy 1.24 jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
2376 id,
2377 jAssociationName,
|
2378 mark.hamzy 1.29 jPathName,
|
2379 mark.hamzy 1.24 jResultClass,
2380 jRole,
2381 jResultRole);
|
2382 mark.hamzy 1.25
|
2383 mark.hamzy 1.23 JMPIjvm::checkException(env);
2384
2385 STAT_PMS_PROVIDEREND;
|
2386 schuur 1.13
|
2387 mark.hamzy 1.23 handler.processing();
|
2388 mark.hamzy 1.24 if (jVec) {
|
2389 mark.hamzy 1.29 for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) {
|
2390 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
2391 schuur 1.13
|
2392 mark.hamzy 1.29 jobject jcopRet = env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i);
|
2393 mark.hamzy 1.24
|
2394 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
2395 schuur 1.13
|
2396 mark.hamzy 1.29 jint jcopRetRef = env->CallIntMethod(jcopRet,JMPIjvm::jv.CIMObjectPathCInst);
2397 CIMObjectPath *copRet = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jcopRetRef);
|
2398 schuur 1.1
|
2399 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
2400 schuur 1.1
|
2401 mark.hamzy 1.29 handler.deliver(*copRet);
|
2402 mark.hamzy 1.23 }
2403 }
2404 handler.complete();
|
2405 mark.hamzy 1.24 break;
2406 }
2407
2408 case METHOD_UNKNOWN:
2409 {
2410 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleAssociatorNamesRequest: should not be here!"<<PEGASUS_STD(endl));
2411 break;
2412 }
|
2413 mark.hamzy 1.23 }
|
2414 schuur 1.1 }
2415 HandlerCatch(handler);
|
2416 schuur 1.12
|
2417 mark.hamzy 1.23 if (env) JMPIjvm::detachThread();
|
2418 schuur 1.12
|
2419 schuur 1.1 PEG_METHOD_EXIT();
2420
|
2421 w.white 1.31 STAT_COPYDISPATCHER
2422
|
2423 schuur 1.1 return(response);
2424 }
2425
2426 Message * JMPIProviderManager::handleReferencesRequest(const Message * message) throw()
2427 {
|
2428 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleReferencesRequest");
2429
2430 HandlerIntro(References,message,request,response,handler,Array<CIMObject>());
|
2431 schuur 1.1
|
2432 mark.hamzy 1.24 typedef enum {
2433 METHOD_UNKNOWN = 0,
|
2434 mark.hamzy 1.25 METHOD_PEGASUS_24,
|
2435 mark.hamzy 1.24 METHOD_SNIA_PROVIDER20,
2436 } METHOD_VERSION;
2437 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
2438 JNIEnv *env = NULL;
|
2439 schuur 1.13
|
2440 schuur 1.1 try {
2441 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
|
2442 konrad.r 1.15 "JMPIProviderManager::handleReferencesRequest - Host name: $0 Name space: $1 Class name: $2",
|
2443 schuur 1.1 System::getHostName(),
2444 request->nameSpace.getString(),
2445 request->objectName.getClassName().getString());
2446
|
2447 mark.hamzy 1.29 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->objectName.getClassName().getString()<<", result = "<<request->resultClass.getString()<<PEGASUS_STD(endl));
|
2448 mark.hamzy 1.23
|
2449 schuur 1.1 // make target object path
|
2450 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
2451 request->nameSpace,
2452 request->objectName.getClassName(),
2453 request->objectName.getKeyBindings());
2454 CIMObjectPath *resultPath = new CIMObjectPath (System::getHostName(),
2455 request->nameSpace,
2456 request->resultClass.getString());
|
2457 schuur 1.1
2458 // resolve provider name
|
2459 kumpf 1.2 ProviderName name = _resolveProviderName(
2460 request->operationContext.get(ProviderIdContainer::NAME));
|
2461 schuur 1.1
2462 // get cached or load new provider module
2463 JMPIProvider::OpProviderHolder ph =
2464 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
2465
2466 // convert arguments
2467 OperationContext context;
2468
|
2469 schuur 1.12 context.insert(request->operationContext.get(IdentityContainer::NAME));
2470 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
2471 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
|
2472 schuur 1.1
2473 // forward request
|
2474 mark.hamzy 1.24 JMPIProvider &pr = ph.GetProvider();
2475
2476 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.references: " + pr.getName());
|
2477 schuur 1.1
|
2478 mark.hamzy 1.24 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: Calling provider references: "<<pr.getName()<<", role: "<<request->role<<" aCls: "<<request->resultClass<<PEGASUS_STD(endl));
|
2479 schuur 1.1
|
2480 mark.hamzy 1.24 JvmVector *jv = 0;
|
2481 schuur 1.1
|
2482 mark.hamzy 1.24 env = JMPIjvm::attachThread(&jv);
|
2483 schuur 1.1
2484 JMPIProvider::pm_service_op_lock op_lock(&pr);
2485
2486 STAT_GETSTARTTIME;
2487
|
2488 mark.hamzy 1.24 jmethodID id = NULL;
2489
2490 // public abstract java.util.Vector references (org.pegasus.jmpi.CIMObjectPath assocName,
|
2491 mark.hamzy 1.25 // org.pegasus.jmpi.CIMObjectPath pathName,
|
2492 mark.hamzy 1.24 // java.lang.String role,
2493 // boolean includeQualifiers,
2494 // boolean includeClassOrigin,
2495 // java.lang.String[] propertyList)
2496 // throws org.pegasus.jmpi.CIMException
2497 id = env->GetMethodID((jclass)pr.jProviderClass,
2498 "references",
|
2499 mark.hamzy 1.25 "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");
2500 //@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath; Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;"
|
2501 mark.hamzy 1.24
2502 if (id != NULL)
2503 {
|
2504 mark.hamzy 1.25 eMethodFound = METHOD_SNIA_PROVIDER20;
2505 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
|
2506 mark.hamzy 1.24 }
2507
2508 if (id == NULL)
2509 {
2510 env->ExceptionClear();
2511
2512 // public abstract java.util.Vector references (org.pegasus.jmpi.CIMObjectPath assocName,
2513 // java.lang.String role,
2514 // boolean includeQualifiers,
2515 // boolean includeClassOrigin,
2516 // java.lang.String[] propertyList)
2517 // throws org.pegasus.jmpi.CIMException
2518 id = env->GetMethodID((jclass)pr.jProviderClass,
2519 "references",
|
2520 mark.hamzy 1.25 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)Ljava/util/Vector;");
2521 //@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;ZZ[Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMInstance;"
|
2522 mark.hamzy 1.24
2523 if (id != NULL)
2524 {
|
2525 mark.hamzy 1.25 eMethodFound = METHOD_PEGASUS_24;
2526 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
|
2527 mark.hamzy 1.24 }
2528 }
|
2529 schuur 1.12
|
2530 mark.hamzy 1.24 if (id == NULL)
2531 {
|
2532 mark.hamzy 1.25 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: found no method!"<<PEGASUS_STD(endl));
|
2533 mark.hamzy 1.23 }
|
2534 mark.hamzy 1.24
|
2535 schuur 1.1 JMPIjvm::checkException(env);
2536
|
2537 mark.hamzy 1.24 switch (eMethodFound)
2538 {
|
2539 mark.hamzy 1.25 case METHOD_PEGASUS_24:
|
2540 mark.hamzy 1.24 {
|
2541 mark.hamzy 1.29 jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, resultPath);
|
2542 mark.hamzy 1.25 jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
2543
2544 JMPIjvm::checkException(env);
2545
2546 jstring jRole = env->NewStringUTF(request->role.getCString());
2547
2548 JMPIjvm::checkException(env);
2549
2550 jobjectArray jPropertyList = getList(jv,env,request->propertyList);
2551
|
2552 mark.hamzy 1.29 #ifdef PEGASUS_DEBUG
2553 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferencesRequest: assocName = "<<resultPath->toString ()<<PEGASUS_STD(endl));
2554 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferencesRequest: role = "<<request->role<<PEGASUS_STD(endl));
2555 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferencesRequest: includeQualifiers = "<<false<<PEGASUS_STD(endl));
2556 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferencesRequest: includeClassOrigin = "<<false<<PEGASUS_STD(endl));
2557 #endif
2558
|
2559 mark.hamzy 1.24 jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
2560 id,
2561 jAssociationName,
2562 jRole,
2563 false,
2564 false,
2565 jPropertyList);
|
2566 mark.hamzy 1.25
|
2567 mark.hamzy 1.23 JMPIjvm::checkException(env);
2568
2569 STAT_PMS_PROVIDEREND;
2570
2571 handler.processing();
2572 if (jVec) {
|
2573 mark.hamzy 1.24 for (int i=0,m=env->GetArrayLength(jVec); i<m; i++) {
|
2574 mark.hamzy 1.23 JMPIjvm::checkException(env);
2575
|
2576 mark.hamzy 1.29 jobject jciRet = env->GetObjectArrayElement(jVec,i);
|
2577 mark.hamzy 1.24
|
2578 mark.hamzy 1.23 JMPIjvm::checkException(env);
2579
|
2580 mark.hamzy 1.29 jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst);
|
2581 mark.hamzy 1.23
2582 JMPIjvm::checkException(env);
2583
|
2584 mark.hamzy 1.29 CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef);
2585 CIMClass cls = pr._cimom_handle->getClass(context,
2586 request->nameSpace,
2587 ciRet->getClassName(),
2588 false,
2589 true,
2590 true,
2591 CIMPropertyList());
2592 const CIMObjectPath& op = ciRet->getPath();
2593 CIMObjectPath iop = ciRet->buildPath(cls);
|
2594 mark.hamzy 1.24
|
2595 mark.hamzy 1.27 JMPIjvm::checkException(env);
2596
|
2597 mark.hamzy 1.23 iop.setNameSpace(op.getNameSpace());
|
2598 mark.hamzy 1.29 ciRet->setPath(iop);
|
2599 schuur 1.13
|
2600 mark.hamzy 1.29 handler.deliver(*ciRet);
|
2601 mark.hamzy 1.23 }
2602 }
2603 handler.complete();
|
2604 mark.hamzy 1.24 break;
|
2605 mark.hamzy 1.23 }
|
2606 schuur 1.1
|
2607 mark.hamzy 1.24 case METHOD_SNIA_PROVIDER20:
2608 {
|
2609 mark.hamzy 1.29 jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, resultPath);
|
2610 mark.hamzy 1.25 jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
2611
2612 JMPIjvm::checkException(env);
2613
|
2614 mark.hamzy 1.29 jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
|
2615 mark.hamzy 1.24 jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);
2616
2617 JMPIjvm::checkException(env);
2618
|
2619 mark.hamzy 1.25 jstring jRole = env->NewStringUTF(request->role.getCString());
2620
2621 JMPIjvm::checkException(env);
2622
2623 jobjectArray jPropertyList = getList(jv,env,request->propertyList);
2624
|
2625 mark.hamzy 1.29 #ifdef PEGASUS_DEBUG
2626 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferencesRequest: assocName = "<<resultPath->toString ()<<PEGASUS_STD(endl));
2627 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferencesRequest: pathName = "<<objectPath->toString ()<<PEGASUS_STD(endl));
2628 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferencesRequest: role = "<<request->role<<PEGASUS_STD(endl));
2629 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferencesRequest: includeQualifiers = "<<false<<PEGASUS_STD(endl));
2630 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferencesRequest: includeClassOrigin = "<<false<<PEGASUS_STD(endl));
2631 #endif
2632
|
2633 mark.hamzy 1.24 jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
2634 id,
2635 jAssociationName,
2636 jPathName,
2637 jRole,
|
2638 mark.hamzy 1.32 JMPI_INCLUDE_QUALIFIERS,
2639 request->includeClassOrigin,
|
2640 mark.hamzy 1.24 jPropertyList);
|
2641 mark.hamzy 1.25
|
2642 mark.hamzy 1.24 JMPIjvm::checkException(env);
2643
2644 STAT_PMS_PROVIDEREND;
2645
2646 handler.processing();
2647 if (jVec) {
|
2648 mark.hamzy 1.29 for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) {
|
2649 mark.hamzy 1.24 JMPIjvm::checkException(env);
2650
|
2651 mark.hamzy 1.29 jobject jciRet = env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i);
|
2652 mark.hamzy 1.24
2653 JMPIjvm::checkException(env);
2654
|
2655 mark.hamzy 1.29 jint jciRetRef = env->CallIntMethod(jciRet,JMPIjvm::jv.CIMInstanceCInst);
2656 CIMInstance *ciRet = DEBUG_ConvertJavaToC (jint, CIMInstance*, jciRetRef);
2657 CIMClass cls = pr._cimom_handle->getClass(context,
2658 request->nameSpace,
2659 ciRet->getClassName(),
2660 false,
2661 true,
2662 true,
2663 CIMPropertyList());
2664 const CIMObjectPath& op = ciRet->getPath();
2665 CIMObjectPath iop = ciRet->buildPath(cls);
|
2666 schuur 1.1
|
2667 mark.hamzy 1.27 JMPIjvm::checkException(env);
2668
|
2669 mark.hamzy 1.24 iop.setNameSpace(op.getNameSpace());
|
2670 mark.hamzy 1.29 ciRet->setPath(iop);
|
2671 schuur 1.12
|
2672 mark.hamzy 1.29 handler.deliver(*ciRet);
|
2673 mark.hamzy 1.24 }
2674 }
2675 handler.complete();
2676 break;
2677 }
|
2678 mark.hamzy 1.23
|
2679 mark.hamzy 1.24 case METHOD_UNKNOWN:
2680 {
|
2681 mark.hamzy 1.25 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferencesRequest: should not be here!"<<PEGASUS_STD(endl));
|
2682 mark.hamzy 1.24 break;
2683 }
|
2684 mark.hamzy 1.23 }
|
2685 schuur 1.1 }
2686 HandlerCatch(handler);
|
2687 schuur 1.12
2688 if (env) JMPIjvm::detachThread();
2689
|
2690 schuur 1.1 PEG_METHOD_EXIT();
2691
|
2692 w.white 1.31 STAT_COPYDISPATCHER
2693
|
2694 schuur 1.1 return(response);
2695 }
2696
2697 Message * JMPIProviderManager::handleReferenceNamesRequest(const Message * message) throw()
2698 {
|
2699 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleReferenceNamesRequest");
2700
2701 HandlerIntro(ReferenceNames,message,request,response,handler,Array<CIMObjectPath>());
|
2702 schuur 1.1
|
2703 mark.hamzy 1.24 typedef enum {
2704 METHOD_UNKNOWN = 0,
|
2705 mark.hamzy 1.25 METHOD_PEGASUS_24,
|
2706 mark.hamzy 1.24 METHOD_SNIA_PROVIDER20,
2707 } METHOD_VERSION;
2708 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
2709 JNIEnv *env = NULL;
|
2710 schuur 1.13
|
2711 schuur 1.1 try {
2712 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
2713 "JMPIProviderManager::handleReferenceNamesRequest - Host name: $0 Name space: $1 Class name: $2",
2714 System::getHostName(),
2715 request->nameSpace.getString(),
2716 request->objectName.getClassName().getString());
2717
|
2718 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->objectName.getClassName().getString()<<PEGASUS_STD(endl));
2719
|
2720 schuur 1.1 // make target object path
|
2721 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
2722 request->nameSpace,
2723 request->objectName.getClassName(),
2724 request->objectName.getKeyBindings());
2725 CIMObjectPath *resultPath = new CIMObjectPath (System::getHostName(),
2726 request->nameSpace,
2727 request->resultClass.getString());
|
2728 schuur 1.1
2729 // resolve provider name
|
2730 kumpf 1.2 ProviderName name = _resolveProviderName(
2731 request->operationContext.get(ProviderIdContainer::NAME));
|
2732 schuur 1.1
2733 // get cached or load new provider module
2734 JMPIProvider::OpProviderHolder ph =
2735 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
2736
2737 // convert arguments
2738 OperationContext context;
2739
|
2740 schuur 1.11 context.insert(request->operationContext.get(IdentityContainer::NAME));
2741 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
2742 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
|
2743 schuur 1.1
|
2744 mark.hamzy 1.24 JMPIProvider &pr = ph.GetProvider();
|
2745 schuur 1.1
|
2746 mark.hamzy 1.25 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.referenceNames: " + pr.getName());
|
2747 schuur 1.1
|
2748 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: Calling provider referenceNames: "<<pr.getName()<<", role: "<<request->role<<", aCls: "<<request->resultClass<<PEGASUS_STD(endl));
|
2749 schuur 1.12
|
2750 mark.hamzy 1.24 JvmVector *jv = 0;
2751
2752 env = JMPIjvm::attachThread(&jv);
|
2753 schuur 1.1
2754 JMPIProvider::pm_service_op_lock op_lock(&pr);
2755
2756 STAT_GETSTARTTIME;
2757
|
2758 mark.hamzy 1.24 jmethodID id = NULL;
2759
2760 // public abstract java.util.Vector referenceNames (org.pegasus.jmpi.CIMObjectPath assocName,
|
2761 mark.hamzy 1.25 // org.pegasus.jmpi.CIMObjectPath pathName,
|
2762 mark.hamzy 1.24 // java.lang.String role)
|
2763 mark.hamzy 1.25 // throws org.pegasus.jmpi.CIMException
|
2764 mark.hamzy 1.24 id = env->GetMethodID((jclass)pr.jProviderClass,
2765 "referenceNames",
|
2766 mark.hamzy 1.25 "(Lorg/pegasus/jmpi/CIMObjectPath;Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;");
2767 //@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath; Ljava/lang/String;)Ljava/util/Vector;"
|
2768 mark.hamzy 1.24
2769 if (id != NULL)
2770 {
|
2771 mark.hamzy 1.25 eMethodFound = METHOD_SNIA_PROVIDER20;
2772 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
|
2773 mark.hamzy 1.24 }
2774
2775 if (id == NULL)
2776 {
2777 env->ExceptionClear();
2778
2779 // public abstract java.util.Vector referenceNames (org.pegasus.jmpi.CIMObjectPath assocName,
2780 // java.lang.String role)
|
2781 mark.hamzy 1.25 // throws org.pegasus.jmpi.CIMException
|
2782 mark.hamzy 1.24 id = env->GetMethodID((jclass)pr.jProviderClass,
2783 "referenceNames",
|
2784 mark.hamzy 1.25 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)Ljava/util/Vector;");
2785 //@BUG was: "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;)[Lorg/pegasus/jmpi/CIMObjectPath;"
|
2786 mark.hamzy 1.24
2787 if (id != NULL)
2788 {
|
2789 mark.hamzy 1.25 eMethodFound = METHOD_PEGASUS_24;
2790 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
|
2791 mark.hamzy 1.24 }
2792 }
|
2793 schuur 1.11
|
2794 mark.hamzy 1.24 if (id == NULL)
2795 {
|
2796 mark.hamzy 1.25 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: found no method!"<<PEGASUS_STD(endl));
|
2797 mark.hamzy 1.23 }
|
2798 mark.hamzy 1.24
|
2799 schuur 1.1 JMPIjvm::checkException(env);
2800
|
2801 mark.hamzy 1.24 switch (eMethodFound)
2802 {
|
2803 mark.hamzy 1.25 case METHOD_PEGASUS_24:
|
2804 mark.hamzy 1.24 {
|
2805 mark.hamzy 1.29 jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, resultPath);
|
2806 mark.hamzy 1.25 jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
2807
2808 JMPIjvm::checkException(env);
2809
2810 jstring jRole = env->NewStringUTF(request->role.getCString());
2811
2812 JMPIjvm::checkException(env);
2813
|
2814 mark.hamzy 1.29 #ifdef PEGASUS_DEBUG
2815 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferenceNamesRequest: assocName = "<<objectPath->toString ()<<PEGASUS_STD(endl));
2816 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferenceNamesRequest: role = "<<request->role<<PEGASUS_STD(endl));
2817 #endif
2818
|
2819 mark.hamzy 1.24 jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
2820 id,
2821 jAssociationName,
2822 jRole);
|
2823 mark.hamzy 1.25
|
2824 mark.hamzy 1.23 JMPIjvm::checkException(env);
2825
2826 STAT_PMS_PROVIDEREND;
2827
2828 handler.processing();
2829 if (jVec) {
|
2830 mark.hamzy 1.24 for (int i=0,m=env->GetArrayLength(jVec); i<m; i++) {
|
2831 mark.hamzy 1.23 JMPIjvm::checkException(env);
2832
|
2833 mark.hamzy 1.29 jobject jcopRet = env->GetObjectArrayElement(jVec,i);
|
2834 mark.hamzy 1.24
|
2835 mark.hamzy 1.23 JMPIjvm::checkException(env);
2836
|
2837 mark.hamzy 1.29 jint jcopRetRef = env->CallIntMethod(jcopRet,JMPIjvm::jv.CIMObjectPathCInst);
|
2838 mark.hamzy 1.23
2839 JMPIjvm::checkException(env);
2840
|
2841 mark.hamzy 1.29 CIMObjectPath *copRet = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jcopRetRef);
|
2842 mark.hamzy 1.24
|
2843 mark.hamzy 1.29 handler.deliver(*copRet);
|
2844 mark.hamzy 1.23 }
2845 }
2846 handler.complete();
|
2847 mark.hamzy 1.24 break;
|
2848 mark.hamzy 1.23 }
|
2849 mark.hamzy 1.24
2850 case METHOD_SNIA_PROVIDER20:
2851 {
|
2852 mark.hamzy 1.29 jint jAssociationNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, resultPath);
|
2853 mark.hamzy 1.25 jobject jAssociationName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jAssociationNameRef);
2854
2855 JMPIjvm::checkException(env);
2856
|
2857 mark.hamzy 1.29 jint jPathNameRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
|
2858 mark.hamzy 1.24 jobject jPathName = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jPathNameRef);
2859
2860 JMPIjvm::checkException(env);
2861
|
2862 mark.hamzy 1.25 jstring jRole = env->NewStringUTF(request->role.getCString());
2863
2864 JMPIjvm::checkException(env);
2865
|
2866 mark.hamzy 1.29 #ifdef PEGASUS_DEBUG
2867 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferenceNamesRequest: assocName = "<<objectPath->toString ()<<PEGASUS_STD(endl));
2868 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferenceNamesRequest: pathName = "<<resultPath->toString ()<<PEGASUS_STD(endl));
2869 DDD(PEGASUS_STD(cerr)<<"--- JMPIProviderManager::handleReferenceNamesRequest: role = "<<request->role<<PEGASUS_STD(endl));
2870 #endif
2871
|
2872 mark.hamzy 1.24 jobjectArray jVec=(jobjectArray)env->CallObjectMethod((jobject)pr.jProvider,
2873 id,
2874 jAssociationName,
2875 jPathName,
2876 jRole);
|
2877 mark.hamzy 1.25
|
2878 mark.hamzy 1.23 JMPIjvm::checkException(env);
2879
2880 STAT_PMS_PROVIDEREND;
|
2881 schuur 1.13
|
2882 mark.hamzy 1.23 handler.processing();
|
2883 mark.hamzy 1.24 if (jVec) {
|
2884 mark.hamzy 1.29 for (int i=0,m=env->CallIntMethod(jVec,JMPIjvm::jv.VectorSize); i<m; i++) {
|
2885 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
2886 schuur 1.13
|
2887 mark.hamzy 1.29 jobject jcopRet = env->CallObjectMethod(jVec,JMPIjvm::jv.VectorElementAt,i);
|
2888 mark.hamzy 1.24
|
2889 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
2890 schuur 1.13
|
2891 mark.hamzy 1.29 jint jcopRetRef = env->CallIntMethod(jcopRet,JMPIjvm::jv.CIMObjectPathCInst);
|
2892 schuur 1.1
|
2893 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
2894 schuur 1.1
|
2895 mark.hamzy 1.29 CIMObjectPath *copRet = DEBUG_ConvertJavaToC (jint, CIMObjectPath*, jcopRetRef);
|
2896 mark.hamzy 1.24
|
2897 mark.hamzy 1.29 handler.deliver(*copRet);
|
2898 mark.hamzy 1.23 }
2899 }
2900 handler.complete();
|
2901 mark.hamzy 1.24 break;
2902 }
2903
2904 case METHOD_UNKNOWN:
2905 {
|
2906 mark.hamzy 1.25 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleReferenceNamesRequest: should not be here!"<<PEGASUS_STD(endl));
|
2907 mark.hamzy 1.24 break;
2908 }
|
2909 mark.hamzy 1.23 }
|
2910 schuur 1.1 }
2911 HandlerCatch(handler);
|
2912 schuur 1.11
2913 if (env) JMPIjvm::detachThread();
2914
|
2915 schuur 1.1 PEG_METHOD_EXIT();
2916
|
2917 w.white 1.31 STAT_COPYDISPATCHER
2918
|
2919 schuur 1.1 return(response);
2920 }
2921
|
2922 mark.hamzy 1.26 Message * JMPIProviderManager::handleGetPropertyRequest(const Message * message) throw()
2923 {
2924 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleGetPropertyRequest");
2925
2926 HandlerIntro(GetProperty,message,request,response,handler,CIMValue());
2927
2928 typedef enum {
2929 METHOD_UNKNOWN = 0,
2930 METHOD_SNIA_PROVIDER20,
2931 } METHOD_VERSION;
2932 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
2933 JNIEnv *env = NULL;
2934
2935 try {
2936 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
2937 "JMPIProviderManager::handleGetPropertyRequest - Host name: $0 Name space: $1 Class name: $2",
2938 System::getHostName(),
2939 request->nameSpace.getString(),
2940 request->instanceName.getClassName().getString());
2941
2942 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetPropertyRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->className.getString()<<PEGASUS_STD(endl));
2943 mark.hamzy 1.26
2944 // make target object path
|
2945 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
2946 request->nameSpace,
2947 request->instanceName.getClassName(),
2948 request->instanceName.getKeyBindings());
|
2949 mark.hamzy 1.26
2950 // resolve provider name
2951 ProviderName name = _resolveProviderName(
2952 request->operationContext.get(ProviderIdContainer::NAME));
2953
2954 // get cached or load new provider module
2955 JMPIProvider::OpProviderHolder ph =
2956 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
2957
2958 // convert arguments
2959 OperationContext context;
2960
2961 context.insert(request->operationContext.get(IdentityContainer::NAME));
2962 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
2963 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
2964
2965 // forward request
2966 JMPIProvider &pr = ph.GetProvider();
2967
2968 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.getPropertyValue: " + pr.getName());
2969
2970 mark.hamzy 1.26 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetPropertyRequest: Calling provider getPropertyValue: "<<pr.getName()<<PEGASUS_STD(endl));
2971
2972 JvmVector *jv = 0;
2973
2974 env = JMPIjvm::attachThread(&jv);
2975
2976 JMPIProvider::pm_service_op_lock op_lock(&pr);
2977
2978 STAT_GETSTARTTIME;
2979
2980 jmethodID id = NULL;
2981
2982 // public abstract org.pegasus.jmpi.CIMValue getPropertyValue (org.pegasus.jmpi.CIMObjectPath cop,
2983 // java.lang.String oclass,
2984 // java.lang.String pName)
2985 // throws org.pegasus.jmpi.CIMException
2986 //
2987 id = env->GetMethodID((jclass)pr.jProviderClass,
2988 "getPropertyValue",
2989 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;)Lorg/pegasus/jmpi/CIMValue;");
2990
2991 mark.hamzy 1.26 if (id != NULL)
2992 {
2993 eMethodFound = METHOD_SNIA_PROVIDER20;
2994 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetPropertyRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
2995 }
2996
2997 if (id == NULL)
2998 {
2999 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetPropertyRequest: found no method!"<<PEGASUS_STD(endl));
3000 }
3001
3002 JMPIjvm::checkException(env);
3003
3004 switch (eMethodFound)
3005 {
3006 case METHOD_SNIA_PROVIDER20:
3007 {
|
3008 mark.hamzy 1.27 jint jcopref = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
|
3009 mark.hamzy 1.26 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef, jv->CIMObjectPathNewI, jcopref);
3010
3011 JMPIjvm::checkException(env);
3012
3013 jstring joclass = env->NewStringUTF(request->instanceName.getClassName().getString().getCString());
3014
3015 JMPIjvm::checkException(env);
3016
3017 jstring jpName = env->NewStringUTF(request->propertyName.getString().getCString());
3018
3019 JMPIjvm::checkException(env);
3020
3021 STAT_GETSTARTTIME;
3022
|
3023 mark.hamzy 1.29 jobject jvalRet = env->CallObjectMethod ((jobject)pr.jProvider,
3024 id,
3025 jcop,
3026 joclass,
3027 jpName);
|
3028 mark.hamzy 1.26
3029 JMPIjvm::checkException(env);
3030
3031 STAT_PMS_PROVIDEREND;
3032
3033 handler.processing();
3034
|
3035 mark.hamzy 1.29 if (jvalRet)
|
3036 mark.hamzy 1.26 {
|
3037 mark.hamzy 1.29 jint jvalRetRef = env->CallIntMethod(jvalRet,JMPIjvm::jv.CIMValueCInst);
3038 CIMValue *valRet = DEBUG_ConvertJavaToC (jint, CIMValue*, jvalRetRef);
|
3039 mark.hamzy 1.26
3040 JMPIjvm::checkException(env);
3041
|
3042 mark.hamzy 1.29 handler.deliver(*valRet);
|
3043 mark.hamzy 1.26 }
3044 handler.complete();
3045 break;
3046 }
3047
3048 case METHOD_UNKNOWN:
3049 {
3050 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleGetPropertyRequest: should not be here!"<<PEGASUS_STD(endl));
3051 break;
3052 }
3053 }
3054 }
3055 HandlerCatch(handler);
3056
3057 if (env) JMPIjvm::detachThread();
3058
3059 PEG_METHOD_EXIT();
3060
|
3061 w.white 1.31 STAT_COPYDISPATCHER
3062
|
3063 mark.hamzy 1.26 return(response);
3064 }
3065
3066 Message * JMPIProviderManager::handleSetPropertyRequest(const Message * message) throw()
3067 {
3068 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleSetPropertyRequest");
3069
3070 HandlerIntroVoid(SetProperty,message,request,response,handler);
3071
3072 typedef enum {
3073 METHOD_UNKNOWN = 0,
3074 METHOD_SNIA_PROVIDER20,
3075 } METHOD_VERSION;
3076 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
3077 JNIEnv *env = NULL;
3078
3079 try {
3080 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
3081 "JMPIProviderManager::handleSetPropertyRequest - Host name: $0 Name space: $1 Class name: $2",
3082 System::getHostName(),
3083 request->nameSpace.getString(),
3084 mark.hamzy 1.26 request->instanceName.getClassName().getString());
3085
3086 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleSetPropertyRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->className.getString()<<PEGASUS_STD(endl));
3087
3088 // make target object path
|
3089 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
3090 request->nameSpace,
3091 request->instanceName.getClassName(),
3092 request->instanceName.getKeyBindings());
|
3093 mark.hamzy 1.26
3094 // resolve provider name
3095 ProviderName name = _resolveProviderName(
3096 request->operationContext.get(ProviderIdContainer::NAME));
3097
3098 // get cached or load new provider module
3099 JMPIProvider::OpProviderHolder ph =
3100 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
3101
3102 // convert arguments
3103 OperationContext context;
3104
3105 context.insert(request->operationContext.get(IdentityContainer::NAME));
3106 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
3107 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
3108
3109 // forward request
3110 JMPIProvider &pr = ph.GetProvider();
3111
3112 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4,"Calling provider.setPropertyValue: " + pr.getName());
3113
3114 mark.hamzy 1.26 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleSetPropertyRequest: Calling provider setPropertyValue: "<<pr.getName()<<PEGASUS_STD(endl));
3115
3116 JvmVector *jv = 0;
3117
3118 env = JMPIjvm::attachThread(&jv);
3119
3120 JMPIProvider::pm_service_op_lock op_lock(&pr);
3121
3122 STAT_GETSTARTTIME;
3123
3124 jmethodID id = NULL;
3125
3126 // public abstract void setPropertyValue (org.pegasus.jmpi.CIMObjectPath cop,
3127 // java.lang.String oclass,
3128 // java.lang.String pName,
3129 // org.pegasus.jmpi.CIMValue val)
3130 // throws org.pegasus.jmpi.CIMException
3131 //
3132 id = env->GetMethodID((jclass)pr.jProviderClass,
3133 "setPropertyValue",
3134 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/lang/String;Lorg/pegasus/jmpi/CIMValue;)V");
3135 mark.hamzy 1.26
3136 if (id != NULL)
3137 {
3138 eMethodFound = METHOD_SNIA_PROVIDER20;
3139 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleSetPropertyRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
3140 }
3141
3142 if (id == NULL)
3143 {
3144 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleSetPropertyRequest: found no method!"<<PEGASUS_STD(endl));
3145 }
3146
3147 JMPIjvm::checkException(env);
3148
3149 switch (eMethodFound)
3150 {
3151 case METHOD_SNIA_PROVIDER20:
3152 {
|
3153 mark.hamzy 1.27 jint jcopref = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
|
3154 mark.hamzy 1.26 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef, jv->CIMObjectPathNewI, jcopref);
3155
3156 JMPIjvm::checkException(env);
3157
3158 jstring joclass = env->NewStringUTF(request->instanceName.getClassName().getString().getCString());
3159
3160 JMPIjvm::checkException(env);
3161
3162 jstring jpName = env->NewStringUTF(request->propertyName.getString().getCString());
3163
3164 JMPIjvm::checkException(env);
3165
|
3166 mark.hamzy 1.27 CIMValue *val = new CIMValue (request->newValue);
|
3167 mark.hamzy 1.26
3168 JMPIjvm::checkException(env);
3169
|
3170 mark.hamzy 1.27 jint jvalref = DEBUG_ConvertCToJava (CIMValue*, jint, val);
|
3171 mark.hamzy 1.26 jobject jval = env->NewObject(jv->CIMValueClassRef, jv->CIMValueNewI, jvalref);
3172
3173 JMPIjvm::checkException(env);
3174
3175 STAT_GETSTARTTIME;
3176
3177 env->CallVoidMethod ((jobject)pr.jProvider,
3178 id,
3179 jcop,
3180 joclass,
3181 jpName,
3182 jval);
3183
3184 JMPIjvm::checkException(env);
3185
3186 STAT_PMS_PROVIDEREND;
3187 break;
3188 }
3189
3190 case METHOD_UNKNOWN:
3191 {
3192 mark.hamzy 1.26 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleSetPropertyRequest: should not be here!"<<PEGASUS_STD(endl));
3193 break;
3194 }
3195 }
3196 }
3197 HandlerCatch(handler);
3198
3199 if (env) JMPIjvm::detachThread();
3200
3201 PEG_METHOD_EXIT();
3202
|
3203 w.white 1.31 STAT_COPYDISPATCHER
3204
|
3205 mark.hamzy 1.26 return(response);
3206 }
3207
|
3208 schuur 1.1 Message * JMPIProviderManager::handleInvokeMethodRequest(const Message * message) throw()
3209 {
|
3210 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleInvokeMethodRequest");
3211
3212 HandlerIntroMethod(InvokeMethod,message,request,response,handler);
|
3213 schuur 1.1
|
3214 mark.hamzy 1.25 typedef enum {
3215 METHOD_UNKNOWN = 0,
3216 METHOD_PEGASUS_24,
3217 METHOD_SNIA_PROVIDER20,
3218 } METHOD_VERSION;
3219 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
3220 JNIEnv *env = NULL;
|
3221 schuur 1.13
|
3222 schuur 1.1 try {
3223 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
3224 "JMPIProviderManager::handleInvokeMethodRequest - Host name: $0 Name space: $1 Class name: $2",
3225 System::getHostName(),
3226 request->nameSpace.getString(),
3227 request->instanceName.getClassName().getString());
3228
|
3229 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", classname = "<<request->instanceName.getClassName().getString()<<PEGASUS_STD(endl));
3230
|
3231 schuur 1.1 // make target object path
|
3232 mark.hamzy 1.27 CIMObjectPath *objectPath = new CIMObjectPath (System::getHostName(),
3233 request->nameSpace,
3234 request->instanceName.getClassName(),
3235 request->instanceName.getKeyBindings());
|
3236 schuur 1.1
3237 // resolve provider name
|
3238 kumpf 1.2 ProviderName name = _resolveProviderName(
3239 request->operationContext.get(ProviderIdContainer::NAME));
|
3240 schuur 1.1
3241 // get cached or load new provider module
3242 JMPIProvider::OpProviderHolder ph =
3243 providerManager.getProvider(name.getPhysicalName(), name.getLogicalName(), String::EMPTY);
3244
3245 // convert arguments
3246 OperationContext context;
3247
|
3248 schuur 1.11 context.insert(request->operationContext.get(IdentityContainer::NAME));
3249 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
3250 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
|
3251 schuur 1.1
|
3252 mark.hamzy 1.25 JMPIProvider &pr=ph.GetProvider();
|
3253 schuur 1.1
|
3254 mark.hamzy 1.25 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.invokeMethod: " + pr.getName());
|
3255 schuur 1.1
|
3256 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: Calling provider invokeMethod: "<<pr.getName()<<PEGASUS_STD(endl));
|
3257 schuur 1.11
|
3258 mark.hamzy 1.25 JvmVector *jv = 0;
|
3259 mark.hamzy 1.23
|
3260 mark.hamzy 1.25 env = JMPIjvm::attachThread(&jv);
|
3261 schuur 1.11
|
3262 mark.hamzy 1.25 JMPIProvider::pm_service_op_lock op_lock(&pr);
|
3263 schuur 1.11
|
3264 schuur 1.1 STAT_GETSTARTTIME;
3265
|
3266 mark.hamzy 1.25 jmethodID id = NULL;
3267
3268 // public abstract org.pegasus.jmpi.CIMValue invokeMethod (org.pegasus.jmpi.CIMObjectPath cop,
3269 // java.lang.String name,
3270 // java.util.Vector in,
3271 // java.util.Vector out)
3272 // throws org.pegasus.jmpi.CIMException
3273 id = env->GetMethodID((jclass)pr.jProviderClass,
3274 "invokeMethod",
3275 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;Ljava/util/Vector;Ljava/util/Vector;)Lorg/pegasus/jmpi/CIMValue;");
3276
3277 if (id != NULL)
3278 {
3279 eMethodFound = METHOD_SNIA_PROVIDER20;
3280 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
3281 }
3282
3283 if (id == NULL)
3284 {
3285 env->ExceptionClear();
3286
3287 mark.hamzy 1.25 // public org.pegasus.jmpi.CIMValue invokeMethod (org.pegasus.jmpi.CIMObjectPath op,
3288 // java.lang.String methodName,
3289 // org.pegasus.jmpi.CIMArgument[] inArgs,
3290 // org.pegasus.jmpi.CIMArgument[] outArgs)
3291 // throws org.pegasus.jmpi.CIMException
3292 id = env->GetMethodID((jclass)pr.jProviderClass,
3293 "invokeMethod",
3294 "(Lorg/pegasus/jmpi/CIMObjectPath;Ljava/lang/String;[Lorg/pegasus/jmpi/CIMArgument;[Lorg/pegasus/jmpi/CIMArgument;)Lorg/pegasus/jmpi/CIMValue;");
3295
3296 if (id != NULL)
3297 {
3298 eMethodFound = METHOD_PEGASUS_24;
3299 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: found METHOD_PEGASUS_24."<<PEGASUS_STD(endl));
3300 }
|
3301 mark.hamzy 1.23 }
|
3302 mark.hamzy 1.25
|
3303 schuur 1.11 JMPIjvm::checkException(env);
3304
|
3305 mark.hamzy 1.25 switch (eMethodFound)
3306 {
3307 case METHOD_PEGASUS_24:
3308 {
|
3309 mark.hamzy 1.29 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
3310 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
|
3311 mark.hamzy 1.25
3312 JMPIjvm::checkException(env);
3313
|
3314 mark.hamzy 1.29 jstring jMethod = env->NewStringUTF(request->methodName.getString().getCString());
3315
|
3316 mark.hamzy 1.23 JMPIjvm::checkException(env);
3317
|
3318 mark.hamzy 1.25 Uint32 m=request->inParameters.size();
3319
3320 jobjectArray jArIn=(jobjectArray)env->NewObjectArray(m,jv->CIMArgumentClassRef,NULL);
|
3321 mark.hamzy 1.29
|
3322 mark.hamzy 1.25 for (Uint32 i=0; i<m; i++) {
|
3323 mark.hamzy 1.29 CIMParamValue *parm = new CIMParamValue(request->inParameters[i]);
3324 jint jArgRef = DEBUG_ConvertCToJava (CIMParamValue*, jint, parm);
3325 jobject jArg = env->NewObject(jv->CIMArgumentClassRef,jv->CIMArgumentNewI,jArgRef);
|
3326 mark.hamzy 1.23
|
3327 mark.hamzy 1.25 env->SetObjectArrayElement(jArIn,i,jArg);
3328 }
|
3329 mark.hamzy 1.23
|
3330 mark.hamzy 1.25 jobjectArray jArOut=(jobjectArray)env->NewObjectArray(24,jv->CIMArgumentClassRef,NULL);
|
3331 mark.hamzy 1.23
|
3332 mark.hamzy 1.29 jobject jValueRet = env->CallObjectMethod((jobject)pr.jProvider,
3333 id,
3334 jcop,
3335 jMethod,
3336 jArIn,
3337 jArOut);
|
3338 mark.hamzy 1.23 JMPIjvm::checkException(env);
3339
3340 STAT_PMS_PROVIDEREND;
3341
3342 handler.processing();
3343
|
3344 mark.hamzy 1.29 jint jValueRetRef = env->CallIntMethod(jValueRet,JMPIjvm::jv.CIMValueCInst);
3345 CIMValue *valueRet = DEBUG_ConvertJavaToC (jint, CIMValue*, jValueRetRef);
|
3346 mark.hamzy 1.23
|
3347 mark.hamzy 1.29 handler.deliver(*valueRet);
|
3348 schuur 1.13
|
3349 mark.hamzy 1.25 for (int i=0; i<24; i++) {
|
3350 mark.hamzy 1.29 jobject jArg = env->GetObjectArrayElement(jArOut,i);
3351
|
3352 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
3353 schuur 1.13
|
3354 mark.hamzy 1.29 if (jArg==NULL)
3355 break;
|
3356 schuur 1.13
|
3357 mark.hamzy 1.29 jint jpRef = env->CallIntMethod(jArg,JMPIjvm::jv.CIMArgumentCInst);
3358 CIMParamValue *p = DEBUG_ConvertJavaToC (jint, CIMParamValue*, jpRef);
|
3359 schuur 1.13
|
3360 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
3361 schuur 1.1
|
3362 mark.hamzy 1.25 handler.deliverParamValue(*p);
|
3363 mark.hamzy 1.23 }
|
3364 schuur 1.1
|
3365 mark.hamzy 1.23 handler.complete();
|
3366 mark.hamzy 1.25 break;
|
3367 mark.hamzy 1.23 }
|
3368 schuur 1.11
|
3369 mark.hamzy 1.25 case METHOD_SNIA_PROVIDER20:
3370 {
|
3371 mark.hamzy 1.29 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, objectPath);
3372 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
|
3373 mark.hamzy 1.25
3374 JMPIjvm::checkException(env);
3375
|
3376 mark.hamzy 1.29 jstring jMethod = env->NewStringUTF(request->methodName.getString().getCString());
3377
|
3378 mark.hamzy 1.25 JMPIjvm::checkException(env);
3379
|
3380 mark.hamzy 1.29 jobject jVecIn = env->NewObject(jv->VectorClassRef,jv->VectorNew);
3381
|
3382 mark.hamzy 1.25 JMPIjvm::checkException(env);
3383
|
3384 mark.hamzy 1.29 for (int i=0,m=request->inParameters.size(); i<m; i++)
3385 {
3386 const CIMParamValue &parm = request->inParameters[i];
3387 const CIMValue v = parm.getValue();
3388 CIMProperty *p = new CIMProperty(parm.getParameterName(),v,v.getArraySize());
3389 jint jpRef = DEBUG_ConvertCToJava (CIMProperty*, jint, p);
3390 jobject jp = env->NewObject(jv->CIMPropertyClassRef,jv->CIMPropertyNewI,jpRef);
|
3391 mark.hamzy 1.23
|
3392 mark.hamzy 1.29 env->CallVoidMethod(jVecIn,jv->VectorAddElement,jp);
|
3393 mark.hamzy 1.25 }
|
3394 mark.hamzy 1.23
|
3395 mark.hamzy 1.25 jobject jVecOut=env->NewObject(jv->VectorClassRef,jv->VectorNew);
3396 JMPIjvm::checkException(env);
|
3397 mark.hamzy 1.23
|
3398 mark.hamzy 1.29 jobject jValueRet = env->CallObjectMethod((jobject)pr.jProvider,
3399 id,
3400 jcop,
3401 jMethod,
3402 jVecIn,
3403 jVecOut);
|
3404 mark.hamzy 1.23 JMPIjvm::checkException(env);
3405
3406 STAT_PMS_PROVIDEREND;
3407
3408 handler.processing();
|
3409 schuur 1.1
|
3410 mark.hamzy 1.29 jint jValueRetRef = env->CallIntMethod(jValueRet,JMPIjvm::jv.CIMValueCInst);
3411 CIMValue *valueRet = DEBUG_ConvertJavaToC (jint, CIMValue*, jValueRetRef);
|
3412 mark.hamzy 1.23
|
3413 mark.hamzy 1.29 handler.deliver(*valueRet);
|
3414 mark.hamzy 1.23
|
3415 mark.hamzy 1.29 for (int i=0,m=env->CallIntMethod(jVecOut,JMPIjvm::jv.VectorSize); i<m; i++)
3416 {
|
3417 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
3418 schuur 1.13
|
3419 mark.hamzy 1.29 jobject jProp = env->CallObjectMethod(jVecOut,JMPIjvm::jv.VectorElementAt,i);
3420
|
3421 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
3422 schuur 1.13
|
3423 mark.hamzy 1.29 jint jpRef = env->CallIntMethod(jProp,JMPIjvm::jv.CIMPropertyCInst);
3424 CIMProperty *p = DEBUG_ConvertJavaToC (jint, CIMProperty*, jpRef);
|
3425 schuur 1.13
|
3426 mark.hamzy 1.23 JMPIjvm::checkException(env);
|
3427 schuur 1.13
|
3428 mark.hamzy 1.25 handler.deliverParamValue(CIMParamValue(p->getName().getString(),p->getValue()));
3429 }
3430
3431 handler.complete();
3432 break;
3433 }
|
3434 mark.hamzy 1.23
|
3435 mark.hamzy 1.25 case METHOD_UNKNOWN:
3436 {
3437 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleInvokeMethodRequest: should not be here!"<<PEGASUS_STD(endl));
3438 break;
3439 }
|
3440 mark.hamzy 1.23 }
|
3441 schuur 1.1 }
3442 HandlerCatch(handler);
|
3443 schuur 1.11
3444 if (env) JMPIjvm::detachThread();
3445
|
3446 schuur 1.1 PEG_METHOD_EXIT();
3447
|
3448 w.white 1.31 STAT_COPYDISPATCHER
3449
|
3450 schuur 1.11 return(response);
|
3451 schuur 1.1 }
|
3452 mark.hamzy 1.23
|
3453 schuur 1.1 int LocateIndicationProviderNames(const CIMInstance& pInstance, const CIMInstance& pmInstance,
3454 String& providerName, String& location)
3455 {
3456 Uint32 pos = pInstance.findProperty(CIMName ("Name"));
3457 pInstance.getProperty(pos).getValue().get(providerName);
3458
3459 pos = pmInstance.findProperty(CIMName ("Location"));
3460 pmInstance.getProperty(pos).getValue().get(location);
3461 return 0;
3462 }
3463
3464 Message * JMPIProviderManager::handleCreateSubscriptionRequest(const Message * message) throw()
3465 {
|
3466 konrad.r 1.15 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::handleCreateSubscriptionRequest");
|
3467 schuur 1.1
|
3468 mark.hamzy 1.23 HandlerIntroInd(CreateSubscription,message,request,response,handler);
3469
|
3470 mark.hamzy 1.25 typedef enum {
3471 METHOD_UNKNOWN = 0,
3472 METHOD_SNIA_PROVIDER20,
3473 } METHOD_VERSION;
3474 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
3475 JNIEnv *env = NULL;
3476
|
3477 schuur 1.1 try {
|
3478 mark.hamzy 1.25 String providerName,
3479 providerLocation;
3480 CIMInstance req_provider,
3481 req_providerModule;
3482
3483 ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME);
|
3484 schuur 1.1
|
3485 mark.hamzy 1.25 req_provider = pidc.getProvider();
|
3486 schuur 1.12 req_providerModule = pidc.getModule();
|
3487 mark.hamzy 1.25
|
3488 schuur 1.12 LocateIndicationProviderNames(req_provider, req_providerModule,providerName,providerLocation);
|
3489 schuur 1.1
3490 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
3491 "JMPIProviderManager::handleCreateSubscriptionRequest - Host name: $0 Name space: $1 Provider name(s): $2",
3492 System::getHostName(),
3493 request->nameSpace.getString(),
3494 providerName);
3495
|
3496 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", providername = "<<providerName<<PEGASUS_STD(endl));
3497
|
3498 schuur 1.1 String fileName = resolveFileName(providerLocation);
3499
3500 // get cached or load new provider module
3501 JMPIProvider::OpProviderHolder ph =
3502 providerManager.getProvider(fileName, providerName, String::EMPTY);
3503
|
3504 mark.hamzy 1.25 indProvRecord *prec = NULL;
3505
|
3506 schuur 1.12 provTab.lookup(providerName,prec);
|
3507 mark.hamzy 1.25
|
3508 mark.hamzy 1.23 if (prec)
|
3509 mark.hamzy 1.25 {
|
3510 mark.hamzy 1.23 prec->count++;
|
3511 mark.hamzy 1.25 }
3512 else
3513 {
3514 prec=new indProvRecord();
3515 provTab.insert(providerName,prec);
|
3516 schuur 1.12 }
|
3517 schuur 1.1
|
3518 carolann.graves 1.21 //
3519 // Save the provider instance from the request
3520 //
3521 ph.GetProvider ().setProviderInstance (req_provider);
3522
|
3523 mark.hamzy 1.25 indSelectRecord *srec = new indSelectRecord();
3524 const CIMObjectPath &sPath = request->subscriptionInstance.getPath();
3525
|
3526 schuur 1.12 selxTab.insert(sPath.toString(),srec);
|
3527 schuur 1.1
3528 // convert arguments
3529 OperationContext *context=new OperationContext();
3530
|
3531 mark.hamzy 1.25 if (prec->ctx==NULL)
3532 {
3533 prec->ctx=context;
|
3534 mark.hamzy 1.23 }
|
3535 schuur 1.12
3536 context->insert(request->operationContext.get(IdentityContainer::NAME));
3537 context->insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
3538 context->insert(request->operationContext.get(ContentLanguageListContainer::NAME));
3539 context->insert(request->operationContext.get(SubscriptionInstanceContainer::NAME));
3540 context->insert(request->operationContext.get(SubscriptionLanguageListContainer::NAME));
3541 context->insert(request->operationContext.get(SubscriptionFilterConditionContainer::NAME));
|
3542 schuur 1.1
3543 CIMObjectPath subscriptionName = request->subscriptionInstance.getPath();
3544
|
3545 schuur 1.12 SubscriptionFilterConditionContainer sub_cntr = request->operationContext.get
3546 (SubscriptionFilterConditionContainer::NAME);
3547
|
3548 mark.hamzy 1.25 JMPIProvider &pr = ph.GetProvider();
|
3549 konrad.r 1.22
|
3550 mark.hamzy 1.25 CIMOMHandleQueryContext *qcontext=new CIMOMHandleQueryContext(CIMNamespaceName(request->nameSpace.getString()),
3551 *pr._cimom_handle);
|
3552 konrad.r 1.22
|
3553 mark.hamzy 1.25 CMPI_SelectExp *eSelx = new CMPI_SelectExp(*context,
3554 qcontext,
3555 request->query,
3556 sub_cntr.getQueryLanguage());
|
3557 konrad.r 1.22
|
3558 schuur 1.12 srec->eSelx=eSelx;
|
3559 mark.hamzy 1.25 srec->qContext=qcontext;
|
3560 schuur 1.1
|
3561 mark.hamzy 1.25 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.createSubscriptionRequest: " + pr.getName());
|
3562 schuur 1.1
|
3563 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: Calling provider createSubscriptionRequest: "<<pr.getName()<<PEGASUS_STD(endl));
|
3564 schuur 1.1
3565 for(Uint32 i = 0, n = request->classNames.size(); i < n; i++) {
3566 CIMObjectPath className(
3567 System::getHostName(),
3568 request->nameSpace,
3569 request->classNames[i]);
3570 eSelx->classNames.append(className);
3571 }
3572
3573 CIMPropertyList propertyList = request->propertyList;
|
3574 mark.hamzy 1.29
3575 if (!propertyList.isNull())
3576 {
3577 Array<CIMName> p = propertyList.getPropertyNameArray();
3578 int pCount = p.size();
3579
|
3580 schuur 1.1 eSelx->props=(const char**)malloc((1+pCount)*sizeof(char*));
|
3581 mark.hamzy 1.29
3582 for (int i=0; i<pCount; i++)
3583 {
|
3584 schuur 1.1 eSelx->props[i]=strdup(p[i].getString().getCString());
|
3585 mark.hamzy 1.29 }
|
3586 schuur 1.1 eSelx->props[pCount]=NULL;
3587 }
3588
|
3589 mark.hamzy 1.25 JvmVector *jv = 0;
3590
3591 env = JMPIjvm::attachThread(&jv);
3592
3593 JMPIProvider::pm_service_op_lock op_lock(&pr);
3594
3595 STAT_GETSTARTTIME;
3596
3597 jmethodID id = NULL;
3598
3599 // public void authorizeFilter (org.pegasus.jmpi.SelectExp filter,
3600 // java.lang.String eventType,
3601 // org.pegasus.jmpi.CIMObjectPath classPath,
3602 // java.lang.String owner)
3603 // throws org.pegasus.jmpi.CIMException
3604 id = env->GetMethodID((jclass)pr.jProviderClass,
3605 "activateFilter",
3606 "(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V");
|
3607 schuur 1.12
|
3608 mark.hamzy 1.25 if (id != NULL)
3609 {
3610 eMethodFound = METHOD_SNIA_PROVIDER20;
3611 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
3612 }
|
3613 mark.hamzy 1.23
3614 JMPIjvm::checkException(env);
3615
|
3616 mark.hamzy 1.25 switch (eMethodFound)
3617 {
3618 case METHOD_SNIA_PROVIDER20:
3619 {
|
3620 mark.hamzy 1.29 jint jSelRef = DEBUG_ConvertCToJava (CMPI_SelectExp*, jint, eSelx);
3621 jobject jSel = env->NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jSelRef);
|
3622 mark.hamzy 1.25
3623 JMPIjvm::checkException(env);
3624
|
3625 mark.hamzy 1.29 jint jcopRef = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]);
3626 jobject jcop = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jcopRef);
|
3627 schuur 1.12
|
3628 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
3629 schuur 1.1
|
3630 mark.hamzy 1.25 jstring jType = env->NewStringUTF(request->nameSpace.getString().getCString());
|
3631 schuur 1.1
|
3632 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
3633 schuur 1.1
|
3634 mark.hamzy 1.25 env->CallVoidMethod((jobject)pr.jProvider,
3635 id,
3636 jSel,
3637 jType,
|
3638 mark.hamzy 1.29 jcop,
|
3639 mark.hamzy 1.25 (jboolean)0);
|
3640 schuur 1.12
|
3641 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
3642 schuur 1.1
|
3643 carolann.graves 1.21 //
|
3644 mark.hamzy 1.25 // Increment count of current subscriptions for this provider
|
3645 carolann.graves 1.21 //
|
3646 mark.hamzy 1.25 if (ph.GetProvider ().testIfZeroAndIncrementSubscriptions ())
|
3647 carolann.graves 1.21 {
|
3648 mark.hamzy 1.25 //
3649 // If there were no current subscriptions before the increment,
3650 // the first subscription has been created
3651 // Call the provider's enableIndications method
3652 //
3653 if (_subscriptionInitComplete)
3654 {
3655 prec->enabled = true;
3656 CIMRequestMessage * request = 0;
3657 CIMResponseMessage * response = 0;
3658 prec->handler = new EnableIndicationsResponseHandler
3659 (request, response, req_provider, _indicationCallback);
3660 }
|
3661 carolann.graves 1.21 }
|
3662 mark.hamzy 1.25
3663 STAT_PMS_PROVIDEREND;
3664 break;
|
3665 carolann.graves 1.21 }
3666
|
3667 mark.hamzy 1.25 case METHOD_UNKNOWN:
3668 {
3669 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleCreateSubscriptionRequest: should not be here!"<<PEGASUS_STD(endl));
3670 break;
3671 }
3672 }
|
3673 schuur 1.1
3674 }
3675 HandlerCatch(handler);
|
3676 schuur 1.12
|
3677 mark.hamzy 1.23 if (env) JMPIjvm::detachThread();
3678
|
3679 schuur 1.1 PEG_METHOD_EXIT();
3680
3681 return(response);
3682 }
3683
3684 Message * JMPIProviderManager::handleDeleteSubscriptionRequest(const Message * message) throw()
3685 {
3686 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::handleDeleteSubscriptionRequest");
3687
|
3688 mark.hamzy 1.23 HandlerIntroInd(DeleteSubscription,message,request,response,handler);
3689
|
3690 mark.hamzy 1.25 typedef enum {
3691 METHOD_UNKNOWN = 0,
3692 METHOD_SNIA_PROVIDER20,
3693 } METHOD_VERSION;
3694 METHOD_VERSION eMethodFound = METHOD_UNKNOWN;
3695 JNIEnv *env = NULL;
3696
|
3697 schuur 1.1 try {
|
3698 mark.hamzy 1.25 String providerName,
3699 providerLocation;
3700 CIMInstance req_provider,
3701 req_providerModule;
3702 ProviderIdContainer pidc = (ProviderIdContainer)request->operationContext.get(ProviderIdContainer::NAME);
3703
3704 req_provider = pidc.getProvider();
|
3705 schuur 1.12 req_providerModule = pidc.getModule();
|
3706 se.gupta 1.9
|
3707 mark.hamzy 1.25 LocateIndicationProviderNames(req_provider, req_providerModule, providerName,providerLocation);
|
3708 schuur 1.1
3709 Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,
3710 "JMPIProviderManager::handleDeleteSubscriptionRequest - Host name: $0 Name space: $1 Provider name(s): $2",
3711 System::getHostName(),
3712 request->nameSpace.getString(),
3713 providerName);
3714
|
3715 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: hostname = "<<System::getHostName()<<", namespace = "<<request->nameSpace.getString()<<", providername = "<<providerName<<PEGASUS_STD(endl));
3716
|
3717 schuur 1.1 String fileName = resolveFileName(providerLocation);
3718
3719 // get cached or load new provider module
3720 JMPIProvider::OpProviderHolder ph =
3721 providerManager.getProvider(fileName, providerName, String::EMPTY);
3722
|
3723 mark.hamzy 1.25 indProvRecord *prec = NULL;
3724
|
3725 schuur 1.12 provTab.lookup(providerName,prec);
|
3726 mark.hamzy 1.25 if (--prec->count <= 0)
3727 {
3728 provTab.remove(providerName);
3729 prec=NULL;
|
3730 schuur 1.12 }
|
3731 schuur 1.1
|
3732 mark.hamzy 1.25 indSelectRecord *srec = NULL;
3733 const CIMObjectPath &sPath = request->subscriptionInstance.getPath();
3734 String sPathString = sPath.toString();
3735
|
3736 schuur 1.12 selxTab.lookup(sPathString,srec);
|
3737 schuur 1.1
|
3738 mark.hamzy 1.25 CMPI_SelectExp *eSelx = srec->eSelx;
3739 CIMOMHandleQueryContext *qContext = srec->qContext;
|
3740 konrad.r 1.22
|
3741 schuur 1.12 selxTab.remove(sPathString);
|
3742 schuur 1.1
|
3743 schuur 1.12 // convert arguments
|
3744 schuur 1.1 OperationContext context;
3745
|
3746 schuur 1.12 context.insert(request->operationContext.get(IdentityContainer::NAME));
3747 context.insert(request->operationContext.get(AcceptLanguageListContainer::NAME));
3748 context.insert(request->operationContext.get(ContentLanguageListContainer::NAME));
3749 context.insert(request->operationContext.get(SubscriptionInstanceContainer::NAME));
3750 context.insert(request->operationContext.get(SubscriptionLanguageListContainer::NAME));
3751
|
3752 schuur 1.1 CIMObjectPath subscriptionName = request->subscriptionInstance.getPath();
3753
|
3754 schuur 1.12 JMPIProvider & pr=ph.GetProvider();
|
3755 schuur 1.1
|
3756 mark.hamzy 1.25 PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL4, "Calling provider.deleteSubscriptionRequest: " + pr.getName());
|
3757 schuur 1.1
|
3758 mark.hamzy 1.23 DDD(PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: Calling provider deleteSubscriptionRequest: "<<pr.getName()<<PEGASUS_STD(endl));
|
3759 schuur 1.1
|
3760 mark.hamzy 1.25 JvmVector *jv = 0;
3761
3762 env = JMPIjvm::attachThread(&jv);
3763
3764 JMPIProvider::pm_service_op_lock op_lock(&pr);
3765
3766 STAT_GETSTARTTIME;
3767
3768 jmethodID id = NULL;
3769
3770 // public void deActivateFilter (org.pegasus.jmpi.SelectExp filter,
3771 // java.lang.String eventType,
3772 // org.pegasus.jmpi.CIMObjectPath classPath,
3773 // boolean lastActivation)
3774 // throws org.pegasus.jmpi.CIMException
3775 id = env->GetMethodID((jclass)pr.jProviderClass,
3776 "deActivateFilter",
3777 "(Lorg/pegasus/jmpi/SelectExp;Ljava/lang/String;Lorg/pegasus/jmpi/CIMObjectPath;Z)V");
|
3778 schuur 1.12
|
3779 mark.hamzy 1.25 if (id != NULL)
3780 {
3781 eMethodFound = METHOD_SNIA_PROVIDER20;
3782 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: found METHOD_SNIA_PROVIDER20."<<PEGASUS_STD(endl));
3783 }
|
3784 mark.hamzy 1.23
3785 JMPIjvm::checkException(env);
3786
|
3787 mark.hamzy 1.25 switch (eMethodFound)
3788 {
3789 case METHOD_SNIA_PROVIDER20:
3790 {
3791 jint jObj = DEBUG_ConvertCToJava (CMPI_SelectExp*, jint, eSelx);
3792 jobject jSel = env->NewObject(jv->SelectExpClassRef,jv->SelectExpNewI,jObj);
3793
3794 JMPIjvm::checkException(env);
3795
3796 jObj = DEBUG_ConvertCToJava (CIMObjectPath*, jint, &eSelx->classNames[0]);
|
3797 mark.hamzy 1.23
|
3798 mark.hamzy 1.25 jobject jRef = env->NewObject(jv->CIMObjectPathClassRef,jv->CIMObjectPathNewI,jObj);
|
3799 schuur 1.12
|
3800 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
3801 schuur 1.12
|
3802 mark.hamzy 1.25 jstring jType = env->NewStringUTF(request->nameSpace.getString().getCString());
|
3803 schuur 1.1
|
3804 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
3805 schuur 1.1
|
3806 mark.hamzy 1.25 env->CallVoidMethod((jobject)pr.jProvider,
3807 id,
3808 jSel,
3809 jType,
3810 jRef,
3811 (jboolean)(prec==NULL));
|
3812 schuur 1.1
|
3813 mark.hamzy 1.25 JMPIjvm::checkException(env);
|
3814 schuur 1.1
|
3815 carolann.graves 1.21 //
|
3816 mark.hamzy 1.25 // Decrement count of current subscriptions for this provider
|
3817 carolann.graves 1.21 //
|
3818 mark.hamzy 1.25 if (ph.GetProvider ().decrementSubscriptionsAndTestIfZero ())
|
3819 carolann.graves 1.21 {
|
3820 mark.hamzy 1.25 //
3821 // If there are no current subscriptions after the decrement,
3822 // the last subscription has been deleted
3823 // Call the provider's disableIndications method
3824 //
3825 if (_subscriptionInitComplete)
3826 {
3827 prec->enabled = false;
3828 if (prec->handler) delete prec->handler;
3829 prec->handler = NULL;
3830 }
|
3831 carolann.graves 1.21 }
3832
|
3833 mark.hamzy 1.25 STAT_PMS_PROVIDEREND;
|
3834 schuur 1.1
|
3835 mark.hamzy 1.25 delete eSelx;
3836 delete qContext;
3837 delete srec;
3838 break;
3839 }
|
3840 schuur 1.12
|
3841 mark.hamzy 1.25 case METHOD_UNKNOWN:
3842 {
3843 DDD (PEGASUS_STD(cout)<<"--- JMPIProviderManager::handleDeleteSubscriptionRequest: should not be here!"<<PEGASUS_STD(endl));
3844 break;
3845 }
3846 }
|
3847 schuur 1.1 }
3848 HandlerCatch(handler);
|
3849 schuur 1.12
|
3850 mark.hamzy 1.23 if (env) JMPIjvm::detachThread();
3851
|
3852 schuur 1.1 PEG_METHOD_EXIT();
3853
|
3854 w.white 1.31 STAT_COPYDISPATCHER
3855
|
3856 schuur 1.1 return(response);
3857 }
3858
3859 Message * JMPIProviderManager::handleDisableModuleRequest(const Message * message) throw()
3860 {
3861 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::handleDisableModuleRequest");
3862
3863 CIMDisableModuleRequestMessage * request =
3864 dynamic_cast<CIMDisableModuleRequestMessage *>(const_cast<Message *>(message));
3865
3866 PEGASUS_ASSERT(request != 0);
3867
3868 // get provider module name
3869 String moduleName;
3870 CIMInstance mInstance = request->providerModule;
3871 Uint32 pos = mInstance.findProperty(CIMName ("Name"));
3872
3873 if(pos != PEG_NOT_FOUND)
3874 {
3875 mInstance.getProperty(pos).getValue().get(moduleName);
3876 }
3877 schuur 1.1
3878 Boolean disableProviderOnly = request->disableProviderOnly;
3879
3880 Array<Uint16> operationalStatus;
|
3881 kumpf 1.2 // Assume success.
|
3882 kumpf 1.10 operationalStatus.append(CIM_MSE_OPSTATUS_VALUE_STOPPED);
|
3883 schuur 1.1
|
3884 kumpf 1.2 //
|
3885 schuur 1.1 // Unload providers
|
3886 kumpf 1.2 //
|
3887 schuur 1.1 Array<CIMInstance> _pInstances = request->providers;
3888
3889 CIMDisableModuleResponseMessage * response =
3890 new CIMDisableModuleResponseMessage(
3891 request->messageId,
3892 CIMException(),
3893 request->queueIds.copyAndPop(),
3894 operationalStatus);
3895
3896 PEGASUS_ASSERT(response != 0);
3897
3898 // preserve message key
3899 response->setKey(request->getKey());
3900
3901 //
3902 // Set HTTP method in response from request
3903 //
3904 response->setHttpMethod (request->getHttpMethod ());
3905
3906 PEG_METHOD_EXIT();
3907
3908 schuur 1.1 return(response);
3909 }
3910
3911 Message * JMPIProviderManager::handleEnableModuleRequest(const Message * message) throw()
3912 {
3913 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::handleEnableModuleRequest");
3914
3915 CIMEnableModuleRequestMessage * request =
3916 dynamic_cast<CIMEnableModuleRequestMessage *>(const_cast<Message *>(message));
3917
3918 PEGASUS_ASSERT(request != 0);
3919
3920 Array<Uint16> operationalStatus;
|
3921 kumpf 1.10 operationalStatus.append(CIM_MSE_OPSTATUS_VALUE_OK);
|
3922 schuur 1.1
3923 CIMEnableModuleResponseMessage * response =
3924 new CIMEnableModuleResponseMessage(
3925 request->messageId,
3926 CIMException(),
3927 request->queueIds.copyAndPop(),
3928 operationalStatus);
3929
3930 PEGASUS_ASSERT(response != 0);
3931
3932 // preserve message key
3933 response->setKey(request->getKey());
3934
3935 // Set HTTP method in response from request
3936 response->setHttpMethod (request->getHttpMethod ());
3937
3938 PEG_METHOD_EXIT();
3939
3940 return(response);
3941 }
3942
3943 schuur 1.1 Message * JMPIProviderManager::handleStopAllProvidersRequest(const Message * message) throw()
3944 {
3945 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::handleStopAllProvidersRequest");
3946
3947 CIMStopAllProvidersRequestMessage * request =
3948 dynamic_cast<CIMStopAllProvidersRequestMessage *>(const_cast<Message *>(message));
3949
3950 PEGASUS_ASSERT(request != 0);
3951
3952 CIMStopAllProvidersResponseMessage * response =
3953 new CIMStopAllProvidersResponseMessage(
3954 request->messageId,
3955 CIMException(),
3956 request->queueIds.copyAndPop());
3957
3958 PEGASUS_ASSERT(response != 0);
3959
3960 // preserve message key
3961 response->setKey(request->getKey());
3962
3963 // Set HTTP method in response from request
3964 schuur 1.1 response->setHttpMethod (request->getHttpMethod ());
3965
3966 // tell the provider manager to shutdown all the providers
3967 providerManager.shutdownAllProviders();
3968
3969 PEG_METHOD_EXIT();
3970
3971 return(response);
3972 }
3973
|
3974 kumpf 1.4 Message * JMPIProviderManager::handleInitializeProviderRequest(const Message * message)
3975 {
3976 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER, "JMPIProviderManager::handleInitializeProviderRequest");
3977
3978 HandlerIntroInit(InitializeProvider,message,request,response,handler);
3979
3980 try
3981 {
3982 // resolve provider name
|
3983 mark.hamzy 1.23 ProviderName name = _resolveProviderName(
3984 request->operationContext.get(ProviderIdContainer::NAME));
|
3985 kumpf 1.4
3986 // get cached or load new provider module
3987 JMPIProvider::OpProviderHolder ph =
|
3988 mark.hamzy 1.23 providerManager.getProvider(name.getPhysicalName(),
3989 name.getLogicalName(), String::EMPTY);
|
3990 kumpf 1.4
3991 }
3992 HandlerCatch(handler);
3993
3994 PEG_METHOD_EXIT();
3995
3996 return(response);
3997 }
3998
|
3999 mark.hamzy 1.25 Message * JMPIProviderManager::handleSubscriptionInitCompleteRequest (const Message * message)
|
4000 carolann.graves 1.21 {
4001 PEG_METHOD_ENTER (TRC_PROVIDERMANAGER,
4002 "JMPIProviderManager::handleSubscriptionInitCompleteRequest");
4003
4004 CIMSubscriptionInitCompleteRequestMessage * request =
4005 dynamic_cast <CIMSubscriptionInitCompleteRequestMessage *>
4006 (const_cast <Message *> (message));
4007
4008 PEGASUS_ASSERT (request != 0);
4009
4010 CIMSubscriptionInitCompleteResponseMessage * response =
4011 dynamic_cast <CIMSubscriptionInitCompleteResponseMessage *>
4012 (request->buildResponse ());
4013
4014 PEGASUS_ASSERT (response != 0);
4015
4016 //
4017 // Set indicator
4018 //
4019 _subscriptionInitComplete = true;
4020
4021 carolann.graves 1.21 //
4022 // For each provider that has at least one subscription, call
4023 // provider's enableIndications method
4024 //
4025 Array <JMPIProvider *> enableProviders;
4026 enableProviders = providerManager.getIndicationProvidersToEnable ();
4027
4028 Uint32 numProviders = enableProviders.size ();
4029 for (Uint32 i = 0; i < numProviders; i++)
4030 {
4031 try
4032 {
4033 CIMInstance provider;
4034 provider = enableProviders [i]->getProviderInstance ();
4035
4036 //
4037 // Get cached or load new provider module
4038 //
4039 JMPIProvider::OpProviderHolder ph = providerManager.getProvider
4040 (enableProviders [i]->getModule ()->getFileName (),
4041 enableProviders [i]->getName ());
4042 carolann.graves 1.21
4043 indProvRecord * prec = NULL;
4044 provTab.lookup (enableProviders [i]->getName (), prec);
4045 if (prec)
4046 {
4047 prec->enabled = true;
4048 CIMRequestMessage * request = 0;
4049 CIMResponseMessage * response = 0;
4050 prec->handler = new EnableIndicationsResponseHandler
4051 (request, response, provider, _indicationCallback);
4052 }
4053 }
4054 catch (CIMException & e)
4055 {
4056 PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
4057 "CIMException: " + e.getMessage ());
4058 }
4059 catch (Exception & e)
4060 {
4061 PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
4062 "Exception: " + e.getMessage ());
4063 carolann.graves 1.21 }
4064 catch(...)
4065 {
4066 PEG_TRACE_STRING (TRC_PROVIDERMANAGER, Tracer::LEVEL2,
4067 "Unknown error in handleSubscriptionInitCompleteRequest");
4068 }
4069 }
4070
4071 PEG_METHOD_EXIT ();
4072 return (response);
4073 }
4074
|
4075 schuur 1.1 Message * JMPIProviderManager::handleUnsupportedRequest(const Message * message) throw()
4076 {
|
4077 mark.hamzy 1.23 PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,"JMPIProviderManager::handleUnsupportedRequest");
4078
|
4079 konrad.r 1.16 CIMRequestMessage* request =
4080 dynamic_cast<CIMRequestMessage *>(const_cast<Message *>(message));
4081 PEGASUS_ASSERT(request != 0 );
4082
4083 CIMResponseMessage* response = request->buildResponse();
4084 response->cimException =
4085 PEGASUS_CIM_EXCEPTION(CIM_ERR_NOT_SUPPORTED, String::EMPTY);
|
4086 schuur 1.1
4087 PEG_METHOD_EXIT();
|
4088 konrad.r 1.16 return response;
|
4089 schuur 1.1 }
4090
|
4091 kumpf 1.2 ProviderName JMPIProviderManager::_resolveProviderName(
4092 const ProviderIdContainer & providerId)
|
4093 schuur 1.1 {
|
4094 kumpf 1.2 String providerName;
4095 String fileName;
4096 String interfaceName;
4097 CIMValue genericValue;
4098
4099 genericValue = providerId.getProvider().getProperty(
4100 providerId.getProvider().findProperty("Name")).getValue();
4101 genericValue.get(providerName);
4102
4103 genericValue = providerId.getModule().getProperty(
4104 providerId.getModule().findProperty("Location")).getValue();
4105 genericValue.get(fileName);
4106 fileName = resolveFileName(fileName);
4107
4108 // ATTN: This attribute is probably not required
4109 genericValue = providerId.getModule().getProperty(
4110 providerId.getModule().findProperty("InterfaceType")).getValue();
4111 genericValue.get(interfaceName);
4112
4113 return ProviderName(providerName, fileName, interfaceName, 0);
|
4114 schuur 1.1 }
4115
4116 String JMPIProviderManager::resolveFileName(String fileName)
4117 {
4118 String name;
4119 #if defined(PEGASUS_OS_TYPE_WINDOWS)
4120 name = fileName; // + String(".dll");
4121 #elif defined(PEGASUS_OS_HPUX) && defined(PEGASUS_PLATFORM_HPUX_PARISC_ACC)
4122 name = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));
4123 name.append(String("/") + fileName); // + String(".sl"));
4124 #elif defined(PEGASUS_OS_HPUX) && !defined(PEGASUS_PLATFORM_HPUX_PARISC_ACC)
4125 name = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));
4126 name.append(String("/") + fileName); // + String(".so"));
4127 #elif defined(PEGASUS_OS_OS400)
4128 name = filrName;
4129 #else
4130 name = ConfigManager::getHomedPath(ConfigManager::getInstance()->getCurrentValue("providerDir"));
4131 name.append(String("/") + fileName); // + String(".so"));
4132 #endif
4133 return name;
4134 }
4135 schuur 1.1
4136 PEGASUS_NAMESPACE_END
|