~ubuntu-branches/ubuntu/quantal/opendrim-lmp-simpleidentitymanagement/quantal

« back to all changes in this revision

Viewing changes to OpenDRIM_AccountCapabilities/OpenDRIM_AccountCapabilitiesProvider.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Guillaume BOTTEX
  • Date: 2010-06-21 15:54:00 UTC
  • Revision ID: james.westby@ubuntu.com-20100621155400-myesv5hd2f3s8x9y
Tags: upstream-1.0.0
ImportĀ upstreamĀ versionĀ 1.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*################################################################################
 
2
# Linux Management Providers (LMP), Simple Identity Management provider package
 
3
# Copyright (C) 2007 Frederic Desmons, ETRI <desmons@etri.re.kr, desmons_frederic@yahoo.fr>
 
4
 
5
# This program is being developed under the "OpenDRIM" project.
 
6
# The "OpenDRIM" project web page: http://opendrim.sourceforge.net
 
7
# The "OpenDRIM" project mailing list: opendrim@googlegroups.com
 
8
 
9
# This program is free software; you can redistribute it and/or
 
10
# modify it under the terms of the GNU General Public License
 
11
# as published by the Free Software Foundation; version 2
 
12
# of the License.
 
13
 
14
# This program is distributed in the hope that it will be useful,
 
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
17
# GNU General Public License for more details.
 
18
 
19
# You should have received a copy of the GNU General Public License
 
20
# along with this program; if not, write to the Free Software
 
21
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
22
#################################################################################
 
23
 
 
24
#################################################################################
 
25
# To contributors, please leave your contact information in this section
 
26
# AND comment your changes in the source code.
 
27
 
28
# Modified by 2009 Khahramon NURIDDINOV, TUIT <qahramon0786@gmail.com>
 
29
# Modified by 2009 Guillaume BOTTEX, ETRI <guillaumebottex@etri.re.kr>
 
30
################################################################################*/
 
31
 
 
32
#include "cmpiOpenDRIM_AccountCapabilities.h"
 
33
#include "OpenDRIM_AccountCapabilitiesAccess.h"
 
34
 
 
35
static const CMPIBroker * _broker;
 
36
 
 
37
#ifdef CMPI_VER_100
 
38
#define Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderSetInstance Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderModifyInstance
 
39
#endif
 
40
 
 
41
int Simple_Identity_Management_OpenDRIM_AccountCapabilities_init(const CMPIBroker* broker);
 
42
 
 
43
int Simple_Identity_Management_OpenDRIM_AccountCapabilities_finalize();
 
44
 
 
45
/* ---------------------------------------------------------------------------*/
 
46
/*                      Instance Provider Interface                           */
 
47
/* ---------------------------------------------------------------------------*/
 
48
 
 
49
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderCleanup(CMPIInstanceMI * mi, const CMPIContext* ctx, CMPIBoolean terminate) {
 
50
        _E_;
 
51
        int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_finalize();
 
52
        CMPIStatus rc;
 
53
        CMSetStatus(&rc, (CMPIrc) errorCode);
 
54
        _L_;
 
55
        return rc;
 
56
}
 
57
 
 
58
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderEnumInstanceNames(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref) {
 
59
        _E_;
 
60
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
61
        vector<OpenDRIM_AccountCapabilities> instances;
 
62
        string errorMessage;
 
63
        
 
64
        int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_retrieve(_broker, ctx, instances, NULL, errorMessage, "ein");
 
65
        if (errorCode != OK) {
 
66
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
67
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
68
                return rc;
 
69
        }
 
70
        for (size_t i=0; i < instances.size(); i++) {
 
71
                CMPIObjectPath* op = Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCMPIObjectPath(_broker, instances[i]);
 
72
                CMReturnObjectPath(rslt, op);
 
73
        }
 
74
        CMReturnDone(rslt);
 
75
        _L_;
 
76
        return rc;
 
77
}
 
78
 
 
79
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderEnumInstances(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char** properties) {
 
80
        _E_;
 
81
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
82
        vector<OpenDRIM_AccountCapabilities> instances;
 
83
        string errorMessage;
 
84
        
 
85
        int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_retrieve(_broker, ctx, instances, properties, errorMessage, "ei");
 
86
        if (errorCode != OK) {
 
87
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
88
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
89
                return rc;
 
90
        }
 
91
        for (size_t i=0; i < instances.size(); i++) {
 
92
                CMPIInstance* ci = Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCMPIInstance(_broker, instances[i]);
 
93
                CMReturnInstance(rslt, ci);
 
94
        }
 
95
        CMReturnDone(rslt);
 
96
        _L_;
 
97
        return rc;
 
98
}
 
