(file) Return to InteropAssociationProvider.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ControlProviders / InteropProvider

  1 a.dunfey 1.1 //%2006////////////////////////////////////////////////////////////////////////
  2              //
  3              // 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              // IBM Corp.; EMC Corporation, The Open Group.
  7              // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  8              // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
  9              // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10              // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11              // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 12              // EMC Corporation; Symantec Corporation; The Open Group.
 13              //
 14              // Permission is hereby granted, free of charge, to any person obtaining a copy
 15              // 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              // 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              // 
 21              // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 22 a.dunfey 1.1 // 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              // 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              // 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              //  Interop Provider - This provider services those classes from the
 35              //  DMTF Interop schema in an implementation compliant with the SMI-S v1.1
 36              //  Server Profile
 37              //
 38              //  Please see PG_ServerProfile20.mof in the directory
 39              //  $(PEGASUS_ROOT)/Schemas/Pegasus/InterOp/VER20 for retails regarding the
 40              //  classes supported by this control provider.
 41              //
 42              //  Interop forces all creates to the PEGASUS_NAMESPACENAME_INTEROP 
 43 a.dunfey 1.1 //  namespace. There is a test on each operation that returns 
 44              //  the Invalid Class CIMDError
 45              //  This is a control provider and as such uses the Tracer functions
 46              //  for data and function traces.  Since we do not expect high volume
 47              //  use we added a number of traces to help diagnostics.
 48              ///////////////////////////////////////////////////////////////////////////////
 49              
 50              #include "InteropProvider.h"
 51              #include "InteropProviderUtils.h"
 52              #include "InteropConstants.h"
 53              
 54              PEGASUS_USING_STD;
 55 a.dunfey 1.2 PEGASUS_NAMESPACE_BEGIN
 56 a.dunfey 1.1 
 57              /*****************************************************************************
 58               *
 59               * Implementation of AssociationProvider associators method
 60               *
 61               *****************************************************************************/
 62              void InteropProvider::associators(
 63                  const OperationContext & context,
 64                  const CIMObjectPath & objectName,
 65                  const CIMName & associationClass,
 66                  const CIMName & resultClass,
 67                  const String & role,
 68                  const String & resultRole,
 69                  const Boolean includeQualifiers,
 70                  const Boolean includeClassOrigin,
 71                  const CIMPropertyList & propertyList,
 72                  ObjectResponseHandler & handler)
 73              {
 74                  PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,
 75                          "InteropProvider::associators()");
 76 a.dunfey 1.2     initProvider();
 77 marek    1.2.4.1     PEG_TRACE((TRC_CONTROLPROVIDER, Tracer::LEVEL4,
 78 a.dunfey 1.1             "%s associators. objectName= %s , assocClass= %s resultClass= %s role= %s resultRole %includeQualifiers= %s, includeClassOrigin= %s, PropertyList= %s",
 79                          thisProvider,
 80                          (const char *)objectName.toString().getCString(),
 81                          (const char *)associationClass.getString().getCString(),
 82                          (const char *)resultClass.getString().getCString(),
 83                          (const char *)role.getCString(),
 84                          (const char *)resultRole.getCString(),
 85                                        boolToString(includeQualifiers),
 86                                        boolToString(includeClassOrigin),
 87 marek    1.2.4.1         (const char *)propertyListToString(propertyList).getCString()));
 88 a.dunfey 1.1     
 89                      handler.processing();
 90                      String originRole = role;
 91                      String targetRole = resultRole;
 92                      //
 93                      // The localReferences call retrieves instances of the desired association
 94                      // class and sets the originRole and targetRole properties if currently
 95                      // empty.
 96                      //
 97                      Array<CIMInstance> refs = localReferences(context, objectName,
 98                          associationClass, originRole, targetRole, CIMPropertyList(),
 99                          resultClass);
