Return to loadxml.cpp CVS log | Up to [Pegasus] / pegasus / src / Clients / loadxml |
File: [Pegasus] / pegasus / src / Clients / loadxml / loadxml.cpp
(download)
Revision: 1.16, Tue Dec 16 18:55:47 2008 UTC (15 years, 6 months ago) by kumpf Branch: MAIN CVS Tags: preBug9676, postBug9676, TASK_PEP317_1JUNE_2013, TASK-TASK_PEP362_RestfulService_branch-root, TASK-TASK_PEP362_RestfulService_branch-merged_out_from_trunk, TASK-TASK_PEP362_RestfulService_branch-merged_in_to_trunk, TASK-TASK_PEP362_RestfulService_branch-merged_in_from_branch, TASK-TASK_PEP362_RestfulService_branch-branch, TASK-PEP362_RestfulService-root, TASK-PEP362_RestfulService-merged_out_to_branch, TASK-PEP362_RestfulService-merged_out_from_trunk, TASK-PEP362_RestfulService-merged_in_to_trunk, TASK-PEP362_RestfulService-merged_in_from_branch, TASK-PEP362_RestfulService-branch, TASK-PEP348_SCMO-root, TASK-PEP348_SCMO-merged_out_to_branch, TASK-PEP348_SCMO-merged_out_from_trunk, TASK-PEP348_SCMO-merged_in_to_trunk, TASK-PEP348_SCMO-merged_in_from_branch, TASK-PEP348_SCMO-branch, TASK-PEP317_pullop-root, TASK-PEP317_pullop-merged_out_to_branch, TASK-PEP317_pullop-merged_out_from_trunk, TASK-PEP317_pullop-merged_in_to_trunk, TASK-PEP317_pullop-merged_in_from_branch, TASK-PEP317_pullop-branch, RELEASE_2_9_2-RC2, RELEASE_2_9_2-RC1, RELEASE_2_9_2, RELEASE_2_9_1-RC1, RELEASE_2_9_1, RELEASE_2_9_0-RC1, RELEASE_2_9_0, RELEASE_2_9-root, RELEASE_2_9-branch, RELEASE_2_14_1, RELEASE_2_14_0-RC2, RELEASE_2_14_0-RC1, RELEASE_2_14_0, RELEASE_2_14-root, RELEASE_2_14-branch, RELEASE_2_13_0-RC2, RELEASE_2_13_0-RC1, RELEASE_2_13_0-FC, RELEASE_2_13_0, RELEASE_2_13-root, RELEASE_2_13-branch, RELEASE_2_12_1-RC1, RELEASE_2_12_1, RELEASE_2_12_0-RC1, RELEASE_2_12_0-FC, RELEASE_2_12_0, RELEASE_2_12-root, RELEASE_2_12-branch, RELEASE_2_11_2-RC1, RELEASE_2_11_2, RELEASE_2_11_1-RC1, RELEASE_2_11_1, RELEASE_2_11_0-RC1, RELEASE_2_11_0-FC, RELEASE_2_11_0, RELEASE_2_11-root, RELEASE_2_11-branch, RELEASE_2_10_1-RC1, RELEASE_2_10_1, RELEASE_2_10_0-RC2, RELEASE_2_10_0-RC1, RELEASE_2_10_0, RELEASE_2_10-root, RELEASE_2_10-branch, PREAUG25UPDATE, POSTAUG25UPDATE, HPUX_TEST, HEAD, CIMRS_WORK_20130824, BeforeUpdateToHeadOct82011 Changes since 1.15: +9 -9 lines BUG#: 8273 TITLE: Remove trailing space characters DESCRIPTION: Remove meaningless whitespace. |
//%LICENSE//////////////////////////////////////////////////////////////// // // Licensed to The Open Group (TOG) under one or more contributor license // agreements. Refer to the OpenPegasusNOTICE.txt file distributed with // this work for additional information regarding copyright ownership. // Each contributor licenses this file to you under the OpenPegasus Open // Source License; you may not use this file except in compliance with the // License. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // ////////////////////////////////////////////////////////////////////////// // //%///////////////////////////////////////////////////////////////////////////// #include <Pegasus/Common/PegasusAssert.h> #include <Pegasus/Common/Config.h> #include <Pegasus/Common/FileSystem.h> #include <Pegasus/Common/XmlWriter.h> #include <Pegasus/Common/XmlReader.h> #include <Pegasus/Repository/CIMRepository.h> PEGASUS_USING_PEGASUS; PEGASUS_USING_STD; String namespaceName; static Boolean verbose = false; //------------------------------------------------------------------------------ // ProcessValueObjectElement() // // <!ELEMENT VALUE.OBJECT (CLASS|INSTANCE)> // // ATTN: Nothing handled but CLASS. // //------------------------------------------------------------------------------ Boolean ProcessValueObjectElement(CIMRepository& repository, XmlParser& parser) { XmlEntry entry; if (!XmlReader::testStartTag(parser, entry, "VALUE.OBJECT")) { return false; } CIMClass cimClass, tmpClass; CIMQualifierDecl qualifierDecl; if (XmlReader::getClassElement(parser, cimClass)) { if (verbose) { cout << "Creating: class "; cout << cimClass.getClassName().getString() << endl; } try { repository.createClass(namespaceName, cimClass); } catch (Exception &e) { // Ignore if cimClass already exists if (e.getMessage() != cimClass.getClassName()) { throw; } } } else if (XmlReader::getQualifierDeclElement(parser, qualifierDecl)) { if (verbose) { cout << "Creating: qualifier "; cout << qualifierDecl.getName().getString() << endl; } try { repository.setQualifier(namespaceName, qualifierDecl); } catch (Exception &e) { // Ignore if qualifierDecl already exists if (e.getMessage() != qualifierDecl.getName()) { throw; } } } XmlReader::expectEndTag(parser, "VALUE.OBJECT"); return true; } //------------------------------------------------------------------------------ // ProcessDeclGroupElement() // // <!ELEMENT DECLGROUP ((LOCALNAMESPACEPATH|NAMESPACEPATH)?, // QUALIFIER.DECLARATION*,VALUE.OBJECT*)> // // ATTN: Nothing handled but VALUE.OBJECT: // //------------------------------------------------------------------------------ Boolean ProcessDeclGroupElement(CIMRepository& repository, XmlParser& parser) { XmlEntry entry; if (!XmlReader::testStartTag(parser, entry, "DECLGROUP")) { return false; } while (ProcessValueObjectElement(repository, parser)) ; XmlReader::expectEndTag(parser, "DECLGROUP"); return true; } //------------------------------------------------------------------------------ // ProcessDeclarationElement() // // <!ELEMENT DECLARATION (DECLGROUP|DECLGROUP.WITHNAME|DECLGROUP.WITHPATH)*> // // ATTN: DECLGROUP.WITHNAME ande DECLGROUP.WITHPATH not handled: // //------------------------------------------------------------------------------ Boolean ProcessDeclarationElement(CIMRepository& repository, XmlParser& parser) { XmlEntry entry; if (!XmlReader::testStartTag(parser, entry, "DECLARATION")) { return false; } while(ProcessDeclGroupElement(repository, parser)) ; XmlReader::expectEndTag(parser, "DECLARATION"); return true; } //------------------------------------------------------------------------------ // ProcessCimElement() // // <!ELEMENT CIM (MESSAGE|DECLARATION)> // <!ATTLIST CIM // CIMVERSION CDATA #REQUIRED // DTDVERSION CDATA #REQUIRED> // // ATTN: only declarations are handled here! // //------------------------------------------------------------------------------ Boolean ProcessCimElement(CIMRepository& repository, XmlParser& parser) { XmlEntry entry; if (!parser.next(entry) || entry.type != XmlEntry::XML_DECLARATION) { throw(parser.getLine(), "expected XML declaration"); } if (!XmlReader::testStartTag(parser, entry, "CIM")) { return false; } String cimVersion; if (!entry.getAttributeValue("CIMVERSION", cimVersion)) { throw XmlValidationError(parser.getLine(), "missing CIM.CIMVERSION attribute"); } String dtdVersion; if (!entry.getAttributeValue("DTDVERSION", dtdVersion)) { throw XmlValidationError(parser.getLine(), "missing CIM.DTDVERSION attribute"); } if (!ProcessDeclarationElement(repository, parser)) { throw XmlValidationError(parser.getLine(), "Expected DECLARATION element"); } XmlReader::expectEndTag(parser, "CIM"); return true; } //------------------------------------------------------------------------------ // // _processFile() // //------------------------------------------------------------------------------ static void _processFile(const char* repositoryRoot, const char* xmlFileName) { // Create the parser: Buffer text; text.reserveCapacity(1024 * 1024); FileSystem::loadFileToMemory(text, xmlFileName); XmlParser parser((char*)text.getData()); CIMRepository repository(repositoryRoot); try { repository.createNameSpace(namespaceName); } catch (Exception &e) { // Ignore if Namespace already exists if (e.getMessage () != namespaceName) { throw; } } if (!ProcessCimElement(repository, parser)) { cerr << "CIM root element missing" << endl; exit(1); } } //------------------------------------------------------------------------------ // // main() // //------------------------------------------------------------------------------ int main(int argc, char** argv) { if (argc != 4) { cerr << "Usage: " << argv[0] << " repository-root xmlfile namespace" << endl; exit(1); } verbose = getenv("PEGASUS_TEST_VERBOSE") ? true : false; try { namespaceName = argv[3]; cout << argv[0] << " loading " << argv[2] << " to namespace " << namespaceName << " into repository " << argv[1] << endl; _processFile(argv[1], argv[2]); cout << argv[0] << " loaded." << endl; } catch (const Exception& e) { cerr << e.getMessage() << endl; exit(1); } return 0; }
No CVS admin address has been configured |
Powered by ViewCVS 0.9.2 |