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

Diff for /pegasus/src/Pegasus/ControlProviders/InteropProvider/Namespace.cpp between version 1.2.4.1 and 1.14.2.1

version 1.2.4.1, 2007/04/04 11:04:46 version 1.14.2.1, 2009/08/18 17:01:57
Line 1 
Line 1 
 //%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.  
 // //
 //==============================================================================  //////////////////////////////////////////////////////////////////////////
   //
   //%/////////////////////////////////////////////////////////////////////////////
  
 /////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
 //  Interop Provider - This provider services those classes from the //  Interop Provider - This provider services those classes from the
Line 50 
Line 49 
 #include "InteropProvider.h" #include "InteropProvider.h"
 #include "InteropProviderUtils.h" #include "InteropProviderUtils.h"
 #include "InteropConstants.h" #include "InteropConstants.h"
   #include <Pegasus/Common/ArrayIterator.h>
  
 PEGASUS_USING_STD; PEGASUS_USING_STD;
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
Line 91 
Line 91 
 Array<CIMInstance> InteropProvider::enumNamespaceInstances() Array<CIMInstance> InteropProvider::enumNamespaceInstances()
 { {
     PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,     PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,
         "InteropProvider::_getInstancesCIMNamespace()");          "InteropProvider::enumNamespaceInstances()");
  
     Array<CIMNamespaceName> namespaceNames = repository->enumerateNameSpaces();     Array<CIMNamespaceName> namespaceNames = repository->enumerateNameSpaces();
     Array<CIMInstance> instanceArray;     Array<CIMInstance> instanceArray;
Line 115 
Line 115 
 Array<CIMInstance> InteropProvider::enumNamespaceInManagerInstances() Array<CIMInstance> InteropProvider::enumNamespaceInManagerInstances()
 { {
     PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,     PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,
         "InteropProvider::buildInstancesNamespaceInManager");          "InteropProvider::enumNamespaceInManagerInstances()");
  
     Array<CIMInstance> namespaceInstances = enumNamespaceInstances();     Array<CIMInstance> namespaceInstances = enumNamespaceInstances();
  
Line 126 
Line 126 
  
     CIMInstance instanceskel = buildInstanceSkeleton(     CIMInstance instanceskel = buildInstanceSkeleton(
         PEGASUS_NAMESPACENAME_INTEROP,         PEGASUS_NAMESPACENAME_INTEROP,
         PEGASUS_CLASSNAME_PG_NAMESPACEINMANAGER, targetClass);          PEGASUS_CLASSNAME_PG_NAMESPACEINMANAGER, true, targetClass);
     // Build and instance for each namespace instance.     // Build and instance for each namespace instance.
     for (Uint32 i = 0 ; i < namespaceInstances.size() ; i++)     for (Uint32 i = 0 ; i < namespaceInstances.size() ; i++)
     {     {
Line 154 
Line 154 
     const String & nameSpace)     const String & nameSpace)
 { {
     PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,     PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,
         "InteropProvider::buildInstancePGNamespace");          "InteropProvider::buildNamespaceInstance()");
  
     CIMClass targetClass;     CIMClass targetClass;
     CIMInstance instance = buildInstanceSkeleton(     CIMInstance instance = buildInstanceSkeleton(
         PEGASUS_NAMESPACENAME_INTEROP, PEGASUS_CLASSNAME_PGNAMESPACE,         PEGASUS_NAMESPACENAME_INTEROP, PEGASUS_CLASSNAME_PGNAMESPACE,
         targetClass);          true, targetClass);
  
     setCommonKeys(instance);     setCommonKeys(instance);
  
Line 199 
Line 199 
     //     //
     CIMRepository::NameSpaceAttributes attributes;     CIMRepository::NameSpaceAttributes attributes;
     repository->getNameSpaceAttributes(nameSpace, attributes);     repository->getNameSpaceAttributes(nameSpace, attributes);
     String parent = String::EMPTY;      String parent;
     String name = String::EMPTY;      String name;
     Boolean shareable = false;     Boolean shareable = false;
     Boolean updatesAllowed = true;     Boolean updatesAllowed = true;
     for (CIMRepository::NameSpaceAttributes::Iterator i = attributes.start();     for (CIMRepository::NameSpaceAttributes::Iterator i = attributes.start();
Line 238 
Line 238 
         {         {
             parent=value;             parent=value;
         }         }
   #ifdef PEGASUS_ENABLE_REMOTE_CMPI
           else if (String::equalNoCase(key,"remoteInfo"))
           {
               //ATTN: remoteInfo property is not part of PG_Namespace class,
               // add the property to PG_Namespace instance once avilable.
           }
   #endif
         else         else
         {         {
             PEG_METHOD_EXIT();             PEG_METHOD_EXIT();
Line 268 
Line 275 
     return instance;     return instance;
 } }
  
   CIMInstance InteropProvider::getNameSpaceInstance(
       const CIMObjectPath & ref)
   {
       PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,
           "getNameSpaceInstance()");
       Array<CIMKeyBinding> keyBindings = ref.getKeyBindings();
       ConstArrayIterator<CIMKeyBinding> keyIter(keyBindings);
       String name;
   
       for (Uint32 i = 0; i < keyIter.size(); i++)
       {
           if (keyIter[i].getName().equal(CIM_NAMESPACE_PROPERTY_NAME))
           {
               name = keyIter[i].getValue();
               break;
           }
       }
   
       if(repository->nameSpaceExists(name))
       {
           CIMInstance newInst = buildNamespaceInstance(name);
           if( newInst.getPath() != ref )
           {
               throw CIMObjectNotFoundException(ref.toString());
           }
           PEG_METHOD_EXIT();
           return newInst;
       }
   
       PEG_METHOD_EXIT();
       throw CIMObjectNotFoundException(ref.toString());
   }
   
 // //
 // Function that takes an instance of the CIM_Namespace class, checks whether // Function that takes an instance of the CIM_Namespace class, checks whether
 // the key properties are present, // the key properties are present,
Line 278 
Line 318 
     const String & objectManagerName)     const String & objectManagerName)
 { {
     PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,     PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,
         "InteropProvider::buildNamespacePath");          "buildNamespacePath()");
  
     unsigned int propIndex = PEG_NOT_FOUND;     unsigned int propIndex = PEG_NOT_FOUND;
     CIMName propertyName;     CIMName propertyName;
