(file) Return to JMPIProviderManager.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ProviderManager2 / JMPI

Diff for /pegasus/src/Pegasus/ProviderManager2/JMPI/JMPIProviderManager.cpp between version 1.71 and 1.79

version 1.71, 2008/06/19 17:57:10 version 1.79, 2009/05/27 05:56:31
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.  
 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;  
 // EMC Corporation; Symantec Corporation; The Open Group.  
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a copy  // Permission is hereby granted, free of charge, to any person obtaining a
 // of this software and associated documentation files (the "Software"), to  // copy of this software and associated documentation files (the "Software"),
 // deal in the Software without restriction, including without limitation the  // to deal in the Software without restriction, including without limitation
 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or  // the rights to use, copy, modify, merge, publish, distribute, sublicense,
 // sell copies of the Software, and to permit persons to whom the Software is  // and/or sell copies of the Software, and to permit persons to whom the
 // furnished to do so, subject to the following conditions:  // Software is furnished to do so, subject to the following conditions:
 // //
 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN  // The above copyright notice and this permission notice shall be included
 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED  // in all copies or substantial portions of the Software.
 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  
 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR  
 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT  
 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN  
 // 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.  
 // //
 //==============================================================================  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
   // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 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.
   //
   //////////////////////////////////////////////////////////////////////////
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
 #include "JMPIProviderManager.h" #include "JMPIProviderManager.h"
Line 64 
Line 62 
  
 #include "Convert.h" #include "Convert.h"
  
   
   //
   //  The following tests were added to allow the provider to supply a
   //  CIMObjectPath in the response.  Before this, the path was always
   //  rebuild by the response functions from the instance.  This resulted
   //  in cases where the key properties were not in the returned instance
   //  (ex. excluded by the property list) so that the path could not be built.
   //  The preferred behavior is for the provider to build the path on response.
   //  However, to cover existing providers the alternate of allowing the
   //  ProviderManager has been kept if the path in the instance is not considered
   //  to exist.
   //  PLEASE: provider writers build/set a proper path into returned objects
   //  See bug 8062
   
   /*
       local function to implement the CIMObjectPath required for a response
       object.
       If there is a path defined in the instance, we simply return this path.
       If not, we use the class to build a path from the instance.
       Note that we are depending on some value in the keybindings to determine
       if we have a path.
   */
   
   void _fixCIMObjectPath(CIMInstance* instance, CIMClass& cls)
   {
       CIMObjectPath op = instance->getPath();
       const Array<CIMKeyBinding> kb = op.getKeyBindings();
       if (kb.size() == 0)
       {
           CIMObjectPath iop = instance->buildPath(cls);
           /* Fix for 4237*/
           iop.setNameSpace(op.getNameSpace());
           instance->setPath(iop);
       }
   }
   
 void JMPIProviderManager::debugPrintMethodPointers (JNIEnv *env, jclass jc) void JMPIProviderManager::debugPrintMethodPointers (JNIEnv *env, jclass jc)
 { {
    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,    PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,
Line 619 
Line 653 
         response = handleSubscriptionInitCompleteRequest (request);         response = handleSubscriptionInitCompleteRequest (request);
         break;         break;
  
       case CIM_INDICATION_SERVICE_DISABLED_REQUEST_MESSAGE:
           response = handleIndicationServiceDisabledRequest (request);
           break;
   
     default:     default:
         PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,         PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,
                    "Unsupported Request %d",                    "Unsupported Request %d",
Line 675 
Line 713 
  
 #define HandlerCatch(handler) \ #define HandlerCatch(handler) \
     catch(CIMException & e)  \     catch(CIMException & e)  \
     { PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL1, \      {   PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,"CIMException: %s", \
                 "Exception: " + e.getMessage()); \              (const char*)e.getMessage().getCString())); \
         handler.setStatus(e.getCode(), e.getContentLanguages(), \         handler.setStatus(e.getCode(), e.getContentLanguages(), \
         e.getMessage()); \         e.getMessage()); \
     } \     } \
     catch(Exception & e) \     catch(Exception & e) \
     { PEG_TRACE_STRING(TRC_PROVIDERMANAGER, Tracer::LEVEL1, \      {   PEG_TRACE((TRC_PROVIDERMANAGER, Tracer::LEVEL1,"Exception: %s", \
                 "Exception: " + e.getMessage()); \              (const char*)e.getMessage().getCString())); \
         handler.setStatus(CIM_ERR_FAILED, e.getContentLanguages(), \         handler.setStatus(CIM_ERR_FAILED, e.getContentLanguages(), \
         e.getMessage()); \         e.getMessage()); \
     } \     } \