99
 
 
100
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderGetInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const char** properties) {
 
101
        _E_;
 
102
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
103
        OpenDRIM_AccountCapabilities instance;
 
104
        Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, cop, instance);
 
105
        string errorMessage;
 
106
        
 
107
        int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, instance, properties, errorMessage);
 
108
        if (errorCode != OK) {
 
109
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
110
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
111
                return rc;
 
112
        }
 
113
        CMPIInstance* ci = Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCMPIInstance(_broker, instance);
 
114
        CMReturnInstance(rslt, ci);
 
115
        CMReturnDone(rslt);
 
116
        _L_;
 
117
        return rc;
 
118
}
 
119
 
 
120
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderSetInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const CMPIInstance* ci, const char** properties) {
 
121
        _E_;
 
122
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
123
        OpenDRIM_AccountCapabilities newInstance, oldInstance;
 
124
        Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, ci, newInstance);
 
125
        Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, cop, oldInstance);
 
126
        string errorMessage;
 
127
        
 
128
        int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, oldInstance, properties, errorMessage);
 
129
        if (errorCode != OK) {
 
130
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
131
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
132
                return rc;
 
133
        }
 
134
        errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_setInstance(_broker, ctx, newInstance, oldInstance, properties, errorMessage);
 
135
        if (errorCode != OK) {
 
136
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
137
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
138
                return rc;
 
139
        }
 
140
        CMReturnDone(rslt);
 
141
        _L_;
 
142
        return rc;
 
143
}
 
144
 
 
145
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderCreateInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop, const CMPIInstance* ci) {
 
146
        _E_;
 
147
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
148
        OpenDRIM_AccountCapabilities instance;
 
149
        Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, ci, instance);
 
150
        string errorMessage;
 
151
        
 
152
        int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, instance, NULL, errorMessage);
 
153
        if (errorCode != NOT_FOUND) {
 
154
                if (errorCode == OK)
 
155
                        errorCode = ALREADY_EXISTS;
 
156
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
157
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
158
                return rc;
 
159
        }
 
160
        errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_createInstance(_broker, ctx, instance, errorMessage);
 
161
        if (errorCode != OK) {
 
162
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
163
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
164
                return rc;
 
165
        }
 
166
        errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, instance, NULL, errorMessage);
 
167
        if (errorCode != OK) {
 
168
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
169
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
170
                return rc;
 
171
        }
 
172
        CMPIObjectPath* _cop = Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCMPIObjectPath(_broker, instance);
 
173
        CMReturnObjectPath(rslt, _cop);
 
174
        CMReturnDone(rslt);
 
175
        _L_;
 
176
        return rc;
 
177
}
 
178
 
 
179
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderDeleteInstance(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* cop) {
 
180
        _E_;
 
181
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
182
        OpenDRIM_AccountCapabilities instance;
 
183
        Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, cop, instance);
 
184
        string errorMessage;
 
185
        
 
186
        int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, instance, NULL, errorMessage);
 
187
        if (errorCode != OK) {
 
188
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
189
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
190
                return rc;
 
191
        }
 
192
        errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_deleteInstance(_broker, ctx, instance, errorMessage);
 
193
        if (errorCode != OK) {
 
194
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
195
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
196
                return rc;
 
197
        }
 
198
        CMReturnDone(rslt);
 
199
        _L_;
 
200
        return rc;
 
201
}
 
202
 
 
203
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderExecQuery(CMPIInstanceMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char* lang, const char* query) {
 
204
        _E_;
 
205
        CMReturn(CMPI_RC_ERR_NOT_SUPPORTED);
 
206
}
 
207
 
 
208
/* ---------------------------------------------------------------------------*/
 
209
/*                   End of Instance Provider Interface                       */
 
210
/* ---------------------------------------------------------------------------*/
 
211
 
 
212
/* ---------------------------------------------------------------------------*/
 
213
/*                        Method Provider Interface                           */
 
214
/* ---------------------------------------------------------------------------*/
 
215
 
 
216
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderMethodCleanup(CMPIMethodMI * mi, const CMPIContext * ctx, CMPIBoolean terminate) {
 
217
        _E_;
 
218
        int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_finalize();
 
219
        CMPIStatus rc;
 
220
        CMSetStatus(&rc, (CMPIrc) errorCode);
 
221
        _L_;
 
222
        return rc;
 
223
}
 
224
 
 
225
CMPIStatus Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProviderInvokeMethod(CMPIMethodMI* mi, const CMPIContext* ctx, const CMPIResult* rslt, const CMPIObjectPath* ref, const char* methodName, const CMPIArgs* in, CMPIArgs* out) {
 
226
        _E_;
 
227
        CMPIStatus rc = {CMPI_RC_OK, NULL};
 
228
        OpenDRIM_AccountCapabilities instance;
 
229
        Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, ref, instance);
 
