00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00035 #ifndef OW_SIMPLE_AUTHORIZER_HPP_INCLUDE_GUARD_
00036 #define OW_SIMPLE_AUTHORIZER_HPP_INCLUDE_GUARD_
00037 #include "OW_config.h"
00038 #include "OW_AuthorizerIFC.hpp"
00039 #include "OW_IntrusiveReference.hpp"
00040 
00041 namespace OW_NAMESPACE
00042 {
00043 
00044 
00045 class AccessMgr;
00046 
00047 
00048 class SimpleAuthorizer : public AuthorizerIFC
00049 {
00050 public:
00054    SimpleAuthorizer();
00058    virtual ~SimpleAuthorizer();
00059 
00060    virtual String getName() const;
00061    virtual void setSubRepositoryIFC(const RepositoryIFCRef& rep);
00066    virtual void open(const String& path);
00070    virtual void close();
00071    virtual ServiceEnvironmentIFCRef getEnvironment() const;
00072    AuthorizerIFC* clone() const;
00073 
00074 #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00075 
00081    virtual void createNameSpace(const String& ns, OperationContext& context);
00088    virtual void deleteNameSpace(const String& ns, OperationContext& context);
00089 #endif // #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00090 
00097    virtual void enumNameSpace(StringResultHandlerIFC& result,
00098       OperationContext& context);
00108    virtual CIMQualifierType getQualifierType(const String& ns,
00109       const String& qualifierName,
00110       OperationContext& context);
00111 #ifndef OW_DISABLE_QUALIFIER_DECLARATION
00112 
00119    virtual void enumQualifierTypes(
00120       const String& ns,
00121       CIMQualifierTypeResultHandlerIFC& result,
00122       OperationContext& context);
00129    virtual void deleteQualifierType(const String& ns, const String& qualName,
00130       OperationContext& context);
00140    virtual void setQualifierType(const String& ns,
00141       const CIMQualifierType& qt, OperationContext& context);
00142 #endif // #ifndef OW_DISABLE_QUALIFIER_DECLARATION
00143 
00167    virtual CIMClass getClass(
00168       const String& ns,
00169       const String& className,
00170       WBEMFlags::ELocalOnlyFlag localOnly, WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00171       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin, const StringArray* propertyList,
00172       OperationContext& context);
00173 #ifndef OW_DISABLE_SCHEMA_MANIPULATION
00174 
00191    virtual CIMClass deleteClass(const String& ns, const String& className,
00192       OperationContext& context);
00208    virtual void createClass(const String& ns, const CIMClass& cimClass,
00209       OperationContext& context);
00230    virtual CIMClass modifyClass(
00231       const String& ns,
00232       const CIMClass& cc,
00233       OperationContext& context);
00234 #endif // #ifndef OW_DISABLE_SCHEMA_MANIPULATION
00235 
00257    virtual void enumClasses(const String& ns,
00258       const String& className,
00259       CIMClassResultHandlerIFC& result,
00260       WBEMFlags::EDeepFlag deep, WBEMFlags::ELocalOnlyFlag localOnly, WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00261       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin, OperationContext& context);
00281    virtual void enumClassNames(const String& ns,
00282       const String& className,
00283       StringResultHandlerIFC& result,
00284       WBEMFlags::EDeepFlag deep, OperationContext& context);
00311    virtual void enumInstances(
00312       const String& ns,
00313       const String& className,
00314       CIMInstanceResultHandlerIFC& result,
00315       WBEMFlags::EDeepFlag deep,
00316       WBEMFlags::ELocalOnlyFlag localOnly,
00317       WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00318       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin,
00319       const StringArray* propertyList,
00320       WBEMFlags::EEnumSubclassesFlag enumSubclasses,
00321       OperationContext& context);
00342    virtual void enumInstanceNames(
00343       const String& ns,
00344       const String& className,
00345       CIMObjectPathResultHandlerIFC& result,
00346       WBEMFlags::EDeepFlag deep, OperationContext& context);
00370    virtual CIMInstance getInstance(
00371       const String& ns,
00372       const CIMObjectPath& instanceName,
00373       WBEMFlags::ELocalOnlyFlag localOnly, WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00374       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin, const StringArray* propertyList,
00375       OperationContext& context);
00376 #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00377 
00391    virtual CIMInstance deleteInstance(const String& ns, const CIMObjectPath& cop,
00392       OperationContext& context);
00408    virtual CIMObjectPath createInstance(const String& ns,
00409       const CIMInstance& ci,
00410       OperationContext& context);
00429    virtual CIMInstance modifyInstance(
00430       const String& ns,
00431       const CIMInstance& modifiedInstance,
00432       WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00433       const StringArray* propertyList,
00434       OperationContext& context);
00435 #if !defined(OW_DISABLE_PROPERTY_OPERATIONS)
00436 
00444    virtual void setProperty(
00445       const String& ns,
00446       const CIMObjectPath& name, const String& propertyName,
00447       const CIMValue& cv, OperationContext& context);
00448 #endif // #if !defined(OW_DISABLE_PROPERTY_OPERATIONS)
00449 #endif // #ifndef OW_DISABLE_INSTANCE_MANIPULATION
00450 
00451 #if !defined(OW_DISABLE_PROPERTY_OPERATIONS)
00452 
00461    virtual CIMValue getProperty(
00462       const String& ns,
00463       const CIMObjectPath& name,
00464       const String& propertyName, OperationContext& context);
00465 #endif // #if !defined(OW_DISABLE_PROPERTY_OPERATIONS)
00466 
00479    virtual CIMValue invokeMethod(
00480       const String& ns,
00481       const CIMObjectPath& path,
00482       const String& methodName, const CIMParamValueArray& inParams,
00483       CIMParamValueArray& outParams, OperationContext& context);
00484 #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00485    virtual void associatorNames(
00486       const String& ns,
00487       const CIMObjectPath& path,
00488       CIMObjectPathResultHandlerIFC& result,
00489       const String& assocClass,
00490       const String& resultClass, const String& role,
00491       const String& resultRole, OperationContext& context);
00492    virtual void associators(
00493       const String& ns,
00494       const CIMObjectPath& path,
00495       CIMInstanceResultHandlerIFC& result,
00496       const String& assocClass,
00497       const String& resultClass, const String& role,
00498       const String& resultRole,  WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00499       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin, const StringArray* propertyList,
00500       OperationContext& context);
00501    virtual void associatorsClasses(
00502       const String& ns,
00503       const CIMObjectPath& path,
00504       CIMClassResultHandlerIFC& result,
00505       const String& assocClass,
00506       const String& resultClass, const String& role,
00507       const String& resultRole,  WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00508       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin, const StringArray* propertyList,
00509       OperationContext& context);
00510    virtual void referenceNames(
00511       const String& ns,
00512       const CIMObjectPath& path,
00513       CIMObjectPathResultHandlerIFC& result,
00514       const String& resultClass,
00515       const String& role, OperationContext& context);
00516    virtual void references(
00517       const String& ns,
00518       const CIMObjectPath& path,
00519       CIMInstanceResultHandlerIFC& result,
00520       const String& resultClass,
00521       const String& role, WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00522       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin, const StringArray* propertyList,
00523       OperationContext& context);
00524    
00525    virtual void referencesClasses(
00526       const String& ns,
00527       const CIMObjectPath& path,
00528       CIMClassResultHandlerIFC& result,
00529       const String& resultClass,
00530       const String& role, WBEMFlags::EIncludeQualifiersFlag includeQualifiers,
00531       WBEMFlags::EIncludeClassOriginFlag includeClassOrigin, const StringArray* propertyList,
00532       OperationContext& context);
00533 #endif // #ifndef OW_DISABLE_ASSOCIATION_TRAVERSAL
00534    
00547    virtual void execQuery(
00548       const String& ns,
00549       CIMInstanceResultHandlerIFC& result,
00550       const String &query, const String& queryLanguage,
00551       OperationContext& context);
00552 
00553 private:
00554 
00555    virtual void beginOperation(WBEMFlags::EOperationFlag op, OperationContext& context);
00556    virtual void endOperation(WBEMFlags::EOperationFlag op, OperationContext& context, WBEMFlags::EOperationResultFlag result);
00557 
00558    IntrusiveReference<AccessMgr> m_accessMgr;
00559    
00560    RepositoryIFCRef m_cimRepository;
00561 };
00562 
00563 } 
00564 
00565 #endif