Line 694 
Line 732 
  
 static jobjectArray getList(JvmVector *jv, JNIEnv *env, CIMPropertyList &list) static jobjectArray getList(JvmVector *jv, JNIEnv *env, CIMPropertyList &list)
 { {
     Uint32 s=list.size();  
     jobjectArray pl=NULL;     jobjectArray pl=NULL;
     if (s) {      if (!list.isNull())
       {
           Uint32 s=list.size();
        jstring initial=env->NewString(NULL,0);        jstring initial=env->NewString(NULL,0);
        pl=(jobjectArray)env->NewObjectArray(s,jv->StringClassRef,initial);        pl=(jobjectArray)env->NewObjectArray(s,jv->StringClassRef,initial);
        for (Uint32 i=0; i<s; i++) {          for (Uint32 i=0; i<s; i++)
           {
            env->SetObjectArrayElement            env->SetObjectArrayElement
               (pl,i,env->NewStringUTF(list[i].getString().getCString()));               (pl,i,env->NewStringUTF(list[i].getString().getCString()));
        }        }
Line 1542 
Line 1582 
                        throw;                        throw;
                     }                     }
  
                     const CIMObjectPath& op  = ciRet->getPath();  
                     CIMObjectPath        iop = ciRet->buildPath(cls);  
   
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     handler.deliver(*ciRet);                     handler.deliver(*ciRet);
Line 1712 
Line 1749 
                        throw;                        throw;
                     }                     }
  
                     const CIMObjectPath& op  = ciRet->getPath();  
                     CIMObjectPath        iop = ciRet->buildPath(cls);  
   
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     handler.deliver(*ciRet);                     handler.deliver(*ciRet);
Line 1890 
Line 1924 
                        throw;                        throw;
                     }                     }
  
                     const CIMObjectPath& op  = ciRet->getPath();                      _fixCIMObjectPath(ciRet, cls);
                     CIMObjectPath        iop = ciRet->buildPath(cls);  
  
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     iop.setNameSpace(op.getNameSpace());  
   
                     ciRet->setPath(iop);  
                     /* Fix for 4237*/  
   
                     handler.deliver(*ciRet);                     handler.deliver(*ciRet);
                 }                 }
             }             }
Line 2052 
Line 2080 
                        PEG_METHOD_EXIT();                        PEG_METHOD_EXIT();
                        throw;                        throw;
                     }                     }
                       _fixCIMObjectPath(ciRet, cls);
                     const CIMObjectPath& op  = ciRet->getPath();  
                     CIMObjectPath        iop = ciRet->buildPath(cls);  
  
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     iop.setNameSpace(op.getNameSpace());  
   
                     ciRet->setPath(iop);  
                     /* Fix for 4237*/  
   
                     handler.deliver(*ciRet);                     handler.deliver(*ciRet);
                 }                 }
             }             }
Line 4609 
Line 4630 
                        throw;                        throw;
                     }                     }
  
                     const CIMObjectPath& op    = ciRet->getPath();                      _fixCIMObjectPath(ciRet, cls);
                     CIMObjectPath        iop   = ciRet->buildPath(cls);  
  
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     iop.setNameSpace(op.getNameSpace());  
                     ciRet->setPath(iop);  
   
                     handler.deliver(*ciRet);                     handler.deliver(*ciRet);
                 }                 }
             }             }
Line 4778 
Line 4795 
                        throw;                        throw;
                     }                     }
  
                     const CIMObjectPath& op    = ciRet->getPath();                      _fixCIMObjectPath(ciRet, cls);
                     CIMObjectPath        iop   = ciRet->buildPath(cls);  
  
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     iop.setNameSpace(op.getNameSpace());  
                     ciRet->setPath(iop);  
   
                     handler.deliver(*ciRet);                     handler.deliver(*ciRet);
                 }                 }
             }             }
Line 4956 
Line 4969 
                        throw;                        throw;
                     }                     }
  
                     const CIMObjectPath& op    = ciRet->getPath();                      _fixCIMObjectPath(ciRet, cls);
                     CIMObjectPath        iop   = ciRet->buildPath(cls);  
  
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     iop.setNameSpace(op.getNameSpace());  
                     ciRet->setPath(iop);  
   
                     handler.deliver(*ciRet);                     handler.deliver(*ciRet);
                 }                 }
             }             }
