#include <mico/security/security.idl>
#include <mico/security/DomainManager.idl>


#if !defined(_ODM_IDL_)
#define _ODM_IDL_

#pragma prefix "omg.org"

module ObjectDomainMapping {
  
  interface Manager;
  interface _Factory;
  
  interface Manager {
    typedef unsigned short ODMGranularity ;
    void set_domain_name_key (
			      in ODMGranularity granularity,
			      in Security::Opaque _key,
			      in SecurityDomain::NameList domainNameList
			      );
    SecurityDomain::NameList get_domain_names (
					       in Security::Opaque _key
					       );
    void remove_domain_names (
			      in Security::Opaque _key
			      );
    void set_parent_odm_key (
			     in Security::Opaque _key,
			     in ObjectDomainMapping::Manager odm
			     );
    void set_default_parent_odm (
				 in ObjectDomainMapping::Manager odm
				 );
    void set_default_name_key (
			       in SecurityDomain::NameList domainNameList
			       );
  };
  
  interface _Factory {
    ObjectDomainMapping::Manager create ();
    
    //extension
    boolean load_config_file(in string filename);
    boolean save_config_file(in string filename);
 };
  
  interface ODM {
    ObjectDomainMapping::_Factory create ();
    ObjectDomainMapping::_Factory current();
    
 };
};

#endif