commit a5f57887f8910d43479d1e1b9839634ca4e6f740
Author: Michael Calmer <mc(a)suse.de>
Date: Tue Jan 27 15:40:44 2009 +0100
Implement filter for association functions
* Add filter parameter to assoc_* functions
* Implement SUSE_AssocFilter as base class for filter objects
* Implement SUSE_InstalledSoftwareIdetityFilter
* Implement SUSE_HostedCollectionFilter
---
src/CMakeLists.txt | 1 +
src/SUSE_AssocFilter.h | 29 +++++++
src/SUSE_Common.cc | 53 +++++++++-----
src/SUSE_Common.h | 12 ++-
src/SUSE_HostedCollectionProvider.cc | 100 +++++++++++++++++++++++--
src/SUSE_HostedCollectionProvider.h | 16 ++++
src/SUSE_InstalledSoftwareIdentityProvider.cc | 83 +++++++++++++++++++-
src/SUSE_InstalledSoftwareIdentityProvider.h | 15 ++++
8 files changed, 278 insertions(+), 31 deletions(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2f342c8..7d95d11 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -23,6 +23,7 @@ SET( CMPIZYPP_HEADERS
SUSE_SystemSpecificCollectionProvider.h
SUSE_MemberOfCollectionProvider.h
SUSE_HostedCollectionProvider.h
+ SUSE_AssocFilter.h
)
ADD_LIBRARY(cmpi-zypp SHARED ${CMPIZYPP_SRCS})
diff --git a/src/SUSE_AssocFilter.h b/src/SUSE_AssocFilter.h
new file mode 100644
index 0000000..fcc6ad2
--- /dev/null
+++ b/src/SUSE_AssocFilter.h
@@ -0,0 +1,29 @@
+#ifndef SUSE_ASSOCFILTER_H
+#define SUSE_ASSOCFILTER_H
+
+#include "SUSE_zypp.h"
+
+namespace cmpizypp
+{
+ class SUSE_AssocFilter
+ {
+ public:
+ SUSE_AssocFilter() {};
+ virtual ~SUSE_AssocFilter() {};
+
+ virtual bool filterInstance(const CmpiInstance &ci, bool associators) const
+ {
+ _CMPIZYPP_TRACE(1,("--- AssocFilter::filterInstance() called"));
+ return true;
+ };
+
+ virtual bool filterObjectPath(const CmpiObjectPath &op, bool associators) const
+ {
+ _CMPIZYPP_TRACE(1,("--- AssocFilter::filterObjectPath() called"));
+ return true;
+ }
+ };
+
+} // namespace cmpizypp
+
+#endif // SUSE_ASSOCFILTER_H
\ No newline at end of file
diff --git a/src/SUSE_Common.cc b/src/SUSE_Common.cc
index ff24827..647a211 100644
--- a/src/SUSE_Common.cc
+++ b/src/SUSE_Common.cc
@@ -1,12 +1,12 @@
#include <cmpi/CmpiObjectPath.h>
+#include <cmpi/CmpiResult.h>
#include <cmpiutil/base.h>
-#include <zypp/base/LogTools.h>
+
#include <zypp/base/String.h>
+#include <zypp/base/LogTools.h>
#include <zypp/base/PtrTypes.h>
-#include <cmpi/CmpiResult.h>
-
#include "SUSE_Common.h"
#include "SUSE_zypp.h"
@@ -19,6 +19,13 @@ std::ostream & operator<<( std::ostream & str, const CmpiObjectPath & obj )
return str;
}
+std::ostream & operator<<( std::ostream & str, const CmpiInstance & ci )
+{
+ CmpiInstance lci( ci );
+ str << lci.toString().charPtr();
+ return str;
+}
+
namespace cmpizypp
{
CmpiObjectPath get_this_computersystem(CmpiBroker & broker, const CmpiContext& ctx, const CmpiObjectPath & cop)
@@ -147,7 +154,8 @@ namespace cmpizypp
const char * _RefSourceClass,
const char * _RefTargetClass,
int inst,
- int associators )
+ int associators,
+ const SUSE_AssocFilter &filter )
{
CmpiInstance cis( broker.getInstance( ctx, cop, NULL ) ); // source instance
@@ -181,7 +189,8 @@ namespace cmpizypp
while (en.hasNext() )
{
CmpiInstance ci = en.getNext();
- rslt.returnData( ci );
+ if( filter.filterInstance(ci, true) )
+ rslt.returnData( ci );
}
}
else
@@ -213,12 +222,14 @@ namespace cmpizypp
/* associators = 0 && inst = 0 */
CmpiObjectPath tmp = ci.getObjectPath();
tmp.setNameSpace(cop.getNameSpace());
- rslt.returnData(tmp);
+ if( filter.filterObjectPath(tmp, false) )
+ rslt.returnData(tmp);
}
else
{
/* associators = 0 && inst = 1 */
- rslt.returnData(ci);
+ if( filter.filterInstance(ci, false) )
+ rslt.returnData(ci);
}
}
else if(inst == 0)
@@ -227,7 +238,8 @@ namespace cmpizypp
//rslt.returnData(data);
CmpiObjectPath tmp = (CmpiObjectPath)data;
tmp.setNameSpace(cop.getNameSpace());
- rslt.returnData(tmp);
+ if( filter.filterObjectPath(tmp, true) )
+ rslt.returnData(tmp);
}
}
}
@@ -244,12 +256,13 @@ namespace cmpizypp
const char * _RefSourceClass,
const char * _RefTargetClass,
int inst,
- int associators )
+ int associators,
+ const SUSE_AssocFilter &filter )
{
_CMPIZYPP_TRACE(1,("--- assoc_create_refs_1toN_ST called"));
if ( _assoc_create_refs_1toN_ST( broker, ctx, rslt, cop,
_ClassName, _RefSource, _RefTarget, _RefSourceClass, _RefTargetClass,
- inst, associators ) )
+ inst, associators, filter ) )
{
_CMPIZYPP_TRACE(1,("--- assoc_create_refs_1toN_ST exited"));
return true;
@@ -285,7 +298,8 @@ namespace cmpizypp
const char * _RefLeftClass,
const char * _RefRightClass,
int inst,
- int associators )
+ int associators,
+ const SUSE_AssocFilter &filter )
{
_CMPIZYPP_TRACE(1,("--- assoc_create_refs_1toN called"));
bool result = false;
@@ -293,13 +307,13 @@ namespace cmpizypp
{
result = _assoc_create_refs_1toN_ST(broker, ctx, rslt, cop,
_ClassName, _RefLeft, _RefRight, _RefLeftClass, _RefRightClass,
- inst, associators);
+ inst, associators, filter);
}
else
{
result = _assoc_create_refs_1toN_ST(broker, ctx, rslt, cop,
_ClassName, _RefRight, _RefLeft, _RefRightClass, _RefLeftClass,
- inst, associators);
+ inst, associators, filter);
}
if ( result )
@@ -406,7 +420,8 @@ namespace cmpizypp
const char * _RefLeftClass,
const char * _RefRightClass,
int left,
- int inst)
+ int inst,
+ const SUSE_AssocFilter &filter )
{
_CMPIZYPP_TRACE(1,("--- _assoc_create_inst_1toN called"));
bool ret = false;
@@ -445,7 +460,7 @@ namespace cmpizypp
CmpiData data = en.getNext();
ret = assoc_create_refs_1toN( broker, ctx, rslt, data,
_ClassName,_RefLeft,_RefRight,
- _RefLeftClass,_RefRightClass,inst,0);
+ _RefLeftClass,_RefRightClass,inst,0, filter);
}
_CMPIZYPP_TRACE(1,("--- _assoc_create_inst_1toN exited"));
return ret;
@@ -461,11 +476,12 @@ namespace cmpizypp
const char * _RefLeftClass,
const char * _RefRightClass,
int left,
- int inst)
+ int inst,
+ const SUSE_AssocFilter &filter)
{
_CMPIZYPP_TRACE(1,("--- _assoc_create_inst_1toN called"));
if ( _assoc_create_inst_1toN(broker, ctx, rslt, cop,
- _ClassName, _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, left, inst) )
+ _ClassName, _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, left, inst, filter) )
{
_CMPIZYPP_TRACE(1,("--- _assoc_create_inst_1toN exited: successful"));
return true;
@@ -534,4 +550,5 @@ namespace cmpizypp
_CMPIZYPP_TRACE(1,("--- assoc_get_inst exited"));
return ci;
}
-}
+
+} // end namespace cmpizypp
diff --git a/src/SUSE_Common.h b/src/SUSE_Common.h
index 73b5ea7..3a0bd97 100644
--- a/src/SUSE_Common.h
+++ b/src/SUSE_Common.h
@@ -2,11 +2,13 @@
#define SUSE_COMMON_H
#include <iosfwd>
+#include "SUSE_AssocFilter.h"
using std::endl;
class CmpiObjectPath;
std::ostream & operator<<( std::ostream & str, const CmpiObjectPath & obj );
+std::ostream & operator<<( std::ostream & str, const CmpiInstance & ci );
namespace cmpizypp
{
@@ -25,7 +27,8 @@ namespace cmpizypp
const char * _RefSourceClass,
const char * _RefTargetClass,
int inst,
- int associators );
+ int associators,
+ const SUSE_AssocFilter &filter = SUSE_AssocFilter() );
/** Method to create CMPIInstance(s) / CMPIObjectPath(s) of association.
*
@@ -48,7 +51,8 @@ namespace cmpizypp
const char * _RefLeftClass,
const char * _RefRightClass,
int inst,
- int associators );
+ int associators,
+ const SUSE_AssocFilter &filter = SUSE_AssocFilter() );
/** Method to check the input parameter resultClass, role and resultRole
@@ -75,7 +79,8 @@ namespace cmpizypp
const char * _RefLeftClass,
const char * _RefRightClass,
int left,
- int inst);
+ int inst,
+ const SUSE_AssocFilter &filter = SUSE_AssocFilter() );
CmpiInstance assoc_get_inst( CmpiBroker & broker,
const CmpiContext & ctx,
@@ -83,5 +88,6 @@ namespace cmpizypp
const char * _ClassName,
const char * _RefLeft,
const char * _RefRight);
+
}
#endif // SUSE_COMMON_H
\ No newline at end of file
diff --git a/src/SUSE_HostedCollectionProvider.cc b/src/SUSE_HostedCollectionProvider.cc
index 9a65c7f..670394a 100644
--- a/src/SUSE_HostedCollectionProvider.cc
+++ b/src/SUSE_HostedCollectionProvider.cc
@@ -50,7 +50,7 @@ namespace cmpizypp
CmpiStatus st( CMPI_RC_ERR_FAILED, "EnumInstanceNames failed." );
return st;
}
-
+
rslt.returnDone();
_CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstanceNames() exited",_ClassName));
return CmpiStatus(CMPI_RC_OK);
@@ -69,7 +69,7 @@ namespace cmpizypp
CmpiStatus st( CMPI_RC_ERR_FAILED, "EnumInstances failed." );
return st;
}
-
+
rslt.returnDone();
_CMPIZYPP_TRACE(1,("--- %s CMPI EnumInstances() exited",_ClassName));
return CmpiStatus(CMPI_RC_OK);
@@ -103,8 +103,9 @@ namespace cmpizypp
if ( assoc_check_parameter_const( cop, _RefLeft, _RefRight, _RefLeftClass, _RefRightClass,
resultClass, role, resultRole ) )
{
+ SUSE_HostedCollectionFilter filter(get_this_computersystem(*broker, ctx, cop));
if(! assoc_create_refs_1toN( *broker, ctx, rslt, cop, _ClassName,
- _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 1, 1) )
+ _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 1, 1, filter ) )
{
CmpiStatus st(CMPI_RC_ERR_FAILED, "Create references failed.");
_CMPIZYPP_TRACE(1,("--- CMPI referenceNames() failed."));
@@ -131,8 +132,9 @@ namespace cmpizypp
if ( assoc_check_parameter_const( cop, _RefLeft, _RefRight, _RefLeftClass, _RefRightClass,
resultClass, role, resultRole ) )
{
+ SUSE_HostedCollectionFilter filter(get_this_computersystem(*broker, ctx, cop));
if(! assoc_create_refs_1toN( *broker, ctx, rslt, cop, _ClassName,
- _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 0, 1) )
+ _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 0, 1, filter ) )
{
CmpiStatus st(CMPI_RC_ERR_FAILED, "Create references failed.");
_CMPIZYPP_TRACE(1,("--- CMPI referenceNames() failed."));
@@ -159,8 +161,9 @@ namespace cmpizypp
if ( assoc_check_parameter_const( cop, _RefLeft, _RefRight, _RefLeftClass, _RefRightClass,
NULL/*resultClass*/, role, NULL /*resultRole*/ ) )
{
+ SUSE_HostedCollectionFilter filter(get_this_computersystem(*broker, ctx, cop));
if(! assoc_create_refs_1toN( *broker, ctx, rslt, cop, _ClassName,
- _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 1, 0) )
+ _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 1, 0, filter ) )
{
CmpiStatus st(CMPI_RC_ERR_FAILED, "Create references failed.");
_CMPIZYPP_TRACE(1,("--- CMPI referenceNames() failed."));
@@ -186,8 +189,9 @@ namespace cmpizypp
if ( assoc_check_parameter_const( cop, _RefLeft, _RefRight, _RefLeftClass, _RefRightClass,
NULL/*resultClass*/, role, NULL /*resultRole*/ ) )
{
+ SUSE_HostedCollectionFilter filter(get_this_computersystem(*broker, ctx, cop));
if(! assoc_create_refs_1toN( *broker, ctx, rslt, cop, _ClassName,
- _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 0, 0) )
+ _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 0, 0, filter ) )
{
CmpiStatus st(CMPI_RC_ERR_FAILED, "Create references failed.");
_CMPIZYPP_TRACE(1,("--- CMPI referenceNames() failed."));
@@ -201,6 +205,90 @@ namespace cmpizypp
return CmpiStatus(CMPI_RC_OK);
}
+/* -------------------------------------------------------------------------- */
+
+ SUSE_HostedCollectionFilter::SUSE_HostedCollectionFilter(const CmpiObjectPath &op)
+ : SUSE_AssocFilter()
+ , csop(op)
+ { }
+
+ bool SUSE_HostedCollectionFilter::filterInstance(const CmpiInstance &ci, bool associators) const
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_HostedCollectionFilter::filterInstance called"));
+ USR << ci << endl;
+ CmpiString CSName = csop.getKey("CreationClassName");
+ CmpiString Name = csop.getKey("Name");
+
+ const char *filterCSName = "";
+ const char *filterName = "";
+ if( ! associators )
+ {
+ CmpiObjectPath filterop = ci.getProperty( _RefLeft );
+ filterCSName = filterop.getKey("CreationClassName");
+ filterName = filterop.getKey("Name");
+ }
+ else
+ {
+ CmpiInstance lci( ci );
+ if( lci.instanceIsA( _RefLeftClass ) )
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_HostedCollectionFilter::filterInstance exited: true"));
+ return true;
+ }
+
+ filterCSName = ci.getProperty("CreationClassName");
+ filterName = ci.getProperty("Name");
+ }
+
+ if(CSName.equals(filterCSName) && Name.equals(filterName) )
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_HostedCollectionFilter::filterInstance exited: true"));
+ return true;
+ }
+ else
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_HostedCollectionFilter::filterInstance exited: false"));
+ return false;
+ }
+ }
+
+ bool SUSE_HostedCollectionFilter::filterObjectPath(const CmpiObjectPath &op, bool associators) const
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_HostedCollectionFilter::filterObjectPath called"));
+ USR << op << endl;
+ CmpiString CSName = csop.getKey("CreationClassName");
+ CmpiString Name = csop.getKey("Name");
+
+ CmpiObjectPath filterop("", "");
+ if( ! associators )
+ {
+ filterop = op.getKey( _RefLeft );
+ }
+ else
+ {
+ if( op.classPathIsA( _RefLeftClass ) )
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_HostedCollectionFilter::filterObjectPath exited: true"));
+ return true;
+ }
+
+ filterop = op;
+ }
+ CmpiString filterCSName = filterop.getKey("CreationClassName");
+ CmpiString filterName = filterop.getKey("Name");
+
+ if(filterCSName.equals(CSName) && filterName.equals(Name) )
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_HostedCollectionFilter::filterObjectPath exited: true"));
+ return true;
+ }
+ else
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_HostedCollectionFilter::filterObjectPath exited: false"));
+ return false;
+ }
+ }
+
} // namespace cmpizypp
CMProviderBase( SUSE_HostedCollectionProvider );
diff --git a/src/SUSE_HostedCollectionProvider.h b/src/SUSE_HostedCollectionProvider.h
index 6d9892f..9b8b7cb 100644
--- a/src/SUSE_HostedCollectionProvider.h
+++ b/src/SUSE_HostedCollectionProvider.h
@@ -4,6 +4,8 @@
#include <cmpi/CmpiInstanceMI.h>
#include <cmpi/CmpiAssociationMI.h>
+#include "SUSE_AssocFilter.h"
+
namespace cmpizypp
{
/**
@@ -37,6 +39,20 @@ namespace cmpizypp
const CmpiObjectPath& cop, const char* resultClass, const char* role);
};
+
+ class SUSE_HostedCollectionFilter: public SUSE_AssocFilter
+ {
+ private:
+ CmpiObjectPath csop;
+
+ public:
+ SUSE_HostedCollectionFilter(const CmpiObjectPath &op);
+ virtual ~SUSE_HostedCollectionFilter() {};
+
+ virtual bool filterInstance(const CmpiInstance &ci, bool associators) const;
+ virtual bool filterObjectPath(const CmpiObjectPath &op, bool associators) const;
+ };
+
} // namespace cmpizypp
#endif // SUSE_HOSTEDCOLLECTIONPROVIDERCLASS_H
diff --git a/src/SUSE_InstalledSoftwareIdentityProvider.cc b/src/SUSE_InstalledSoftwareIdentityProvider.cc
index bd2d30c..c90a875 100644
--- a/src/SUSE_InstalledSoftwareIdentityProvider.cc
+++ b/src/SUSE_InstalledSoftwareIdentityProvider.cc
@@ -157,8 +157,9 @@ namespace cmpizypp
{
if ( cop.classPathIsA(_RefLeftClass) ) //SUSE_SoftwareIdentity
{
+ SUSE_InstalledSoftwareIdentityFilter filter(get_this_computersystem(*broker, ctx, cop));
if(! assoc_create_refs_1toN_ST( *broker, ctx, rslt, cop, _ClassName,
- _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 1, 1) )
+ _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 1, 1, filter ) )
{
CmpiStatus st(CMPI_RC_ERR_FAILED, "Create references failed.");
_CMPIZYPP_TRACE(1,("--- CMPI referenceNames() failed."));
@@ -222,8 +223,9 @@ namespace cmpizypp
{
if ( cop.classPathIsA(_RefLeftClass) ) //SUSE_SoftwareIdentity
{
+ SUSE_InstalledSoftwareIdentityFilter filter(get_this_computersystem(*broker, ctx, cop));
if(! assoc_create_refs_1toN_ST( *broker, ctx, rslt, cop, _ClassName,
- _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 0, 1) )
+ _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 0, 1, filter) )
{
CmpiStatus st(CMPI_RC_ERR_FAILED, "Create references failed.");
_CMPIZYPP_TRACE(1,("--- CMPI referenceNames() failed."));
@@ -293,8 +295,9 @@ namespace cmpizypp
{
if ( cop.classPathIsA(_RefLeftClass) ) //SUSE_SoftwareIdentity
{
+ SUSE_InstalledSoftwareIdentityFilter filter(get_this_computersystem(*broker, ctx, cop));
if(! assoc_create_refs_1toN_ST( *broker, ctx, rslt, cop, _ClassName,
- _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 1, 0) )
+ _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 1, 0, filter ) )
{
CmpiStatus st(CMPI_RC_ERR_FAILED, "Create references failed.");
_CMPIZYPP_TRACE(1,("--- CMPI referenceNames() failed."));
@@ -368,8 +371,9 @@ namespace cmpizypp
{
if ( cop.classPathIsA(_RefLeftClass) ) //SUSE_SoftwareIdentity
{
+ SUSE_InstalledSoftwareIdentityFilter filter(get_this_computersystem(*broker, ctx, cop));
if(! assoc_create_refs_1toN_ST( *broker, ctx, rslt, cop, _ClassName,
- _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 0, 0) )
+ _RefLeft, _RefRight, _RefLeftClass, _RefRightClass, 0, 0, filter ) )
{
CmpiStatus st(CMPI_RC_ERR_FAILED, "Create references failed.");
_CMPIZYPP_TRACE(1,("--- CMPI referenceNames() failed."));
@@ -432,6 +436,77 @@ namespace cmpizypp
return CmpiStatus(CMPI_RC_OK);
}
+
+ SUSE_InstalledSoftwareIdentityFilter::SUSE_InstalledSoftwareIdentityFilter(const CmpiObjectPath &op)
+ : SUSE_AssocFilter()
+ , csop(op)
+ { }
+
+ bool SUSE_InstalledSoftwareIdentityFilter::filterInstance(const CmpiInstance &ci, bool associators) const
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_InstalledSoftwareIdentityFilter::filterInstance called"));
+ USR << ci << endl;
+ CmpiString CSName = csop.getKey("CreationClassName");
+ CmpiString Name = csop.getKey("Name");
+
+ const char *filterCSName = "";
+ const char *filterName = "";
+ if( ! associators )
+ {
+ CmpiObjectPath filterop = ci.getProperty( _RefRight );
+ filterCSName = filterop.getKey("CreationClassName");
+ filterName = filterop.getKey("Name");
+ }
+ else
+ {
+ filterCSName = ci.getProperty("CreationClassName");
+ filterName = ci.getProperty("Name");
+ }
+
+ if(CSName.equals(filterCSName) && Name.equals(filterName) )
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_InstalledSoftwareIdentityFilter::filterInstance exited: true"));
+ return true;
+ }
+ else
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_InstalledSoftwareIdentityFilter::filterInstance exited: false"));
+ return false;
+ }
+ }
+
+ bool SUSE_InstalledSoftwareIdentityFilter::filterObjectPath(const CmpiObjectPath &op, bool associators) const
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_InstalledSoftwareIdentityFilter::filterObjectPath called"));
+ USR << op << endl;
+ CmpiString CSName = csop.getKey("CreationClassName");
+ CmpiString Name = csop.getKey("Name");
+
+ CmpiObjectPath filterop("", "");
+ if( ! associators )
+ {
+ filterop = op.getKey( _RefRight );
+ }
+ else
+ {
+ filterop = op;
+ }
+ CmpiString filterCSName = filterop.getKey("CreationClassName");
+ CmpiString filterName = filterop.getKey("Name");
+
+ if(filterCSName.equals(CSName) && filterName.equals(Name) )
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_InstalledSoftwareIdentityFilter::filterObjectPath exited: true"));
+ return true;
+ }
+ else
+ {
+ _CMPIZYPP_TRACE(1,("--- SUSE_InstalledSoftwareIdentityFilter::filterObjectPath exited: false"));
+ return false;
+ }
+ }
+
+
} // namespace cmpizypp
CMProviderBase( SUSE_InstalledSoftwareIdentityProvider );
diff --git a/src/SUSE_InstalledSoftwareIdentityProvider.h b/src/SUSE_InstalledSoftwareIdentityProvider.h
index adb7f3d..ceee8e8 100644
--- a/src/SUSE_InstalledSoftwareIdentityProvider.h
+++ b/src/SUSE_InstalledSoftwareIdentityProvider.h
@@ -4,6 +4,8 @@
#include <cmpi/CmpiInstanceMI.h>
#include <cmpi/CmpiAssociationMI.h>
+#include "SUSE_AssocFilter.h"
+
namespace cmpizypp
{
/**
@@ -37,6 +39,19 @@ namespace cmpizypp
const CmpiObjectPath& cop, const char* resultClass, const char* role);
};
+ class SUSE_InstalledSoftwareIdentityFilter: public SUSE_AssocFilter
+ {
+ private:
+ CmpiObjectPath csop;
+
+ public:
+ SUSE_InstalledSoftwareIdentityFilter(const CmpiObjectPath &op);
+ virtual ~SUSE_InstalledSoftwareIdentityFilter() {};
+
+ virtual bool filterInstance(const CmpiInstance &ci, bool associators) const;
+ virtual bool filterObjectPath(const CmpiObjectPath &op, bool associators) const;
+ };
+
} // namespace cmpizypp
#endif // SUSE_INSTALLEDSOFTWAREIDENTITYPROVIDERCLASS_H
--
To unsubscribe, e-mail: zypp-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: zypp-commit+help(a)opensuse.org