From: Dave B. <bla...@us...> - 2013-12-12 11:35:43
|
Update of /cvsroot/sblim/jsr48-client/src/org/sblim/cimclient/internal/cimxml In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv16104/src/org/sblim/cimclient/internal/cimxml Modified Files: CIMXMLParserImpl.java Log Message: 2538 CR14: Support new CORRELATOR element Index: CIMXMLParserImpl.java =================================================================== RCS file: /cvsroot/sblim/jsr48-client/src/org/sblim/cimclient/internal/cimxml/CIMXMLParserImpl.java,v retrieving revision 1.86 retrieving revision 1.87 diff -u -d -r1.86 -r1.87 --- CIMXMLParserImpl.java 10 Dec 2013 16:22:00 -0000 1.86 +++ CIMXMLParserImpl.java 12 Dec 2013 11:35:40 -0000 1.87 @@ -93,6 +93,7 @@ * 2711 2013-11-13 blaschke-oss LOCALNAMESPACEPATH allows 0 NAMESPACE children * 2713 2013-11-22 blaschke-oss Enforce loose validation of CIM-XML documents * 2715 2013-11-26 blaschke-oss Add VALUE.NULL support + * 2538 2013-11-28 blaschke-oss CR14: Support new CORRELATOR element */ package org.sblim.cimclient.internal.cimxml; @@ -2676,6 +2677,8 @@ throw new CIMXMLParseException("MULTIRSP element missing SIMPLERSP child element!"); } + private static final String nodesSIMPLEREQ[] = { "CORRELATOR", "METHODCALL", "IMETHODCALL" }; + /** * parseSIMPLEREQ * @@ -2684,17 +2687,36 @@ * @throws CIMXMLParseException */ public static CIMRequest parseSIMPLEREQ(Element pSimpleReqE) throws CIMXMLParseException { - // <!ELEMENT SIMPLEREQ (METHODCALL|IMETHODCALL)> + // <!ELEMENT SIMPLEREQ (CORRELATOR*, (METHODCALL | IMETHODCALL))> + CIMRequest request = null; // METHODCALL - Element methodcallA[] = searchNodes(pSimpleReqE, "METHODCALL", 0, 1, false); - if (methodcallA != null) { return parseMETHODCALL(methodcallA[0]); } + Element methodcallA[] = searchNodes(pSimpleReqE, "METHODCALL", 0, 1, true); + if (methodcallA != null) { + request = parseMETHODCALL(methodcallA[0]); + } // IMETHODCALL - Element imethodcallA[] = searchNodes(pSimpleReqE, "IMETHODCALL", 0, 1, false); - if (imethodcallA != null) { return parseIMETHODCALL(imethodcallA[0]); } + Element imethodcallA[] = searchNodes(pSimpleReqE, "IMETHODCALL", 0, 1, true); + if (imethodcallA != null) { + if (request != null) { throw new CIMXMLParseException( + "SIMPLEREQ element cannot have METHODCALL and IMETHODCALL child elements!"); } + request = parseIMETHODCALL(imethodcallA[0]); + } - throw new CIMXMLParseException("SIMPLEREQ element missing required child element!"); + if (request == null) throw new CIMXMLParseException( + "SIMPLEREQ element missing required child element!"); + + // CORRELATOR + Element[] correlatorA = searchNodes(pSimpleReqE, "CORRELATOR", 0, Integer.MAX_VALUE, true); + if (correlatorA != null) { + for (int i = 0; i < correlatorA.length; i++) + // TODO: return to WBEMClient API if JSR48 changes + parseCORRELATOR(correlatorA[i]); + } + + checkOtherNodes(pSimpleReqE, nodesSIMPLEREQ); + return request; } /** @@ -2846,6 +2868,8 @@ return request; } + private static final String nodesSIMPLEEXPREQ[] = { "CORRELATOR", "EXPMETHODCALL" }; + /** * parseSIMPLEEXPREQ * @@ -2854,13 +2878,29 @@ * @throws CIMXMLParseException */ public static CIMRequest parseSIMPLEEXPREQ(Element pSimpleExpReqE) throws CIMXMLParseException { - // <!ELEMENT SIMPLEEXPREQ (METHODRESPONSE)> + // <!ELEMENT SIMPLEEXPREQ (CORRELATOR*, EXPMETHODCALL)> + CIMRequest request = null; // EXPMETHODCALL - Element[] expmethodcallA = searchNodes(pSimpleExpReqE, "EXPMETHODCALL", 1, 1, false); - if (expmethodcallA != null) { return parseEXPMETHODCALL(expmethodcallA[0]); } + Element[] expmethodcallA = searchNodes(pSimpleExpReqE, "EXPMETHODCALL", 1, 1, true); + if (expmethodcallA != null) { + request = parseEXPMETHODCALL(expmethodcallA[0]); + } else { + throw new CIMXMLParseException( + "SIMPLEEXPREQ element missing EXPMETHODCALL child element!"); + } - throw new CIMXMLParseException("SIMPLEEXPREQ element missing EXPMETHODCALL child element!"); + // CORRELATOR + Element[] correlatorA = searchNodes(pSimpleExpReqE, "CORRELATOR", 0, Integer.MAX_VALUE, + true); + if (correlatorA != null) { + for (int i = 0; i < correlatorA.length; i++) + // TODO: return to WBEMClient API if JSR48 changes + parseCORRELATOR(correlatorA[i]); + } + + checkOtherNodes(pSimpleExpReqE, nodesSIMPLEEXPREQ); + return request; } /** @@ -3471,7 +3511,7 @@ "SIMPLEREQ", "SIMPLEEXPREQ", "IMETHODCALL", "METHODCALL", "EXPMETHODCALL", "PARAMVALUE", "IPARAMVALUE", "EXPPARAMVALUE", "MULTIRSP", "MULTIEXPRSP", "SIMPLERSP", "SIMPLEEXPRSP", "METHODRESPONSE", "EXPMETHODRESPONSE", - "IMETHODRESPONSE", "ERROR", "RETURNVALUE", "IRETURNVALUE" }); + "IMETHODRESPONSE", "ERROR", "RETURNVALUE", "IRETURNVALUE", "CORRELATOR" }); } /** @@ -3792,4 +3832,31 @@ return response; } + + private static final String nodesCORRELATOR[] = { "VALUE" }; + + /** + * parseCORRELATOR + * + * @param pCorrelatorE + * @throws CIMXMLParseException + * */ + public static void parseCORRELATOR(Element pCorrelatorE) throws CIMXMLParseException { + // <!ELEMENT CORRELATOR (VALUE)> + // <!ATTLIST CORRELATOR %CIMName; %CIMType; #REQUIRED> + String name = attribute(pCorrelatorE, "NAME"); + if (name == null) throw new CIMXMLParseException( + "CORRELATOR element missing NAME attribute!"); + String type = attribute(pCorrelatorE, "TYPE"); + if (type == null) throw new CIMXMLParseException( + "CORRELATOR element missing TYPE attribute!"); + + // VALUE + Element[] valueA = searchNodes(pCorrelatorE, "VALUE", 1, 1, false); + if (valueA != null) { + // TypedValue tVal = parseVALUE(valueA[0]); + } + + checkOtherNodes(pCorrelatorE, nodesCORRELATOR); + } } |