From 0223bf0add4ac49dced9c96ece8c3f32ba7db8d6 Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Tue, 24 Apr 2012 16:08:13 +0000 Subject: QPID-3969 - Improved handling of unspecified arguments in QMFv2 method calls. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1329817 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/managementgen/qmfgen/management-types.xml | 2 +- qpid/cpp/managementgen/qmfgen/schema.py | 12 +++++++++--- qpid/specs/management-schema.xml | 10 +++++----- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/qpid/cpp/managementgen/qmfgen/management-types.xml b/qpid/cpp/managementgen/qmfgen/management-types.xml index c88f0caeae..efa8322806 100644 --- a/qpid/cpp/managementgen/qmfgen/management-types.xml +++ b/qpid/cpp/managementgen/qmfgen/management-types.xml @@ -35,7 +35,7 @@ - + diff --git a/qpid/cpp/managementgen/qmfgen/schema.py b/qpid/cpp/managementgen/qmfgen/schema.py index c48ae572d2..dc8ffae446 100755 --- a/qpid/cpp/managementgen/qmfgen/schema.py +++ b/qpid/cpp/managementgen/qmfgen/schema.py @@ -225,8 +225,7 @@ class SchemaType: def genRead (self, stream, varName, indent=" "): stream.write(indent + self.decode.replace("@", "buf").replace("#", varName) + ";\n") - def genUnmap (self, stream, varName, indent=" ", key=None, mapName="_map", - _optional=False): + def genUnmap (self, stream, varName, indent=" ", key=None, mapName="_map", _optional=False, _default=None): if key is None: key = varName stream.write(indent + "if ((_i = " + mapName + ".find(\"" + key + "\")) != " + mapName + ".end()) {\n") @@ -234,6 +233,11 @@ class SchemaType: self.unmap.replace("#", "_i->second") + ";\n") if _optional: stream.write(indent + " _found = true;\n") + stream.write(indent + "} else {\n") + default = _default + if not default: + default = self.init + stream.write(indent + " " + varName + " = " + default + ";\n") stream.write(indent + "}\n") def genWrite (self, stream, varName, indent=" "): @@ -1405,7 +1409,9 @@ class SchemaClass: "ioArgs." + arg.dir.lower () + "_" + arg.name, " ", arg.name, - "inMap") + "inMap", + False, + arg.default) stream.write (" bool allow = coreObject->AuthorizeMethod(METHOD_" +\ method.getName().upper() + ", ioArgs, userId);\n") diff --git a/qpid/specs/management-schema.xml b/qpid/specs/management-schema.xml index 9eafbc52fa..66e122b049 100644 --- a/qpid/specs/management-schema.xml +++ b/qpid/specs/management-schema.xml @@ -125,8 +125,8 @@ - - + + @@ -143,7 +143,7 @@ - + @@ -272,14 +272,14 @@ - + - + -- cgit v1.2.1