Line 5111 
Line 5120 
                        throw;                        throw;
                     }                     }
  
                     const CIMObjectPath& op = ciRet->getPath();                      _fixCIMObjectPath(ciRet, cls);
                     CIMObjectPath iop = ciRet->buildPath(cls);  
  
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     iop.setNameSpace(op.getNameSpace());  
                     ciRet->setPath(iop);  
   
                     handler.deliver(*ciRet);                     handler.deliver(*ciRet);
                 }                 }
             }             }
Line 6076 
Line 6081 
                        throw;                        throw;
                     }                     }
  
                     const CIMObjectPath& op    = ciRet->getPath();                      _fixCIMObjectPath(ciRet, cls);
                     CIMObjectPath        iop   = ciRet->buildPath(cls);  
  
                     JMPIjvm::checkException(env);                     JMPIjvm::checkException(env);
  
                     iop.setNameSpace(op.getNameSpace());  
                     ciRet->setPath(iop);  
   
                     handler.deliver(*ciRet);                     handler.deliver(*ciRet);
                 }                 }
             }             }
Line 8265 
Line 8266 
     String& providerName,     String& providerName,
     String& location)     String& location)
 { {
     Uint32 pos = pInstance.findProperty(CIMName ("Name"));      Uint32 pos = pInstance.findProperty(PEGASUS_PROPERTYNAME_NAME);
     pInstance.getProperty(pos).getValue().get(providerName);     pInstance.getProperty(pos).getValue().get(providerName);
  
     pos = pmInstance.findProperty(CIMName ("Location"));     pos = pmInstance.findProperty(CIMName ("Location"));
Line 9029 
Line 9030 
     // get provider module name     // get provider module name
     String moduleName;     String moduleName;
     CIMInstance mInstance = request->providerModule;     CIMInstance mInstance = request->providerModule;
     Uint32 pos = mInstance.findProperty(CIMName ("Name"));      Uint32 pos = mInstance.findProperty(PEGASUS_PROPERTYNAME_NAME);
  
     if(pos != PEG_NOT_FOUND)     if(pos != PEG_NOT_FOUND)
     {     {
Line 9111 
Line 9112 
     return(response);     return(response);
 } }
  
   Message* JMPIProviderManager::handleIndicationServiceDisabledRequest(
       Message* message)
   {
       PEG_METHOD_ENTER(TRC_PROVIDERMANAGER,
           "JMPIProviderManager::_handleIndicationServiceDisabledRequest");
   
       CIMIndicationServiceDisabledRequestMessage* request =
           dynamic_cast<CIMIndicationServiceDisabledRequestMessage*>(message);
       PEGASUS_ASSERT(request != 0);
   
       CIMIndicationServiceDisabledResponseMessage* response =
           dynamic_cast<CIMIndicationServiceDisabledResponseMessage*>(
               request->buildResponse());
       PEGASUS_ASSERT(response != 0);
   
       _subscriptionInitComplete = false;
   
       PEG_METHOD_EXIT ();
       return response;
   }
   
 Message * JMPIProviderManager::handleSubscriptionInitCompleteRequest( Message * JMPIProviderManager::handleSubscriptionInitCompleteRequest(
     const Message * message)     const Message * message)
 { {
Line 9180 
Line 9202 
     CIMValue genericValue;     CIMValue genericValue;
  
     genericValue = providerId.getModule().getProperty(     genericValue = providerId.getModule().getProperty(
         providerId.getModule().findProperty("Name")).getValue();          providerId.getModule().findProperty(
               PEGASUS_PROPERTYNAME_NAME)).getValue();
     genericValue.get(moduleName);     genericValue.get(moduleName);
  
     genericValue = providerId.getProvider().getProperty(     genericValue = providerId.getProvider().getProperty(
         providerId.getProvider().findProperty("Name")).getValue();          providerId.getProvider().findProperty(
               PEGASUS_PROPERTYNAME_NAME)).getValue();
     genericValue.get(providerName);     genericValue.get(providerName);
  
     genericValue = providerId.getModule().getProperty(     genericValue = providerId.getModule().getProperty(


Legend:
Removed from v.1.71  
changed lines
  Added in v.1.79

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2