From cf82229a2ba92bbd6011aec7d21c93aa88985f92 Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Tue, 9 Sep 2008 17:31:47 +0000 Subject: QPID-1274 - qmf-gen can now generate code from multiple schema files. Uses __file__ as a better way to locate data files. Added code generation for ACL schema. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@693523 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/examples/qmf-agent/Makefile | 2 +- cpp/managementgen/qmf-gen | 49 +++++++++++++--------------------- cpp/managementgen/qmf/generate.py | 5 ++++ cpp/managementgen/qmf/schema.py | 4 +++ cpp/src/Makefile.am | 5 ++-- cpp/src/qpid/acl/management-schema.xml | 48 +++++++++++++++++++++++++++++++++ cpp/src/qpid/acl/management_schema.xml | 31 --------------------- 7 files changed, 79 insertions(+), 65 deletions(-) create mode 100644 cpp/src/qpid/acl/management-schema.xml delete mode 100644 cpp/src/qpid/acl/management_schema.xml (limited to 'cpp') diff --git a/cpp/examples/qmf-agent/Makefile b/cpp/examples/qmf-agent/Makefile index 6c4d9a867e..0759644670 100644 --- a/cpp/examples/qmf-agent/Makefile +++ b/cpp/examples/qmf-agent/Makefile @@ -51,7 +51,7 @@ all: gen @$(MAKE) gen: - $(MGEN) $(SCHEMA_FILE) $(GEN_DIR) + $(MGEN) -o $(GEN_DIR) $(SCHEMA_FILE) clean: rm -rf $(GEN_DIR) $(OUT_FILE) *.d *.o diff --git a/cpp/managementgen/qmf-gen b/cpp/managementgen/qmf-gen index 10750f2a34..a6f022926c 100755 --- a/cpp/managementgen/qmf-gen +++ b/cpp/managementgen/qmf-gen @@ -24,27 +24,12 @@ from qmf.schema import PackageSchema, SchemaClass from qmf.generate import Generator from optparse import OptionParser -dataPath = os.path.dirname(sys.argv[0]) + "/qmf/" -defaultTypeFile = dataPath + "management-types.xml" -defaultTemplateDir = dataPath + "templates" -found = True - -try: - s = os.stat(defaultTypeFile) -except: - found = False - -if not found: - path = sys.path - for item in path: - if os.path.basename(item) == "site-packages": - found = True - dataPath = item + "/qmf/" - defaultTypeFile = dataPath + "management-types.xml" - defaultTemplateDir = dataPath + "templates" +dataPath = os.path.dirname(Generator.getModulePath()) +defaultTypeFile = dataPath + "/management-types.xml" +defaultTemplateDir = dataPath + "/templates" # Set command line options -usage = "usage: %prog [options] schema-document out-directory" +usage = "usage: %prog [options] schema-document..." parser = OptionParser (usage=usage) parser.add_option ("-m", "--makefile", dest="makefile", metavar="FILE", help="Makefile fragment") @@ -52,26 +37,28 @@ parser.add_option ("-t", "--typefile", dest="typefile", metavar="FILE", default= help="Type descriptor file") parser.add_option ("-d", "--templatedir", dest="templatedir", metavar="DIR", default=defaultTemplateDir, help="Template directory") +parser.add_option ("-o", "--outputdir", dest="outputdir", metavar="DIR", default="./", + help="Output directory") (opts, args) = parser.parse_args () -if len (args) < 2: - parser.error ("Too few arguments") - typefile = opts.typefile templatedir = opts.templatedir +outdir = opts.outputdir +gen = Generator (outdir, templatedir) -schemafile = args[0] -outdir = args[1] +if len(args) == 0: + print "no input files" + parser.exit() -gen = Generator (outdir, templatedir) -schema = PackageSchema (typefile, schemafile, opts) +for schemafile in args: + schema = PackageSchema (typefile, schemafile, opts) -gen.makeClassFiles ("Class.h", schema) -gen.makeClassFiles ("Class.cpp", schema) -gen.makeMethodFiles ("Args.h", schema) -gen.makePackageFile ("Package.h", schema) -gen.makePackageFile ("Package.cpp", schema) + gen.makeClassFiles ("Class.h", schema) + gen.makeClassFiles ("Class.cpp", schema) + gen.makeMethodFiles ("Args.h", schema) + gen.makePackageFile ("Package.h", schema) + gen.makePackageFile ("Package.cpp", schema) if opts.makefile != None: gen.makeSingleFile ("Makefile.mk", opts.makefile, force=True) diff --git a/cpp/managementgen/qmf/generate.py b/cpp/managementgen/qmf/generate.py index 70735b208a..e977ce2e9d 100755 --- a/cpp/managementgen/qmf/generate.py +++ b/cpp/managementgen/qmf/generate.py @@ -298,3 +298,8 @@ class Generator: self.templateFiles.append (templateFile) stream = template.expand (makefile) self.writeIfChanged (stream, target, force) + + @staticmethod + def getModulePath(): + return __file__ + diff --git a/cpp/managementgen/qmf/schema.py b/cpp/managementgen/qmf/schema.py index e666bdbb39..9263c29543 100755 --- a/cpp/managementgen/qmf/schema.py +++ b/cpp/managementgen/qmf/schema.py @@ -656,6 +656,7 @@ class SchemaEvent: self.name = None self.desc = None self.args = [] + self.defaultSeverity = None attrs = node.attributes for idx in range (attrs.length): @@ -667,6 +668,9 @@ class SchemaEvent: elif key == 'desc': self.desc = val + elif key == 'defaultSeverity': + self.defaultSeverity = val + else: raise ValueError ("Unknown attribute in event '%s'" % key) diff --git a/cpp/src/Makefile.am b/cpp/src/Makefile.am index d4214ad052..f0d1ea04c9 100644 --- a/cpp/src/Makefile.am +++ b/cpp/src/Makefile.am @@ -28,8 +28,9 @@ $(rgen_generator): # Management generator. mgen_dir=$(top_srcdir)/managementgen -mgen_cmd=$(mgen_dir)/qmf-gen -m $(srcdir)/managementgen.mk \ - $(top_srcdir)/../specs/management-schema.xml gen/qpid/management +mgen_cmd=$(mgen_dir)/qmf-gen -m $(srcdir)/managementgen.mk -o gen/qpid/management \ + $(top_srcdir)/../specs/management-schema.xml \ + $(srcdir)/qpid/acl/management-schema.xml $(srcdir)/managementgen.mk $(mgen_broker_cpp) $(dist_qpid_management_HEADERS): mgen.timestamp mgen.timestamp: $(mgen_generator) diff --git a/cpp/src/qpid/acl/management-schema.xml b/cpp/src/qpid/acl/management-schema.xml new file mode 100644 index 0000000000..4f633f6a06 --- /dev/null +++ b/cpp/src/qpid/acl/management-schema.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cpp/src/qpid/acl/management_schema.xml b/cpp/src/qpid/acl/management_schema.xml deleted file mode 100644 index 8dc9ce41b7..0000000000 --- a/cpp/src/qpid/acl/management_schema.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - -- cgit v1.2.1