/sblim-cmpi-samba-1.0/provider/Linux_SambaShareOptions/CmpiLinux_SambaShareOptionsProvider.cpp
C++ | 446 lines | 222 code | 89 blank | 135 comment | 7 complexity | d8ba9ddebc8a44c0d19b778ffe5182e8 MD5 | raw file
Possible License(s): EPL-1.0
- // =======================================================================
- // CmpiLinux_SambaShareOptionsProvider.cpp
- // created on Fri, 23 Jun 2006 using ECUTE 2.2.1
- //
- // Copyright (c) 2006, 2009, International Business Machines
- //
- // THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
- // ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
- // CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
- //
- // You can obtain a current copy of the Eclipse Public License from
- // http://www.opensource.org/licenses/eclipse-1.0.php
- //
- // Author: generated
- //
- // Contributors:
- // Wolfgang Taphorn <taphorn@de.ibm.com>
- // Mukunda Chowdaiah <cmukunda@in.ibm.com>
- // Ashoka S Rao <ashoka.rao@in.ibm.com>
- // Rodrigo Ceron <rceron@br.ibm.com>
- // Riyashmon Haneefa <riyashh1@in.ibm.com>
- //
- // =======================================================================
- #include "CmpiLinux_SambaShareOptionsProvider.h"
- #include "ArrayConverter.h"
- #include "Linux_SambaShareOptionsManualInstance.h"
- #include "Linux_SambaShareOptionsRepositoryInstance.h"
- #include <iostream>
- #include <strings.h>
- namespace genProvider {
- //----------------------------------------------------------------------------
- CmpiLinux_SambaShareOptionsProvider::CmpiLinux_SambaShareOptionsProvider(
- const CmpiBroker& aBroker,
- const CmpiContext& aContext)
- : CmpiBaseMI(aBroker,aContext),
- CmpiInstanceMI(aBroker,aContext),
- CmpiMethodMI(aBroker,aContext),
- m_cmpiBroker(aBroker) {
-
- m_interfaceP = Linux_SambaShareOptionsFactory::getImplementation();
- #ifdef DEBUG
- std::cout << "Provider was constructed" << std::endl;
- #endif
-
- }
-
- //----------------------------------------------------------------------------
- CmpiLinux_SambaShareOptionsProvider::~CmpiLinux_SambaShareOptionsProvider() {
- delete m_interfaceP;
- }
-
- //----------------------------------------------------------------------------
- int
- CmpiLinux_SambaShareOptionsProvider::isUnloadable() const {
- return 0;
- }
-
- //----------------------------------------------------------------------------
- void
- CmpiLinux_SambaShareOptionsProvider::completeInstance(
- const Linux_SambaShareOptionsInstanceName& anInstanceName,
- CmpiInstance& anInstance,
- const CmpiContext& aContext) {
-
- Linux_SambaShareOptionsInstanceName shadowInstanceName(anInstanceName);
- shadowInstanceName.setNamespace("IBMShadow/cimv2");
- CmpiObjectPath cmpiObjectPath = shadowInstanceName.getObjectPath();
-
- try {
- const char* propertiesP = 0;
- CmpiInstance shadowInstance = m_cmpiBroker.getInstance(
- aContext,
- cmpiObjectPath,
- &propertiesP);
- copyShadowData(&shadowInstance,&anInstance);
- } catch (const CmpiStatus& rc) {}
-
- }
-
- //----------------------------------------------------------------------------
- void
- CmpiLinux_SambaShareOptionsProvider::copyShadowData(
- const CmpiInstance* aSourceInstanceP,
- CmpiInstance* aTargetInstanceP) {
- if (aSourceInstanceP && aTargetInstanceP) {
-
- }
- }
- //----------------------------------------------------------------------------
- CmpiInstance*
- CmpiLinux_SambaShareOptionsProvider::getShadowInstance(
- const CmpiInstance& anInstance,
- const Linux_SambaShareOptionsInstanceName& anInstanceName) {
-
- Linux_SambaShareOptionsInstanceName shadowInstanceName(anInstanceName);
- shadowInstanceName.setNamespace("IBMShadow/cimv2");
- CmpiObjectPath cmpiObjectPath = shadowInstanceName.getObjectPath();
-
- CmpiInstance* targetP = new CmpiInstance(cmpiObjectPath);
-
- if (targetP) {
- copyShadowData(&anInstance,targetP);
- if (0 == targetP->getPropertyCount()) {
- delete targetP;
- targetP = 0;
- }
- }
-
- return targetP;
-
- }
- //----------------------------------------------------------------------------
- void
- CmpiLinux_SambaShareOptionsProvider::removeDanglingShadowInstances (
- const Linux_SambaShareOptionsInstanceNameEnumeration& anInstanceNameEnumerations) {
-
- // TODO: enumerate shadow instance names and remove those not included
- // in anInstanceNameEnumeration
-
- }
-
- //----------------------------------------------------------------------------
- // Provider Factory
- //----------------------------------------------------------------------------
- CMProviderBase(CmpiLinux_SambaShareOptionsProvider);
- CMInstanceMIFactory(
- CmpiLinux_SambaShareOptionsProvider,
- CmpiLinux_SambaShareOptionsProvider);
- CMMethodMIFactory(
- CmpiLinux_SambaShareOptionsProvider,
- CmpiLinux_SambaShareOptionsProvider);
-
-
- //----------------------------------------------------------------------------
- // Instance Provider Interface
- //----------------------------------------------------------------------------
- //----------------------------------------------------------------------------
- CmpiStatus
- CmpiLinux_SambaShareOptionsProvider::enumInstanceNames(
- const CmpiContext& aContext,
- CmpiResult& aResult,
- const CmpiObjectPath& aCop) {
-
- #ifdef DEBUG
- std::cout << "enumerating instanceNames" << std::endl;
- #endif
- CmpiString nameSpace = aCop.getNameSpace();
- const char* nameSpaceP = nameSpace.charPtr();
- Linux_SambaShareOptionsInstanceNameEnumeration enumeration;
- m_interfaceP->enumInstanceNames(
- aContext,
- m_cmpiBroker,
- nameSpaceP,
- enumeration);
-
- while (enumeration.hasNext() ){
- const Linux_SambaShareOptionsInstanceName& instanceName = enumeration.getNext();
- CmpiObjectPath objectPath = instanceName.getObjectPath();
- aResult.returnData(objectPath);
- }
-
- // we make housekeeping
- removeDanglingShadowInstances(enumeration);
-
- aResult.returnDone();
- return CmpiStatus(CMPI_RC_OK);
- }
- //----------------------------------------------------------------------------
- CmpiStatus
- CmpiLinux_SambaShareOptionsProvider::enumInstances(
- const CmpiContext& aContext,
- CmpiResult& aResult,
- const CmpiObjectPath& aCop,
- const char** aPropertiesPP) {
-
- #ifdef DEBUG
- std::cout << "enumerating instances" << std::endl;
- #endif
- CmpiString nameSpace = aCop.getNameSpace();
- const char* nameSpaceP = nameSpace.charPtr();
-
- Linux_SambaShareOptionsManualInstanceEnumeration enumeration;
- m_interfaceP->enumInstances(
- aContext,
- m_cmpiBroker,
- nameSpaceP,
- aPropertiesPP,
- enumeration);
- #ifdef DEBUG
- std::cout << "enumerated" << std::endl;
- #endif
-
- while (enumeration.hasNext()) {
- const Linux_SambaShareOptionsManualInstance& instance = enumeration.getNext();
-
- #ifdef DEBUG
- std::cout << "enumerating getNext" << std::endl;
- #endif
-
- CmpiInstance cmpiInstance = instance.getCmpiInstance(aPropertiesPP);
- #ifdef DEBUG
- std::cout << "transformed" << std::endl;
- #endif
-
- //add the static data
- // MJ: No, this is done in the implementation (or DefaultImplementation)
- // completeInstance(instance.getInstanceName(),cmpiInstance,aContext);
-
- aResult.returnData(cmpiInstance);
-
- }
-
- aResult.returnDone();
- return CmpiStatus(CMPI_RC_OK);
-
- }
-
- //----------------------------------------------------------------------------
- CmpiStatus
- CmpiLinux_SambaShareOptionsProvider::getInstance (
- const CmpiContext& aContext,
- CmpiResult& aResult,
- const CmpiObjectPath& aCop,
- const char** aPropertiesPP) {
-
- // convert to instanceName
- Linux_SambaShareOptionsInstanceName instanceName(aCop);
-
- /*
- CmpiInstance* repositoryCmpiInstanceP = 0;
-
- // try to fetch repository instance
- try {
- Linux_SambaShareOptionsInstanceName repositoryInstanceName(instanceName);
- repositoryInstanceName.setNamespace("IBMShadow/cimv2");
- CmpiObjectPath repositoryCmpiObjectPath = repositoryInstanceName.getObjectPath();
- repositoryCmpiInstanceP = new CmpiInstance(
- m_cmpiBroker.getInstance(
- aContext,
- repositoryCmpiObjectPath,
- aPropertiesPP));
- } catch (const CmpiStatus& rc) { }
- */
- // get instance for instanceName
- Linux_SambaShareOptionsManualInstance instance;
- instance = m_interfaceP->getInstance(
- aContext,
- m_cmpiBroker,
- aPropertiesPP,
- instanceName);
-
- // convert the instance in a cmpiInstance
- CmpiInstance cmpiInstance = instance.getCmpiInstance(aPropertiesPP);
-
- /*
- // add the static data
- copyShadowData(repositoryCmpiInstanceP,&cmpiInstance);
-
- if (repositoryCmpiInstanceP) {
- delete repositoryCmpiInstanceP;
- }
- */
- aResult.returnData(cmpiInstance);
- aResult.returnDone();
- return CmpiStatus(CMPI_RC_OK);
- }
-
- //----------------------------------------------------------------------------
- CmpiStatus
- CmpiLinux_SambaShareOptionsProvider::createInstance (
- const CmpiContext& aContext,
- CmpiResult& aResult,
- const CmpiObjectPath& aCop,
- const CmpiInstance& aCmpiInstance) {
-
- Linux_SambaShareOptionsManualInstance manualInstance(
- aCmpiInstance,
- aCop.getNameSpace().charPtr());
-
- //REPOSITORY DATA
- // CmpiInstance* backupShadowInstanceP = 0;
- // CmpiInstance shadowInstance =
- // Linux_SambaShareOptionsRepositoryInstance(aCmpiInstance,"IBMShadow/cimv2").getCmpiInstance(0);
- //
- // //We keep a backup of the existing data for recovering previous
- // //state if the resource access raise an exception
- // CmpiObjectPath shadowOp = shadowInstance.getObjectPath();
- // try {
- // backupShadowInstanceP = new CmpiInstance(
- // m_cmpiBroker.getInstance(aContext,shadowOp,0));
- // //if the shadow instance exist we delete it
- // m_cmpiBroker.deleteInstance(aContext,shadowOp);
- // } catch (CmpiStatus& rc) {}
- // m_cmpiBroker.createInstance(aContext,shadowOp,shadowInstance);
- //
- // resource access data (manual instance)
- try {
- aResult.returnData(m_interfaceP->createInstance(aContext, m_cmpiBroker, manualInstance).
- getObjectPath());
- } catch (CmpiStatus& rc) {
- // //If something went wrong we recover the previous state
- // m_cmpiBroker.deleteInstance(aContext,shadowOp);
- // if (backupShadowInstanceP) {
- // m_cmpiBroker.createInstance(aContext,shadowOp,*backupShadowInstanceP);
- // }
- throw rc;
- }
-
- // if (backupShadowInstanceP) {
- // delete(backupShadowInstanceP);
- // }
-
- aResult.returnDone();
- return CmpiStatus(CMPI_RC_OK);
-
- }
-
- //----------------------------------------------------------------------------
- CmpiStatus
- CmpiLinux_SambaShareOptionsProvider::setInstance (
- const CmpiContext& aContext,
- CmpiResult& aResult,
- const CmpiObjectPath& aCop,
- const CmpiInstance& aCmpiInstance,
- const char** aPropertiesPP) {
-
- Linux_SambaShareOptionsManualInstance manualInstance(
- aCmpiInstance,
- aCop.getNameSpace().charPtr());
-
- //REPOSITORY DATA
- // CmpiInstance* backupShadowInstanceP = 0;
- // CmpiInstance shadowInstance =
- // Linux_SambaShareOptionsRepositoryInstance(aCmpiInstance,"IBMShadow/cimv2").getCmpiInstance(0);
- //
- // //We keep a backup of the existing data for recovering previous
- // //state if the resource access raise an exception
- // CmpiObjectPath shadowOp = shadowInstance.getObjectPath();
- // try {
- // backupShadowInstanceP = new CmpiInstance(
- // m_cmpiBroker.getInstance(aContext,shadowOp,0));
- // } catch (CmpiStatus& rc) {}
- //
- // //if the instance existed before we delete it
- // //(setInstance is buggy in Pegasus)
- // if (backupShadowInstanceP) {
- // m_cmpiBroker.setInstance(aContext,shadowOp,shadowInstance,aPropertiesPP);
- // } else {
- // m_cmpiBroker.createInstance(aContext,shadowOp,shadowInstance);
- // }
-
- // resource access data (manual instance)
- try {
- m_interfaceP->setInstance(aContext,m_cmpiBroker,aPropertiesPP,manualInstance);
- } catch (CmpiStatus& rc) {
- //If something went wrong we recover the previous state
- // m_cmpiBroker.deleteInstance(aContext,shadowOp);
- // if (backupShadowInstanceP) {
- // m_cmpiBroker.createInstance(aContext,shadowOp,*backupShadowInstanceP);
- // }
- throw rc;
- }
-
- // if (backupShadowInstanceP) {
- // delete backupShadowInstanceP;
- // }
-
- aResult.returnDone();
- return CmpiStatus(CMPI_RC_OK);
-
- }
-
- //----------------------------------------------------------------------------
- CmpiStatus
- CmpiLinux_SambaShareOptionsProvider::deleteInstance(
- const CmpiContext& aContext,
- CmpiResult& aResult,
- const CmpiObjectPath& aCop) {
-
- Linux_SambaShareOptionsInstanceName instanceName = Linux_SambaShareOptionsInstanceName(aCop);
- m_interfaceP->deleteInstance(aContext,m_cmpiBroker,instanceName);
- // instanceName.setNamespace("IBMShadow/cimv2");
- // CmpiObjectPath op = instanceName.getObjectPath();
- //
- // try { // The instance could not have static data
- // m_cmpiBroker.deleteInstance(aContext,op);
- // } catch (CmpiStatus& rc) {}
-
- aResult.returnDone();
- return CmpiStatus(CMPI_RC_OK);
-
- }
-
- //----------------------------------------------------------------------------
- CmpiStatus
- CmpiLinux_SambaShareOptionsProvider::invokeMethod(
- const CmpiContext& aContext,
- CmpiResult& aResult,
- const CmpiObjectPath& aCop,
- const char* aMethodNameP,
- const CmpiArgs& in,
- CmpiArgs& out) {
-
- Linux_SambaShareOptionsInstanceName instanceName = Linux_SambaShareOptionsInstanceName(aCop);
-
- {
- aResult.returnDone();
- return CmpiErrorFormater::getErrorException(
- CmpiErrorFormater::METHOD_NOT_FOUND,
- aMethodNameP,
- "Linux_SambaShareOptions");
- }
-
- aResult.returnDone();
- return CmpiStatus(CMPI_RC_OK);
- }
-
- }