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.5 // Revision 1.4 2001/02/06 17:04:03 karl
27 // add documentation
28 //
|
29 karl 1.4 // Revision 1.3 2001/01/31 08:20:51 mike
30 // Added dispatcher framework.
31 // Added enumerateInstanceNames.
32 //
|
33 mike 1.3 // Revision 1.2 2001/01/28 04:11:03 mike
34 // fixed qualifier resolution
35 //
|
36 mike 1.2 // Revision 1.1.1.1 2001/01/14 19:53:56 mike
37 // Pegasus import
38 //
|
39 mike 1.1 //
40 //END_HISTORY
41
42 ////////////////////////////////////////////////////////////////////////////////
43 //
44 // Repository.h
45 //
|
46 karl 1.4 // This interface contains a method for each operation defined in
|
47 mike 1.1 // the "Specification for CIM Operations over HTTP".
48 //
49 ////////////////////////////////////////////////////////////////////////////////
50
51 #ifndef PegasusRepository_Repository_h
52 #define PegasusRepository_Repository_h
53
54 #include <Pegasus/Common/Config.h>
55 #include <Pegasus/Common/ClassDecl.h>
56 #include <Pegasus/Common/InstanceDecl.h>
57 #include <Pegasus/Common/QualifierDecl.h>
58 #include <Pegasus/Common/Operations.h>
59
60 PEGASUS_NAMESPACE_BEGIN
61
62 class RepositoryDeclContext;
|
63 karl 1.4 /** Class Repository - This class represents the repository interfaces.
64 This class is derived from the Pegasus Operations interface adding certain
65 methods specifically required for the repository.
66 */
|
67 mike 1.1
68 class PEGASUS_REPOSITORY_LINKAGE Repository : public Operations
69 {
70 public:
|
71 karl 1.4 /// Constructor
|
72 mike 1.1 Repository(const String& path);
|
73 karl 1.4 /// Descructor
|
74 mike 1.1 virtual ~Repository();
|
75 karl 1.4 /// virtual class ClassDecl. From the operations class
|
76 mike 1.1 virtual ClassDecl getClass(
77 const String& nameSpace,
78 const String& className,
79 Boolean localOnly = true,
80 Boolean includeQualifiers = true,
81 Boolean includeClassOrigin = false,
82 const Array<String>& propertyList = _getStringArray());
|
83 karl 1.4 /// getInstance
|
84 mike 1.1 virtual InstanceDecl getInstance(
85 const String& nameSpace,
86 const Reference& instanceName,
87 Boolean localOnly = true,
88 Boolean includeQualifiers = false,
89 Boolean includeClassOrigin = false,
90 const Array<String>& propertyList = _getStringArray());
|
91 karl 1.4 /// deleteClass
|
92 mike 1.1 virtual void deleteClass(
93 const String& nameSpace,
94 const String& className);
|
95 karl 1.4 /// deleteInstance
|
96 mike 1.1 virtual void deleteInstance(
97 const String& nameSpace,
98 const Reference& instanceName);
|
99 karl 1.4 /// createClass
|
100 mike 1.1 virtual void createClass(
101 const String& nameSpace,
102 ClassDecl& newClass);
|
103 karl 1.4 /// createInstance
|
104 mike 1.1 virtual void createInstance(
105 const String& nameSpace,
|
106 mike 1.5 const InstanceDecl& newInstance);
|
107 mike 1.1 virtual void modifyClass(
108 const String& nameSpace,
109 ClassDecl& modifiedClass);
|
110 karl 1.4 /// modifyInstance
|
111 mike 1.1 virtual void modifyInstance(
112 const String& nameSpace,
113 const InstanceDecl& modifiedInstance);
|
114 karl 1.4 /// enumerateClasses
|
115 mike 1.1 virtual Array<ClassDecl> enumerateClasses(
116 const String& nameSpace,
117 const String& className = String::EMPTY,
118 Boolean deepInheritance = false,
119 Boolean localOnly = true,
120 Boolean includeQualifiers = true,
121 Boolean includeClassOrigin = false);
|
122 karl 1.4 /// enumerateClassNames
|
123 mike 1.1 virtual Array<String> enumerateClassNames(
124 const String& nameSpace,
125 const String& className = String::EMPTY,
126 Boolean deepInheritance = false);
|
127 karl 1.4 /// enumerateInstances
|
128 mike 1.1 virtual Array<InstanceDecl> enumerateInstances(
129 const String& nameSpace,
130 const String& className,
131 Boolean deepInheritance = true,
132 Boolean localOnly = true,
133 Boolean includeQualifiers = false,
134 Boolean includeClassOrigin = false,
135 const Array<String>& propertyList = _getStringArray());
|
136 karl 1.4 /// enumerateInstanceNames
|
137 mike 1.3 virtual Array<Reference> enumerateInstanceNames(
|
138 mike 1.1 const String& nameSpace,
139 const String& className);
|
140 karl 1.4 /// execQuery
|
141 mike 1.1 virtual Array<InstanceDecl> execQuery(
142 const String& queryLanguage,
143 const String& query) ;
|
144 karl 1.4 /// associators
|
145 mike 1.1 virtual Array<InstanceDecl> associators(
146 const String& nameSpace,
147 const Reference& objectName,
148 const String& assocClass = String::EMPTY,
149 const String& resultClass = String::EMPTY,
150 const String& role = String::EMPTY,
151 const String& resultRole = String::EMPTY,
152 Boolean includeQualifiers = false,
153 Boolean includeClassOrigin = false,
154 const Array<String>& propertyList = _getStringArray());
|
155 karl 1.4 /// associateNames
|
156 mike 1.1 virtual Array<Reference> associatorNames(
157 const String& nameSpace,
158 const Reference& objectName,
159 const String& assocClass = String::EMPTY,
160 const String& resultClass = String::EMPTY,
161 const String& role = String::EMPTY,
162 const String& resultRole = String::EMPTY);
|
163 karl 1.4 /// references
|
164 mike 1.1 virtual Array<InstanceDecl> references(
165 const String& nameSpace,
166 const Reference& objectName,
167 const String& resultClass = String::EMPTY,
168 const String& role = String::EMPTY,
169 Boolean includeQualifiers = false,
170 Boolean includeClassOrigin = false,
171 const Array<String>& propertyList = _getStringArray());
|
172 karl 1.4 /// referenceNames
|
173 mike 1.1 virtual Array<Reference> referenceNames(
174 const String& nameSpace,
175 const Reference& objectName,
176 const String& resultClass = String::EMPTY,
177 const String& role = String::EMPTY);
|
178 karl 1.4 /// getProperty
|
179 mike 1.1 virtual Value getProperty(
180 const String& nameSpace,
181 const Reference& instanceName,
182 const String& propertyName);
|
183 karl 1.4 /// setProperty
|
184 mike 1.1 virtual void setProperty(
185 const String& nameSpace,
186 const Reference& instanceName,
187 const String& propertyName,
188 const Value& newValue = Value());
|
189 karl 1.4 /// getQualifier
|
190 mike 1.1 virtual QualifierDecl getQualifier(
191 const String& nameSpace,
192 const String& qualifierName);
|
193 karl 1.4 /// setQualifier
|
194 mike 1.1 virtual void setQualifier(
195 const String& nameSpace,
196 const QualifierDecl& qualifierDecl);
|
197 karl 1.4 /// virtual deleteQualifier
|
198 mike 1.1 virtual void deleteQualifier(
199 const String& nameSpace,
200 const String& qualifierName);
|
201 karl 1.4 /// enumerateQualifiers
|
202 mike 1.1 virtual Array<QualifierDecl> enumerateQualifiers(
203 const String& nameSpace);
|
204 karl 1.4 /// Virtual value
|
205 mike 1.1 virtual Value invokeMethod(
206 const String& nameSpace,
207 const Reference& instanceName,
208 const String& methodName,
209 const Array<Value>& inParameters,
210 Array<Value>& outParameters);
211
|
212 karl 1.4 /** Method createNameSpace - Creates a new namespace in the repository
213 @param String with the name of the namespace
214 @exception - ???
215 ATTN: What happens if the namespace already exists.
216 */
|
217 mike 1.1 void createNameSpace(const String& nameSpace);
218
|
219 karl 1.4 /** Method enumerateNameSpaces - Get all of the namespaces in the
220 repository. \Ref{NAMESPACE}
221 @return Array of strings with the namespaces
222 */
|
223 mike 1.1 virtual Array<String> enumerateNameSpaces() const;
|
224 mike 1.2
|
225 karl 1.4 /** Method createMetaQualifiers - ATTN:
|
226 mike 1.2 This method must be invoked to create the appropriate meta-qualifiers
227 required by CIM (they are not part of the CIM schema; rather they are
228 part of the meta-schema).
229 */
230
231 void createMetaQualifiers(const String& nameSpace);
|
232 mike 1.1
233 private:
234
235 static Array<String> _getStringArray()
236 {
237 return Array<String>();
238 }
239
240 String _root;
241 RepositoryDeclContext* _context;
242 };
243
244 PEGASUS_NAMESPACE_END
245
246 #endif /* PegasusRepository_Repository_h */
|
247 karl 1.4
|