230
        string errorMessage;
 
231
 
 
232
        const char* properties[] = {"InstanceID"};
 
233
        int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_getInstance(_broker, ctx, instance, properties, errorMessage);
 
234
        if (errorCode != OK) {
 
235
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
236
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
237
                return rc;
 
238
        }
 
239
 
 
240
        if ((string) methodName =="CreateGoalSettings") {
 
241
                unsigned short returnValue;
 
242
                OpenDRIM_AccountCapabilities_CreateGoalSettings_In inArgs;
 
243
                Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCPP(_broker, in, inArgs);
 
244
                OpenDRIM_AccountCapabilities_CreateGoalSettings_Out outArgs;
 
245
                
 
246
                errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_CreateGoalSettings(_broker, ctx, instance, returnValue, inArgs, outArgs, errorMessage);
 
247
                if (errorCode != OK) {
 
248
                        errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
249
                        CMSetStatusWithChars(_broker, &rc, (CMPIrc) errorCode, errorMessage.c_str());
 
250
                        return rc;
 
251
                }
 
252
                Simple_Identity_Management_OpenDRIM_AccountCapabilities_toCMPIArg(_broker, out, outArgs);
 
253
                
 
254
                CMPIValue value = CT_toCMPI(returnValue);
 
255
                CMReturnData(rslt, &value.uint16, CMPI_uint16);
 
256
        }
 
257
        else {
 
258
                errorMessage = (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + "The requested method (" + (string) methodName +") was not found.";
 
259
                CMSetStatusWithChars(_broker, &rc, (CMPIrc) NOT_SUPPORTED, errorMessage.c_str());
 
260
                return rc;
 
261
        }
 
262
        CMReturnDone(rslt);
 
263
        _L_;
 
264
        CMReturn(CMPI_RC_OK);
 
265
}
 
266
 
 
267
/* ---------------------------------------------------------------------------*/
 
268
/*                    End of Method Provider Interface                        */
 
269
/* ---------------------------------------------------------------------------*/
 
270
 
 
271
/* ---------------------------------------------------------------------------*/
 
272
/*                              Provider Factory                              */
 
273
/* ---------------------------------------------------------------------------*/
 
274
 
 
275
int Simple_Identity_Management_OpenDRIM_AccountCapabilities_init(const CMPIBroker* broker) {
 
276
        _E_;
 
277
        _broker = broker;
 
278
        static bool initialized = false;
 
279
        if (!initialized) {
 
280
                string errorMessage;
 
281
                int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_load(broker, errorMessage);
 
282
                if (errorCode != OK) {
 
283
                        errorMessage += "Simple_Identity_Management_OpenDRIM_AccountCapabilities_init FAILED: " + (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
284
                        string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
 
285
                        system(cmd.c_str());
 
286
                        return -1;
 
287
                }
 
288
                initialized = true;
 
289
        }
 
290
        _L_;
 
291
        return OK;
 
292
}
 
293
 
 
294
int Simple_Identity_Management_OpenDRIM_AccountCapabilities_finalize() {
 
295
        _E_;
 
296
        static bool finalized = false;
 
297
        if (!finalized) {
 
298
                string errorMessage;
 
299
                int errorCode = Simple_Identity_Management_OpenDRIM_AccountCapabilities_unload(errorMessage);
 
300
                if (errorCode != OK) {
 
301
                        errorMessage += "Simple_Identity_Management_OpenDRIM_AccountCapabilities_unload FAILED: " + (string) OpenDRIM_AccountCapabilities_classnames[0] + ": " + errorMessage;
 
302
                        string cmd = "/bin/echo \"" + errorMessage + "\" >> cmpi_prov_debug.txt";
 
303
                        system(cmd.c_str());
 
304
                        return errorCode;
 
305
                }
 
306
                finalized = true;
 
307
        }
 
308
        _L_;
 
309
        return OK;
 
310
}
 
311
 
 
312
#define Simple_Identity_Management_OpenDRIM_AccountCapabilities_INIT if (Simple_Identity_Management_OpenDRIM_AccountCapabilities_init(_broker) < 0) return NULL
 
313
 
 
314
CMInstanceMIStub(Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProvider, Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProvider, _broker, Simple_Identity_Management_OpenDRIM_AccountCapabilities_INIT);
 
315
CMMethodMIStub(Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProvider, Simple_Identity_Management_OpenDRIM_AccountCapabilitiesProvider, _broker, Simple_Identity_Management_OpenDRIM_AccountCapabilities_INIT);
 
316
 
 
317
/* ---------------------------------------------------------------------------*/
 
318
/*                          End of Provider Factory                           */
 
319
/* ---------------------------------------------------------------------------*/