version 1.2, 2006/11/03 19:53:38
|
version 1.11, 2009/03/02 14:19:15
|
|
|
//%2006//////////////////////////////////////////////////////////////////////// |
//%LICENSE//////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development |
// Licensed to The Open Group (TOG) under one or more contributor license |
// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems. |
// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with |
// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.; |
// this work for additional information regarding copyright ownership. |
// IBM Corp.; EMC Corporation, The Open Group. |
// Each contributor licenses this file to you under the OpenPegasus Open |
// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.; |
// Source License; you may not use this file except in compliance with the |
// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group. |
// License. |
// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
// |
// EMC Corporation; VERITAS Software Corporation; The Open Group. |
// Permission is hereby granted, free of charge, to any person obtaining a |
// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.; |
// copy of this software and associated documentation files (the "Software"), |
// EMC Corporation; Symantec Corporation; The Open Group. |
// to deal in the Software without restriction, including without limitation |
// |
// the rights to use, copy, modify, merge, publish, distribute, sublicense, |
// Permission is hereby granted, free of charge, to any person obtaining a copy |
// and/or sell copies of the Software, and to permit persons to whom the |
// of this software and associated documentation files (the "Software"), to |
// Software is furnished to do so, subject to the following conditions: |
// deal in the Software without restriction, including without limitation the |
// |
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
// The above copyright notice and this permission notice shall be included |
// sell copies of the Software, and to permit persons to whom the Software is |
// in all copies or substantial portions of the Software. |
// furnished to do so, subject to the following conditions: |
// |
// |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN |
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED |
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. |
// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT |
// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY |
// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR |
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT |
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
// | // |
//============================================================================== |
////////////////////////////////////////////////////////////////////////// |
|
// |
|
//%//////////////////////////////////////////////////////////////////////////// |
| |
| |
/////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////// |
|
|
// Server Profile | // Server Profile |
// | // |
// Please see PG_ServerProfile20.mof in the directory | // Please see PG_ServerProfile20.mof in the directory |
// $(PEGASUS_ROOT)/Schemas/Pegasus/InterOp/VER20 for retails regarding the |
// $(PEGASUS_ROOT)/Schemas/Pegasus/InterOp/VER20 for details regarding the |
// classes supported by this control provider. | // classes supported by this control provider. |
// | // |
// Interop forces all creates to the PEGASUS_NAMESPACENAME_INTEROP | // Interop forces all creates to the PEGASUS_NAMESPACENAME_INTEROP |
|
|
PEG_METHOD_ENTER(TRC_CONTROLPROVIDER, | PEG_METHOD_ENTER(TRC_CONTROLPROVIDER, |
"InteropProvider::associators()"); | "InteropProvider::associators()"); |
initProvider(); | initProvider(); |
Tracer::trace(TRC_CONTROLPROVIDER, Tracer::LEVEL4, |
PEG_TRACE((TRC_CONTROLPROVIDER, Tracer::LEVEL4, |
"%s associators. objectName= %s , assocClass= %s resultClass= %s role= %s resultRole %includeQualifiers= %s, includeClassOrigin= %s, PropertyList= %s", |
"%s associators. objectName= %s, assocClass= %s resultClass= %s " |
|
"role= %s resultRole %s, includeQualifiers= %s, " |
|
"includeClassOrigin= %s, PropertyList= %s", |
thisProvider, | thisProvider, |
(const char *)objectName.toString().getCString(), | (const char *)objectName.toString().getCString(), |
(const char *)associationClass.getString().getCString(), | (const char *)associationClass.getString().getCString(), |
|
|
(const char *)resultRole.getCString(), | (const char *)resultRole.getCString(), |
boolToString(includeQualifiers), | boolToString(includeQualifiers), |
boolToString(includeClassOrigin), | boolToString(includeClassOrigin), |
(const char *)propertyListToString(propertyList).getCString()); |
(const char *)propertyListToString(propertyList).getCString())); |
| |
handler.processing(); | handler.processing(); |
String originRole = role; | String originRole = role; |
String targetRole = resultRole; | String targetRole = resultRole; |
|
Uint32 numIterations = 1; |
// | // |
// The localReferences call retrieves instances of the desired association | // The localReferences call retrieves instances of the desired association |
// class and sets the originRole and targetRole properties if currently | // class and sets the originRole and targetRole properties if currently |
// empty. | // empty. |
// | // |
Array<CIMInstance> refs = localReferences(context, objectName, |
if (associationClass.equal(PEGASUS_CLASSNAME_PG_REFERENCEDPROFILE)) |
associationClass, originRole, targetRole, CIMPropertyList(), |
{ |
|
if (originRole.size() == 0 && targetRole.size() == 0) |
|
{ |
|
originRole = String("Antecedent"); |
|
targetRole = String("Dependent"); |
|
numIterations = 2; |
|
} |
|
} |
|
for (Uint32 i = 0; i < numIterations; ++i) |
|
{ |
|
Array<CIMInstance> refs = localReferences( |
|
context, |
|
objectName, |
|
associationClass, |
|
originRole, |
|
targetRole, |
|
CIMPropertyList(), |
resultClass); | resultClass); |
for(Uint32 i = 0, n = refs.size(); i < n; ++i) |
for (Uint32 j = 0, n = refs.size(); j < n; ++j) |
{ | { |
CIMInstance & currentRef = refs[i]; |
CIMInstance & currentRef = refs[j]; |
// Retrieve the "other side" of the association | // Retrieve the "other side" of the association |
CIMObjectPath currentTarget = getRequiredValue<CIMObjectPath>( | CIMObjectPath currentTarget = getRequiredValue<CIMObjectPath>( |
currentRef, targetRole); |
currentRef, |
CIMInstance tmpInstance = localGetInstance(context, currentTarget, |
targetRole); |
|
CIMInstance tmpInstance = localGetInstance( |
|
context, |
|
currentTarget, |
propertyList); | propertyList); |
tmpInstance.setPath(currentTarget); | tmpInstance.setPath(currentTarget); |
handler.deliver(tmpInstance); | handler.deliver(tmpInstance); |
} | } |
|
if (numIterations == 2) |
|
{ |
|
originRole = String("Dependent"); |
|
targetRole = String("Antecedent"); |
|
} |
|
} |
handler.complete(); | handler.complete(); |
| |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
|
|
PEG_METHOD_ENTER(TRC_CONTROLPROVIDER, | PEG_METHOD_ENTER(TRC_CONTROLPROVIDER, |
"InteropProvider::associatorNames()"); | "InteropProvider::associatorNames()"); |
initProvider(); | initProvider(); |
Tracer::trace(TRC_CONTROLPROVIDER, Tracer::LEVEL4, |
PEG_TRACE((TRC_CONTROLPROVIDER, Tracer::LEVEL4, |
"%s associatorNames. objectName= %s , assocClass= %s resultClass= %s role= %s resultRole", |
"%s associatorNames.objectName= %s, assocClass= %s resultClass= %s " |
|
"role= %s resultRole = %s", |
thisProvider, | thisProvider, |
(const char *)objectName.toString().getCString(), | (const char *)objectName.toString().getCString(), |
(const char *)associationClass.getString().getCString(), | (const char *)associationClass.getString().getCString(), |
(const char *)resultClass.getString().getCString(), | (const char *)resultClass.getString().getCString(), |
(const char *)role.getCString(), | (const char *)role.getCString(), |
(const char *)resultRole.getCString()); |
(const char *)resultRole.getCString())); |
| |
handler.processing(); | handler.processing(); |
String originRole = role; | String originRole = role; |
String targetRole = resultRole; | String targetRole = resultRole; |
|
Uint32 numIterations = 1; |
// | // |
// The localReferences call retrieves instances of the desired association | // The localReferences call retrieves instances of the desired association |
// class and sets the originRole and targetRole properties if currently | // class and sets the originRole and targetRole properties if currently |
// empty. | // empty. |
// | // |
Array<CIMInstance> refs = localReferences(context, objectName, |
if (associationClass.equal(PEGASUS_CLASSNAME_PG_REFERENCEDPROFILE)) |
associationClass, originRole, targetRole, CIMPropertyList(), |
{ |
|
if (originRole.size() == 0 && targetRole.size() == 0) |
|
{ |
|
originRole = String("Antecedent"); |
|
targetRole = String("Dependent"); |
|
numIterations = 2; |
|
} |
|
} |
|
for (Uint32 i = 0; i < numIterations; ++i) |
|
{ |
|
Array<CIMInstance> refs = localReferences( |
|
context, |
|
objectName, |
|
associationClass, |
|
originRole, |
|
targetRole, |
|
CIMPropertyList(), |
resultClass); | resultClass); |
for(Uint32 i = 0, n = refs.size(); i < n; ++i) |
for (Uint32 j = 0, n = refs.size(); j < n; ++j) |
{ | { |
CIMInstance & currentRef = refs[i]; |
CIMInstance & currentRef = refs[j]; |
CIMObjectPath currentTarget = getRequiredValue<CIMObjectPath>( | CIMObjectPath currentTarget = getRequiredValue<CIMObjectPath>( |
currentRef, targetRole); |
currentRef, |
|
targetRole); |
handler.deliver(currentTarget); | handler.deliver(currentTarget); |
} | } |
|
if (numIterations == 2) |
|
{ |
|
originRole = String("Dependent"); |
|
targetRole = String("Antecedent"); |
|
} |
|
} |
handler.complete(); | handler.complete(); |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
} | } |
|
|
PEG_METHOD_ENTER(TRC_CONTROLPROVIDER, | PEG_METHOD_ENTER(TRC_CONTROLPROVIDER, |
"InteropProvider::references()"); | "InteropProvider::references()"); |
initProvider(); | initProvider(); |
Tracer::trace(TRC_CONTROLPROVIDER, Tracer::LEVEL4, |
PEG_TRACE((TRC_CONTROLPROVIDER, Tracer::LEVEL4, |
"%s references. objectName= %s , resultClass= %s role= %s includeQualifiers= %s, includeClassOrigin= %s, PropertyList= %s", |
"%s references. objectName= %s, resultClass= %s role= %s " |
|
"includeQualifiers= %s, includeClassOrigin= %s, PropertyList= %s", |
thisProvider, | thisProvider, |
(const char *)objectName.toString().getCString(), | (const char *)objectName.toString().getCString(), |
(const char *)resultClass.getString().getCString(), | (const char *)resultClass.getString().getCString(), |
(const char *)role.getCString(), | (const char *)role.getCString(), |
boolToString(includeQualifiers), | boolToString(includeQualifiers), |
boolToString(includeClassOrigin), | boolToString(includeClassOrigin), |
(const char *)propertyListToString(propertyList).getCString()); |
(const char *)propertyListToString(propertyList).getCString())); |
| |
handler.processing(); | handler.processing(); |
String tmpRole = role; | String tmpRole = role; |
String tmpTarget; | String tmpTarget; |
|
Uint32 numIterations = 1; |
// | // |
// Makes call to internal references method to get result, supplying the | // Makes call to internal references method to get result, supplying the |
// role parameter, but obviously not setting a resultRole/target parameter. | // role parameter, but obviously not setting a resultRole/target parameter. |
// | // |
Array<CIMInstance> refs = |
if (resultClass.equal(PEGASUS_CLASSNAME_PG_REFERENCEDPROFILE)) |
localReferences(context, objectName, resultClass, tmpRole, tmpTarget); |
{ |
for(Uint32 i = 0, n = refs.size(); i < n; ++i) |
if (tmpRole.size() == 0) |
handler.deliver((CIMObject)refs[i]); |
{ |
|
tmpRole = String("Antecedent"); |
|
tmpTarget = String("Dependent"); |
|
numIterations = 2; |
|
} |
|
} |
|
for (Uint32 i = 0; i < numIterations; ++i) |
|
{ |
|
Array<CIMInstance> refs = localReferences( |
|
context, |
|
objectName, |
|
resultClass, |
|
tmpRole, |
|
tmpTarget); |
|
for (Uint32 j = 0, n = refs.size(); j < n; ++j) |
|
{ |
|
refs[j].filter(includeQualifiers, includeClassOrigin, propertyList); |
|
handler.deliver((CIMObject)refs[j]); |
|
} |
|
if (numIterations == 2) |
|
{ |
|
tmpRole = String("Dependent"); |
|
tmpTarget = String("Antecedent"); |
|
} |
|
} |
handler.complete(); | handler.complete(); |
PEG_METHOD_EXIT(); | PEG_METHOD_EXIT(); |
} | } |
|
|
| |
String tmpRole = role; | String tmpRole = role; |
String tmpTarget; | String tmpTarget; |
|
Uint32 numIterations = 1; |
// | // |
// Makes call to internal references method to get result, supplying the | // Makes call to internal references method to get result, supplying the |
// role parameter, but obviously not setting a resultRole/target parameter. | // role parameter, but obviously not setting a resultRole/target parameter. |
// | // |
Array<CIMInstance> refs = |
if (resultClass.equal(PEGASUS_CLASSNAME_PG_REFERENCEDPROFILE)) |
localReferences(context, objectName, resultClass, tmpRole, tmpTarget); |
|
for(Uint32 i = 0, n = refs.size(); i < n; ++i) |
|
{ | { |
handler.deliver(refs[i].getPath()); |
if (tmpRole.size() == 0) |
|
{ |
|
tmpRole = String("Antecedent"); |
|
tmpTarget = String("Dependent"); |
|
numIterations = 2; |
|
} |
|
} |
|
for (Uint32 i = 0; i < numIterations; ++i) |
|
{ |
|
Array<CIMInstance> refs = localReferences( |
|
context, |
|
objectName, |
|
resultClass, |
|
tmpRole, |
|
tmpTarget); |
|
for (Uint32 j = 0, n = refs.size(); j < n; ++j) |
|
{ |
|
handler.deliver(refs[j].getPath()); |
|
} |
|
if (numIterations == 2) |
|
{ |
|
tmpRole = String("Dependent"); |
|
tmpTarget = String("Antecedent"); |
|
} |
} | } |
| |
handler.complete(); | handler.complete(); |