Line 319 
Line 359 
  
     if(propIndex == PEG_NOT_FOUND)     if(propIndex == PEG_NOT_FOUND)
     {     {
         PEG_TRACE_STRING(TRC_CONTROLPROVIDER, Tracer::LEVEL4,          PEG_TRACE((TRC_CONTROLPROVIDER, Tracer::LEVEL1,
             "Invalid CIM_Namespace Key Property " +  propertyName.getString());              "Invalid CIM_Namespace Key Property %s",
               (const char*)propertyName.getString().getCString()));
         PEG_METHOD_EXIT();         PEG_METHOD_EXIT();
         throw CIMInvalidParameterException(         throw CIMInvalidParameterException(
             "Invalid CIM_Namespace key property: " + propertyName.getString());             "Invalid CIM_Namespace key property: " + propertyName.getString());
Line 374 
Line 415 
     const String & objectManagerName)     const String & objectManagerName)
 { {
     PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,     PEG_METHOD_ENTER(TRC_CONTROLPROVIDER,
         "InteropProvider::validatePGNamespaceKeys");          "validateNamespaceKeys()");
  
     CIMName propertyName;     CIMName propertyName;
     if(!validateRequiredProperty(     if(!validateRequiredProperty(
Line 427 
Line 468 
     }     }
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
     return CIMNamespaceName(getKeyValue(objectPath, CIM_NAMESPACE_PROPERTY_NAME));      return CIMNamespaceName(
           getKeyValue(objectPath, CIM_NAMESPACE_PROPERTY_NAME));
 } }
  
 void InteropProvider::deleteNamespace( void InteropProvider::deleteNamespace(
Line 448 
Line 490 
  
     repository->deleteNameSpace(deleteNamespaceName);     repository->deleteNameSpace(deleteNamespaceName);
  
     PEG_TRACE_STRING(TRC_CONTROLPROVIDER, Tracer::LEVEL4,      PEG_TRACE((TRC_CONTROLPROVIDER, Tracer::LEVEL4,
         "Namespace = " + deleteNamespaceName.getString() +          "Namespace = %s successfully deleted.",
             " successfully deleted.");          (const char*)deleteNamespaceName.getString().getCString()));
   
     Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,  
         "Interop Provider Delete Namespace: $0",  
         deleteNamespaceName.getString());  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
 } }
  
Line 472 
Line 511 
         newInstanceReference, namespaceInstance, objectManagerName);         newInstanceReference, namespaceInstance, objectManagerName);
  
     // Create the new namespace     // Create the new namespace
     try  
     {      PEG_TRACE((TRC_CONTROLPROVIDER, Tracer::LEVEL4,
         PEG_TRACE_STRING(TRC_CONTROLPROVIDER, Tracer::LEVEL4,          "Namespace = %s to be created.",
             "Namespace = " + newNamespaceName.getString() +          (const char*)newNamespaceName.getString().getCString()));
                 " to be created.");  
  
         CIMRepository::NameSpaceAttributes attributes;         CIMRepository::NameSpaceAttributes attributes;
  
Line 516 
Line 554 
         //         //
         repository->createNameSpace(newNamespaceName, attributes);         repository->createNameSpace(newNamespaceName, attributes);
  
         PEG_TRACE_STRING(TRC_CONTROLPROVIDER, Tracer::LEVEL4,      PEG_TRACE((
             "Namespace = " + newNamespaceName.getString() +          TRC_CONTROLPROVIDER,
                 " successfully created.");          Tracer::LEVEL4,
         Logger::put(Logger::STANDARD_LOG, System::CIMSERVER, Logger::TRACE,          "Namespace %s: Shareable = %s, Updates allowed: %s, Parent: %s"
             "Create Namespace: Shareable = $0, Updates allowed: $1,  Parent: $2",              "  successfully created.",
             newNamespaceName.getString(), shareable?          (const char*) newNamespaceName.getString().getCString(),
                     "true" : "false", shareable? "true" : "false", parent );          shareable? "true" : "false",
           updatesAllowed? "true" : "false",
     }          (const char*) parent.getCString()));
     catch(const CIMException&)  
     {  
         PEG_METHOD_EXIT();  
         throw;  
     }  
     catch(const Exception&)  
     {  
         PEG_METHOD_EXIT();  
         throw;  
     }  
  
     return newInstanceReference;     return newInstanceReference;
 } }


Legend:
Removed from v.1.2.4.1  
changed lines
  Added in v.1.14.2.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2