1 karl 1.12 //%2005////////////////////////////////////////////////////////////////////////
|
2 schuur 1.1 //
|
3 karl 1.10 // 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.10 // 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.12 // 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 david.dillard 1.15 //
|
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 // Author: Adrian Schuur, schuur@de.ibm.com
31 //
32 // Modified By: Adrian Dutta
33 // Andy Viciu
34 // Magda Vacarelu
|
35 david.dillard 1.15 // David Dillard, VERITAS Software Corp.
36 // (david.dillard@veritas.com)
|
37 mark.hamzy 1.16 // Mark Hamzy
|
38 schuur 1.1 //
39 //%/////////////////////////////////////////////////////////////////////////////
40
41
42 #include "JMPIImpl.h"
43
|
44 konrad.r 1.14 #if defined(PEGASUS_PLATFORM_WIN32_IX86_MSVC)
45 #include <Pegasus/Common/DynamicLibrary.h>
46 #else
|
47 schuur 1.1 #include <dlfcn.h>
|
48 konrad.r 1.14 #endif
|
49 schuur 1.1 #include <iostream>
|
50 mark.hamzy 1.16 #include <sstream>
|
51 schuur 1.1
52 #include <Pegasus/Common/Config.h>
53 #include <Pegasus/Common/System.h>
54 #include <Pegasus/Common/CIMClass.h>
55 #include <Pegasus/Common/CIMInstance.h>
56 #include <Pegasus/Common/CIMObjectPath.h>
57 #include <Pegasus/Common/CIMProperty.h>
58 #include <Pegasus/Common/CIMType.h>
59 #include <Pegasus/Common/OperationContext.h>
60 #include <Pegasus/Provider/CIMOMHandle.h>
61 #include <Pegasus/Client/CIMClient.h>
|
62 schuur 1.3 #include <Pegasus/ProviderManager2/JMPI/JMPIProviderManager.h>
|
63 schuur 1.1
64 PEGASUS_USING_STD;
65 PEGASUS_NAMESPACE_BEGIN
66
67 JavaVM *JMPIjvm::jvm=NULL;
68 JvmVector JMPIjvm::jv;
|
69 schuur 1.2 int JMPIjvm::trace=0;
|
70 schuur 1.1
|
71 mark.hamzy 1.16 #define DDD(x) if (JMPIjvm::trace) x;
72
|
73 mark.hamzy 1.17 JMPIjvm::ClassTable JMPIjvm::_classTable;
74 JMPIjvm::ObjectTable JMPIjvm::_objectTable;
75
|
76 schuur 1.1 typedef struct {
77 int clsIndex;
78 const char * methodName;
79 const char * signature;
80 } METHOD_STRUCT;
81
82 const char* classNames[]={
83 "java/util/Vector" , // 0
84 "java/lang/Boolean", // 1
85 "java/lang/Byte", // 2
86 "java/lang/Short", // 3
87 "java/lang/Integer", // 4
88 "java/lang/Long", // 5
89 "java/lang/Float", // 6
90 "java/lang/Double", // 7
91 "org/pegasus/jmpi/UnsignedInt8", // 8
92 "org/pegasus/jmpi/UnsignedInt16", // 9
93 "org/pegasus/jmpi/UnsignedInt32", // 10
94 "org/pegasus/jmpi/UnsignedInt64", // 11
95 "org/pegasus/jmpi/CIMObjectPath", // 12
96 "org/pegasus/jmpi/CIMException", // 13
97 schuur 1.1 "java/math/BigInteger", // 14
98 "org/pegasus/jmpi/CIMProperty", // 15
99
100 "org/pegasus/jmpi/CIMOMHandle", // 16
101 "org/pegasus/jmpi/CIMClass", // 17
102 "org/pegasus/jmpi/CIMInstance", // 18
103 "org/pegasus/jmpi/CIMValue", // 19
|
104 schuur 1.3 "java/lang/Object", // 20
105 "java/lang/Throwable", // 21
106 "java/lang/String", // 22
|
107 schuur 1.1 "org/pegasus/jmpi/JarClassLoader", // 23
|
108 schuur 1.3 "org/pegasus/jmpi/CIMDateTime", // 24
109 "org/pegasus/jmpi/SelectExp", // 25
|
110 schuur 1.5 "org/pegasus/jmpi/CIMQualifier", // 26
111 "org/pegasus/jmpi/CIMQualifierType",// 27
112 "org/pegasus/jmpi/CIMFlavor", // 28
|
113 schuur 1.7 "org/pegasus/jmpi/CIMArgument", // 29
114 "org/pegasus/jmpi/CIMInstanceException", // 30
|
115 schuur 1.1 };
116
117
118 const METHOD_STRUCT instanceMethodNames[]={
|
119 schuur 1.3 /*00*/ { 0, "<init>", "()V" },
|
120 schuur 1.1 /*01*/ { 1, "<init>", "(Z)V" },
121 /*02*/ { 2, "<init>", "(B)V" },
122 /*03*/ { 3, "<init>", "(S)V" },
123 /*04*/ { 4, "<init>", "(I)V" },
124 /*05*/ { 5, "<init>", "(J)V" }, // ???
125 /*06*/ { 6, "<init>", "(F)V" },
126 /*07*/ { 7, "<init>", "(D)V" },
127 /*08*/ { 8, "<init>", "(S)V" },
128 /*09*/ { 9, "<init>", "(I)V" },
129 /*10*/ { 10,"<init>", "(J)V" },
130 /*11*/ { 11,"<init>", "(Ljava/math/BigInteger;)V" },
131 /*12*/ { 12,"<init>", "(I)V" },
132 /*13*/ { 13,"<init>", "(Ljava/lang/String;)V" },
133 /*14*/ { 15,"<init>", "(I)V" },
134 /*15*/ { 0, "addElement", "(Ljava/lang/Object;)V" },
135
136 /*16*/ { 0, "elementAt", "(I)Ljava/lang/Object;" },
|
137 schuur 1.3 /*17*/ { 16,"<init>", "(ILjava/lang/String;)V" },
|
138 schuur 1.1 /*18*/ { 13,"<init>", "(I)V" },
139 /*19*/ { 17,"<init>", "(I)V" },
140 /*20*/ { 18,"<init>", "(I)V" },
141 /*21*/ { 12,"<init>", "(I)V" },
142 /*22*/ { 12,"cInst", "()I" },
143 /*23*/ { 18,"cInst", "()I" },
144 /*24*/ { 17,"cInst", "()I" },
145 /*25*/ { 20,"toString", "()Ljava/lang/String;" },
146 /*26*/ { 21,"getMessage", "()Ljava/lang/String;" },
147 /*27*/ { 13,"getID", "()Ljava/lang/String;" },
148 /*28*/ { 0, "size", "()I" },
149 /*29*/ { 15,"cInst", "()I" },
150 /*30*/ { 16,"getClass", "(Lorg/pegasus/jmpi/CIMObjectPath;Z)Lorg/pegasus/jmpi/CIMClass;" },
151 /*31*/ { 0, "removeElementAt", "(I)V" },
152 /*32*/ { 19,"cInst", "()I" },
|
153 schuur 1.7 /*33*/ { 13,"<init>", "(ILjava/lang/String;)V" },
154 /*34*/ { 13,"getCode", "()I" },
|
155 r.kieninger 1.11 /*35*/ { 24,"<init>", "(I)V" },
|
156 schuur 1.7 /*36*/ { 25,"<init>", "(I)V" },
157 /*37*/ { 26,"<init>", "(I)V" },
158 /*38*/ { 28,"<init>", "(I)V" },
159 /*38*/ { 28,"getFlavor", "()I" },
160 /*39*/ { 29,"cInst", "()I" },
161 /*40*/ { 29,"<init>", "(I)V" },
162 /*41*/ { 13,"<init>", "()V" },
163 /*42*/ { 13,"<init>", "(Ljava/lang/String;)V" },
164 /*43*/ { 13,"<init>", "(Ljava/lang/String;Ljava/lang/Object;)V" },
165 /*44*/ { 13,"<init>", "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V" },
166 /*45*/ { 13,"<init>", "(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V" },
|
167 schuur 1.1 };
168
169 const METHOD_STRUCT staticMethodNames[]={
170 { 14, "valueOf", "(J)Ljava/math/BigInteger;" },
171 { 23, "load", "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;" },
172 };
173
174
175 static int methodInitDone=0;
176
177 jclass classRefs[sizeof(classNames)/sizeof(char*)];
178 jmethodID instanceMethodIDs[sizeof(instanceMethodNames)/sizeof(METHOD_STRUCT)];
179 jmethodID staticMethodIDs[sizeof(staticMethodNames)/sizeof(METHOD_STRUCT)];
180 static jclass providerClassRef;
181
182 jclass JMPIjvm::getGlobalClassRef(JNIEnv *env, const char* name) {
183 jclass localRefCls=env->FindClass(name);
|
184 mark.hamzy 1.16
185 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::"<<__FUNCTION__<<": localRefCls = "<<PEGASUS_STD(hex)<<(int)localRefCls<<PEGASUS_STD(dec)<<", name = "<<name<<PEGASUS_STD(endl));
186
187 if (localRefCls==NULL)
188 return JNI_FALSE;
189
|
190 schuur 1.1 jclass globalRefCls=(jclass) env->NewGlobalRef(localRefCls);
|
191 mark.hamzy 1.16
|
192 schuur 1.1 env->DeleteLocalRef(localRefCls);
|
193 mark.hamzy 1.16
|
194 schuur 1.1 return globalRefCls;
195 }
196
197 JMPIjvm::JMPIjvm() {
198 initJVM();
199 }
200
201 JMPIjvm::~JMPIjvm() {
|
202 schuur 1.7
|
203 schuur 1.1 }
204
205 int JMPIjvm::cacheIDs(JNIEnv *env) {
|
206 mark.hamzy 1.16 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): enter"<<PEGASUS_STD(endl));
207
208 if (methodInitDone==1)
209 return JNI_TRUE;
210 if (methodInitDone==-1)
211 return JNI_FALSE;
|
212 schuur 1.1
213 methodInitDone=-1;
|
214 mark.hamzy 1.16
|
215 schuur 1.1 for (unsigned i=0; i<(sizeof(classNames)/sizeof(char*)); i++) {
|
216 mark.hamzy 1.16 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<classNames[i]<<PEGASUS_STD(endl));
217 if ((classRefs[i]=getGlobalClassRef(env,classNames[i]))==NULL)
218 {
219 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error: Count not find global class ref for "<<classNames[i]<<PEGASUS_STD(endl));
220
221 return JNI_FALSE;
222 }
|
223 schuur 1.1 }
|
224 schuur 1.7
|
225 schuur 1.1 for (unsigned j=0; j<(sizeof(instanceMethodNames)/sizeof(METHOD_STRUCT)); j++) {
|
226 mark.hamzy 1.16 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<j<<": "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<PEGASUS_STD(endl));
227 if ((instanceMethodIDs[j]=env->GetMethodID(classRefs[instanceMethodNames[j].clsIndex],
228 instanceMethodNames[j].methodName,instanceMethodNames[j].signature))==NULL)
229 {
230 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[instanceMethodNames[j].clsIndex]<<": "<<instanceMethodNames[j].methodName<<PEGASUS_STD(endl));
|
231 schuur 1.1 return 0;
|
232 mark.hamzy 1.17 }
|
233 mark.hamzy 1.16 }
|
234 schuur 1.1
235 for (unsigned k=0; k<(sizeof(staticMethodNames)/sizeof(METHOD_STRUCT)); k++) {
|
236 mark.hamzy 1.16 //////DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Trying "<<k<<": "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<PEGASUS_STD(endl));
237 if ((staticMethodIDs[k]=env->GetStaticMethodID(classRefs[staticMethodNames[k].clsIndex],
238 staticMethodNames[k].methodName,staticMethodNames[k].signature))==NULL)
239 {
240 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): Error could not get method id for "<<classNames[staticMethodNames[k].clsIndex]<<": "<<staticMethodNames[k].methodName<<PEGASUS_STD(endl));
241 return 0;
242 }
243 }
244
245 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::cacheIDs(): exit"<<PEGASUS_STD(endl));
246
|
247 schuur 1.1 methodInitDone=1;
|
248 mark.hamzy 1.16
|
249 schuur 1.1 return JNI_TRUE;
250 }
251
252 static void throwCIMException(JNIEnv *env,char *e) {
253 env->ThrowNew(classRefs[13],e);
254 }
255
|
256 schuur 1.3 int JMPIjvm::destroyJVM()
257 {
|
258 mark.hamzy 1.16 DDD(PEGASUS_STD(cerr)<<"--- JPIjvm::destroyJVM()"<<PEGASUS_STD(endl));
259
|
260 schuur 1.3 #ifdef JAVA_DESTROY_VM_WORKS
261 if (jvm!=NULL) {
262 JvmVector *jv;
263 attachThread(&jv);
264 jvm->DestroyJavaVM();
265 jvm=NULL;
266 return 0;
267 }
268 #endif
|
269 mark.hamzy 1.16
|
270 schuur 1.3 return -1;
271 }
272
|
273 schuur 1.1 int JMPIjvm::initJVM()
274 {
275 JavaVMInitArgs vm_args;
276 jint res;
|
277 mark.hamzy 1.16 char *envstring;
|
278 schuur 1.1 JNIEnv *env;
|
279 mark.hamzy 1.16 JavaVMOption *poptions = 0;
280 int maxoption = 0;
281 Array<std::string> JNIoptions;
282 static const char *aENVoptions[][2] = {
283 { "CLASSPATH", "-Djava.class.path=" },
284 { "PEGASUS_JMPI_MAX_HEAP", "-Xmx" },
285 { "PEGASUS_JMPI_INITIAL_HEAP", "-Xms" },
286 { "PEGASUS_JMPI_JAVA_THREAD_STACK_SIZE", "-Xss" }
287 };
288 std::ostringstream oss;
|
289 schuur 1.9
290 #ifdef PEGASUS_DEBUG
|
291 mark.hamzy 1.16 if (getenv("PEGASUS_JMPI_TRACE")) JMPIjvm::trace=1;
292 else JMPIjvm::trace=0;
|
293 schuur 1.9 #else
|
294 mark.hamzy 1.16 JMPIjvm::trace=0;
|
295 schuur 1.9 #endif
|
296 schuur 1.2
|
297 mark.hamzy 1.16 DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM()" << PEGASUS_STD(endl));
298
|
299 schuur 1.1 jv.initRc=0;
300
|
301 mark.hamzy 1.16 envstring=getenv("CLASSPATH");
302 if (envstring==NULL) {
303 jv.initRc=1;
304
305 DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): No CLASSPATH environment variable found" << PEGASUS_STD(endl));
306
307 return -1;
308 }
309
310 for (Uint32 i = 0; i < (int)(sizeof (aENVoptions)/sizeof (aENVoptions[0])); i++)
311 {
312 const char *name = aENVoptions[i][0];
313
314 envstring = getenv (name);
315 if (envstring)
316 {
317 maxoption++;
318
319 oss.str ("");
320 oss << aENVoptions[i][1] << envstring;
321
322 mark.hamzy 1.16 JNIoptions.append (oss.str ());
323
324 DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): " << name << " found! Specifying \"" << oss.str () << "\"" << PEGASUS_STD(endl));
325 }
326 }
327
328 poptions = (JavaVMOption *)calloc (maxoption, sizeof (JavaVMOption));
329 if (!poptions)
330 {
|
331 schuur 1.1 jv.initRc=1;
|
332 mark.hamzy 1.16
333 DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Could not allocate " << maxoption << " structures of size " << sizeof (JavaVMOption) << PEGASUS_STD(endl));
334
|
335 schuur 1.1 return -1;
336 }
337
|
338 mark.hamzy 1.16 for (Uint32 i=0; i < JNIoptions.size(); i++)
339 {
340 poptions[i].optionString = (char *)JNIoptions[i].c_str ();
341
342 DDD(PEGASUS_STD(cout) << "--- JMPIjvm::initJVM(): Setting option " << i << " to \"" << poptions[i].optionString << "\"" << PEGASUS_STD(endl));
343 }
344
|
345 schuur 1.1 vm_args.version=0x00010002;
|
346 mark.hamzy 1.16 vm_args.options=poptions;
347 vm_args.nOptions=maxoption;
|
348 schuur 1.1 vm_args.ignoreUnrecognized=JNI_TRUE;
349
350 res=JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
|
351 mark.hamzy 1.16
352 if (poptions)
353 {
354 free (poptions);
355 }
356
|
357 schuur 1.1 if (res!=0) {
|
358 mark.hamzy 1.16 DDD(PEGASUS_STD(cerr) << "--- JMPIjvm::initJVM(): Can not create Java VM"<<PEGASUS_STD(endl));
359
|
360 schuur 1.1 exit(1);
361 }
362 jv.jvm=jvm;
363 jv.env=env;
364
365 if (cacheIDs(env)==1) {
366 jv.classRefs=classRefs;
367 jv.instMethodIDs=instanceMethodIDs;
368 }
369
370 if (env->ExceptionOccurred()) {
371 env->ExceptionDescribe();
372 exit(1);
373 }
374
375 return res;
376 }
377
378 JNIEnv* JMPIjvm::attachThread(JvmVector **jvp) {
379 JNIEnv* env;
380 if (jvm==NULL) initJVM();
381 schuur 1.1 jvm->AttachCurrentThread((void**)&env,NULL);
382 *jvp=&jv;
383 return env;
384 }
385
386 void JMPIjvm::detachThread() {
387 jvm->DetachCurrentThread();
388 }
389
390 jobject JMPIjvm::getProvider(JNIEnv *env, String jar, String cln,
391 const char *cn, jclass *cls)
392 {
|
393 mark.hamzy 1.17 jobject gProv=NULL;
394 jclass scls=NULL;
|
395 mark.hamzy 1.16
396 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::"<<__FUNCTION__<<": jar = "<<jar<<", cln = "<<cln<<", cn = "<<cn<<", cls = "<<cls<<PEGASUS_STD(endl));
|
397 mark.hamzy 1.17
398 _objectTable.lookup(cln,gProv);
399 _classTable.lookup(cln,scls);
|
400 mark.hamzy 1.16 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::"<<__FUNCTION__<<": gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<", scls = "<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
401
|
402 schuur 1.1 if (gProv) {
403 *cls=scls;
404 return gProv;
405 }
406
407 /*
|
408 mark.hamzy 1.16 DDD(PEGASUS_STD(cout)<<"--- jar: "<<jar<<PEGASUS_STD(endl));
409 DDD(PEGASUS_STD(cout)<<"--- cln: "<<cln<<PEGASUS_STD(endl));
|
410 schuur 1.1
411 jstring jjar=env->NewStringUTF((const char*)jar.getCString());
412 jstring jcln=env->NewStringUTF((const char*)cln.getCString());
413
414 jclass jcls=(jclass)env->CallStaticObjectMethod(classRefs[23],staticMethodIDs[1],
415 jjar,jcln);
416 if (env->ExceptionCheck()) {
417 env->ExceptionDescribe();
|
418 mark.hamzy 1.16 PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl);
419 ////////return NULL;
|
420 schuur 1.1 }
421 */
422
423 scls=getGlobalClassRef(env,(const char*)cln.getCString());
424 if (env->ExceptionCheck()) {
|
425 mark.hamzy 1.16 DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::"<<__FUNCTION__<<": Provider "<<cn<<" not found"<<PEGASUS_STD(endl));
426 DDD(env->ExceptionDescribe());
427
|
428 schuur 1.1 return NULL;
429 }
|
430 mark.hamzy 1.17 *cls=scls;
431
432 if (scls)
433 {
434 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::"<<__FUNCTION__<<": scls = "<<PEGASUS_STD(hex)<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
435 _classTable.insert(cln,scls);
436 }
|
437 schuur 1.1
438 jmethodID id=env->GetMethodID(*cls,"<init>","()V");
439 jobject lProv=env->NewObject(*cls,id);
440 gProv=(jobject)env->NewGlobalRef(lProv);
441 if (env->ExceptionCheck()) {
|
442 mark.hamzy 1.16 DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl));
|
443 schuur 1.1 return NULL;
444 }
|
445 mark.hamzy 1.17
446 if (gProv)
447 {
448 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::"<<__FUNCTION__<<": gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
449 _objectTable.insert(cln,gProv);
450 }
451
|
452 schuur 1.1 return gProv;
453 }
454
455 jobject JMPIjvm::getProvider(JNIEnv *env, const char *cn, jclass *cls)
456 {
|
457 mark.hamzy 1.17 String cln = cn;
458 jobject gProv=NULL;
459 jclass scls=NULL;
|
460 mark.hamzy 1.16
461 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::"<<__FUNCTION__<<": cn = "<<cn<<", cls = "<<cls<<PEGASUS_STD(endl));
|
462 mark.hamzy 1.17
463 _objectTable.lookup(cln,gProv);
464 _classTable.lookup(cln,scls);
|
465 mark.hamzy 1.16 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::"<<__FUNCTION__<<": gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<", scls = "<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
466
|
467 schuur 1.1 if (gProv) {
468 *cls=scls;
469 return gProv;
470 }
471
472 scls=getGlobalClassRef(env,cn);
473 if (env->ExceptionCheck()) {
|
474 mark.hamzy 1.16 DDD(PEGASUS_STD(cerr)<<"--- JMPIjvm::"<<__FUNCTION__<<": Provider "<<cn<<" not found"<<PEGASUS_STD(endl));
475 DDD(env->ExceptionDescribe());
476
|
477 schuur 1.1 return NULL;
478 }
|
479 mark.hamzy 1.17 *cls=scls;
480
481 if (scls)
482 {
483 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::"<<__FUNCTION__<<": scls = "<<PEGASUS_STD(hex)<<(int)scls<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
484 _classTable.insert(cln,scls);
485 }
|
486 schuur 1.1
487 jmethodID id=env->GetMethodID(*cls,"<init>","()V");
488 jobject lProv=env->NewObject(*cls,id);
489 gProv=(jobject)env->NewGlobalRef(lProv);
490 if (env->ExceptionCheck()) {
|
491 mark.hamzy 1.16 DDD(PEGASUS_STD(cerr)<<"--- Unable to instantiate provider "<<cn<<PEGASUS_STD(endl));
|
492 schuur 1.1 return NULL;
493 }
|
494 mark.hamzy 1.17
495 if (gProv)
496 {
497 DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::"<<__FUNCTION__<<": gProv = "<<PEGASUS_STD(hex)<<(int)gProv<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
498 _objectTable.insert(cln,gProv);
499 }
500
|
501 schuur 1.1 return gProv;
502 }
503
504 void JMPIjvm::checkException(JNIEnv *env)
505 {
506 if (env->ExceptionCheck()) {
|
507 schuur 1.7 jstring jMsg=NULL,jId=NULL;
508 int code;
509 const char *cp;
510 String msg=String::EMPTY,id=String::EMPTY;
511
|
512 schuur 1.1 jthrowable err=env->ExceptionOccurred();
|
513 mark.hamzy 1.16 DDD(env->ExceptionDescribe());
|
514 schuur 1.7 if (env->IsInstanceOf(err,JMPIjvm::jv.CIMExceptionClassRef)) {
515 env->ExceptionClear();
516 if (err) {
517 jMsg=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.ThrowableGetMessage);
518 code=(int)env->CallIntMethod(err,JMPIjvm::jv.CIMExceptionGetCode);
519 jId=(jstring)env->CallObjectMethod(err,JMPIjvm::jv.CIMExceptionGetID);
520 if (jId) {
521 cp=env->GetStringUTFChars(jId,NULL);
522 id=String(cp);
523 env->ReleaseStringUTFChars(jId,cp);
524 }
525
526 if (jMsg) {
527 cp=env->GetStringUTFChars(jMsg,NULL);
528 msg=String(cp);
529 env->ReleaseStringUTFChars(jMsg,cp);
530 }
|
531 mark.hamzy 1.16
532 DDD(PEGASUS_STD(cerr)<<"--- throwing Pegasus exception: "<<code<<" "<<id<<" ("<<msg<<")"<<PEGASUS_STD(endl));
533
|
534 schuur 1.7 throw CIMException((CIMStatusCode)code,id+" ("+msg+")");
|
535 mark.hamzy 1.17 }
|
536 schuur 1.7 }
537 else {
538 env->ExceptionDescribe();
539 exit(13);
|
540 schuur 1.1 }
|
541 schuur 1.7 }
|
542 schuur 1.2 }
|
543 schuur 1.1
544 /**************************************************************************
545 * name - NewPlatformString
546 * description - Returns a new Java string object for the specified
547 * platform string.
548 * parameters - env
549 * s Platform encoded string
550 * returns - Java string object pointer or null (0)
551 **************************************************************************/
552 jstring JMPIjvm::NewPlatformString(JNIEnv *env, char *s)
553 {
554 size_t len = strlen(s);
555 jclass cls;
556 jmethodID mid;
557 jbyteArray ary;
558
559 NULL_CHECK0(cls = (*env).FindClass("java/lang/String"));
560 NULL_CHECK0(mid = (*env).GetMethodID(cls, "<init>", "([B)V"));
561 ary = (*env).NewByteArray((jsize)len);
562 if (ary != 0) {
563 jstring str = 0;
564 schuur 1.1 (*env).SetByteArrayRegion(ary, 0, (jsize)len,
565 (jbyte *)s);
566 if (!(*env).ExceptionOccurred()) {
567 str = (jstring)(*env).NewObject(cls, mid, ary);
568 }
569 (*env).DeleteLocalRef(ary);
570 return str;
571 }
572 return 0;
573 }
574
575
576 /**************************************************************************
577 * name - NewPlatformStringArray
578 * description - Returns a new array of Java string objects for the specified
579 * array of platform strings.
580 * parameters - env
581 * strv Platform encoded string array
582 * strc Number of strings in strv
583 * returns - Java string array object pointer
584 **************************************************************************/
585 schuur 1.1 jobjectArray JMPIjvm::NewPlatformStringArray(JNIEnv *env, char **strv, int strc)
586 {
587 jarray cls;
588 jarray ary;
589 int i;
590
591 NULL_CHECK0(cls = (jarray)(*env).FindClass("java/lang/String"));
592 NULL_CHECK0(ary = (*env).NewObjectArray(strc, (jclass)cls, 0));
593 for (i = 0; i < strc; i++) {
594 jstring str = NewPlatformString(env, *strv++);
595 NULL_CHECK0(str);
596 (*env).SetObjectArrayElement((jobjectArray)ary, i, str);
597 (*env).DeleteLocalRef(str);
598 }
599 return (jobjectArray)ary;
600 }
601
602
603
604
605
606 schuur 1.1 extern "C" {
607
608
609 void throwCimException(JNIEnv *jEnv, CIMException & e) {
610 JMPIjvm::cacheIDs(jEnv);
611 jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],(jint)e.getCode());
612 jEnv->Throw((jthrowable)ev);
613 }
614
615 void throwFailedException(JNIEnv *jEnv) {
616 JMPIjvm::cacheIDs(jEnv);
617 jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],1);
618 jEnv->Throw((jthrowable)ev);
619 }
620
621 void throwNotSupportedException(JNIEnv *jEnv) {
622 JMPIjvm::cacheIDs(jEnv);
623 jobject ev=jEnv->NewObject(classRefs[13],instanceMethodIDs[18],7);
624 jEnv->Throw((jthrowable)ev);
625 }
626
627 schuur 1.1
|
628 schuur 1.7
629
630 // -------------------------------------
631 // ---
632 // - CIMException
633 // ---
634 // -------------------------------------
635
636 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1new
637 (JNIEnv *jEnv, jobject jThs) {
638 jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[41]);
639 }
640
641 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newS
642 (JNIEnv *jEnv, jobject jThs, jstring jM) {
643 jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[42],jM);
644 }
645
646 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSO
647 (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1) {
648 jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[43],jM,jO1);
649 schuur 1.7 }
650
651 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOO
652 (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2) {
653 jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[44],jM,jO1,jO2);
654 }
655
656 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstanceException__1newSOOO
657 (JNIEnv *jEnv, jobject jThs, jstring jM, jobject jO1, jobject jO2, jobject jO3) {
658 jEnv->CallNonvirtualVoidMethod(jThs,classRefs[13],instanceMethodIDs[45],jM,jO1,jO2,jO3);
659 }
660
661
662
|
663 schuur 1.1 // -------------------------------------
664 // ---
665 // - CIMOMHandle
666 // ---
667 // -------------------------------------
668
|
669 schuur 1.7 CIMPropertyList getList(JNIEnv *jEnv, jobjectArray l) {
670 CIMPropertyList pl;
671 if (l) {
672 Array<CIMName> n;
673 for (jsize i=0,s=jEnv->GetArrayLength(l); i<s; i++) {
674 jstring jObj=(jstring)jEnv->GetObjectArrayElement(l,i);
675 const char *pn=jEnv->GetStringUTFChars(jObj,NULL);
676 n.append(pn);
677 jEnv->ReleaseStringUTFChars(jObj,pn);
678 }
679 pl.set(n);
680 }
681 return pl;
682 }
683
|
684 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getClass
|
685 schuur 1.7 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo,
686 jboolean iq, jboolean ic, jobjectArray jPl) {
|
687 schuur 1.1 CIMOMHandle *ch=(CIMOMHandle*)jCh;
688 CIMObjectPath *cop=(CIMObjectPath*)jCop;
|
689 schuur 1.7 CIMPropertyList pl;
|
690 schuur 1.1 OperationContext ctx;
|
691 schuur 1.7 if (jPl) pl=getList(jEnv,jPl);
692 else pl=CIMPropertyList();
|
693 schuur 1.1 try {
|
694 schuur 1.7 CIMClass cls=ch->getClass(ctx,cop->getNameSpace(),cop->getClassName(),(Boolean)lo,
695 (Boolean)iq,(Boolean)ic,pl);
696 return (jint) new CIMClass(cls);
|
697 schuur 1.1 }
698 Catch(jEnv);
699 return 0;
700 }
701
|
702 schuur 1.7 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createClass
703 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, int jCl) {
704 CIMOMHandle *ch=(CIMOMHandle*)jCh;
705 CIMObjectPath *cop=(CIMObjectPath*)jCop;
706 CIMClass *cl=(CIMClass*)jCl;
707 OperationContext ctx;
708 try {
709 ch->createClass(ctx,cop->getNameSpace(),*cl);
710 }
711 Catch(jEnv);
712 return;
713 }
714
715 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setClass
716 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCl) {
717 CIMOMHandle *ch=(CIMOMHandle*)jCh;
718 CIMObjectPath *cop=(CIMObjectPath*)jCop;
719 CIMClass *cl=(CIMClass*)jCl;
720 OperationContext ctx;
721 try {
722 ch->modifyClass(ctx,cop->getNameSpace(),*cl);
723 schuur 1.7 }
724 Catch(jEnv);
725 return ;
726 }
727
728 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteClass
729 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop) {
730
731 CIMOMHandle *ch=(CIMOMHandle*)jCh;
732 CIMObjectPath *cop=(CIMObjectPath*)jCop;
733 OperationContext ctx;
734
735 try {
736 ch->deleteClass(ctx,cop->getNameSpace(),cop->getClassName());
737 }
738 Catch(jEnv);
739 }
740
741 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClassNames
742 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep) {
743 CIMOMHandle *ch=(CIMOMHandle*)jCh;
744 schuur 1.7 CIMObjectPath *cop=(CIMObjectPath*)jCop;
745 CIMNamespaceName ns=cop->getNameSpace();
746 OperationContext ctx;
747 try {
748 Array<CIMName> enm=ch->enumerateClassNames(ctx,cop->getNameSpace(),cop->getClassName(),deep);
749 Array<CIMObjectPath> *enmop=new Array<CIMObjectPath>();
750 for (int i=0,m=enm.size(); i<m; i++) {
751 enmop->append(CIMObjectPath(String::EMPTY,ns,enm[i]));
752 }
753 return (jint)enmop;
754 }
755 Catch(jEnv);
756 return 0;
757 }
758
759 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateClasses
760 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep,
761 jboolean lo, jboolean iq, jboolean ic) {
|
762 schuur 1.1 CIMOMHandle *ch=(CIMOMHandle*)jCh;
763 CIMObjectPath *cop=(CIMObjectPath*)jCop;
764 OperationContext ctx;
765 try {
766 Array<CIMClass> en=ch->enumerateClasses(ctx,cop->getNameSpace(),cop->getClassName(),
|
767 schuur 1.7 deep,(Boolean)lo,iq,ic);
768 return (jint) new Array<CIMClass>(en);
769 }
770 Catch(jEnv);
771 return 0;
772 }
773
774 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getInstance
775 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean lo, jboolean iq, jboolean ic,
776 jobjectArray jPl) {
777
778 CIMOMHandle *ch=(CIMOMHandle*)jCh;
779 CIMObjectPath *cop=(CIMObjectPath*)jCop;
780 OperationContext ctx;
781 CIMPropertyList pl;
782 if (jPl) pl=getList(jEnv,jPl);
783 else pl=CIMPropertyList();
784 try {
785 CIMInstance *inst=new CIMInstance(ch->getInstance(ctx,cop->getNameSpace(),*cop,
786 (Boolean)lo,(Boolean)iq,(Boolean)ic,pl));
787 return (jint)(void*)inst;
788 schuur 1.7 }
789 Catch(jEnv);
790 return -1;
791 }
792
793 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deleteInstance
794 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop) {
795
796 CIMOMHandle *ch=(CIMOMHandle*)jCh;
797 CIMObjectPath *cop=(CIMObjectPath*)jCop;
798 OperationContext ctx;
799
800 try {
801 ch->deleteInstance(ctx,cop->getNameSpace(),*cop);
802 }
803 Catch(jEnv);
804 }
805
806 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1createInstance
807 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, int jCi) {
808 CIMOMHandle *ch=(CIMOMHandle*)jCh;
809 schuur 1.7 CIMObjectPath *cop=(CIMObjectPath*)jCop;
810 CIMInstance *ci=(CIMInstance*)jCi;
811 OperationContext ctx;
812 try {
813 ci->setPath(*cop);
814 CIMObjectPath obj=ch->createInstance(ctx,cop->getNameSpace(),*ci);
815 return (jint) new CIMObjectPath(obj);
816 }
817 Catch(jEnv);
818 return 0;
819 }
820
821 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1modifyInstance
822 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jint jCi,
823 jboolean iq, jobjectArray jPl) {
824 CIMOMHandle *ch=(CIMOMHandle*)jCh;
825 CIMObjectPath *cop=(CIMObjectPath*)jCop;
826 CIMInstance *ci=(CIMInstance*)jCi;
827 CIMPropertyList pl=getList(jEnv,jPl);
828 OperationContext ctx;
829 try {
830 schuur 1.7 ci->setPath(*cop);
831 ch->modifyInstance(ctx,cop->getNameSpace(),*ci,(Boolean)iq,pl);
832 }
833 Catch(jEnv);
834 return ;
835 }
836
837 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstanceNames
838 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep) {
839 CIMOMHandle *ch=(CIMOMHandle*)jCh;
840 CIMObjectPath *cop=(CIMObjectPath*)jCop;
841 OperationContext ctx;
842 try {
843 Array<CIMObjectPath> enm=ch->enumerateInstanceNames(ctx,
844 cop->getNameSpace(),cop->getClassName()); //,(Boolean)deep);
845 return (jint) new Array<CIMObjectPath>(enm);
846 }
847 Catch(jEnv);
848 return 0;
849 }
850
851 schuur 1.7 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1enumerateInstances
852 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jboolean deep,
853 jboolean lo, jboolean iq, jboolean ic, jobjectArray jPl) {
854 CIMOMHandle *ch=(CIMOMHandle*)jCh;
855 CIMObjectPath *cop=(CIMObjectPath*)jCop;
856 CIMPropertyList pl;
857 OperationContext ctx;
858 if (jPl) pl=getList(jEnv,jPl);
859 else pl=CIMPropertyList();
860 try {
861 Array<CIMInstance> en=ch->enumerateInstances(ctx,cop->getNameSpace(),cop->getClassName(),
862 deep,lo,iq,ic,pl);
863 return (jint) new Array<CIMInstance>(en);
864 }
865 Catch(jEnv);
866 return 0;
867 }
868
869 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1execQuery
870 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jQuery, jstring jQl) {
871 CIMOMHandle *ch=(CIMOMHandle*)jCh;
872 schuur 1.7 CIMObjectPath *cop=(CIMObjectPath*)jCop;
873 OperationContext ctx;
874
875 const char *str=jEnv->GetStringUTFChars(jQuery,NULL);
876 String query(str);
877 jEnv->ReleaseStringUTFChars(jQuery,str);
878 str=jEnv->GetStringUTFChars(jQl,NULL);
879 String ql(str);
880 jEnv->ReleaseStringUTFChars(jQl,str);
881
882 try {
883 Array<CIMObject> enm=ch->execQuery(ctx,cop->getNameSpace(),query,ql);
884 Array<CIMInstance> *enmInst=new Array<CIMInstance>();
885 for (int i=0,m=enm.size(); i<m; i++) {
886 enmInst->append(CIMInstance(enm[i]));
|
887 schuur 1.1 }
|
888 schuur 1.7 return (jint)enmInst;
|
889 schuur 1.1 }
890 Catch(jEnv);
|
891 schuur 1.7 return 0;
|
892 schuur 1.1 }
893
|
894 schuur 1.7
|
895 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1getProperty
896 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jN) {
897 CIMOMHandle *ch=(CIMOMHandle*)jCh;
898 CIMObjectPath *cop=(CIMObjectPath*)jCop;
899 OperationContext ctx;
900 const char *str=jEnv->GetStringUTFChars(jN,NULL);
|
901 schuur 1.3
|
902 schuur 1.1 try {
903 CIMName prop(str);
904 CIMValue *cv = new CIMValue(ch->getProperty(ctx, cop->getNameSpace(),*cop,prop));
905 jEnv->ReleaseStringUTFChars(jN,str);
906 return (jint)(void*)cv;
907 }
908 Catch(jEnv);
909 return -1;
910 }
911
|
912 schuur 1.7 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1setProperty
913 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jPn, jint jV) {
914 CIMOMHandle *ch=(CIMOMHandle*)jCh;
915 CIMObjectPath *cop=(CIMObjectPath*)jCop;
916 OperationContext ctx;
917 CIMValue *val=(CIMValue*)jCop;
918 const char *str=jEnv->GetStringUTFChars(jPn,NULL);
919 CIMName pName(str);
920 jEnv->ReleaseStringUTFChars(jPn,str);
921 try {
922 ch->setProperty(ctx,cop->getNameSpace(),*cop,pName,*val);
923 }
924 Catch(jEnv);
925 return;
926 }
927
928
929
930
931 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod
932 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn, jobject jIn, jobject jOut) {
933 schuur 1.7 CIMOMHandle *ch=(CIMOMHandle*)jCh;
934 CIMObjectPath *cop=(CIMObjectPath*)jCop;
935 OperationContext ctx;
936 const char *str=jEnv->GetStringUTFChars(jMn,NULL);
937 CIMName method(str);
938 jEnv->ReleaseStringUTFChars(jMn,str);
939
940 Array<CIMParamValue> in;
941 Array<CIMParamValue> out;
942
943 for (int i=0,m=jEnv->CallIntMethod(jIn,instanceMethodIDs[28]); i<m; i++) {
944 JMPIjvm::checkException(jEnv);
945 jobject jProp=jEnv->CallObjectMethod(jIn,instanceMethodIDs[16],i);
946 JMPIjvm::checkException(jEnv);
947 CIMProperty *p=((CIMProperty*)jEnv->CallIntMethod(jProp,instanceMethodIDs[29]));
948 JMPIjvm::checkException(jEnv);
949 in.append(CIMParamValue(p->getName().getString(),p->getValue()));
950 }
951 try {
952 CIMValue *val=new CIMValue(ch->invokeMethod(ctx,cop->getNameSpace(),*cop,method,in,out));
953
954 schuur 1.7 for (int i=0,m=out.size(); i<m; i++) {
955 const CIMParamValue & parm=out[i];
|
956 mark.hamzy 1.17 const CIMValue v=parm.getValue();
|
957 schuur 1.7 CIMProperty *p=new CIMProperty(parm.getParameterName(),v,v.getArraySize());
958 jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)p);
959 jEnv->CallVoidMethod(jOut,instanceMethodIDs[15],prop);
960 }
961 return (jint)val;
962 }
963 Catch(jEnv);
964 return 0;
965 }
|
966 schuur 1.1
|
967 schuur 1.7 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1invokeMethod24
968 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop, jstring jMn,
969 jobjectArray jIn, jobjectArray jOut) {
|
970 schuur 1.1 CIMOMHandle *ch=(CIMOMHandle*)jCh;
971 CIMObjectPath *cop=(CIMObjectPath*)jCop;
972 OperationContext ctx;
|
973 schuur 1.7 const char *str=jEnv->GetStringUTFChars(jMn,NULL);
974 CIMName method(str);
975 jEnv->ReleaseStringUTFChars(jMn,str);
976
977 Array<CIMParamValue> in;
978 Array<CIMParamValue> out;
|
979 schuur 1.3
|
980 schuur 1.7 for (int i=0,m=jEnv->GetArrayLength(jIn); i<m; i++) {
981 JMPIjvm::checkException(jEnv);
982 jobject jArg=jEnv->GetObjectArrayElement(jIn,i);
983 JMPIjvm::checkException(jEnv);
984 CIMParamValue *p=((CIMParamValue*)jEnv->CallIntMethod(jArg,instanceMethodIDs[39]));
985 JMPIjvm::checkException(jEnv);
986 in.append(*p);
987 }
|
988 schuur 1.1 try {
|
989 schuur 1.7 CIMValue *val=new CIMValue(ch->invokeMethod(ctx,cop->getNameSpace(),*cop,method,in,out));
990
991 for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut); i<m && i<o; i++) {
992 const CIMParamValue & parm=out[i];
|
993 mark.hamzy 1.17 jEnv->SetObjectArrayElement(jOut,i,
994 jEnv->NewObject(classRefs[29],instanceMethodIDs[40],(jint)&parm));
|
995 schuur 1.7 }
996 return (jint)val;
|
997 schuur 1.1 }
998 Catch(jEnv);
|
999 schuur 1.7 return 0;
|
1000 schuur 1.1 }
1001
1002
|
1003 schuur 1.7
1004 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1associatorNames
1005 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1006 jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole) {
|
1007 schuur 1.1 CIMOMHandle *ch=(CIMOMHandle*)jCh;
1008 CIMObjectPath *cop=(CIMObjectPath*)jCop;
1009 OperationContext ctx;
|
1010 schuur 1.3
|
1011 schuur 1.7 const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
1012 CIMName assocClass(str);
1013 jEnv->ReleaseStringUTFChars(jAssocClass,str);
1014 str=jEnv->GetStringUTFChars(jResultClass,NULL);
1015 CIMName resultClass(str);
1016 jEnv->ReleaseStringUTFChars(jResultClass,str);
1017 str=jEnv->GetStringUTFChars(jRole,NULL);
1018 String role(str);
1019 jEnv->ReleaseStringUTFChars(jRole,str);
1020 str=jEnv->GetStringUTFChars(jResultRole,NULL);
1021 String resultRole(str);
1022 jEnv->ReleaseStringUTFChars(jResultRole,str);
1023
|
1024 schuur 1.1 try {
|
1025 schuur 1.7 Array<CIMObjectPath> enm=ch->associatorNames(ctx,
1026 cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole);
1027 return (jint) new Array<CIMObjectPath>(enm);
1028 }
1029 Catch(jEnv);
1030 return 0;
1031 }
1032
1033 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIM__1associators
1034 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1035 jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,
1036 jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl) {
1037 CIMOMHandle *ch=(CIMOMHandle*)jCh;
1038 CIMObjectPath *cop=(CIMObjectPath*)jCop;
1039 CIMPropertyList pl=getList(jEnv,jPl);
1040 OperationContext ctx;
1041
1042 const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
1043 CIMName assocClass(str);
1044 jEnv->ReleaseStringUTFChars(jAssocClass,str);
1045 str=jEnv->GetStringUTFChars(jResultClass,NULL);
1046 schuur 1.7 CIMName resultClass(str);
1047 jEnv->ReleaseStringUTFChars(jResultClass,str);
1048 str=jEnv->GetStringUTFChars(jRole,NULL);
1049 String role(str);
1050 jEnv->ReleaseStringUTFChars(jRole,str);
1051 str=jEnv->GetStringUTFChars(jResultRole,NULL);
1052 String resultRole(str);
1053 jEnv->ReleaseStringUTFChars(jResultRole,str);
1054
1055 try {
1056 Array<CIMObject> enm=ch->associators(ctx,
|
1057 mark.hamzy 1.17 cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole,
1058 (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl);
|
1059 schuur 1.7 Array<CIMInstance> *enmInst=new Array<CIMInstance>();
1060 for (int i=0,m=enm.size(); i<m; i++) {
1061 enmInst->append(CIMInstance(enm[i]));
|
1062 schuur 1.1 }
|
1063 schuur 1.7 return (jint)enmInst;
|
1064 schuur 1.1 }
1065 Catch(jEnv);
|
1066 schuur 1.7 return 0;
|
1067 schuur 1.1 }
1068
|
1069 schuur 1.7 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1referenceNames
1070 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1071 jstring jAssocClass, jstring jRole) {
1072 CIMOMHandle *ch=(CIMOMHandle*)jCh;
1073 CIMObjectPath *cop=(CIMObjectPath*)jCop;
1074 OperationContext ctx;
1075
1076 const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
1077 CIMName assocClass(str);
1078 jEnv->ReleaseStringUTFChars(jAssocClass,str);
1079 str=jEnv->GetStringUTFChars(jRole,NULL);
1080 String role(str);
1081 jEnv->ReleaseStringUTFChars(jRole,str);
1082
1083 try {
1084 Array<CIMObjectPath> enm=ch->referenceNames(ctx,
1085 cop->getNameSpace(),*cop,assocClass,role);
1086 return (jint) new Array<CIMObjectPath>(enm);
1087 }
1088 Catch(jEnv);
1089 return 0;
1090 schuur 1.7 }
|
1091 schuur 1.1
|
1092 schuur 1.7 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1references
1093 (JNIEnv *jEnv, jobject jThs, jint jCh, jint jCop,
1094 jstring jAssocClass, jstring jRole,
1095 jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl) {
|
1096 schuur 1.1 CIMOMHandle *ch=(CIMOMHandle*)jCh;
1097 CIMObjectPath *cop=(CIMObjectPath*)jCop;
|
1098 schuur 1.7 CIMPropertyList pl=getList(jEnv,jPl);
|
1099 schuur 1.1 OperationContext ctx;
|
1100 schuur 1.3
|
1101 schuur 1.7 const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
1102 CIMName assocClass(str);
1103 jEnv->ReleaseStringUTFChars(jAssocClass,str);
1104 str=jEnv->GetStringUTFChars(jRole,NULL);
1105 String role(str);
1106 jEnv->ReleaseStringUTFChars(jRole,str);
1107
|
1108 schuur 1.1 try {
|
1109 schuur 1.7 Array<CIMObject> enm=ch->references(ctx,
|
1110 mark.hamzy 1.17 cop->getNameSpace(),*cop,assocClass,role,
1111 (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl);
|
1112 schuur 1.7 Array<CIMInstance> *enmInst=new Array<CIMInstance>();
1113 for (int i=0,m=enm.size(); i<m; i++) {
1114 enmInst->append(CIMInstance(enm[i]));
1115 }
1116 return (jint)enmInst;
|
1117 schuur 1.1 }
1118 Catch(jEnv);
|
1119 schuur 1.7 return 0;
|
1120 schuur 1.1 }
1121
|
1122 schuur 1.7
1123
|
1124 schuur 1.3 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent
1125 (JNIEnv *jEnv, jobject jThs, jint jCh, jstring jName, jstring jNs, jint jInd) {
1126
1127 CIMOMHandle *ch=(CIMOMHandle*)jCh;
1128 CIMInstance *ind=(CIMInstance*)jInd;
|
1129 schuur 1.1
|
1130 schuur 1.3 const char *str=jEnv->GetStringUTFChars(jName,NULL);
1131 String name(str);
1132 jEnv->ReleaseStringUTFChars(jName,str);
1133 str=jEnv->GetStringUTFChars(jNs,NULL);
1134 String ns(str);
1135 jEnv->ReleaseStringUTFChars(jNs,str);
1136
|
1137 schuur 1.8 CIMObjectPath ref(CIMObjectPath(ind->getPath()));
1138 ref.setNameSpace(ns);
1139 ind->setPath(ref);
1140
|
1141 schuur 1.3 JMPIProviderManager::indProvRecord *prec;
1142 OperationContext* context;
1143
1144 if (JMPIProviderManager::provTab.lookup(name,prec)) {
1145 if (prec->enabled) {
1146 context=prec->ctx;
1147 try {
1148 prec->handler->deliver(*context, *ind);
1149 }
1150 Catch(jEnv);
1151 }
1152 }
1153 else {
|
1154 mark.hamzy 1.16 DDD(PEGASUS_STD(cerr)<<"--- Java_org_pegasus_jmpi_CIMOMHandle__1deliverEvent() "<<name<<" not found"<<PEGASUS_STD(endl));
|
1155 schuur 1.3 }
1156 }
|
1157 schuur 1.1
1158 // -------------------------------------
1159 // ---
1160 // - CIMClass
1161 // ---
1162 // -------------------------------------
1163
1164 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1newInstance
1165 (JNIEnv *jEnv, jobject jThs, jint jCls) {
1166 CIMClass *cls=(CIMClass*)jCls;
1167 try {
1168 CIMInstance *ci=new CIMInstance(cls->getClassName());
|
1169 schuur 1.5 for (int i=0,m=cls->getQualifierCount(); i<m; i++) {
1170 try {
1171 ci->addQualifier(cls->getQualifier(i).clone());
|
1172 mark.hamzy 1.17 }
1173 catch (Exception e) {}
|
1174 schuur 1.5 }
|
1175 schuur 1.1 for (int i=0,m=cls->getPropertyCount(); i<m; i++) {
1176 CIMProperty cp= cls->getProperty(i);
1177 ci->addProperty(cp.clone());
|
1178 schuur 1.5 for (int j=0, s=cp.getQualifierCount(); j<s; j++) {
1179 try {
1180 ci->getProperty(i).addQualifier(cp.getQualifier(j));
|
1181 mark.hamzy 1.17 }
1182 catch (Exception e) {}
1183 }
|
1184 schuur 1.1 }
1185 return (jint)ci;
1186 }
1187 Catch(jEnv);
1188 return 0;
1189 }
1190
1191 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getName
1192 (JNIEnv *jEnv, jobject jThs, jint jCls) {
1193 CIMClass *cls=(CIMClass*)jCls;
|
1194 r.kieninger 1.11
|
1195 schuur 1.1 try {
1196 const String &cn=cls->getClassName().getString();
1197 jstring str=jEnv->NewStringUTF(cn.getCString());
1198 return str;
1199 }
1200 Catch(jEnv);
1201 return 0;
1202 }
1203
1204 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifier
1205 (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) {
1206 CIMClass *cls=(CIMClass*)jCls;
1207 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1208 jint rv=-1;
1209 Uint32 pos=cls->findQualifier(String(str));
1210 if (pos!=PEG_NOT_FOUND)
1211 rv=(jint)new CIMQualifier(cls->getQualifier(pos));
1212 jEnv->ReleaseStringUTFChars(jN,str);
1213 return rv;
1214 }
1215
1216 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperty
1217 (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) {
1218 CIMClass *cls=(CIMClass*)jCls;
1219 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1220 jint rv=-1;
1221 Uint32 pos=cls->findProperty(CIMName(str));
1222 if (pos!=PEG_NOT_FOUND)
1223 rv=(jint)new CIMProperty(cls->getProperty(pos));
1224 jEnv->ReleaseStringUTFChars(jN,str);
1225 return rv;
1226 }
1227
1228 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1hasQualifier
1229 (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jQ) {
1230 CIMClass *cls=(CIMClass*)jCls;
1231 const char *str=jEnv->GetStringUTFChars(jQ,NULL);
1232 Uint32 pos=cls->findQualifier(String(str));
1233 jEnv->ReleaseStringUTFChars(jQ,str);
1234 return (jboolean)(pos!=PEG_NOT_FOUND);
1235 }
1236
1237 schuur 1.1 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getProperties
1238 (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec) {
1239 CIMClass *cls=(CIMClass*)jCls;
|
1240 schuur 1.5
|
1241 schuur 1.1 for (int i=0,s=cls->getPropertyCount(); i<s; i++) {
1242 CIMProperty *cp=new CIMProperty(cls->getProperty(i));
|
1243 mark.hamzy 1.16
|
1244 schuur 1.1 jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
|
1245 mark.hamzy 1.16
|
1246 schuur 1.1 jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
1247 }
1248 return jVec;
1249 }
1250
|
1251 schuur 1.5 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1addProperty
1252 (JNIEnv *jEnv, jobject jThs, jint jCls, jint jP) {
1253 CIMClass *cls=(CIMClass*)jCls;
1254 CIMProperty *p=(CIMProperty*)jP;
1255 cls->addProperty(*p);
1256 }
1257
1258 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1setProperties
1259 (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec) {
1260 CIMClass *cls=(CIMClass*)jCls;
1261 for (int i=cls->getPropertyCount()-1; i>=0; i--) {
1262 cls->removeProperty(i);
1263 }
1264 for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,instanceMethodIDs[28]); i<s; i++) {
1265 jobject o=jEnv->CallObjectMethod(jVec,instanceMethodIDs[16],(i));
1266 CIMProperty *cp=(CIMProperty*)jEnv->CallIntMethod(o,instanceMethodIDs[29]);
1267 cls->addProperty(*cp);
1268 }
1269 }
1270
1271
1272 schuur 1.5 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getQualifiers
1273 (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec) {
1274 CIMClass *cls=(CIMClass*)jCls;
1275
1276 for (int i=0,s=cls->getQualifierCount(); i<s; i++) {
1277 CIMQualifier *cq=new CIMQualifier(cls->getQualifier(i));
1278 jobject qual=jEnv->NewObject(classRefs[26],instanceMethodIDs[37],(jint)cq);
1279 jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],qual);
1280 }
1281 return jVec;
1282 }
1283
|
1284 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1new
1285 (JNIEnv *jEnv, jobject jThs, jstring jN) {
1286 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1287 CIMClass *cls = new CIMClass(CIMName(str), CIMName());
1288 jEnv->ReleaseStringUTFChars(jN,str);
1289 return (jint)(void*)cls;
1290 }
1291
1292 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMClass__1getSuperClass
1293 (JNIEnv *jEnv, jobject jThs, jint jCls) {
1294 CIMClass *cls =(CIMClass *)jCls;
1295 const String &cn=cls->getSuperClassName().getString();
1296 jstring str=jEnv->NewStringUTF(cn.getCString());
1297 return str;
1298 }
1299
1300 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClass__1getKeys
1301 (JNIEnv *jEnv, jobject jThs, jint jCls, jobject jVec){
1302 CIMClass *cls=(CIMClass*)jCls;
1303 if (cls->hasKeys()) {
1304 Array<CIMName> keyNames;
1305 schuur 1.1 cls->getKeyNames(keyNames);
1306 for(int i=0, s=keyNames.size();i<s;i++){
1307 Uint32 pos=cls->findProperty(keyNames[i]);
1308 if (pos!=PEG_NOT_FOUND){
1309 CIMProperty *cp=new CIMProperty(cls->getProperty(pos));
1310 jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
1311 jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
1312 }
1313 }
1314 }
1315 return jVec;
1316 }
1317
1318 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1getMethod
1319 (JNIEnv *jEnv, jobject jThs, jint jCls, jstring jN) {
1320 CIMClass *cls=(CIMClass*)jCls;
1321 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1322 jint rv=-1;
1323 Uint32 pos=cls->findMethod(String(str));
1324 if (pos!=PEG_NOT_FOUND) {
1325 rv=(jint)new CIMMethod(cls->getMethod(pos));
1326 schuur 1.1 }
1327 jEnv->ReleaseStringUTFChars(jN,str);
1328 return rv;
1329 }
1330
1331 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMClass__1equals
1332 (JNIEnv *jEnv, jobject jThs, jint jCls, jint jClsToBeCompared) {
1333 CIMClass *cls = (CIMClass*)jCls;
1334 CIMClass *clsToBeCompared = (CIMClass*)jClsToBeCompared;
1335 return cls->identical(*clsToBeCompared);
1336 }
1337
1338 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClass__1finalize
1339 (JNIEnv *jEnv, jobject jThs, jint jCls) {
1340 CIMClass *cls=(CIMClass*)jCls;
1341 delete cls;
1342 }
1343
|
1344 schuur 1.7 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClass__1filterProperties
1345 (JNIEnv *jEnv, jobject jThs, jint jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo) {
1346 CIMClass *cc=(CIMClass *)jInst;
1347 CIMClass* cf;
1348 CIMName clsn=cc->getClassName();
1349
1350 if (lo) {
1351 cf=new CIMClass(cc->clone());
1352 CIMName clsn=cc->getClassName();
1353 for (int i=cf->getPropertyCount()-1; i>=0; i--)
1354 if (cf->getProperty(i).getClassOrigin()==clsn) cf->removeProperty(i);
1355 return (jint)cf;
1356 }
1357
1358 else if (jPl) {
1359 CIMPropertyList pl=getList(jEnv,jPl);
1360 Array<CIMName> n=pl.getPropertyNameArray();
1361 cf=new CIMClass(clsn, cc->getSuperClassName());
1362 for (int i=0,s=n.size(); i<s; i++) {
1363 Uint32 pos=cc->findProperty(n[i]);
1364 if (pos!=PEG_NOT_FOUND) {
1365 schuur 1.7 if (iq) {
1366 CIMProperty cp=cc->getProperty(pos).clone();
1367 if (!ic) cp.setClassOrigin(CIMName());
1368 cf->addProperty(cp);
1369 }
1370 else {
1371 CIMProperty cp=cc->getProperty(pos);
1372 CIMName co;
1373 if (ic) co=cp.getClassOrigin();
1374 CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(),
1375 cp.getReferenceClassName(),co,cp.getPropagated());
1376 cf->addProperty(np);
1377 }
1378 }
1379 }
1380 if (iq) for (Uint32 i=0,s=cc->getQualifierCount(); i<s; i++)
1381 cf->addQualifier(cc->getQualifier(i));
1382 }
1383
1384 else if (iq) {
1385 cf=new CIMClass(cc->clone());
1386 schuur 1.7 if (ic) return (jint)cf;
1387 for (int i=cf->getPropertyCount()-1; i>=0; i--) {
1388 CIMProperty cp=cf->getProperty(i);
1389 cp.setClassOrigin(CIMName());
1390 cf->removeProperty(i);
1391 cf->addProperty(cp);
1392 }
1393 }
1394
1395 else {
1396 cf=new CIMClass(clsn, cc->getSuperClassName());
1397 for (int i=cc->getPropertyCount()-1; i>=0; i--) {
1398 CIMProperty cp=cc->getProperty(i);
1399 CIMName co;
1400 if (ic) co=cp.getClassOrigin();
1401 CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(),
1402 cp.getReferenceClassName(),co,cp.getPropagated());
1403 cf->addProperty(np);
1404 }
1405 }
1406
1407 schuur 1.7 return (jint)cf;
1408 }
1409
|
1410 schuur 1.1
1411
1412 // -------------------------------------
1413 // ---
1414 // - CIMInstance
1415 // ---
1416
1417 // -------------------------------------
1418 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1new
1419 (JNIEnv *jEnv, jobject jThs) {
1420 return (jint)new CIMInstance();
1421 }
1422
1423 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1newCn
1424 (JNIEnv *jEnv, jobject jThs, jstring jN) {
1425 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1426 return (jint)new CIMInstance(CIMName(str));
1427 }
1428
1429 //Added by Andy Viciu
1430 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setName
1431 schuur 1.1 (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) {
1432 CIMInstance *ci=(CIMInstance*)jInst;
1433 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1434 /* NOT SUPPORTED AND NOT NEEDED*/
1435 }
1436
1437 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperty
1438 (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN, jint jV) {
1439 CIMInstance *ci=(CIMInstance*)jInst;
1440 CIMValue *cv=(CIMValue*)jV;
1441 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1442 Uint32 pos=ci->findProperty(CIMName(str));
|
1443 schuur 1.5 try {
|
1444 schuur 1.6 if (pos!=PEG_NOT_FOUND) {
1445 CIMProperty cp=ci->getProperty(pos);
1446 if (cp.getType()==cv->getType())
1447 cp.setValue(*cv);
1448 else {
|
1449 mark.hamzy 1.16 DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty - Wrong type of CIMValue (instance name:"<<ci->getClassName().getString()<<", property name: "<<str<<")");
1450 DDD(PEGASUS_STD(cerr)<<"!!! CIMInstance.setProperty : "<<cp.getType()<<" <> "<<cv->getType()<<PEGASUS_STD(endl));
1451
|
1452 schuur 1.6 throw CIMException(CIM_ERR_FAILED, String("Type mismatch"));
1453 }
1454 ci->removeProperty(pos);
1455 ci->addProperty(cp);
1456 }
1457 else {
1458 CIMProperty *cp=new CIMProperty(CIMName(str),*cv);
1459 ci->addProperty(*cp);
|
1460 schuur 1.1 }
1461 }
|
1462 schuur 1.5 Catch(jEnv);
|
1463 schuur 1.1
1464 jEnv->ReleaseStringUTFChars(jN,str);
1465 }
1466
|
1467 schuur 1.5 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1setProperties
1468 (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jV) {
1469 throw CIMException(CIM_ERR_NOT_SUPPORTED, String("Not yet supported"));
1470 }
1471
|
1472 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperty
1473 (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) {
1474 CIMInstance *ci=(CIMInstance*)jInst;
1475 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1476 jint rv=-1;
1477 try {
1478 Uint32 pos=ci->findProperty(CIMName(str));
1479 if (pos!=PEG_NOT_FOUND) {
1480 CIMProperty *cp=new CIMProperty(ci->getProperty(pos));
1481 rv=(jint)cp;
1482 }
1483 }
1484 Catch(jEnv);
1485 jEnv->ReleaseStringUTFChars(jN,str);
1486 return rv;
1487 }
1488
1489 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getKeyValuePairs
1490 (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec) {
1491 CIMInstance *ci=(CIMInstance*)jInst;
|
1492 schuur 1.5
|
1493 schuur 1.1 for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
1494 if (ci->getProperty(i).findQualifier(String("key"))!=PEG_NOT_FOUND) {
1495 CIMProperty *cp=new CIMProperty(ci->getProperty(i));
1496 jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
1497 jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
1498 }
1499 }
1500
1501 return jVec;
1502 }
1503
1504 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMInstance__1getClassName
1505 (JNIEnv *jEnv, jobject jThs, jint jInst) {
1506 CIMInstance *ci=(CIMInstance*)jInst;
1507 const String &cn=ci->getClassName().getString();
1508 jstring str=jEnv->NewStringUTF(cn.getCString());
1509 return str;
1510 }
1511
1512 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1getQualifier
1513 (JNIEnv *jEnv, jobject jThs, jint jInst, jstring jN) {
1514 schuur 1.1 CIMInstance *ci=(CIMInstance*)jInst;
1515 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1516 jint rv=-1;
1517 Uint32 pos=ci->findQualifier(String(str));
1518 if (pos!=PEG_NOT_FOUND) {
1519 rv=(jint)new CIMQualifier(ci->getQualifier(pos));
1520 }
1521 jEnv->ReleaseStringUTFChars(jN,str);
1522 return rv;
1523 }
1524
1525 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1clone
1526 (JNIEnv *jEnv, jobject jThs, jint jInst) {
1527 CIMInstance *ci=(CIMInstance *)jInst;
1528 CIMInstance* cl=new CIMInstance(ci->clone());
1529 return (jint)(void*)cl;
1530 }
1531
1532 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMInstance__1getProperties
1533 (JNIEnv *jEnv, jobject jThs, jint jInst, jobject jVec) {
1534 CIMInstance *ci=(CIMInstance*)jInst;
|
1535 mark.hamzy 1.16
|
1536 schuur 1.1 for (int i=0,s=ci->getPropertyCount(); i<s; i++) {
1537 CIMProperty *cp=new CIMProperty(ci->getProperty(i));
|
1538 mark.hamzy 1.16
|
1539 schuur 1.1 jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
|
1540 mark.hamzy 1.16
|
1541 schuur 1.1 jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
1542 }
|
1543 mark.hamzy 1.16
|
1544 schuur 1.1 return jVec;
1545 }
1546
1547 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMInstance__1finalize
1548 (JNIEnv *jEnv, jobject jThs, jint jInst) {
1549 CIMInstance *ci=(CIMInstance*)jInst;
1550 delete ci;
1551 }
1552
|
1553 schuur 1.7 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMInstance__1filterProperties
1554 (JNIEnv *jEnv, jobject jThs, jint jInst, jobjectArray jPl, jboolean iq, jboolean ic, jboolean lo) {
1555 CIMInstance *ci=(CIMInstance *)jInst;
1556 CIMInstance* cf;
1557 CIMName clsn=ci->getClassName();
1558
1559 if (lo) {
1560 cf=new CIMInstance(ci->clone());
1561 CIMName clsn=ci->getClassName();
1562 for (int i=cf->getPropertyCount()-1; i>=0; i--)
1563 if (cf->getProperty(i).getClassOrigin()==clsn) cf->removeProperty(i);
1564 return (jint)cf;
1565 }
1566
1567 else if (jPl) {
1568 CIMPropertyList pl=getList(jEnv,jPl);
1569 Array<CIMName> n=pl.getPropertyNameArray();
1570 cf=new CIMInstance(clsn);
1571 for (int i=0,s=n.size(); i<s; i++) {
1572 Uint32 pos=ci->findProperty(n[i]);
1573 if (pos!=PEG_NOT_FOUND) {
1574 schuur 1.7 if (iq) {
1575 CIMProperty cp=ci->getProperty(pos).clone();
1576 if (!ic) cp.setClassOrigin(CIMName());
1577 cf->addProperty(cp);
1578 }
1579 else {
1580 CIMProperty cp=ci->getProperty(pos);
1581 CIMName co;
1582 if (ic) co=cp.getClassOrigin();
1583 CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(),
1584 cp.getReferenceClassName(),co,cp.getPropagated());
1585 cf->addProperty(np);
1586 }
1587 }
1588 }
1589 cf->setPath(ci->getPath());
1590 }
1591
1592 else if (iq) {
1593 cf=new CIMInstance(ci->clone());
1594 if (ic) return (jint)cf;
1595 schuur 1.7 for (int i=cf->getPropertyCount()-1; i>=0; i--) {
1596 CIMProperty cp=cf->getProperty(i);
1597 cp.setClassOrigin(CIMName());
1598 cf->removeProperty(i);
1599 cf->addProperty(cp);
1600 }
1601 }
1602
1603 else {
1604 cf=new CIMInstance(clsn);
1605 for (int i=ci->getPropertyCount()-1; i>=0; i--) {
1606 CIMProperty cp=ci->getProperty(i);
1607 CIMName co;
1608 if (ic) co=cp.getClassOrigin();
1609 CIMProperty np(cp.getName(),cp.getValue(),cp.getArraySize(),
1610 cp.getReferenceClassName(),co,cp.getPropagated());
1611 cf->addProperty(np);
1612 }
1613 cf->setPath(ci->getPath());
1614 }
1615
1616 schuur 1.7 return (jint)cf;
1617 }
|
1618 schuur 1.1
1619 // -------------------------------------
1620 // ---
1621 // - CIMObjectPath
1622 // ---
1623 // -------------------------------------
1624
1625 CIMObjectPath* construct() {
1626 CIMObjectPath *cop=new CIMObjectPath();
1627 _nameSpace n;
1628 cop->setNameSpace(n.nameSpace());
1629 cop->setHost(n.hostName());
1630 return cop;
1631 }
1632
1633 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1new
1634 (JNIEnv *jEnv, jobject jThs) {
1635 return (jint)construct();
1636 }
1637
1638 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCn
1639 schuur 1.1 (JNIEnv *jEnv, jobject jThs, jstring jCn) {
1640 CIMObjectPath *cop=construct();
1641 const char *str=jEnv->GetStringUTFChars(jCn,NULL);
1642 if (str) cop->setClassName(str);
1643 jEnv->ReleaseStringUTFChars(jCn,str);
1644 return (jint)(void*)cop;
1645 }
1646
1647 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1newCnNs
1648 (JNIEnv *jEnv, jobject jThs, jstring jCn, jstring jNs) {
1649 CIMObjectPath *cop=construct();
|
1650 schuur 1.6 const char *str1=NULL;
1651 const char *str2=NULL;
|
1652 schuur 1.1
1653 try {
|
1654 schuur 1.6 if (jCn) str1=jEnv->GetStringUTFChars(jCn,NULL);
1655 if (jNs) str2=jEnv->GetStringUTFChars(jNs,NULL);
|
1656 schuur 1.1 if (str1) cop->setClassName(str1);
1657 if (str2) cop->setNameSpace(str2);
1658 }
|
1659 schuur 1.5 Catch(jEnv);
|
1660 schuur 1.1
|
1661 schuur 1.6 if (str1) jEnv->ReleaseStringUTFChars(jCn,str1);
1662 if (str2) jEnv->ReleaseStringUTFChars(jNs,str2);
|
1663 schuur 1.1 return (jint)(void*)cop;
1664 }
1665
1666 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1_newCi
1667 (JNIEnv *jEnv, jobject jThs, jint jInst) {
1668 CIMInstance *ci = (CIMInstance *)jInst;
1669 CIMObjectPath *cop=new CIMObjectPath(ci->getPath());
1670 _nameSpace n;
1671 if (cop->getNameSpace().isNull()) cop->setNameSpace(n.nameSpace());
1672 if (cop->getHost()==NULL) cop->setHost(n.hostName());
1673 return (jint)(void*)cop;
1674 }
1675
1676 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1finalize
1677 (JNIEnv *jEnv, jobject jThs, jint jCop) {
1678 CIMObjectPath *cop=(CIMObjectPath*)jCop;
1679 delete cop;
1680 }
1681
1682 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getHost
1683 (JNIEnv *jEnv, jobject jThs, jint jOp) {
1684 schuur 1.1 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1685 const String &hn=cop->getHost();
1686 jstring str=jEnv->NewStringUTF(hn.getCString());
1687 return str;
1688 }
1689
1690 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setHost
1691 (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jName) {
1692 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1693 const char *str=jEnv->GetStringUTFChars(jName,NULL);
1694 cop->setHost(String(str));
1695 jEnv->ReleaseStringUTFChars(jName,str);
1696 }
1697
1698 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getObjectName
1699 (JNIEnv *jEnv, jobject jThs, jint jOp) {
1700 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1701 const String &cn=cop->getClassName().getString();
1702 jstring str=jEnv->NewStringUTF(cn.getCString());
1703 return str;
1704 }
1705 schuur 1.1
1706 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setObjectName
1707 (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jName) {
1708 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1709 const char *str=jEnv->GetStringUTFChars(jName,NULL);
1710 cop->setClassName(String(str));
1711 jEnv->ReleaseStringUTFChars(jName,str);
1712 }
1713
1714 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getNameSpace
1715 (JNIEnv *jEnv, jobject jThs, jint jOp) {
1716 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1717 const String &ns=cop->getNameSpace().getString();
1718 jstring str=jEnv->NewStringUTF(ns.getCString());
1719 return str;
1720 }
1721
1722 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setNameSpace
1723 (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jName) {
1724 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1725 const char *str=jEnv->GetStringUTFChars(jName,NULL);
1726 schuur 1.1 cop->setNameSpace(CIMNamespaceName(str));
1727 jEnv->ReleaseStringUTFChars(jName,str);
1728 }
1729
1730 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1addKey
1731 (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jId, jint jVal) {
1732 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1733 const char *str=jEnv->GetStringUTFChars(jId,NULL);
1734 CIMValue *cv=(CIMValue*)jVal;
1735 Array<CIMKeyBinding> keyBindings=cop->getKeyBindings();
1736 keyBindings.append(CIMKeyBinding(str,*cv));
1737 cop->setKeyBindings(Array<CIMKeyBinding>(keyBindings));
1738 jEnv->ReleaseStringUTFChars(jId,str);
1739 return;
1740 }
1741
1742 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeys
1743 (JNIEnv *jEnv, jobject jThs, jint jOp, jobject jVec) {
1744 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1745 const Array<CIMKeyBinding> &akb=cop->getKeyBindings();
1746
1747 schuur 1.1 for (Uint32 i=0,s=akb.size(); i<s; i++) {
1748 const String &n=akb[i].getName().getString();
1749 const String &v=akb[i].getValue();
1750 CIMKeyBinding::Type t=akb[i].getType();
1751 CIMValue *cv;
1752 switch (t) {
1753 case CIMKeyBinding::NUMERIC:
1754 cv=new CIMValue((Sint32)atol(v.getCString()));
1755 break;
1756 case CIMKeyBinding::STRING:
1757 cv=new CIMValue(v);
1758 break;
1759 case CIMKeyBinding::BOOLEAN:
1760 cv=new CIMValue((Boolean)(v.getCString()));
1761 break;
1762 case CIMKeyBinding::REFERENCE:
1763 cv = new CIMValue(CIMObjectPath(akb[i].getValue()));
1764 break;
1765 default:
1766 throwCIMException(jEnv,"+++ unsupported type: ");
1767 }
|
1768 r.kieninger 1.11
|
1769 schuur 1.1 CIMProperty *cp;
1770 if(t!=CIMKeyBinding::REFERENCE)
1771 cp=new CIMProperty(n,*cv);
1772 else cp=new CIMProperty(n,*cv, 0, ((CIMObjectPath) akb[i].getValue()).getClassName());
1773
1774 jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)cp);
1775 jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],prop);
1776 }
1777 return jVec;
1778 }
1779
1780 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1getKeyValue
1781 (JNIEnv *jEnv, jobject jThs, jint jOp, jstring jStr) {
1782 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1783 const Array<CIMKeyBinding> &akb=cop->getKeyBindings();
1784 const char *strKeyName=jEnv->GetStringUTFChars(jStr,NULL);
1785 jstring retStr=NULL;
1786 for (Uint32 i=0,s=akb.size(); i<s; i++) {
1787 const String &n=akb[i].getName().getString();
1788 if (n==String(strKeyName)) {
1789 retStr=jEnv->NewStringUTF(akb[i].getValue().getCString());
1790 schuur 1.1 break;
1791 }
1792 }
1793 jEnv->ReleaseStringUTFChars(jStr,strKeyName);
1794 return retStr;
1795 }
1796
1797 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1set
1798 (JNIEnv *jEnv, jobject jThs, jstring jStr) {
1799 const char *strCop=jEnv->GetStringUTFChars(jStr,NULL);
1800 CIMObjectPath *cop=new CIMObjectPath();
1801 cop->set(String(strCop));
1802 jEnv->ReleaseStringUTFChars(jStr,strCop);
1803 return (jint)cop;
1804 }
1805
1806 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1setKeys
1807 (JNIEnv *jEnv, jobject jThs, jint jOp, jobject jVec) {
1808 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1809 Array<CIMKeyBinding> akb;
|
1810 schuur 1.6 for (Uint32 i=0,s=jEnv->CallIntMethod(jVec,instanceMethodIDs[28]); i<s; i++) {
1811 jobject o=jEnv->CallObjectMethod(jVec,instanceMethodIDs[16],(i));
1812 CIMProperty *cp=(CIMProperty*)jEnv->CallIntMethod(o,instanceMethodIDs[29]);
|
1813 schuur 1.1 akb.append(CIMKeyBinding(cp->getName(),cp->getValue()));
1814 }
1815 cop->setKeyBindings(akb);
1816 }
1817
1818 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1clone
1819 (JNIEnv *jEnv, jobject jThs, jint jOp) {
1820 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1821 CIMObjectPath *copl=new CIMObjectPath(cop->getHost(), cop->getNameSpace(), cop->getClassName(), cop->getKeyBindings());
1822 return (jint)(void*)copl;
1823 }
1824
1825 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMObjectPath__1toString
1826 (JNIEnv *jEnv, jobject jThs, jint jOp) {
1827 CIMObjectPath *cop=(CIMObjectPath*)jOp;
1828 const String &ns=cop->toString();
1829 jstring str=jEnv->NewStringUTF(ns.getCString());
1830 return str;
1831 }
1832
1833
1834 schuur 1.1 // -------------------------------------
1835 // ---
1836 // - CIMDataType
1837 // ---
1838 // -------------------------------------
1839
1840 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1new
1841 (JNIEnv *jEnv, jobject jThs, jint type) {
1842 return (jint)(void*) new _dataType(type);
1843 }
1844
1845 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newAr
1846 (JNIEnv *jEnv, jobject jThs, jint type, jint size) {
1847 return (jint)(void*) new _dataType(type,size);
1848 }
1849
1850 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1newRef
1851 (JNIEnv *jEnv, jobject jThs, jint type, jstring jRef) {
1852 const char *ref=jEnv->GetStringUTFChars(jRef,NULL);
1853 jint cInst=(jint)(void*)new _dataType(type,String(ref));
1854 jEnv->ReleaseStringUTFChars(jRef,ref);
1855 schuur 1.1 return cInst;
1856 }
1857
1858 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isArray
1859 (JNIEnv *jEnv, jobject jThs, jint jDt) {
1860 _dataType *dt=(_dataType*)jDt;
1861 return dt->_array==true;
1862 }
1863
1864 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isreference
1865 (JNIEnv *jEnv, jobject jThs, jint jDt) {
1866 _dataType *dt=(_dataType*)jDt;
1867 return dt->_reference==true;
1868 }
1869
1870 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDataType__1isReference
1871 (JNIEnv *jEnv, jobject jThs, jint jDt) {
1872 _dataType *dt=(_dataType*)jDt;
1873 return dt->_reference==true;
1874 }
1875
1876 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getType
1877 (JNIEnv *jEnv, jobject jThs, jint jDt) {
1878 _dataType *dt=(_dataType*)jDt;
1879 return dt->_type;
1880 }
1881
1882 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDataType__1getSize
1883 (JNIEnv *jEnv, jobject jThs, jint jDt) {
1884 _dataType *dt=(_dataType*)jDt;
1885 return dt->_size;
1886 }
1887
1888 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1getRefClassName
1889 (JNIEnv *jEnv, jobject jThs, jint jDt) {
1890 _dataType *dt=(_dataType*)jDt;
1891 jstring str=jEnv->NewStringUTF(dt->_refClass.getCString());
1892 return str;
1893 }
1894
1895 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMDataType__1toString
1896 (JNIEnv *jEnv, jobject jThs, jint jDt) {
1897 schuur 1.1 _dataType *dt=(_dataType*)jDt;
1898 jstring str=NULL;
1899 if (dt->_type & 0x10) {
1900 char tmp[32];
1901 strcpy(tmp,jTypeToChars[dt->_type-0x10]);
1902 strcat(tmp,"[]");
1903 str=jEnv->NewStringUTF(tmp);
|
1904 schuur 1.5 }
|
1905 schuur 1.1 else if (dt->_type & 0x20) {
1906 String tmp=dt->_refClass+" REF";
1907 str=jEnv->NewStringUTF(tmp.getCString());
|
1908 schuur 1.6 }
|
1909 schuur 1.1 else {
1910 str=jEnv->NewStringUTF(jTypeToChars[dt->_type]);
1911 }
1912 return str;
1913 }
1914
|
1915 schuur 1.5 CIMType toPtype(int jType) {
1916 if (jType>13) return (CIMType)14;
1917 return (CIMType)(jTypeToPType[jType]);
1918 }
|
1919 schuur 1.1
1920
1921 // -------------------------------------
1922 // ---
|
1923 schuur 1.6 // - CIMArgument
1924 // ---
1925 // -------------------------------------
1926
1927 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1getValue
1928 (JNIEnv *jEnv, jobject jThs, jint jP) {
1929 CIMParamValue *cp=(CIMParamValue*)jP;
1930 CIMValue *cv=new CIMValue(cp->getValue());
1931 return (jint)cv;
1932 }
1933
1934 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1new
1935 (JNIEnv *jEnv, jobject jThs) {
1936 CIMParamValue *p=new CIMParamValue(String::EMPTY,CIMValue());
1937 return (jint)p;
1938 }
1939
1940 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1newS
1941 (JNIEnv *jEnv, jobject jThs, jstring jN) {
1942 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1943 CIMParamValue *p=new CIMParamValue(str,CIMValue());
1944 schuur 1.6 jEnv->ReleaseStringUTFChars(jN,str);
1945 return (jint)p;
1946 }
1947
1948 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1newSV
1949 (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV) {
1950 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1951 CIMValue *cv=(CIMValue*)jV;
1952 CIMParamValue *p=new CIMParamValue(str,cv);
1953 jEnv->ReleaseStringUTFChars(jN,str);
1954 return (jint)p;
1955 }
1956
1957 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setValue
1958 (JNIEnv *jEnv, jobject jThs, jint jP,jint jV) {
1959 CIMParamValue *cp=(CIMParamValue*)jP;
1960 CIMValue *cv=(CIMValue*)jV;
1961 cp->setValue(*cv);
1962 }
1963
1964 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMArgument__1getName
1965 schuur 1.6 (JNIEnv *jEnv, jobject jThs, jint jP) {
1966 CIMParamValue *cp=(CIMParamValue*)jP;
1967 const String &n=cp->getParameterName();
1968 jstring str=jEnv->NewStringUTF(n.getCString());
1969 return str;
1970 }
1971
1972 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMArgument__1setName
1973 (JNIEnv *jEnv, jobject jThs, jint jP, jstring jN) {
1974 CIMParamValue *cp=(CIMParamValue*)jP;
1975 const char *str=jEnv->GetStringUTFChars(jN,NULL);
1976 String n(str);
1977 cp->setParameterName(n);
1978 jEnv->ReleaseStringUTFChars(jN,str);
1979 }
1980
1981 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMArgument__1getType
1982 (JNIEnv *jEnv, jobject jThs, jint jP) {
1983 CIMParamValue *cp=(CIMParamValue*)jP;
1984 const CIMValue cv=cp->getValue();
1985 String ref;
1986 schuur 1.6 _dataType *type=new _dataType(pTypeToJType[cv.getType()],
1987 cv.getArraySize(),
1988 false,
1989 false,
1990 cv.isArray(),
1991 ref,
1992 true);
1993 return (jint)type;
1994 }
1995
1996
1997
1998
1999 // -------------------------------------
2000 // ---
|
2001 schuur 1.1 // - CIMProperty
2002 // ---
2003 // -------------------------------------
2004
2005 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getValue
2006 (JNIEnv *jEnv, jobject jThs, jint jP) {
2007 CIMProperty *cp=(CIMProperty*)jP;
2008 CIMValue *cv=new CIMValue(cp->getValue());
2009 return (jint)cv;
2010 }
2011
|
2012 schuur 1.5 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1new
2013 (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV) {
2014 CIMProperty *p=new CIMProperty(CIMName(),CIMValue());
2015 return (jint)p;
2016 }
2017
|
2018 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1property
2019 (JNIEnv *jEnv, jobject jThs, jstring jN, jint jV) {
2020 try {
2021 CIMValue *cv=(CIMValue*)jV;
2022 const char *str=jEnv->GetStringUTFChars(jN,NULL);
2023 CIMProperty *cp;
2024
2025 if (cv->getType()!=CIMTYPE_REFERENCE)
2026 cp=new CIMProperty(String(str),*cv);
2027 else {
2028 if (!cv->isArray()) {
2029 CIMObjectPath cop;
2030 cv->get(cop);
2031 cp=new CIMProperty(String(str),*cv,0, cop.getClassName());
2032 }
2033 else {
2034 throwCIMException(jEnv,"+++ unsupported type in CIMProperty.property");
2035 }
2036 }
2037
2038 jEnv->ReleaseStringUTFChars(jN,str);
2039 schuur 1.1 return (jint)cp;
2040 }
2041 Catch(jEnv);
2042 return -1;
2043 }
2044
2045 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setValue
2046 (JNIEnv *jEnv, jobject jThs, jint jP,jint jV) {
2047 CIMProperty *cp=(CIMProperty*)jP;
2048 CIMValue *cv=(CIMValue*)jV;
2049 cp->setValue(*cv);
2050 }
2051
2052 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isArray
2053 (JNIEnv *jEnv, jobject jThs, jint jP) {
2054 CIMProperty *cp=(CIMProperty*)jP;
2055 return (jboolean)cp->isArray();
2056 }
2057
2058 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addValue
2059 (JNIEnv *jEnv, jobject jThs, jint jP, jint jV) {
2060 schuur 1.1 CIMProperty *cp=(CIMProperty*)jP;
2061 CIMValue *cvin=(CIMValue*)jV;
2062 CIMValue cv=cp->getValue();
2063 if (cvin->isNull())
2064 throwCIMException(jEnv,"+++ null cvin value ");
2065 if (!cv.isArray())
2066 throwCIMException(jEnv,"+++ not an array ");
2067 if (cvin->getType()!=cv.getType())
2068 throwCIMException(jEnv,"+++ type mismatch ");
2069 CIMType type=cv.getType();
2070 switch (type) {
2071 case CIMTYPE_BOOLEAN: {
2072 Boolean bo;
2073 cvin->get(bo);
2074 Array<Boolean> boarr;
2075 cv.get(boarr);
2076 boarr.append(bo);
2077 }
2078 break;
2079 case CIMTYPE_UINT8: {
2080 Uint8 u8;
2081 schuur 1.1 cvin->get(u8);
2082 Array<Uint8> u8arr;
2083 cv.get(u8arr);
2084 u8arr.append(u8);
2085 }
2086 break;
2087 case CIMTYPE_SINT8: {
2088 Sint8 s8;
2089 cvin->get(s8);
2090 Array<Sint8> s8arr;
2091 cv.get(s8arr);
2092 s8arr.append(s8);
2093 }
2094 break;
2095 case CIMTYPE_UINT16: {
2096 Uint16 u16;
2097 cvin->get(u16);
2098 Array<Uint16> u16arr;
2099 cv.get(u16arr);
2100 u16arr.append(u16);
2101 }
2102 schuur 1.1 break;
2103 case CIMTYPE_SINT16: {
2104 Sint16 s16;
2105 cvin->get(s16);
2106 Array<Sint16> s16arr;
2107 cv.get(s16arr);
2108 s16arr.append(s16);
2109 }
2110 break;
2111 case CIMTYPE_UINT32: {
2112 Uint32 u32;
2113 cvin->get(u32);
2114 Array<Uint32> u32arr;
2115 cv.get(u32arr);
2116 u32arr.append(u32);
2117 }
2118 break;
2119 case CIMTYPE_SINT32: {
2120 Sint32 s32;
2121 cvin->get(s32);
2122 Array<Sint32> s32arr;
2123 schuur 1.1 cv.get(s32arr);
2124 s32arr.append(s32);
2125 }
2126 break;
2127 case CIMTYPE_UINT64: {
2128 Uint64 u64;
2129 cvin->get(u64);
2130 Array<Uint64> u64arr;
2131 cv.get(u64arr);
2132 u64arr.append(u64);
2133 }
2134 break;
2135 case CIMTYPE_SINT64: {
2136 Sint64 s64;
2137 cvin->get(s64);
2138 Array<Sint64> s64arr;
2139 cv.get(s64arr);
2140 s64arr.append(s64);
2141 }
2142 break;
2143 case CIMTYPE_REAL32: {
2144 schuur 1.1 Real32 f;
2145 cvin->get(f);
2146 Array<Real32> farr;
2147 cv.get(farr);
2148 farr.append(f);
2149 }
2150 break;
2151 case CIMTYPE_REAL64: {
2152 Real64 d;
2153 cvin->get(d);
2154 Array<Real64> darr;
2155 cv.get(darr);
2156 darr.append(d);
2157 }
2158 break;
2159 case CIMTYPE_STRING: {
2160 String str;
2161 cvin->get(str);
2162 Array<String> strarr;
2163 cv.get(strarr);
2164 strarr.append(str);
2165 schuur 1.1 }
2166 break;
2167 case CIMTYPE_REFERENCE: {
2168 CIMObjectPath ref;
2169 cvin->get(ref);
2170 Array<CIMObjectPath> refarr;
2171 cv.get(refarr);
2172 refarr.append(ref);
2173 }
2174 break;
|
2175 dave.sudlik 1.13 case CIMTYPE_OBJECT: {
2176 CIMObject obj;
2177 cvin->get(obj);
2178 Array<CIMObject> objarr;
2179 cv.get(objarr);
2180 objarr.append(obj);
2181 }
2182 break;
|
2183 schuur 1.1 default:
2184 throwCIMException(jEnv,"+++ unsupported type ");
2185 }
2186 }
2187
|
2188 schuur 1.5 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1addQualifier
2189 (JNIEnv *jEnv, jobject jThs, jint jP, jint jQ) {
2190 CIMProperty *cp=(CIMProperty*)jP;
2191 CIMQualifier *cq=(CIMQualifier*)jQ;
2192 cp->addQualifier(*cq);
2193 }
2194
|
2195 schuur 1.1 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getName
2196 (JNIEnv *jEnv, jobject jThs, jint jP) {
2197 CIMProperty *cp=(CIMProperty*)jP;
2198 const String &n=cp->getName().getString();
2199 jstring str=jEnv->NewStringUTF(n.getCString());
2200 return str;
2201 }
2202
|
2203 schuur 1.5 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1setName
2204 (JNIEnv *jEnv, jobject jThs, jint jP, jstring jN) {
2205 CIMProperty *cp=(CIMProperty*)jP;
2206 const char *str=jEnv->GetStringUTFChars(jN,NULL);
2207 cp->setName(CIMName(str));
2208 jEnv->ReleaseStringUTFChars(jN,str);
2209 }
2210
|
2211 schuur 1.1 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMProperty__1isReference
2212 (JNIEnv *jEnv, jobject jThs, jint jP) {
2213 CIMProperty *cp=(CIMProperty*)jP;
2214 return (jboolean)(cp->getType()==CIMTYPE_REFERENCE);
2215 }
2216
2217 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMProperty__1getRefClassName
2218 (JNIEnv *jEnv, jobject jThs, jint jP) {
2219 CIMProperty *cp=(CIMProperty*)jP;
2220 const String &n=cp->getReferenceClassName().getString();
2221 jstring str=jEnv->NewStringUTF(n.getCString());
2222 return str;
2223 }
2224
2225 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1getType
2226 (JNIEnv *jEnv, jobject jThs, jint jP) {
2227 CIMProperty *cp=(CIMProperty*)jP;
2228 String ref=cp->getReferenceClassName().getString();
2229 _dataType *type=new _dataType(pTypeToJType[cp->getType()],
2230 cp->getArraySize(),
2231 ref.size() ? true : false,
2232 schuur 1.1 false,
2233 cp->isArray(),
2234 ref,
2235 true);
2236 return (jint)type;
2237 }
2238
|
2239 schuur 1.5 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMProperty__1setType
2240 (JNIEnv *jEnv, jobject jThs, jint jP, jint jDt) {
2241 CIMProperty *cp=(CIMProperty*)jP;
2242 _dataType *dt=(_dataType*)jDt;
2243 CIMValue val;
2244 val.setNullValue(toPtype(dt->_type),dt->_array);
2245 CIMProperty *np=new CIMProperty(cp->getName(),val);
2246 delete cp;
2247 return (jint)np;
2248 }
2249
|
2250 schuur 1.1 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMProperty__1getIdentifier
2251 (JNIEnv *jEnv, jobject jThs, jint jP) {
2252 CIMProperty *cp=(CIMProperty*)jP;
2253 const String &n=cp->getName().getString();
2254 jstring str=jEnv->NewStringUTF(n.getCString());
2255 return str;
2256 }
2257
2258 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMProperty__1finalize
2259 (JNIEnv *jEnv, jobject jThs, jint jP) {
2260 CIMProperty *cp=(CIMProperty*)jP;
2261 delete cp;
2262 }
|
2263 schuur 1.5
2264
2265
2266 // -------------------------------------
2267 // ---
2268 // - CIMQualifierType
2269 // ---
2270 // -------------------------------------
2271
2272 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1new
2273 (JNIEnv *jEnv, jobject jThs) {
2274 CIMQualifierDecl *qual = new CIMQualifierDecl();
2275 return (jint)(void*)qual;
2276 }
2277
2278 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1finalize
2279 (JNIEnv *jEnv, jobject jThs, jint jQ) {
2280 CIMQualifierDecl *qt=(CIMQualifierDecl*)jQ;
2281 delete qt;
2282 }
2283
2284 schuur 1.5 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1getName
2285 (JNIEnv *jEnv, jobject jThs, jint jQ) {
2286 CIMQualifierDecl *qt=(CIMQualifierDecl*)jQ;
2287 const String &n=qt->getName().getString();
2288 jstring str=jEnv->NewStringUTF(n.getCString());
2289 return str;
2290 }
2291
|
2292 schuur 1.6 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setName
|
2293 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jQ, jstring jN) {
|
2294 schuur 1.6 CIMQualifierDecl *nqt,*qt=(CIMQualifierDecl*)jQ;
2295 nqt=qt;
|
2296 schuur 1.5 const char *str=jEnv->GetStringUTFChars(jN,NULL);
|
2297 schuur 1.6 if (qt->isUninitialized())
2298 nqt=new CIMQualifierDecl(CIMName(str),CIMValue(),CIMScope());
2299 else qt->setName(CIMName(str));
|
2300 schuur 1.5 jEnv->ReleaseStringUTFChars(jN,str);
|
2301 schuur 1.6 return (jint)nqt;
|
2302 schuur 1.5 }
2303
2304 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifierType__1setValue
2305 (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV) {
2306 CIMQualifierDecl *qt=(CIMQualifierDecl*)jQ;
2307 CIMValue *cv=(CIMValue*)jV;
2308 qt->setValue(*cv);
2309 }
2310
2311
2312
|
2313 schuur 1.1
2314
2315 // -------------------------------------
2316 // ---
2317 // - CIMQualifier
2318 // ---
2319 // -------------------------------------
2320
|
2321 schuur 1.5 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1new
2322 (JNIEnv *jEnv, jobject jThs, jstring jN) {
2323 const char *str=jEnv->GetStringUTFChars(jN,NULL);
2324 CIMQualifier *qual = new CIMQualifier(CIMName(str),CIMValue());
2325 jEnv->ReleaseStringUTFChars(jN,str);
2326 return (jint)(void*)qual;
2327 }
2328
|
2329 schuur 1.1 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1finalize
2330 (JNIEnv *jEnv, jobject jThs, jint jQ) {
2331 CIMQualifier *cq=(CIMQualifier*)jQ;
2332 delete cq;
2333 }
2334
|
2335 schuur 1.5 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getName
2336 (JNIEnv *jEnv, jobject jThs, jint jQ) {
2337 CIMQualifier *cq=(CIMQualifier*)jQ;
2338 const String &n=cq->getName().getString();
2339 jstring str=jEnv->NewStringUTF(n.getCString());
2340 return str;
2341 }
2342
2343 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMQualifier__1getValue
2344 (JNIEnv *jEnv, jobject jThs, jint jQ) {
2345 CIMQualifier *cq=(CIMQualifier*)jQ;
2346 CIMValue *cv=new CIMValue(cq->getValue());
2347 return (jint)cv;
2348 }
2349
2350 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMQualifier__1setValue
2351 (JNIEnv *jEnv, jobject jThs, jint jQ,jint jV) {
2352 CIMQualifier *cq=(CIMQualifier*)jQ;
2353 CIMValue *cv=(CIMValue*)jV;
2354 cq->setValue(*cv);
2355 }
2356 schuur 1.5
|
2357 schuur 1.1
2358 // -------------------------------------
2359 // ---
2360 // - CIMDateTime
2361 // ---
2362 // -------------------------------------
2363
2364 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetime
2365 (JNIEnv *jEnv, jobject jThs, jstring jN) {
2366 const char *str=jEnv->GetStringUTFChars(jN,NULL);
2367 CIMDateTime *dt;
2368 if (strlen(str)==0)
2369 dt=new CIMDateTime();
2370 else
2371 dt=new CIMDateTime(String(str));
2372 jEnv->ReleaseStringUTFChars(jN,str);
2373 return (jint)dt;
2374 }
2375
2376 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMDateTime__1datetimeempty
2377 (JNIEnv *jEnv, jobject jThs) {
2378 schuur 1.1 CIMDateTime *dt=new CIMDateTime(CIMDateTime::getCurrentDateTime ());
2379 return (jint)dt;
2380 }
2381
2382 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMDateTime__1after
2383 (JNIEnv *jEnv, jobject jThs, jint jC, jint jD) {
2384 CIMDateTime *ct = (CIMDateTime *) jC;
2385 CIMDateTime *dt = (CIMDateTime *) jD;
2386 return (jboolean)(ct->getDifference(*ct, *dt)>0);
2387 }
2388
2389 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMDateTime__1finalize
2390 (JNIEnv *jEnv, jobject jThs, jint jDT) {
2391 CIMDateTime *cdt = (CIMDateTime *) jDT;
2392 delete cdt;
2393 }
2394
2395
2396 // -------------------------------------
2397 // ---
2398 // - CIMMethod
2399 schuur 1.1 // ---
2400 // -------------------------------------
2401
2402 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMMethod__1getType
2403 (JNIEnv *jEnv, jobject jThs, jint jM) {
2404 CIMMethod *cm=(CIMMethod*)jM;
2405 return (jint)cm->getType();
2406 }
2407
2408 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMMethod__1finalize
2409 (JNIEnv *jEnv, jobject jThs, jint jM) {
2410 CIMMethod *cm=(CIMMethod*)jM;
2411 delete cm;
2412 }
2413
2414
2415 // -------------------------------------
2416 // ---
2417 // - CIMValue
2418 // ---
2419 // -------------------------------------
2420 schuur 1.1
2421
2422 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byte
2423 (JNIEnv *jEnv, jobject jThs, jbyte jb, jboolean notSigned) {
2424 CIMValue *cv=NULL;
2425 if (notSigned) cv=new CIMValue((Uint8)jb);
2426 else cv=new CIMValue((Sint8)jb);
2427 return (jint)cv;
2428 }
2429
2430 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1short
2431 (JNIEnv *jEnv, jobject jThs, jshort js, jboolean notSigned) {
2432 CIMValue *cv=NULL;
2433 if (notSigned) cv=new CIMValue((Uint16)js);
2434 else cv=new CIMValue((Sint16)js);
2435 return (jint)cv;
2436 }
2437
2438 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue_makeInt
2439 (JNIEnv *jEnv, jobject jThs, jlong ji, jboolean notSigned) {
2440 CIMValue *cv=NULL;
2441 schuur 1.1 if (notSigned) cv=new CIMValue((Uint32)ji);
2442 else cv=new CIMValue((Sint32)ji);
2443 return (jint)cv;
2444 }
2445
2446 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1long
2447 (JNIEnv *jEnv, jobject jThs, jlong jl, jboolean notSigned) {
2448 CIMValue *cv=NULL;
2449 if (notSigned) cv=new CIMValue((Uint64)jl);
2450 else cv=new CIMValue((Sint64)jl);
2451 return (jint)cv;
2452 }
2453
2454 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1float
2455 (JNIEnv *jEnv, jobject jThs, jfloat jF) {
2456 CIMValue *cv=new CIMValue(jF);
2457 return (jint)cv;
2458 }
2459
2460 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1double
2461 (JNIEnv *jEnv, jobject jThs, jdouble jD) {
2462 schuur 1.1 CIMValue *cv=new CIMValue(jD);
2463 return (jint)cv;
2464 }
2465
2466 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1string
2467 (JNIEnv *jEnv, jobject jThs, jstring jS) {
2468 const char *str=jEnv->GetStringUTFChars(jS,NULL);
2469 CIMValue *cv=new CIMValue(String(str));
2470 jEnv->ReleaseStringUTFChars(jS,str);
2471 return (jint)cv;
2472 }
2473
2474 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1ref
2475 (JNIEnv *jEnv, jobject jThs, jint jR) {
2476 CIMObjectPath *ref=(CIMObjectPath*)jR;
2477 CIMValue *cv=new CIMValue(*ref);
2478 return (jint)cv;
2479 }
2480
2481 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1datetime
2482 (JNIEnv *jEnv, jobject jThs, jint jDT) {
2483 schuur 1.1 CIMDateTime *dt=(CIMDateTime*)jDT;
2484 CIMValue *cv=new CIMValue(*dt);
2485 return (jint)cv;
2486 }
2487
2488 JNIEXPORT jboolean JNICALL Java_org_pegasus_jmpi_CIMValue__1isArray
2489 (JNIEnv *jEnv, jobject jThs, jint jP) {
2490 CIMValue *cv=(CIMValue*)jP;
2491 return (jboolean)cv->isArray();
2492 }
2493
2494 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1boolean
2495 (JNIEnv *jEnv, jobject jThs, jboolean jB) {
2496 CIMValue *cv=new CIMValue((Boolean)jB);
2497 return (jint)cv;
2498 }
2499
2500 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1byteArray
2501 (JNIEnv *jEnv, jobject jThs, jshortArray jshortA, jboolean notSigned) {
2502 CIMValue *cv=NULL;
2503 jboolean b;
2504 schuur 1.1 jsize len=jEnv->GetArrayLength(jshortA);
2505 jshort* jsA=jEnv->GetShortArrayElements(jshortA,&b);
2506 if (notSigned) {
2507 Array<Uint8> u8;
2508 for (jsize i=0;i<len;i++)
2509 u8.append((Uint8)jsA[i]);
2510 cv=new CIMValue(u8);
2511 }
2512 else {
2513 Array<Sint8> s8;
2514 for (jsize i=0;i<len;i++)
2515 s8.append((Sint8)jsA[i]);
2516 cv=new CIMValue(s8);
2517 }
2518 return (jint)(void*)cv;
2519 }
2520
2521 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1shortArray
2522 (JNIEnv *jEnv, jobject jThs, jintArray jintA, jboolean notSigned) {
2523 CIMValue *cv=NULL;
2524 jboolean b;
2525 schuur 1.1 jsize len=jEnv->GetArrayLength(jintA);
2526 jint* jiA=jEnv->GetIntArrayElements(jintA,&b);
2527 if (notSigned) {
2528 Array<Uint16> u16;
2529 for (jsize i=0;i<len;i++)
2530 u16.append((Uint16)jiA[i]);
2531 cv=new CIMValue(u16);
2532 }
2533 else {
2534 Array<Sint16> s16;
2535 for (jsize i=0;i<len;i++)
2536 s16.append((Sint16)jiA[i]);
2537 cv=new CIMValue(s16);
2538 }
2539 return (jint)(void*)cv;
2540 }
2541
2542 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1intArray
2543 (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned) {
2544 CIMValue *cv=NULL;
2545 jboolean b;
2546 schuur 1.1 jsize len=jEnv->GetArrayLength(jlongA);
2547 jlong* jlA=jEnv->GetLongArrayElements(jlongA,&b);
2548 if (notSigned) {
2549 Array<Uint32> u32;
2550 for (jsize i=0;i<len;i++)
2551 u32.append((Uint32)jlA[i]);
2552 cv=new CIMValue(u32);
2553 }
2554 else {
2555 Array<Sint32> s32;
2556 for (jsize i=0;i<len;i++)
2557 s32.append((Sint32)jlA[i]);
2558 cv=new CIMValue(s32);
2559 }
2560 return (jint)(void*)cv;
2561 }
2562
2563 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1longArray
2564 (JNIEnv *jEnv, jobject jThs, jlongArray jlongA, jboolean notSigned) {
2565 CIMValue *cv=NULL;
2566 jboolean b;
2567 schuur 1.1 jsize len=jEnv->GetArrayLength(jlongA);
2568 jlong* jlA=jEnv->GetLongArrayElements(jlongA,&b);
2569 if (notSigned) {
2570 Array<Uint64> u64;
2571 for (jsize i=0;i<len;i++)
2572 u64.append((Uint64)jlA[i]);
2573 cv=new CIMValue(u64);
2574 }
2575 else {
2576 Array<Sint64> s64;
2577 for (jsize i=0;i<len;i++)
2578 s64.append((Sint64)jlA[i]);
2579 cv=new CIMValue(s64);
2580 }
2581 return (jint)(void*)cv;
2582 }
2583
2584 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1stringArray
2585 (JNIEnv *jEnv, jobject jThs, jobjectArray jstringA) {
2586 CIMValue *cv=NULL;
2587 jboolean b;
2588 schuur 1.1 jsize len=jEnv->GetArrayLength(jstringA);
2589 Array<String> strA;
2590
2591 for (jsize i=0;i<len;i++) {
2592 jstring jsA=(jstring)jEnv->GetObjectArrayElement(jstringA,i);
2593 const char *str=jEnv->GetStringUTFChars(jsA,NULL);
2594 strA.append(String(str));
2595 jEnv->ReleaseStringUTFChars(jsA,str);
2596 }
2597
2598 cv=new CIMValue(strA);
2599 return (jint)(void*)cv;
2600 }
2601
2602 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1booleanArray
2603 (JNIEnv *jEnv, jobject jThs, jbooleanArray jboolA) {
2604 CIMValue *cv=NULL;
2605 jboolean b;
2606 jsize len=jEnv->GetArrayLength(jboolA);
2607 jboolean* jbA=jEnv->GetBooleanArrayElements(jboolA,&b);
2608 Array<Boolean> bA;
2609 schuur 1.1 for (jsize i=0;i<len;i++)
2610 bA.append((Boolean)jbA[i]);
2611 cv=new CIMValue(bA);
2612 return (jint)(void*)cv;
2613 }
2614
2615 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1refArray
2616 (JNIEnv *jEnv, jobject jThs, jintArray jintA) {
2617 CIMValue *cv=NULL;
2618 jboolean b;
2619 jsize len=jEnv->GetArrayLength(jintA);
2620 jint* jiA=jEnv->GetIntArrayElements(jintA,&b);
2621 Array<CIMObjectPath> cA;
2622 for (jsize i=0;i<len;i++)
2623 cA.append(*((CIMObjectPath*)jiA[i]));
2624 cv=new CIMValue(cA);
2625 return (jint)(void*)cv;
2626 }
2627
2628 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMValue__1getType
2629 (JNIEnv *jEnv, jobject jThs, jint jP) {
2630 schuur 1.1 CIMValue *cv=(CIMValue*)jP;
|
2631 schuur 1.5 return (jint)pTypeToJType[cv->getType()];
|
2632 schuur 1.1 }
2633
2634 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMValue__1toString
2635 (JNIEnv *jEnv, jobject jThs, jint jV) {
2636 CIMValue *cv=(CIMValue*)jV;
2637 return (jstring)jEnv->NewStringUTF(cv->toString().getCString());
2638 }
2639
2640 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMValue__1getValue
2641 (JNIEnv *jEnv, jobject jThs, jint jV) {
2642 CIMValue *cv=(CIMValue*)jV;
2643 if (cv->isNull())
2644 return NULL;
2645 CIMType type=cv->getType();
2646
2647 if (!cv->isArray()) {
2648 switch (type) {
2649 case CIMTYPE_BOOLEAN:
2650 Boolean bo;
2651 cv->get(bo);
2652 return jEnv->NewObject(classRefs[1],instanceMethodIDs[1],bo);
2653 schuur 1.1 break;
2654 case CIMTYPE_SINT8:
2655 Sint8 s8;
2656 cv->get(s8);
2657 return jEnv->NewObject(classRefs[2],instanceMethodIDs[2],s8);
2658 break;
2659 case CIMTYPE_UINT8:
2660 Uint8 u8;
2661 cv->get(u8);
2662 return jEnv->NewObject(classRefs[8],instanceMethodIDs[8],u8);
2663 break;
2664 case CIMTYPE_SINT16:
2665 Sint16 s16;
2666 cv->get(s16);
2667 return jEnv->NewObject(classRefs[3],instanceMethodIDs[3],s16);
2668 break;
2669 case CIMTYPE_UINT16:
2670 Uint16 u16;
2671 cv->get(u16);
2672 return jEnv->NewObject(classRefs[9],instanceMethodIDs[9],u16);
2673 break;
2674 schuur 1.1 case CIMTYPE_SINT32:
2675 Sint32 s32;
2676 cv->get(s32);
2677 return jEnv->NewObject(classRefs[4],instanceMethodIDs[4],s32);
2678 break;
2679 case CIMTYPE_UINT32:
2680 Uint32 u32;
2681 cv->get(u32);
2682 return jEnv->NewObject(classRefs[10],instanceMethodIDs[10],u32);
2683 break;
2684 case CIMTYPE_SINT64:
2685 Sint64 s64;
2686 cv->get(s64);
2687 return jEnv->NewObject(classRefs[5],instanceMethodIDs[5],s64);
2688 break;
2689 case CIMTYPE_UINT64: {
2690 Uint64 u64;
2691 cv->get(u64);
2692 jobject big=jEnv->CallStaticObjectMethod(classRefs[14],staticMethodIDs[0],u64);
2693 return jEnv->NewObject(classRefs[11],instanceMethodIDs[11],big);
2694 }
2695 schuur 1.1 break;
2696 case CIMTYPE_REAL32:
2697 float f;
2698 cv->get(f);
2699 return jEnv->NewObject(classRefs[6],instanceMethodIDs[6],f);
2700 break;
2701 case CIMTYPE_REAL64:
2702 double d;
2703 cv->get(d);
2704 return jEnv->NewObject(classRefs[7],instanceMethodIDs[7],d);
2705 break;
2706 case CIMTYPE_STRING: {
2707 String s;
2708 jstring str;
2709 cv->get(s);
2710 str=jEnv->NewStringUTF(s.getCString());
2711 return str;
2712 }
2713 break;
2714 case CIMTYPE_REFERENCE: {
2715 CIMObjectPath ref;
2716 schuur 1.1 cv->get(ref);
2717 return jEnv->NewObject(classRefs[12],instanceMethodIDs[12],
2718 (jint)new CIMObjectPath(ref));
2719 }
2720 break;
2721 case CIMTYPE_CHAR16:
2722 throwCIMException(jEnv,"+++ Char16 not yet supported");
2723 break;
2724 case CIMTYPE_DATETIME: {
2725 CIMDateTime dt;
2726 cv->get(dt);
2727 return jEnv->NewObject(classRefs[24],instanceMethodIDs[35],
2728 (jint)new CIMDateTime(dt));
2729 }
2730 // throwCIMException(jEnv,"+++ DateTime not yet supported");
2731 break;
|
2732 dave.sudlik 1.13 case CIMTYPE_OBJECT:
2733 throwCIMException(jEnv,"+++ Object not yet supported");
2734 break;
|
2735 schuur 1.1 default:
|
2736 mark.hamzy 1.17 throwCIMException(jEnv,"+++ unsupported type: ");
|
2737 schuur 1.1 }
2738 }
2739
2740 else {
2741 switch (type) {
2742 case CIMTYPE_BOOLEAN: {
2743 Array<Boolean> bo;
2744 cv->get(bo);
2745 int s=bo.size();
2746 jobjectArray jbooleanA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[1],0);
|
2747 r.kieninger 1.11 for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbooleanA, i,
|
2748 schuur 1.1 jEnv->NewObject(classRefs[1],instanceMethodIDs[1],bo[i]));
2749 return jbooleanA;
2750 }
2751 break;
2752 case CIMTYPE_SINT8: {
2753 Array<Sint8> s8;
2754 cv->get(s8);
2755 int s=s8.size();
2756 jobjectArray jbyteA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[2],0);
|
2757 r.kieninger 1.11 for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jbyteA, i,
|
2758 schuur 1.1 jEnv->NewObject(classRefs[2],instanceMethodIDs[2],s8[i]));
2759 return jbyteA;
2760 }
2761 break;
2762 case CIMTYPE_UINT8: {
2763 Array<Uint8> u8;
2764 cv->get(u8);
2765 int s=u8.size();
2766 jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[8],0);
|
2767 r.kieninger 1.11 for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i,
|
2768 schuur 1.1 jEnv->NewObject(classRefs[8],instanceMethodIDs[8],u8[i]));
2769 return jshortA;
2770 }
2771 break;
2772 case CIMTYPE_SINT16: {
2773 Array<Sint16> s16;
2774 cv->get(s16);
2775 int s=s16.size();
2776 jobjectArray jshortA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[3],0);
|
2777 r.kieninger 1.11 for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jshortA, i,
|
2778 schuur 1.1 jEnv->NewObject(classRefs[3],instanceMethodIDs[3],s16[i]));
2779 return jshortA;
2780 }
2781 break;
2782 case CIMTYPE_UINT16: {
2783 Array<Uint16> u16;
2784 cv->get(u16);
2785 int s=u16.size();
2786 jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[9],0);
|
2787 r.kieninger 1.11 for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i,
|
2788 schuur 1.1 jEnv->NewObject(classRefs[9],instanceMethodIDs[9],u16[i]));
2789 return jintA;
2790 }
2791 break;
2792 case CIMTYPE_SINT32: {
2793 Array<Sint32> s32;
2794 cv->get(s32);
2795 int s=s32.size();
2796 jobjectArray jintA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[4],0);
|
2797 schuur 1.7 for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jintA, i,
|
2798 schuur 1.1 jEnv->NewObject(classRefs[4],instanceMethodIDs[4],s32[i]));
2799 return jintA;
2800 }
2801 break;
2802 case CIMTYPE_UINT32: {
2803 Array<Uint32> u32;
2804 cv->get(u32);
2805 int s=u32.size();
2806 jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[10],0);
|
2807 r.kieninger 1.11 for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i,
|
2808 schuur 1.1 jEnv->NewObject(classRefs[10],instanceMethodIDs[10],u32[i]));
2809 return jlongA;
2810 }
2811 break;
2812 case CIMTYPE_SINT64: {
2813 Array<Sint64> s64;
2814 cv->get(s64);
2815 int s=s64.size();
2816 jobjectArray jlongA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[5],0);
|
2817 r.kieninger 1.11 for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jlongA, i,
|
2818 schuur 1.1 jEnv->NewObject(classRefs[5],instanceMethodIDs[5],s64[i]));
2819 return jlongA;
2820 }
2821 break;
2822 case CIMTYPE_UINT64:
2823 throwCIMException(jEnv,"+++ UnisgnetInt64 not yet supported");
2824 break;
2825 case CIMTYPE_REAL32: {
2826 Array<Real32> r32;
2827 cv->get(r32);
2828 int s=r32.size();
2829 jobjectArray jfloatA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[6],0);
|
2830 schuur 1.7 for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jfloatA, i,
|
2831 schuur 1.1 jEnv->NewObject(classRefs[6],instanceMethodIDs[6],r32[i]));
2832 return jfloatA;
2833 }
2834 break;
2835 case CIMTYPE_REAL64: {
2836 Array<Real64> r64;
2837 cv->get(r64);
2838 int s=r64.size();
2839 jobjectArray jdoubleA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[7],0);
|
2840 r.kieninger 1.11 for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jdoubleA, i,
|
2841 schuur 1.1 jEnv->NewObject(classRefs[7],instanceMethodIDs[7],r64[i]));
2842 return jdoubleA;
2843 }
2844 break;
2845 case CIMTYPE_STRING: {
2846 Array<String> str;
2847 cv->get(str);
2848 int s=str.size();
2849 jobjectArray jstringA=(jobjectArray)jEnv->NewObjectArray(s,classRefs[22],0);
|
2850 r.kieninger 1.11 for (int i=0; i < s; i++) jEnv->SetObjectArrayElement(jstringA, i,
|
2851 schuur 1.1 jEnv->NewStringUTF(str[i].getCString()));
2852 return jstringA;
2853 }
2854 break;
2855 case CIMTYPE_REFERENCE:
2856 throwCIMException(jEnv,"+++ Reference not yet supported");
2857 break;
2858 case CIMTYPE_CHAR16:
2859 throwCIMException(jEnv,"+++ Char16 not yet supported");
2860 break;
2861 case CIMTYPE_DATETIME:
2862 throwCIMException(jEnv,"+++ DateTime not yet supported");
2863 break;
|
2864 dave.sudlik 1.13 case CIMTYPE_OBJECT:
2865 throwCIMException(jEnv,"+++ Object not yet supported");
2866 break;
|
2867 schuur 1.1 default:
2868 throwCIMException(jEnv,"+++ unsupported type: ");
2869 }
2870 }
2871 return NULL;
2872 }
2873
2874 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMValue__1finalize
2875 (JNIEnv *jEnv, jobject jThs, jint jV) {
2876 CIMValue *cv=(CIMValue*)jV;
|
2877 schuur 1.6 if (cv) delete cv;
|
2878 schuur 1.1 }
2879
2880
2881 // -------------------------------------
2882 // ---
2883 // - CIMNameSpace
2884 // ---
2885 // -------------------------------------
2886
2887 _nameSpace::_nameSpace() {
2888 port_=0;
2889 hostName_=System::getHostName();
2890 nameSpace_="root/cimv2";
2891 }
2892
2893 _nameSpace::_nameSpace(String hn) {
2894 port_=0;
2895 hostName_=hn;
2896 nameSpace_="root/cimv2";
2897 }
2898
2899 schuur 1.1 _nameSpace::_nameSpace(String hn, String ns) {
2900 port_=0;
2901 hostName_=hn;
2902 nameSpace_=ns;
2903 }
2904
2905 int _nameSpace::port() {
2906 if (port_) return port_;
2907 port_=5988;
2908 if (hostName_.subString(0,7)=="http://") {
2909 protocol_="http://";
2910 hostName_=hostName_.subString(7);
2911 }
2912 Sint32 p=hostName_.reverseFind(':');
2913 if (p>=0) {
|
2914 david.dillard 1.15 if (hostName_[p+1].isDigit())
|
2915 schuur 1.1 port_=atoi(hostName_.subString(p+1).getCString());
2916 hostName_.remove(p);
2917 }
2918 return port_;
2919 }
2920
2921 String _nameSpace::hostName() {
2922 port();
2923 return hostName_;
2924 }
2925
2926 String _nameSpace::nameSpace() {
2927 return nameSpace_;
2928 }
2929
2930
2931 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1new
2932 (JNIEnv *jEnv, jobject jThs) {
2933 return (jint)(void*) new _nameSpace();
2934 }
2935
2936 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHn
2937 (JNIEnv *jEnv, jobject jThs, jstring jHn) {
2938 const char *hn=jEnv->GetStringUTFChars(jHn,NULL);
2939 jint cInst=(jint)(void*)new _nameSpace(hn);
2940 jEnv->ReleaseStringUTFChars(jHn,hn);
2941 return cInst;
2942 }
2943
2944 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1newHnNs
2945 (JNIEnv *jEnv, jobject jThs, jstring jHn, jstring jNs) {
2946 const char *hn=jEnv->GetStringUTFChars(jHn,NULL);
2947 const char *ns=jEnv->GetStringUTFChars(jNs,NULL);
2948 jint cInst=(jint)(void*)new _nameSpace(String(hn),String(ns));
2949 jEnv->ReleaseStringUTFChars(jHn,hn);
2950 jEnv->ReleaseStringUTFChars(jNs,ns);
2951 return cInst;
2952 }
2953
2954 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getHost
2955 (JNIEnv *jEnv, jobject jThs, jint jNs) {
2956 _nameSpace *cNs=(_nameSpace*)jNs;
2957 schuur 1.1 const String &hn=cNs->hostName_;
2958 jstring str=jEnv->NewStringUTF(hn.getCString());
2959 return str;
2960 }
2961
2962 JNIEXPORT jstring JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1getNameSpace
2963 (JNIEnv *jEnv, jobject jThs, jint jNs) {
2964 _nameSpace *cNs=(_nameSpace*)jNs;
2965 const String &ns=cNs->nameSpace_;
2966 jstring str=jEnv->NewStringUTF(ns.getCString());
2967 return str;
2968 }
2969
2970 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setHost
2971 (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jHn) {
2972 _nameSpace *cNs=(_nameSpace*)jNs;
2973 const char *str=jEnv->GetStringUTFChars(jHn,NULL);
2974 cNs->port_=0;
2975 cNs->hostName_=str;
2976 jEnv->ReleaseStringUTFChars(jHn,str);
2977 }
2978 schuur 1.1
2979 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMNameSpace__1setNameSpace
2980 (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jN) {
2981 _nameSpace *cNs=(_nameSpace*)jN;
2982 const char *str=jEnv->GetStringUTFChars(jN,NULL);
2983 cNs->nameSpace_=str;
2984 jEnv->ReleaseStringUTFChars(jN,str);
2985 }
2986
2987
2988 // -------------------------------------
2989 // ---
2990 // - Enumerators
2991 // ---
2992 // -------------------------------------
2993
|
2994 schuur 1.4 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1getClass
2995 (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) {
2996 Array<CIMClass> *enm=(Array<CIMClass>*)jEnum;
2997 return (jint) new CIMClass((*enm)[pos]);
2998 }
2999
3000 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_ClassEnumeration__1size
3001 (JNIEnv *jEnv, jobject jThs, jint jEnum) {
3002 Array<CIMClass> *enm=(Array<CIMClass>*)jEnum;
3003 return enm->size();
3004 }
3005
|
3006 schuur 1.1
3007 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1getInstance
3008 (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) {
3009 Array<CIMInstance> *enm=(Array<CIMInstance>*)jEnum;
3010 return (jint) new CIMInstance((*enm)[pos]);
3011 }
3012
3013 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_InstEnumeration__1size
3014 (JNIEnv *jEnv, jobject jThs, jint jEnum) {
3015 Array<CIMInstance> *enm=(Array<CIMInstance>*)jEnum;
3016 return enm->size();
3017 }
3018
3019
3020 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1getObjectPath
3021 (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) {
3022 Array<CIMObjectPath> *enm=(Array<CIMObjectPath>*)jEnum;
3023 return (jint) new CIMObjectPath((*enm)[pos]);
3024 }
3025
3026 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_PathEnumeration__1size
3027 schuur 1.1 (JNIEnv *jEnv, jobject jThs, jint jEnum) {
3028 Array<CIMObjectPath> *enm=(Array<CIMObjectPath>*)jEnum;
3029 return enm->size();
3030 }
3031
|
3032 schuur 1.5 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1getQualifierType
3033 (JNIEnv *jEnv, jobject jThs, jint jEnum, jint pos) {
3034 Array<CIMQualifierDecl> *enm=(Array<CIMQualifierDecl>*)jEnum;
3035 return (jint) new CIMQualifierDecl((*enm)[pos]);
3036 }
3037
3038 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_QualEnumeration__1size
3039 (JNIEnv *jEnv, jobject jThs, jint jEnum) {
3040 Array<CIMQualifierDecl> *enm=(Array<CIMQualifierDecl>*)jEnum;
3041 return enm->size();
3042 }
3043
|
3044 schuur 1.6
3045
|
3046 schuur 1.1 // -------------------------------------
3047 // ---
3048 // - CIMClient
3049 // ---
3050 // -------------------------------------
3051
|
3052 schuur 1.5 void checkNs(CIMObjectPath *cop, jint jNs) {
3053 if (cop->getNameSpace().isNull()) {
3054 _nameSpace *ns=(_nameSpace*)jNs;
3055 cop->setNameSpace(CIMNamespaceName(ns->nameSpace()));
3056 }
3057 }
3058
|
3059 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1newNaUnPw
3060 (JNIEnv *jEnv, jobject jThs, jint jNs, jstring jUn, jstring jPw) {
3061 _nameSpace *cNs=(_nameSpace*)jNs;
|
3062 schuur 1.5
|
3063 schuur 1.1 const char *un=jEnv->GetStringUTFChars(jUn,NULL);
3064 const char *pw=jEnv->GetStringUTFChars(jPw,NULL);
|
3065 schuur 1.5
|
3066 schuur 1.1 try {
|
3067 schuur 1.5 JMPIjvm::cacheIDs(jEnv);
|
3068 schuur 1.1 CIMClient *cc=new CIMClient();
3069 cc->connect(cNs->hostName(),cNs->port(),un,pw);
3070 jEnv->ReleaseStringUTFChars(jUn,un);
3071 jEnv->ReleaseStringUTFChars(jPw,pw);
3072 return (jint)(void*)cc;
3073 }
|
3074 schuur 1.5 Catch(jEnv);
|
3075 schuur 1.1 return 0;
3076 }
3077
3078 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1disconnect
3079 (JNIEnv *jEnv, jobject jThs, jint jCc) {
3080 CIMClient *cCc=(CIMClient*)jCc;
3081 try {
3082 cCc->disconnect();
3083 }
|
3084 schuur 1.5 Catch(jEnv);
|
3085 schuur 1.1 }
|
3086 schuur 1.5
|
3087 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getClass
|
3088 schuur 1.6 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean lo,
3089 jboolean iq, jboolean ic, jobjectArray jPl) {
|
3090 schuur 1.1 CIMClient *cCc=(CIMClient*)jCc;
3091 CIMObjectPath *cop=(CIMObjectPath*)jCop;
|
3092 schuur 1.6 CIMPropertyList pl=getList(jEnv,jPl);
|
3093 schuur 1.1 try {
|
3094 schuur 1.5 checkNs(cop,jNs);
|
3095 schuur 1.6 CIMClass cls=cCc->getClass(cop->getNameSpace(),cop->getClassName(),(Boolean)lo,
3096 (Boolean)iq,(Boolean)ic,pl);
|
3097 schuur 1.3 return (jint) new CIMClass(cls);
|
3098 schuur 1.1 }
|
3099 schuur 1.5 Catch(jEnv);
|
3100 schuur 1.1 return 0;
3101 }
|
3102 schuur 1.3
3103 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteClass
|
3104 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) {
|
3105 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3106 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3107 try {
|
3108 schuur 1.5 checkNs(cop,jNs);
|
3109 schuur 1.3 cCc->deleteClass(cop->getNameSpace(),cop->getClassName());
3110 }
|
3111 schuur 1.5 Catch(jEnv);
|
3112 schuur 1.3 return;
3113 }
3114
3115 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createClass
|
3116 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCl) {
|
3117 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3118 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3119 CIMClass *cl=(CIMClass*)jCl;
3120
3121 try {
3122 cCc->createClass(cop->getNameSpace(),*cl);
3123 }
|
3124 schuur 1.5 Catch(jEnv);
|
3125 schuur 1.3 return;
3126 }
3127
3128 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setClass
|
3129 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCl) {
|
3130 schuur 1.1 CIMClient *cCc=(CIMClient*)jCc;
3131 CIMObjectPath *cop=(CIMObjectPath*)jCop;
|
3132 schuur 1.3 CIMClass *cl=(CIMClass*)jCl;
3133
|
3134 schuur 1.1 try {
|
3135 schuur 1.5 checkNs(cop,jNs);
|
3136 schuur 1.3 cCc->modifyClass(cop->getNameSpace(),*cl);
|
3137 schuur 1.1 }
|
3138 schuur 1.5 Catch(jEnv);
|
3139 schuur 1.3 return ;
|
3140 schuur 1.1 }
|
3141 schuur 1.3
3142 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClasses
|
3143 schuur 1.6 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, int jCop, jboolean deep, jboolean lo, jboolean iq, jboolean ic) {
|
3144 schuur 1.1 CIMClient *cCc=(CIMClient*)jCc;
3145 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3146 try {
|
3147 schuur 1.5 checkNs(cop,jNs);
|
3148 schuur 1.3 Array<CIMClass> enm=cCc->enumerateClasses(
|
3149 schuur 1.6 cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo,(Boolean)iq,(Boolean)ic);
|
3150 schuur 1.3 return (jint) new Array<CIMClass>(enm);
|
3151 schuur 1.1 }
|
3152 schuur 1.5 Catch(jEnv);
|
3153 schuur 1.1 return 0;
3154 }
3155
|
3156 schuur 1.3 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateClassNames
|
3157 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep) {
|
3158 schuur 1.1 CIMClient *cCc=(CIMClient*)jCc;
3159 CIMObjectPath *cop=(CIMObjectPath*)jCop;
|
3160 schuur 1.3 CIMNamespaceName ns=cop->getNameSpace();
|
3161 schuur 1.1 try {
|
3162 schuur 1.5 checkNs(cop,jNs);
|
3163 schuur 1.7 Array<CIMName> enm=cCc->enumerateClassNames(ns,cop->getClassName(),(Boolean)deep);
|
3164 schuur 1.3 Array<CIMObjectPath> *enmop=new Array<CIMObjectPath>();
3165 for (int i=0,m=enm.size(); i<m; i++) {
3166 enmop->append(CIMObjectPath(String::EMPTY,ns,enm[i]));
3167 }
3168 return (jint)enmop;
3169 }
|
3170 schuur 1.5 Catch(jEnv);
|
3171 schuur 1.3 return 0;
3172 }
3173
|
3174 schuur 1.6 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateQualifiers
3175 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, int jCop) {
3176 CIMClient *cCc=(CIMClient*)jCc;
3177 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3178 try {
3179 checkNs(cop,jNs);
3180 Array<CIMQualifierDecl> enm=cCc->enumerateQualifiers(
3181 cop->getNameSpace());
3182 return (jint) new Array<CIMQualifierDecl>(enm);
3183 }
3184 Catch(jEnv);
3185 return 0;
3186 }
3187
|
3188 schuur 1.3
3189
3190 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getInstance
|
3191 schuur 1.6 (JNIEnv *jEnv, jobject jThs, jint jCc, int jNs, int jCop, jboolean lo,
3192 jboolean iq, jboolean ic, jobjectArray jPl) {
|
3193 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3194 CIMObjectPath *cop=(CIMObjectPath*)jCop;
|
3195 schuur 1.6 CIMPropertyList pl=getList(jEnv,jPl);
|
3196 schuur 1.5
|
3197 schuur 1.3 try {
|
3198 schuur 1.5 checkNs(cop,jNs);
|
3199 schuur 1.6 CIMInstance inst=cCc->getInstance(cop->getNameSpace(),*cop,(Boolean)lo,
3200 (Boolean)iq,(Boolean)ic,pl);
|
3201 schuur 1.3 return (jint) new CIMInstance(inst);
|
3202 schuur 1.1 }
|
3203 schuur 1.5 Catch(jEnv);
|
3204 schuur 1.1 return 0;
3205 }
3206
|
3207 schuur 1.3 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteInstance
|
3208 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) {
|
3209 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3210 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3211 try {
|
3212 schuur 1.5 checkNs(cop,jNs);
|
3213 schuur 1.3 cCc->deleteInstance(cop->getNameSpace(),*cop);
3214 }
|
3215 schuur 1.5 Catch(jEnv);
|
3216 schuur 1.3 return;
3217 }
3218
|
3219 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1createInstance
|
3220 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, int jCi) {
|
3221 schuur 1.1 CIMClient *cCc=(CIMClient*)jCc;
3222 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3223 CIMInstance *ci=(CIMInstance*)jCi;
3224 try {
|
3225 schuur 1.5 checkNs(cop,jNs);
|
3226 schuur 1.6 ci->setPath(*cop);
|
3227 schuur 1.1 CIMObjectPath obj=cCc->createInstance(cop->getNameSpace(),*ci);
|
3228 schuur 1.3 return (jint) new CIMObjectPath(obj);
|
3229 schuur 1.1 }
|
3230 schuur 1.5 Catch(jEnv);
3231 return 0;
|
3232 schuur 1.1 }
|
3233 schuur 1.3
|
3234 schuur 1.6 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1modifyInstance
3235 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jCi,
3236 jboolean iq, jobjectArray jPl) {
|
3237 schuur 1.1 CIMClient *cCc=(CIMClient*)jCc;
3238 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3239 CIMInstance *ci=(CIMInstance*)jCi;
|
3240 schuur 1.6 CIMPropertyList pl=getList(jEnv,jPl);
|
3241 schuur 1.1 try {
|
3242 schuur 1.6 checkNs(cop,jNs);
3243 ci->setPath(*cop);
3244 cCc->modifyInstance(cop->getNameSpace(),*ci,(Boolean)iq,pl);
|
3245 schuur 1.1 }
|
3246 schuur 1.5 Catch(jEnv);
|
3247 schuur 1.1 return ;
|
3248 schuur 1.3 }
3249
3250 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstances
|
3251 schuur 1.6 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep, jboolean lo,
3252 jboolean iq, jboolean ic, jobjectArray jPl) {
|
3253 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3254 CIMObjectPath *cop=(CIMObjectPath*)jCop;
|
3255 schuur 1.6 CIMPropertyList pl=getList(jEnv,jPl);
|
3256 schuur 1.3 try {
|
3257 schuur 1.5 checkNs(cop,jNs);
|
3258 schuur 1.6 CIMPropertyList props;
|
3259 schuur 1.3 Array<CIMInstance> enm=cCc->enumerateInstances(
|
3260 schuur 1.6 cop->getNameSpace(),cop->getClassName(),(Boolean)deep,(Boolean)lo,(Boolean)iq,(Boolean)ic,pl);
|
3261 schuur 1.3 return (jint) new Array<CIMInstance>(enm);
3262 }
|
3263 schuur 1.5 Catch(jEnv);
|
3264 schuur 1.3 return 0;
3265 }
3266
3267 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateInstanceNames
|
3268 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jboolean deep) {
|
3269 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3270 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3271 try {
|
3272 schuur 1.5 checkNs(cop,jNs);
|
3273 schuur 1.3 Array<CIMObjectPath> enm=cCc->enumerateInstanceNames(
3274 cop->getNameSpace(),cop->getClassName()); //,(Boolean)deep);
3275 return (jint) new Array<CIMObjectPath>(enm);
3276 }
|
3277 schuur 1.5 Catch(jEnv);
3278 return 0;
3279 }
3280
3281
3282 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getQualifier
3283 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) {
3284 CIMClient *cCc=(CIMClient*)jCc;
3285 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3286 try {
3287 checkNs(cop,jNs);
3288 CIMQualifierDecl *val=new CIMQualifierDecl(cCc->getQualifier(cop->getNameSpace(),cop->getClassName()));
3289 return (jint)val;
|
3290 schuur 1.3 }
|
3291 schuur 1.5 Catch(jEnv);
|
3292 schuur 1.3 return 0;
3293 }
3294
|
3295 schuur 1.5 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteQualifier
3296 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop) {
3297 CIMClient *cCc=(CIMClient*)jCc;
3298 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3299 try {
3300 checkNs(cop,jNs);
3301 cCc->deleteQualifier(cop->getNameSpace(),cop->getClassName());
3302 }
3303 Catch(jEnv);
3304 return;
3305 }
3306
3307 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setQualifier
3308 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jint jQ) {
3309 CIMClient *cCc=(CIMClient*)jCc;
3310 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3311 CIMQualifierDecl *qt=(CIMQualifierDecl*)jQ;
3312 try {
3313 checkNs(cop,jNs);
3314 cCc->setQualifier(cop->getNameSpace(),*qt);
3315 }
3316 schuur 1.5 Catch(jEnv);
3317 return;
3318 }
3319
|
3320 schuur 1.1
3321 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1getProperty
|
3322 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn) {
|
3323 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3324 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3325 const char *str=jEnv->GetStringUTFChars(jPn,NULL);
3326 CIMName pName(str);
3327 jEnv->ReleaseStringUTFChars(jPn,str);
3328 try {
|
3329 schuur 1.5 checkNs(cop,jNs);
|
3330 schuur 1.3 CIMValue *val=new CIMValue(cCc->getProperty(cop->getNameSpace(),*cop,pName));
3331 return (jint)val;
3332 }
|
3333 schuur 1.5 Catch(jEnv);
|
3334 schuur 1.3 return 0;
3335 }
|
3336 schuur 1.5
|
3337 schuur 1.1 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1setProperty
|
3338 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jPn, jint jV) {
|
3339 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3340 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3341 CIMValue *val=(CIMValue*)jCop;
3342 const char *str=jEnv->GetStringUTFChars(jPn,NULL);
3343 CIMName pName(str);
3344 jEnv->ReleaseStringUTFChars(jPn,str);
3345 try {
|
3346 schuur 1.5 checkNs(cop,jNs);
|
3347 schuur 1.3 cCc->setProperty(cop->getNameSpace(),*cop,pName,*val);
3348 }
|
3349 schuur 1.5 Catch(jEnv);
|
3350 schuur 1.3 return;
3351 }
3352
3353 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod
|
3354 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn, jobject jIn, jobject jOut) {
|
3355 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3356 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3357 const char *str=jEnv->GetStringUTFChars(jMn,NULL);
3358 CIMName method(str);
3359 jEnv->ReleaseStringUTFChars(jMn,str);
3360
3361 Array<CIMParamValue> in;
3362 Array<CIMParamValue> out;
3363
|
3364 schuur 1.6 for (int i=0,m=jEnv->CallIntMethod(jIn,instanceMethodIDs[28]); i<m; i++) {
|
3365 schuur 1.3 JMPIjvm::checkException(jEnv);
|
3366 schuur 1.6 jobject jProp=jEnv->CallObjectMethod(jIn,instanceMethodIDs[16],i);
|
3367 schuur 1.3 JMPIjvm::checkException(jEnv);
|
3368 schuur 1.6 CIMProperty *p=((CIMProperty*)jEnv->CallIntMethod(jProp,instanceMethodIDs[29]));
|
3369 schuur 1.3 JMPIjvm::checkException(jEnv);
3370 in.append(CIMParamValue(p->getName().getString(),p->getValue()));
3371 }
3372 try {
|
3373 schuur 1.5 checkNs(cop,jNs);
|
3374 schuur 1.3 CIMValue *val=new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out));
3375
3376 for (int i=0,m=out.size(); i<m; i++) {
3377 const CIMParamValue & parm=out[i];
|
3378 mark.hamzy 1.17 const CIMValue v=parm.getValue();
|
3379 schuur 1.3 CIMProperty *p=new CIMProperty(parm.getParameterName(),v,v.getArraySize());
|
3380 schuur 1.6 jobject prop=jEnv->NewObject(classRefs[15],instanceMethodIDs[14],(jint)p);
3381 jEnv->CallVoidMethod(jOut,instanceMethodIDs[15],prop);
|
3382 schuur 1.3 }
|
3383 schuur 1.6 return (jint)val;
3384 }
|
3385 schuur 1.5 Catch(jEnv);
|
3386 schuur 1.3 return 0;
3387 }
3388
|
3389 schuur 1.6 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1invokeMethod24
3390 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jMn,
3391 jobjectArray jIn, jobjectArray jOut) {
|
3392 schuur 1.7 CIMClient *cCc=(CIMClient*)jCc;
3393 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3394 const char *str=jEnv->GetStringUTFChars(jMn,NULL);
3395 CIMName method(str);
3396 jEnv->ReleaseStringUTFChars(jMn,str);
3397
3398 Array<CIMParamValue> in;
3399 Array<CIMParamValue> out;
3400
3401 for (int i=0,m=jEnv->GetArrayLength(jIn); i<m; i++) {
3402 JMPIjvm::checkException(jEnv);
3403 jobject jArg=jEnv->GetObjectArrayElement(jIn,i);
3404 JMPIjvm::checkException(jEnv);
3405 CIMParamValue *p=((CIMParamValue*)jEnv->CallIntMethod(jArg,instanceMethodIDs[39]));
3406 JMPIjvm::checkException(jEnv);
3407 in.append(*p);
3408 }
3409 try {
3410 checkNs(cop,jNs);
3411 CIMValue *val=new CIMValue(cCc->invokeMethod(cop->getNameSpace(),*cop,method,in,out));
3412
3413 schuur 1.7 for (int i=0,m=out.size(),o=jEnv->GetArrayLength(jOut); i<m && i<o; i++) {
3414 const CIMParamValue & parm=out[i];
|
3415 mark.hamzy 1.17 jEnv->SetObjectArrayElement(jOut,i,
3416 jEnv->NewObject(classRefs[29],instanceMethodIDs[40],(jint)&parm));
|
3417 schuur 1.7 }
3418 return (jint)val;
3419 }
3420 Catch(jEnv);
|
3421 schuur 1.6 return 0;
3422 }
3423
|
3424 schuur 1.3
|
3425 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1execQuery
|
3426 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop, jstring jQuery, jstring jQl) {
|
3427 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3428 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3429
|
3430 mark.hamzy 1.16 /* Note:
3431 ** This does not work for some reason on the client java code:
3432 ** DDD(PEGASUS_STD(cout)<<"--- JMPIjvm::"<<__FUNCTION__<<": jEnv = "<<PEGASUS_STD(hex)<<(int)jEnv<<", jThs = "<<(int)jThs<<PEGASUS_STD(dec)<<", jCc = "<<jCc<<", jNs = "<<jNs<<", jCop = "<<jCop<<", jQuery = "<<PEGASUS_STD(hex)<<(int)jQuery<<", jQl = "<<(int)jQl<<PEGASUS_STD(dec)<<PEGASUS_STD(endl));
3433 ** What does work is:
3434 ** printf ("This is a test\n");
3435 */
3436
|
3437 schuur 1.3 const char *str=jEnv->GetStringUTFChars(jQuery,NULL);
3438 String query(str);
|
3439 mark.hamzy 1.16
|
3440 schuur 1.3 jEnv->ReleaseStringUTFChars(jQuery,str);
|
3441 mark.hamzy 1.16
|
3442 schuur 1.3 str=jEnv->GetStringUTFChars(jQl,NULL);
3443 String ql(str);
|
3444 mark.hamzy 1.16
|
3445 schuur 1.3 jEnv->ReleaseStringUTFChars(jQl,str);
3446
3447 try {
|
3448 schuur 1.5 checkNs(cop,jNs);
|
3449 schuur 1.3 Array<CIMObject> enm=cCc->execQuery(
3450 cop->getNameSpace(),query,ql);
3451 Array<CIMInstance> *enmInst=new Array<CIMInstance>();
3452 for (int i=0,m=enm.size(); i<m; i++) {
3453 enmInst->append(CIMInstance(enm[i]));
3454 }
3455 return (jint)enmInst;
3456 }
|
3457 schuur 1.5 Catch(jEnv);
|
3458 schuur 1.3 return 0;
3459 }
3460
|
3461 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associatorNames
|
3462 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
|
3463 schuur 1.3 jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole) {
3464 CIMClient *cCc=(CIMClient*)jCc;
3465 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3466
3467 const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
3468 CIMName assocClass(str);
3469 jEnv->ReleaseStringUTFChars(jAssocClass,str);
3470 str=jEnv->GetStringUTFChars(jResultClass,NULL);
3471 CIMName resultClass(str);
3472 jEnv->ReleaseStringUTFChars(jResultClass,str);
3473 str=jEnv->GetStringUTFChars(jRole,NULL);
3474 String role(str);
3475 jEnv->ReleaseStringUTFChars(jRole,str);
3476 str=jEnv->GetStringUTFChars(jResultRole,NULL);
3477 String resultRole(str);
3478 jEnv->ReleaseStringUTFChars(jResultRole,str);
3479
3480 try {
|
3481 schuur 1.5 checkNs(cop,jNs);
|
3482 schuur 1.3 Array<CIMObjectPath> enm=cCc->associatorNames(
3483 cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole);
3484 return (jint) new Array<CIMObjectPath>(enm);
3485 }
|
3486 schuur 1.5 Catch(jEnv);
|
3487 schuur 1.3 return 0;
3488 }
3489
|
3490 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1associators
|
3491 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
|
3492 schuur 1.3 jstring jAssocClass, jstring jResultClass, jstring jRole, jstring jResultRole,
|
3493 schuur 1.6 jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl) {
|
3494 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3495 CIMObjectPath *cop=(CIMObjectPath*)jCop;
|
3496 schuur 1.6 CIMPropertyList pl=getList(jEnv,jPl);
|
3497 schuur 1.3
3498 const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
3499 CIMName assocClass(str);
3500 jEnv->ReleaseStringUTFChars(jAssocClass,str);
3501 str=jEnv->GetStringUTFChars(jResultClass,NULL);
3502 CIMName resultClass(str);
3503 jEnv->ReleaseStringUTFChars(jResultClass,str);
3504 str=jEnv->GetStringUTFChars(jRole,NULL);
3505 String role(str);
3506 jEnv->ReleaseStringUTFChars(jRole,str);
3507 str=jEnv->GetStringUTFChars(jResultRole,NULL);
3508 String resultRole(str);
3509 jEnv->ReleaseStringUTFChars(jResultRole,str);
3510
3511 try {
|
3512 schuur 1.5 checkNs(cop,jNs);
|
3513 schuur 1.3 Array<CIMObject> enm=cCc->associators(
3514 cop->getNameSpace(),*cop,assocClass,resultClass,role,resultRole,
|
3515 mark.hamzy 1.17 (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl);
|
3516 schuur 1.3 Array<CIMInstance> *enmInst=new Array<CIMInstance>();
3517 for (int i=0,m=enm.size(); i<m; i++) {
3518 enmInst->append(CIMInstance(enm[i]));
3519 }
3520 return (jint)enmInst;
3521 }
|
3522 schuur 1.5 Catch(jEnv);
|
3523 schuur 1.3 return 0;
3524 }
3525
|
3526 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1referenceNames
|
3527 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
|
3528 schuur 1.3 jstring jAssocClass, jstring jRole) {
3529 CIMClient *cCc=(CIMClient*)jCc;
3530 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3531
3532 const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
3533 CIMName assocClass(str);
3534 jEnv->ReleaseStringUTFChars(jAssocClass,str);
3535 str=jEnv->GetStringUTFChars(jRole,NULL);
3536 String role(str);
3537 jEnv->ReleaseStringUTFChars(jRole,str);
3538
3539 try {
|
3540 schuur 1.5 checkNs(cop,jNs);
|
3541 schuur 1.3 Array<CIMObjectPath> enm=cCc->referenceNames(
3542 cop->getNameSpace(),*cop,assocClass,role);
3543 return (jint) new Array<CIMObjectPath>(enm);
3544 }
|
3545 schuur 1.5 Catch(jEnv);
|
3546 schuur 1.3 return 0;
3547 }
3548
|
3549 schuur 1.1 JNIEXPORT jint JNICALL Java_org_pegasus_jmpi_CIMClient__1references
|
3550 schuur 1.5 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jNs, jint jCop,
|
3551 schuur 1.3 jstring jAssocClass, jstring jRole,
|
3552 schuur 1.6 jboolean includeQualifiers, jboolean includeClassOrigin, jobjectArray jPl) {
|
3553 schuur 1.3 CIMClient *cCc=(CIMClient*)jCc;
3554 CIMObjectPath *cop=(CIMObjectPath*)jCop;
|
3555 schuur 1.6 CIMPropertyList pl=getList(jEnv,jPl);
|
3556 schuur 1.3
3557 const char *str=jEnv->GetStringUTFChars(jAssocClass,NULL);
3558 CIMName assocClass(str);
3559 jEnv->ReleaseStringUTFChars(jAssocClass,str);
3560 str=jEnv->GetStringUTFChars(jRole,NULL);
3561 String role(str);
3562 jEnv->ReleaseStringUTFChars(jRole,str);
3563
3564 try {
|
3565 schuur 1.5 checkNs(cop,jNs);
|
3566 schuur 1.3 Array<CIMObject> enm=cCc->references(
3567 cop->getNameSpace(),*cop,assocClass,role,
|
3568 mark.hamzy 1.17 (Boolean)includeQualifiers,(Boolean)includeClassOrigin,pl);
|
3569 schuur 1.3 Array<CIMInstance> *enmInst=new Array<CIMInstance>();
3570 for (int i=0,m=enm.size(); i<m; i++) {
3571 enmInst->append(CIMInstance(enm[i]));
3572 }
3573 return (jint)enmInst;
3574 }
|
3575 schuur 1.5 Catch(jEnv);
3576 return 0;
3577 }
3578
|
3579 schuur 1.6 static int normalizeNs(String &ns, String &nsBase, String &lastNsComp) {
3580 Uint32 n=ns.size();
3581 if (ns[n-1]=='/') {
3582 if (n>=2) ns=ns.subString(0,n-2);
3583 }
3584
3585 lastNsComp=ns;
3586 nsBase="root";
3587
3588 n=ns.reverseFind('/');
3589 if (n!=PEG_NOT_FOUND) {
3590 lastNsComp=ns.subString(n+1);
3591 nsBase=ns.subString(0,n);
3592 }
3593 return 0;
3594 }
3595
|
3596 schuur 1.5 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1createNameSpace
3597 (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs) {
3598 CIMClient *cCc=(CIMClient*)jCc;
3599
3600 const char* str=jEnv->GetStringUTFChars(jNs,NULL);
3601 String ns(str);
3602 jEnv->ReleaseStringUTFChars(jNs,str);
|
3603 schuur 1.6
3604 String lastNsComp;
3605 String nsBase;
3606
3607 normalizeNs(ns,nsBase,lastNsComp);
|
3608 schuur 1.5
3609 CIMInstance newInstance(CIMName("__Namespace"));
|
3610 schuur 1.6 newInstance.addProperty(CIMProperty(CIMName ("name"),lastNsComp));
|
3611 schuur 1.5
3612 try {
|
3613 schuur 1.6 cCc->createInstance(CIMNamespaceName(nsBase),newInstance);
|
3614 schuur 1.3 }
|
3615 schuur 1.5 Catch(jEnv);
3616 return;
3617 }
3618
3619 JNIEXPORT jobject JNICALL Java_org_pegasus_jmpi_CIMClient__1enumerateNameSpaces
3620 (JNIEnv *jEnv, jobject jThs, jint jCc, jint jCop, jboolean deep, jobject jVec) {
|
3621 schuur 1.6
3622 CIMClient *cCc=(CIMClient*)jCc;
3623 CIMObjectPath *cop=(CIMObjectPath*)jCop;
3624 String ns=cop->getNameSpace().getString();
3625 try {
3626 Array<CIMObjectPath> enm=cCc->enumerateInstanceNames(
3627 cop->getNameSpace(),CIMName("__Namespace"));
3628 for (int i=0,s=enm.size(); i<s; i++) {
3629 CIMObjectPath &cop=enm[i];
3630 const Array<CIMKeyBinding>& kb=cop.getKeyBindings();
|
3631 mark.hamzy 1.17 const String &n=kb[0].getValue();
|
3632 mark.hamzy 1.16 if (!deep && n.find('/')!=PEG_NOT_FOUND)
3633 continue;
|
3634 mark.hamzy 1.17 String x=ns+"/"+n;
3635 jstring str=jEnv->NewStringUTF(x.getCString());
|
3636 schuur 1.6 jEnv->CallVoidMethod(jVec,instanceMethodIDs[15],str);
3637 }
3638 }
3639 Catch(jEnv);
|
3640 schuur 1.5 return jVec;
3641 }
3642
3643 JNIEXPORT void JNICALL Java_org_pegasus_jmpi_CIMClient__1deleteNameSpace
3644 (JNIEnv *jEnv, jobject jThs, jint jCc, jstring jNs) {
3645 CIMClient *cCc=(CIMClient*)jCc;
|
3646 schuur 1.6
3647 const char* str=jEnv->GetStringUTFChars(jNs,NULL);
3648 String ns(str);
3649 jEnv->ReleaseStringUTFChars(jNs,str);
3650 String lastNsComp;
3651 String nsBase;
3652
3653 normalizeNs(ns,nsBase,lastNsComp);
3654
3655 CIMObjectPath cop(String::EMPTY,CIMNamespaceName(nsBase),CIMName("__Namespace"));
3656 Array<CIMKeyBinding> kb;
3657 kb.append(CIMKeyBinding(("Name"),CIMValue(lastNsComp)));
3658 cop.setKeyBindings(kb);
3659
3660 try {
3661 cCc->deleteInstance(CIMNamespaceName(nsBase),cop);
3662 }
3663 Catch(jEnv);
3664 return;
|
3665 schuur 1.3 }
|
3666 schuur 1.1
|
3667 schuur 1.5 } // extern "C"
|
3668 schuur 1.1
3669 PEGASUS_NAMESPACE_END
|