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