100                      for(Uint32 i = 0, n = refs.size(); i < n; ++i)
101                      {
102                          CIMInstance & currentRef = refs[i];
103                          // Retrieve the "other side" of the association
104                          CIMObjectPath currentTarget = getRequiredValue<CIMObjectPath>(
105                              currentRef, targetRole);
106                          CIMInstance tmpInstance = localGetInstance(context, currentTarget,
107                              propertyList);
108                          tmpInstance.setPath(currentTarget);
109 a.dunfey 1.1             handler.deliver(tmpInstance);
110                      }
111                      handler.complete();
112                  
113                      PEG_METHOD_EXIT();
114                  }
115                  
116                  /*****************************************************************************
117                   *
118                   * Implementation of AssociationProvider associatorNames method
119                   *
120                   *****************************************************************************/
121                  void InteropProvider::associatorNames(
122                      const OperationContext & context,
123                      const CIMObjectPath & objectName,
124                      const CIMName & associationClass,
125                      const CIMName & resultClass,
126                      const String & role,
127                      const String & resultRole,
128                      ObjectPathResponseHandler & handler)
129                  {
130 a.dunfey 1.1         PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,
131                          "InteropProvider::associatorNames()");
132 a.dunfey 1.2         initProvider();
133 marek    1.2.4.1     PEG_TRACE((TRC_CONTROLPROVIDER, Tracer::LEVEL4,
134 a.dunfey 1.1             "%s associatorNames. objectName= %s , assocClass= %s resultClass= %s role= %s resultRole",
135                          thisProvider,
136                          (const char *)objectName.toString().getCString(),
137                          (const char *)associationClass.getString().getCString(),
138                          (const char *)resultClass.getString().getCString(),
139                          (const char *)role.getCString(),
140 marek    1.2.4.1         (const char *)resultRole.getCString()));
141 a.dunfey 1.1     
142                      handler.processing();
143                          String originRole = role;
144                      String targetRole = resultRole;
145                      //
146                      // The localReferences call retrieves instances of the desired association
147                      // class and sets the originRole and targetRole properties if currently
148                      // empty.
149                      //
150                      Array<CIMInstance> refs = localReferences(context, objectName,
151                          associationClass, originRole, targetRole, CIMPropertyList(),
152                          resultClass);
153                      for(Uint32 i = 0, n = refs.size(); i < n; ++i)
154                      {
155                          CIMInstance & currentRef = refs[i];
156                          CIMObjectPath currentTarget = getRequiredValue<CIMObjectPath>(
157                              currentRef, targetRole);
158                          handler.deliver(currentTarget);
159                      }
160                      handler.complete();
161                      PEG_METHOD_EXIT();
162 a.dunfey 1.1     }
163                  
164                  
165                  /*****************************************************************************
166                   *
167                   * Implementation of AssociationProvider references method
168                   *
169                   *****************************************************************************/
170                  void InteropProvider::references(
171                      const OperationContext & context,
172                      const CIMObjectPath & objectName,
173                      const CIMName & resultClass,
174                      const String & role,
175                      const Boolean includeQualifiers,
176                      const Boolean includeClassOrigin,
177                      const CIMPropertyList & propertyList,
178                      ObjectResponseHandler & handler)
179                  {
180                      PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,
181                          "InteropProvider::references()");
182 a.dunfey 1.2         initProvider();
183 marek    1.2.4.1     PEG_TRACE((TRC_CONTROLPROVIDER, Tracer::LEVEL4,
184 a.dunfey 1.1             "%s references. objectName= %s , resultClass= %s role= %s includeQualifiers= %s, includeClassOrigin= %s, PropertyList= %s",
185                          thisProvider,
186                          (const char *)objectName.toString().getCString(),
187                          (const char *)resultClass.getString().getCString(),
188                          (const char *)role.getCString(),
189                                        boolToString(includeQualifiers),
190                                        boolToString(includeClassOrigin),
191 marek    1.2.4.1         (const char *)propertyListToString(propertyList).getCString()));
192 a.dunfey 1.1     
193                      handler.processing();
194                      String tmpRole = role;
195                      String tmpTarget;
196                      //
197                      // Makes call to internal references method to get result, supplying the
198                      // role parameter, but obviously not setting a resultRole/target parameter.
199                      //
200                      Array<CIMInstance> refs =
201                          localReferences(context, objectName, resultClass, tmpRole, tmpTarget);
202                      for(Uint32 i = 0, n = refs.size(); i < n; ++i)
203                        handler.deliver((CIMObject)refs[i]);
204                      handler.complete();
205                      PEG_METHOD_EXIT();
206                  }
207                  
208                  /*****************************************************************************
209                   *
210                   * Implementation of AssociationProvider referenceNames method
211                   *
212                   *****************************************************************************/
213 a.dunfey 1.1     void InteropProvider::referenceNames(
214                      const OperationContext & context,
215                      const CIMObjectPath & objectName,
216                      const CIMName & resultClass,
217                      const String & role,
218                      ObjectPathResponseHandler & handler)
219                  {
220                      PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,
221                          "InteropProvider::referenceNames()");
222 a.dunfey 1.2         initProvider();
223 a.dunfey 1.1         handler.processing();
224                  
225                      String tmpRole = role;
226                      String tmpTarget;
227                      //
228                      // Makes call to internal references method to get result, supplying the
229                      // role parameter, but obviously not setting a resultRole/target parameter.
230                      //
231                      Array<CIMInstance> refs =
232                          localReferences(context, objectName, resultClass, tmpRole, tmpTarget);
233                      for(Uint32 i = 0, n = refs.size(); i < n; ++i)
234                      {
235                          handler.deliver(refs[i].getPath());
236                      }
237                  
238                      handler.complete();
239                  
240                      PEG_METHOD_EXIT();
241                  }
242                  
243                  
244 a.dunfey 1.2     PEGASUS_NAMESPACE_END
245 a.dunfey 1.1     // END_OF_FILE

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2