(file) Return to CIMQualifierRep.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

  1 karl  1.41 //%2006////////////////////////////////////////////////////////////////////////
  2 mike  1.10 //
  3 karl  1.35 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
  4            // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
  5            // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
  6 karl  1.34 // IBM Corp.; EMC Corporation, The Open Group.
  7 karl  1.35 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  8            // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
  9 karl  1.37 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10            // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11 karl  1.41 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 12            // EMC Corporation; Symantec Corporation; The Open Group.
 13 mike  1.10 //
 14            // Permission is hereby granted, free of charge, to any person obtaining a copy
 15 kumpf 1.26 // of this software and associated documentation files (the "Software"), to
 16            // deal in the Software without restriction, including without limitation the
 17            // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 18 mike  1.10 // sell copies of the Software, and to permit persons to whom the Software is
 19            // furnished to do so, subject to the following conditions:
 20 karl  1.41 // 
 21 kumpf 1.26 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 22 mike  1.10 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 23            // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 24 kumpf 1.26 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 25            // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 26            // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 27 mike  1.10 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 28            // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 29            //
 30            //==============================================================================
 31            //
 32            //%/////////////////////////////////////////////////////////////////////////////
 33            
 34            #include "CIMQualifier.h"
 35 kumpf 1.19 #include "CIMQualifierRep.h"
 36 mike  1.10 #include "Indentor.h"
 37            #include "CIMName.h"
 38 kumpf 1.32 #include "InternalException.h"
 39 mike  1.10 #include "XmlWriter.h"
 40 dmitry.mikulin 1.46.4.1 #include "SoapWriter.h"
 41 kumpf          1.24     #include "MofWriter.h"
 42 mike           1.40     #include "StrLit.h"
 43 mike           1.10     
 44                         PEGASUS_NAMESPACE_BEGIN
 45 karl           1.13     PEGASUS_USING_STD;
 46 kumpf          1.19     
 47 mike           1.10     ////////////////////////////////////////////////////////////////////////////////
 48                         //
 49                         // CIMQualifierRep
 50                         //
 51                         ////////////////////////////////////////////////////////////////////////////////
 52                         
 53 chip           1.38     CIMQualifierRep::CIMQualifierRep(const CIMQualifierRep& x) :
 54                             Sharable(),
 55                             _name(x._name),
 56                             _value(x._value),
 57                             _flavor(x._flavor),
 58 marek          1.46         _propagated(x._propagated),
 59                             _ownerCount(0)
 60 chip           1.38     {
 61 marek          1.46         // Set the CIM name tag.
 62                             _nameTag = generateCIMNameTag(_name);
 63 chip           1.38     }
 64                         
 65 mike           1.10     CIMQualifierRep::CIMQualifierRep(
 66 chip           1.38         const CIMName& name,
 67                             const CIMValue& value,
 68 kumpf          1.30         const CIMFlavor & flavor,
 69 mike           1.10         Boolean propagated)
 70 chip           1.38         :
 71                             _name(name),
 72                             _value(value),
 73 mike           1.10         _flavor(flavor),
 74 marek          1.46         _propagated(propagated),
 75                             _ownerCount(0)
 76 mike           1.10     {
 77 chip           1.38         // ensure name is not null
 78 kumpf          1.43         if (name.isNull())
 79 chip           1.38         {
 80                                 throw UninitializedObjectException();
 81                             }
 82 marek          1.46         // Set the CIM name tag.
 83                             _nameTag = generateCIMNameTag(_name);
 84 mike           1.10     }
 85                         
 86                         CIMQualifierRep::~CIMQualifierRep()
 87                         {
 88                         }
 89                         
 90 chip           1.38     void CIMQualifierRep::setName(const CIMName& name)
 91 mike           1.10     {
 92 chip           1.38         // ensure name is not null
 93 kumpf          1.43         if (name.isNull())
 94 chip           1.38         {
 95                                 throw UninitializedObjectException();
 96                             }
 97                         
 98 marek          1.46         if (_ownerCount != 0 && _name != name)
 99                             {
100                                 MessageLoaderParms parms(
101                                     "Common.CIMQualifierRep.CONTAINED_QUALIFIER_NAMECHANGEDEXCEPTION",
102                                     "Attempted to change the name of a qualifier"
103                                         " already in a container.");
104                                 throw Exception(parms);
105                             }
106                         
107 chip           1.38         _name = name;
108 marek          1.46     
109                             // Set the CIM name tag.
110                             _nameTag = generateCIMNameTag(_name);
111 mike           1.10     }
112                         
113 kumpf          1.30     void CIMQualifierRep::resolveFlavor (
114 chip           1.38         const CIMFlavor & inheritedFlavor,
115 kumpf          1.30         Boolean inherited)
116                         {
117                             // ATTN: KS P3 Needs more tests and expansion so we treate first different
118                             // from inheritance
119 karl           1.17     
120 kumpf          1.30         // if the turnoff flags set, reset the flavor bits
121 chip           1.38         if (inheritedFlavor.hasFlavor (CIMFlavor::RESTRICTED))
122 kumpf          1.30         {
123 kumpf          1.31             _flavor.removeFlavor (CIMFlavor::TOSUBCLASS);
124                                 _flavor.removeFlavor (CIMFlavor::TOINSTANCE);
125 kumpf          1.30         }
126 chip           1.38         if (inheritedFlavor.hasFlavor (CIMFlavor::DISABLEOVERRIDE))
127 kumpf          1.30         {
128                                 _flavor.removeFlavor (CIMFlavor::ENABLEOVERRIDE);
129                             }
130                         
131                             _flavor.addFlavor (inheritedFlavor);
132                         }
133 karl           1.17     
134 mike           1.10     static const char* _toString(Boolean x)
135                         {
136                             return x ? "true" : "false";
137                         }
138                         
139 dmitry.mikulin 1.46.4.1 void CIMQualifierRep::toSoap(Buffer& out) const
140                         {
141                         }
142                         
143 mike           1.39     void CIMQualifierRep::toXml(Buffer& out) const
144 mike           1.10     {
145 mike           1.40         out << STRLIT("<QUALIFIER NAME=\"") << _name;
146                             out.append('"');
147                             out << STRLIT(" TYPE=\"") << cimTypeToString(_value.getType ());
148                             out.append('"');
149 mike           1.10     
150                             if (_propagated != false)
151 mike           1.40         {
152 kumpf          1.42             out << STRLIT(" PROPAGATED=\"") << _toString(_propagated);
153                                 out.append('"');
154 mike           1.40         }
155 mike           1.10     
156 kumpf          1.25         XmlWriter::appendQualifierFlavorEntity(out, _flavor);
157 mike           1.10     
158 mike           1.40         out << STRLIT(">\n");
159 chip           1.38     
160 kumpf          1.22         XmlWriter::appendValueElement(out, _value);
161 mike           1.10     
162 mike           1.40         out << STRLIT("</QUALIFIER>\n");
163 mike           1.10     }
164                         
165 mike           1.11     /** toMof Generates MOF output for a qualifier.
166                             The BNF for this is:
167                             <pre>
168 kumpf          1.42         qualifier          = qualifierName [ qualifierParameter ] [ ":" 1*flavor]
169 mike           1.11     
170                             qualifierParameter = "(" constantValue ")" | arrayInitializer
171                         
172                             arrayInitializer   = "{" constantValue*( "," constantValue)"}"
173                             </pre>
174                         */
175 mike           1.39     void CIMQualifierRep::toMof(Buffer& out) const
176 mike           1.11     {
177                             // Output Qualifier name
178                             out << _name;
179                         
180                             /* If the qualifier is Boolean, we do not put out a value. This is
181                                the way MOF is shown.  Note that we should really be checking
182 karl           1.17            the qualifierdecl to compare with the default.
183 mike           1.11            Also if the value is Null, we do not put out a value because
184                                no value has been set.  Assumes that qualifiers are built
185                                with NULL set if no value has been placed in the qualifier.
186                             */
187                             Boolean hasValueField = false;
188 karl           1.17         if (!_value.isNull())
189 mike           1.11         {
190 kumpf          1.42             if (_value.getType() == CIMTYPE_BOOLEAN)
191                                 {
192                                     Boolean b;
193                                     _value.get(b);
194 kumpf          1.43                 if (!b)
195 kumpf          1.42                     out << STRLIT(" (false)");
196                                 }
197                                 else
198                                 {
199 dave.sudlik    1.44                 if( !_value.isArray() )
200                                         out << STRLIT(" (");
201                                     else
202                                         out << STRLIT(" ");
203 kumpf          1.42                 hasValueField = true;
204                                     MofWriter::appendValueElement(out, _value);
205 dave.sudlik    1.44                 if( !_value.isArray() )
206                                         out.append(')');
207 kumpf          1.42             }
208 mike           1.11         }
209                         
210                             // output the flavors
211                             String flavorString;
212 kumpf          1.25         flavorString = MofWriter::getQualifierFlavor(_flavor);
213 mike           1.11         if (flavorString.size())
214                             {
215 kumpf          1.42             out << STRLIT(" : ");
216                                 out << flavorString;
217 mike           1.11         }
218 karl           1.15     }
219                         
220                         
221 mike           1.10     Boolean CIMQualifierRep::identical(const CIMQualifierRep* x) const
222                         {
223                             return
224 kumpf          1.42             this == x ||
225                                 _name.equal(x->_name) &&
226                                 _value == x->_value &&
227                                 (_flavor.equal (x->_flavor)) &&
228                                 _propagated == x->_propagated;
229 mike           1.10     }
230                         
231 chip           1.38     void CIMQualifierRep::setValue(const CIMValue& value)
232 mike           1.10     {
233 chip           1.38         _value = value;
234 mike           1.10     }
235                         
236                         PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2