1 mike 1.1 //BEGIN_LICENSE
2 //
3 // Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM
4 //
5 // Permission is hereby granted, free of charge, to any person obtaining a
6 // copy of this software and associated documentation files (the "Software"),
7 // to deal in the Software without restriction, including without limitation
8 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 // and/or sell copies of the Software, and to permit persons to whom the
10 // Software is furnished to do so, subject to the following conditions:
11 //
12 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
15 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18 // DEALINGS IN THE SOFTWARE.
19 //
20 //END_LICENSE
21 //BEGIN_HISTORY
22 mike 1.1 //
23 // Author:
24 //
|
25 mike 1.2 // $Log: Repository.h,v $
|
26 mike 1.6 // Revision 1.5 2001/02/08 00:31:51 mike
27 // Clean up on Operations class.
28 // Reformmatted documentation.
29 //
|
30 mike 1.5 // Revision 1.4 2001/02/06 17:04:03 karl
31 // add documentation
32 //
|
33 karl 1.4 // Revision 1.3 2001/01/31 08:20:51 mike
34 // Added dispatcher framework.
35 // Added enumerateInstanceNames.
36 //
|
37 mike 1.3 // Revision 1.2 2001/01/28 04:11:03 mike
38 // fixed qualifier resolution
39 //
|
40 mike 1.2 // Revision 1.1.1.1 2001/01/14 19:53:56 mike
41 // Pegasus import
42 //
|
43 mike 1.1 //
44 //END_HISTORY
45
46 ////////////////////////////////////////////////////////////////////////////////
47 //
48 // Repository.h
49 //
|
50 karl 1.4 // This interface contains a method for each operation defined in
|
51 mike 1.1 // the "Specification for CIM Operations over HTTP".
52 //
53 ////////////////////////////////////////////////////////////////////////////////
54
55 #ifndef PegasusRepository_Repository_h
56 #define PegasusRepository_Repository_h
57
58 #include <Pegasus/Common/Config.h>
59 #include <Pegasus/Common/ClassDecl.h>
60 #include <Pegasus/Common/InstanceDecl.h>
61 #include <Pegasus/Common/QualifierDecl.h>
62 #include <Pegasus/Common/Operations.h>
63
64 PEGASUS_NAMESPACE_BEGIN
65
66 class RepositoryDeclContext;
|
67 karl 1.4 /** Class Repository - This class represents the repository interfaces.
68 This class is derived from the Pegasus Operations interface adding certain
69 methods specifically required for the repository.
70 */
|
71 mike 1.1
72 class PEGASUS_REPOSITORY_LINKAGE Repository : public Operations
73 {
74 public:
|
75 mike 1.6
|
76 karl 1.4 /// Constructor
|
77 mike 1.1 Repository(const String& path);
|
78 mike 1.6
|
79 karl 1.4 /// Descructor
|
80 mike 1.1 virtual ~Repository();
|
81 mike 1.6
|
82 karl 1.4 /// virtual class ClassDecl. From the operations class
|
83 mike 1.1 virtual ClassDecl getClass(
84 const String& nameSpace,
85 const String& className,
86 Boolean localOnly = true,
87 Boolean includeQualifiers = true,
88 Boolean includeClassOrigin = false,
89 const Array<String>& propertyList = _getStringArray());
|
90 mike 1.6
|
91 karl 1.4 /// getInstance
|
92 mike 1.1 virtual InstanceDecl getInstance(
93 const String& nameSpace,
94 const Reference& instanceName,
95 Boolean localOnly = true,
96 Boolean includeQualifiers = false,
97 Boolean includeClassOrigin = false,
98 const Array<String>& propertyList = _getStringArray());
|
99 mike 1.6
|
100 karl 1.4 /// deleteClass
|
101 mike 1.1 virtual void deleteClass(
102 const String& nameSpace,
103 const String& className);
|
104 mike 1.6
|
105 karl 1.4 /// deleteInstance
|
106 mike 1.1 virtual void deleteInstance(
107 const String& nameSpace,
108 const Reference& instanceName);
|
109 mike 1.6
|
110 karl 1.4 /// createClass
|
111 mike 1.1 virtual void createClass(
112 const String& nameSpace,
113 ClassDecl& newClass);
|
114 mike 1.6
|
115 karl 1.4 /// createInstance
|
116 mike 1.1 virtual void createInstance(
117 const String& nameSpace,
|
118 mike 1.5 const InstanceDecl& newInstance);
|
119 mike 1.6
|
120 mike 1.1 virtual void modifyClass(
121 const String& nameSpace,
122 ClassDecl& modifiedClass);
|
123 mike 1.6
|
124 karl 1.4 /// modifyInstance
|
125 mike 1.1 virtual void modifyInstance(
126 const String& nameSpace,
127 const InstanceDecl& modifiedInstance);
|
128 mike 1.6
|
129 karl 1.4 /// enumerateClasses
|
130 mike 1.1 virtual Array<ClassDecl> enumerateClasses(
131 const String& nameSpace,
132 const String& className = String::EMPTY,
133 Boolean deepInheritance = false,
134 Boolean localOnly = true,
135 Boolean includeQualifiers = true,
136 Boolean includeClassOrigin = false);
|
137 mike 1.6
|
138 karl 1.4 /// enumerateClassNames
|
139 mike 1.1 virtual Array<String> enumerateClassNames(
140 const String& nameSpace,
141 const String& className = String::EMPTY,
142 Boolean deepInheritance = false);
|
143 mike 1.6
|
144 karl 1.4 /// enumerateInstances
|
145 mike 1.1 virtual Array<InstanceDecl> enumerateInstances(
146 const String& nameSpace,
147 const String& className,
148 Boolean deepInheritance = true,
149 Boolean localOnly = true,
150 Boolean includeQualifiers = false,
151 Boolean includeClassOrigin = false,
152 const Array<String>& propertyList = _getStringArray());
|
153 mike 1.6
|
154 karl 1.4 /// enumerateInstanceNames
|
155 mike 1.3 virtual Array<Reference> enumerateInstanceNames(
|
156 mike 1.1 const String& nameSpace,
157 const String& className);
|
158 mike 1.6
|
159 karl 1.4 /// execQuery
|
160 mike 1.1 virtual Array<InstanceDecl> execQuery(
161 const String& queryLanguage,
162 const String& query) ;
|
163 mike 1.6
|
164 karl 1.4 /// associators
|
165 mike 1.1 virtual Array<InstanceDecl> associators(
166 const String& nameSpace,
167 const Reference& objectName,
168 const String& assocClass = String::EMPTY,
169 const String& resultClass = String::EMPTY,
170 const String& role = String::EMPTY,
171 const String& resultRole = String::EMPTY,
172 Boolean includeQualifiers = false,
173 Boolean includeClassOrigin = false,
174 const Array<String>& propertyList = _getStringArray());
|
175 mike 1.6
|
176 karl 1.4 /// associateNames
|
177 mike 1.1 virtual Array<Reference> associatorNames(
178 const String& nameSpace,
179 const Reference& objectName,
180 const String& assocClass = String::EMPTY,
181 const String& resultClass = String::EMPTY,
182 const String& role = String::EMPTY,
183 const String& resultRole = String::EMPTY);
|
184 mike 1.6
|
185 karl 1.4 /// references
|
186 mike 1.1 virtual Array<InstanceDecl> references(
187 const String& nameSpace,
188 const Reference& objectName,
189 const String& resultClass = String::EMPTY,
190 const String& role = String::EMPTY,
191 Boolean includeQualifiers = false,
192 Boolean includeClassOrigin = false,
193 const Array<String>& propertyList = _getStringArray());
|
194 mike 1.6
|
195 karl 1.4 /// referenceNames
|
196 mike 1.1 virtual Array<Reference> referenceNames(
197 const String& nameSpace,
198 const Reference& objectName,
199 const String& resultClass = String::EMPTY,
200 const String& role = String::EMPTY);
|
201 mike 1.6
|
202 karl 1.4 /// getProperty
|
203 mike 1.1 virtual Value getProperty(
204 const String& nameSpace,
205 const Reference& instanceName,
206 const String& propertyName);
|
207 mike 1.6
|
208 karl 1.4 /// setProperty
|
209 mike 1.1 virtual void setProperty(
210 const String& nameSpace,
211 const Reference& instanceName,
212 const String& propertyName,
213 const Value& newValue = Value());
|
214 mike 1.6
|
215 karl 1.4 /// getQualifier
|
216 mike 1.1 virtual QualifierDecl getQualifier(
217 const String& nameSpace,
218 const String& qualifierName);
|
219 mike 1.6
|
220 karl 1.4 /// setQualifier
|
221 mike 1.1 virtual void setQualifier(
222 const String& nameSpace,
223 const QualifierDecl& qualifierDecl);
|
224 mike 1.6
|
225 karl 1.4 /// virtual deleteQualifier
|
226 mike 1.1 virtual void deleteQualifier(
227 const String& nameSpace,
228 const String& qualifierName);
|
229 mike 1.6
|
230 karl 1.4 /// enumerateQualifiers
|
231 mike 1.1 virtual Array<QualifierDecl> enumerateQualifiers(
232 const String& nameSpace);
|
233 mike 1.6
|
234 karl 1.4 /// Virtual value
|
235 mike 1.1 virtual Value invokeMethod(
236 const String& nameSpace,
237 const Reference& instanceName,
238 const String& methodName,
239 const Array<Value>& inParameters,
240 Array<Value>& outParameters);
241
|
242 karl 1.4 /** Method createNameSpace - Creates a new namespace in the repository
|
243 mike 1.6 @param String with the name of the namespace
244 @exception - ???
245 ATTN: What happens if the namespace already exists.
|
246 karl 1.4 */
|
247 mike 1.1 void createNameSpace(const String& nameSpace);
248
|
249 karl 1.4 /** Method enumerateNameSpaces - Get all of the namespaces in the
|
250 mike 1.6 repository. \Ref{NAMESPACE}
251 @return Array of strings with the namespaces
|
252 karl 1.4 */
|
253 mike 1.1 virtual Array<String> enumerateNameSpaces() const;
|
254 mike 1.2
|
255 karl 1.4 /** Method createMetaQualifiers - ATTN:
|
256 mike 1.2 This method must be invoked to create the appropriate meta-qualifiers
257 required by CIM (they are not part of the CIM schema; rather they are
258 part of the meta-schema).
259 */
260 void createMetaQualifiers(const String& nameSpace);
|
261 mike 1.1
262 private:
263
264 static Array<String> _getStringArray()
265 {
266 return Array<String>();
267 }
268
269 String _root;
270 RepositoryDeclContext* _context;
271 };
272
273 PEGASUS_NAMESPACE_END
274
275 #endif /* PegasusRepository_Repository_h */
|
276 karl 1.4
|