Merge branch 'master' of ssh://sblim.git.sourceforge.net/gitroot/sblim/sfcc

Conflicts:
	ChangeLog
	NEWS
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..97a323a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,66 @@
+*.lo
+*.o
+.deps/
+.gitignore
+.libs/
+Makefile
+Makefile.in
+TAGS
+TEST/.deps/
+TEST/.libs/
+TEST/Makefile
+TEST/Makefile.in
+TEST/TAGS
+TEST/stress.sh
+TEST/test
+TEST/test_an
+TEST/test_an_2
+TEST/test_as
+TEST/test_as_2
+TEST/test_ci
+TEST/test_cpp
+TEST/test_di
+TEST/test_ec
+TEST/test_ecn
+TEST/test_ecn_ssl
+TEST/test_ei
+TEST/test_ein
+TEST/test_gc
+TEST/test_gi
+TEST/test_gp
+TEST/test_im1
+TEST/test_im2
+TEST/test_im3
+TEST/test_im4
+TEST/test_imos
+TEST/test_leak
+TEST/test_qualifiers
+TEST/test_qualifiers2
+TEST/test_rf
+TEST/test_rfn
+TEST/test_si
+TEST/test_sp
+TEST/test_xq
+TEST/v2test_ec
+TEST/v2test_ecn
+TEST/v2test_ei
+TEST/v2test_ein
+TEST/v2test_gc
+TEST/v2test_im
+aclocal.m4
+autom4te.cache/
+*~
+config.guess
+config.h
+config.h.in
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+*.la
+libtool
+ltmain.sh
+missing
+sfcc.spec
diff --git a/ChangeLog b/ChangeLog
index e8450ab..3d55979 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2011-05-27  Chris Buccella  <buccella@linux.vnet.ibm.com>
+
+	* backend/cimxml/grammar.c, backend/cimxml/cimXmlParser.h, 
+	  backend/cimxml/cimXmlParser.c, backend/cimxml/instance.c,
+	  backend/cimxml/objectpath.c, frontend/sfcc/native.h:
+	[ 3286489 ] getInstance does not return key/value through XML
+	(patch originated by Josef Moellers)
+
 2011-04-25  Narasimha Sharoff  <nsharoff@us.ibm.com>
 
 	* frontend/sfcc/sfcclient.c:
diff --git a/NEWS b/NEWS
index 2e3e90d..f2be3ed 100644
--- a/NEWS
+++ b/NEWS
@@ -2,8 +2,10 @@
 
 Changes in 2.2.3
 ================
+
 Bugs:
 - 2967265: Code cleanup in frontend/sfcc/sfcclient.c
+- 3286489: getInstance does not return key/value through XML
 
 Changes in 2.2.2
 ================
diff --git a/backend/cimxml/cimXmlParser.c b/backend/cimxml/cimXmlParser.c
index 3e0baef..c6a0908 100644
--- a/backend/cimxml/cimXmlParser.c
+++ b/backend/cimxml/cimXmlParser.c
@@ -1386,9 +1386,7 @@
 
    control.respHdr.rvArray=newCMPIArray(0,0,NULL);
 
-   if(cop) {
-       control.da_nameSpace=(char*)getNameSpaceChars(cop);
-   }
+   control.requestObjectPath = cop;
 
    control.heap = parser_heap_init();
 
@@ -1531,9 +1529,7 @@
    
    local_enmp->data = control.respHdr.rvArray ;
    
-   if(cop) {
-       control.da_nameSpace=(char*)getNameSpaceChars(cop);
-   }
+   control.requestObjectPath = cop;
 
    control.heap = parser_heap_init();
 
diff --git a/backend/cimxml/cimXmlParser.h b/backend/cimxml/cimXmlParser.h
index 191fa52..f34d36b 100644
--- a/backend/cimxml/cimXmlParser.h
+++ b/backend/cimxml/cimXmlParser.h
@@ -426,7 +426,7 @@
 typedef struct parser_control {
    XmlBuffer *xmb;
    ResponseHdr respHdr;
-   char *da_nameSpace;
+   CMPIObjectPath *requestObjectPath;
    ParserHeap *heap;
 #ifdef LARGE_VOL_SUPPORT
    CMCIConnection * econ ; /* enumeration connection */
diff --git a/backend/cimxml/grammar.c b/backend/cimxml/grammar.c
index 871c58a..8fb5f91 100644
--- a/backend/cimxml/grammar.c
+++ b/backend/cimxml/grammar.c
@@ -193,7 +193,7 @@
 			dontLex = 1;
 			instance(parm, (parseUnion*)&lvalp.xtokInstance);
 			inst = native_new_CMPIInstance(NULL,NULL);
-			setInstNsAndCn(inst,parm->da_nameSpace,lvalp.xtokInstance.className);
+			setInstNsAndCn(inst,getNameSpaceChars(parm->requestObjectPath),lvalp.xtokInstance.className);
 			setInstProperties(inst, &lvalp.xtokInstance.properties);
 			simpleArrayAdd(parm->respHdr.rvArray,(CMPIValue*)&inst,CMPI_instance);
 		}
@@ -295,7 +295,7 @@
 		else if(stateUnion->xtokReturnValue.data.value.type == typeValue_Instance) {
 			t = CMPI_instance;
 			inst = native_new_CMPIInstance(NULL,NULL);
-			setInstNsAndCn(inst,parm->da_nameSpace,stateUnion->xtokReturnValue.data.value.data.inst->className);
+			setInstNsAndCn(inst,getNameSpaceChars(parm->requestObjectPath),stateUnion->xtokReturnValue.data.value.data.inst->className);
 			setInstProperties(inst, &stateUnion->xtokReturnValue.data.value.data.inst->properties);
 			val.inst = inst;
 		}
@@ -452,8 +452,7 @@
 		do {
 			dontLex = 1;
 			instance(parm, (parseUnion*)&lvalp.xtokInstance);
-			inst = native_new_CMPIInstance(NULL,NULL);
-			setInstNsAndCn(inst,parm->da_nameSpace,lvalp.xtokInstance.className);
+			inst = native_new_CMPIInstance(parm->requestObjectPath,NULL);
 			setInstProperties(inst, &lvalp.xtokInstance.properties);
 			simpleArrayAdd(parm->respHdr.rvArray,(CMPIValue*)&inst,CMPI_instance);
 			ct = localLex(&lvalp, parm);
@@ -477,7 +476,7 @@
 			dontLex = 1;
 			valueNamedInstance(parm, (parseUnion*)&lvalp.xtokNamedInstance);
 			createPath(&op,&(lvalp.xtokNamedInstance.path));
-			CMSetNameSpace(op, parm->da_nameSpace);
+			CMSetNameSpace(op, getNameSpaceChars(parm->requestObjectPath));
 			inst = native_new_CMPIInstance(op,NULL);
 			//setInstQualifiers(inst, &lvalp.xtokNamedInstance.instance.qualifiers);
 			setInstProperties(inst, &lvalp.xtokNamedInstance.instance.properties);
diff --git a/backend/cimxml/instance.c b/backend/cimxml/instance.c
index 43df5a4..72f034b 100644
--- a/backend/cimxml/instance.c
+++ b/backend/cimxml/instance.c
@@ -375,7 +375,7 @@
 	return (CMPIInstance *) instance;
 }
 
-void setInstNsAndCn(CMPIInstance *ci, char *ns, char *cn)
+void setInstNsAndCn(CMPIInstance *ci, const char *ns, char *cn)
 {
    struct native_instance * i = (struct native_instance *) ci;
    
diff --git a/backend/cimxml/objectpath.c b/backend/cimxml/objectpath.c
index 09d0cd9..2e4df1e 100644
--- a/backend/cimxml/objectpath.c
+++ b/backend/cimxml/objectpath.c
@@ -438,6 +438,8 @@
 
 const char *getNameSpaceChars(CMPIObjectPath * cop)
 {
+   if (cop == NULL) return NULL;
+
 	struct native_cop * o = (struct native_cop *) cop;
    return o->nameSpace;
 }
diff --git a/frontend/sfcc/native.h b/frontend/sfcc/native.h
index cb1b5a7..2b14ab9 100644
--- a/frontend/sfcc/native.h
+++ b/frontend/sfcc/native.h
@@ -225,7 +225,7 @@
 
 struct xtokValueReference;
 CMPIValue str2CMPIValue(CMPIType type, char *val, struct xtokValueReference *ref);
-void setInstNsAndCn(CMPIInstance *ci, char *ns, char *cn);
+void setInstNsAndCn(CMPIInstance *ci, const char *ns, char *cn);
 CMPIStatus simpleArrayAdd(CMPIArray * array, CMPIValue * val, CMPIType type);
 const char *getNameSpaceChars(CMPIObjectPath * cop);
 CMPIValue *getKeyValueTypePtr(char *type, char *value, struct xtokValueReference *ref,