Exemple de code pour l'utilisation des utilisateurs, des groupes, des membres de groupe et de l'appartenance aux groupes

Utilisez l'exemple de code de bout en bout et les graphiques de données pour des opérations de base impliquant des utilisateurs, des groupes, des membres de groupe et des appartenances aux groupes.

Les étapes suivantes sont abordées dans cet exemple de scénario :

  1. Créez un utilisateur en ajoutant une entité de type PersonAccount à l'aide de la méthode create.
  2. Créez un groupe en ajoutant une entité de type Group à l'aide de la méthode create.
  3. Ajoutez l'utilisateur au groupe à l'aide de la méthode update.
  4. Extrayez les membres du groupe à l'aide de la méthode get et de GroupMemberControl.
  5. Extrayez les groupes auxquels l'utilisateur appartient (appartenance aux groupes) à l'aide de la méthode get et de GroupMembershipControl.
  6. Supprimez l'utilisateur du groupe à l'aide de la méthode update et de GroupMemberControl. Pour un exemple de code permettant de supprimer l'utilisateur d'un groupe à l'aide de GroupMembershipControl, voir la rubrique Exemple de code pour la suppression d'utilisateurs d'un groupe.
  7. Supprimez l'utilisateur à l'aide de la méthode delete.
  8. Supprimez le groupe à l'aide de la méthode delete.

Conditions prérequises

Assurez-vous d'avoir bien lu les informations et effectué les étapes décrites dans la rubrique Prérequis pour la programmation.

Exemple de code

Ajoutez l'exemple de code de bout en bout ci-après à votre code d'application, puis remplacez les variables par les valeurs réelles à utiliser.

public class UserAndGroupSample extends BaseApp
{
    // Définition des noms distinctifs des utilisateurs et des groupes
    private static String user1Dn = "uid=user1,o=defaultWIMFileBasedRealm";
    private static String user2Dn = "uid=user2,o=defaultWIMFileBasedRealm";
    private static String group1Dn = "cn=group1,o=defaultWIMFileBasedRealm";
    private static String group2Dn = "cn=group2,o=defaultWIMFileBasedRealm";
    private static String EJB_JNDI_NAME = "ejb/com/ibm/websphere/wim/ejb/WIMServiceHome";

    /** 
     *  Cet exemple effectue les opérations suivantes :
     *  Il crée un utilisateur 
     *  Il crée un groupe
     *  Il affecte l'utilisateur au groupe
     *  Il extrait les membres du groupe
     *  Il extrait l'appartenance aux groupes
     *  Il supprime l'utilisateur du groupe
     *  Il supprime un utilisateur
     *  Il supprime un groupe
     */
    public static void main(String[] args) throws Exception
    {
        // Initialisation du service de profil
        locateService(EJB_JNDI_NAME);
        // Création d'un utilisateur et d'un groupe respectivement
        addPersonAccount("user1","user1cn","user1sn");
        addGroup("group1");
        // Ajout du membre user1 au groupe
        addMemberToGroup(user1Dn,group1Dn);
        // Extraction des membres du groupe
        getGroupMembers(group1Dn);
        // Extraction de l'appartenance aux groupes
        getGroupMembership(user1Dn);
        // Suppression du membre user1 du groupe
        removeMemberFromGroup(user1Dn,group1Dn);
        // Suppression d'user1
        deleteEntity(user1Dn);
        // Suppression de group1
        deleteEntity(group1Dn);
    }
	
    /** 
     *  addPersonAccount 
     *  Ajoute une entité de type PersonAccount
     *  @param valeur uid à définir
     *  @param valeur cn à définir
     *  @param valeur sn à définir
     */
    public static void addPersonAccount(String uid, String cn, String sn)
    {
        try
        {
            DataObject root = SDOHelper.createRootDataObject();
            DataObject entity = SDOHelper.createEntityDataObject(root, null, 
                    SchemaConstants.DO_PERSON_ACCOUNT);
            // Définition des propriétés de la personne
            entity.set("uid", uid);
            entity.set("cn", cn);
            entity.set("sn", sn);
            System.out.println("Input data graph before creating user"+ printDO(root));
            // Création de l'entité PersonAccount
            root = service.create(root);
            System.out.println("Output data graph after creating user"+ printDO(root));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    
    /**
     *  addGroup Ajoute une entité de type Groupe
     *  @param valeur cn à définir
     */
    public static void addGroup(String cn)
    {
        try
        {
            DataObject root = SDOHelper.createRootDataObject();
            DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
            // Définition du nom usuel du groupe
            entity.set("cn", cn);
            System.out.println("Input data graph before creating group"+ printDO(root));
            // Création de l'entité group
            root = service.create(root);
            System.out.println("Output data graph after creating group"+ printDO(root));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     *  addMemberToGroup ajoute un utilisateur au groupe	
     *  @param memberDn nom unique du membre
     *  @param groupDn nom unique du groupe
     */
    public static void addMemberToGroup(String memberDn, String groupDn)
    {
        try
        {
            DataObject root = SDOHelper.createRootDataObject();
            DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
            // Définition du nom unique du groupe
            entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
                    groupDn);
            DataObject member1 = SDOHelper.createDataObject(SchemaConstants.WIM_NS_URI, 
                    SchemaConstants.DO_ENTITY);
            // Définition du nom unique du membre
            member1.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME,
                    memberDn);
            // Ajout du membre au groupe
            entity.getList(SchemaConstants.DO_MEMBERS).add(member1);
            System.out.println("Input datagraph before adding member to group"+ printDO(root));
            // Mise à jour du groupe
            root = service.update(root);
            System.out.println("Output datagraph after adding member to group"+ printDO(root));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    
    /**
     *  getGroupMembers Renvoie les membres du groupe
     *  @param groupDn nom unique du groupe 
     */
    public static void getGroupMembers(String groupDn)
    {
        try
        {
            DataObject root = SDOHelper.createRootDataObject();
            DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
            // Définition du nom unique du groupe
            entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
                    groupDn);
            // Définition du contrôle de propriété
            DataObject propCtrl = SDOHelper.createControlDataObject(root, null, 
                    SchemaConstants.DO_PROPERTY_CONTROL);
            //Extraction du nom usuel du groupe dont les membres doivent être recherchés
            propCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
            // Définition du contrôle du membre de groupe
            DataObject grpMbrCtrl = SDOHelper.createControlDataObject(root, null, 
                    SchemaConstants.DO_GROUP_MEMBER_CONTROL); 
            // Extraction des attributs cn et uid pour tous les membres
            grpMbrCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
            grpMbrCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("uid");
            System.out.println("Input data graph before getting group members"+ printDO(root));
            // Extraction des membres du groupe
            root = service.get(root);
            System.out.println("Output data graph after getting group members"+ printDO(root));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     *  getGroupMembership Extrait les groupes auxquels l'utilisateur appartient
     *  @param memberDn nom unique de l'utilisateur
     */
    public static void getGroupMembership(String memberDn)
    {
        try
        {
            DataObject root = SDOHelper.createRootDataObject();
            DataObject entity = SDOHelper.createEntityDataObject(root, null, 
                    SchemaConstants.DO_PERSON_ACCOUNT);
            // Définition du nom unique du groupe
            entity.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME, 
                    memberDn);
            // Définition du contrôle de l'appartenance aux groupes
            DataObject grpMbrshipCtrl = SDOHelper.createControlDataObject(root, null, 
                    SchemaConstants.DO_GROUP_MEMBERSHIP_CONTROL);
            // Définition de la propriété de niveau pour extraire toutes les entités imbriquées
            grpMbrshipCtrl.setInt(SchemaConstants.PROP_LEVEL, SchemaConstants.PROP_LEVEL_NESTED);
            // Extraire l'attribut cn pour tous les groupes
            grpMbrshipCtrl.getList(SchemaConstants.PROP_PROPERTIES).add("cn");
            System.out.println("Input data graph before getting group membership of user"+ printDO(root));
            // Extraction des membres du groupe
            root = service.get(root);
            System.out.println("Output data graph after getting group membership of user"+ printDO(root));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    
    /**
     *  removeMemberFromGroup supprime l'utilisateur du groupe
     *  @param memberDn nom unique de l'utilisateur
     *  @param groupDn nom unique du groupe
     */
    public static void removeMemberFromGroup(String memberDn, String groupDn)
    {
        try
        {
            DataObject root = SDOHelper.createRootDataObject();
            DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_GROUP);
            // Définition du nom unique du groupe
            entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
                    groupDn);
            DataObject member1 = SDOHelper.createDataObject(SchemaConstants.WIM_NS_URI, 
                    SchemaConstants.DO_ENTITY);
            // Définition du nom unique du membre à supprimer
            member1.createDataObject(SchemaConstants.DO_IDENTIFIER).setString(SchemaConstants.PROP_UNIQUE_NAME,
                    memberDn);
            // Extraction du membre pour le supprimer du groupe
            entity.getList(SchemaConstants.DO_MEMBERS).add(member1);
            // Définition du contrôle du membre de groupe
            DataObject grpMbrCtrl = SDOHelper.createControlDataObject(root, null, 
                    SchemaConstants.DO_GROUP_MEMBER_CONTROL);
            // Suppression de l'affectation du mode pour supprimer le membre du groupe
            grpMbrCtrl.setInt(SchemaConstants.PROP_MODIFY_MODE, SchemaConstants.VALUE_MODIFY_MODE_UNASSIGN); 
            System.out.println("Input datagraph before removing member from group"+ printDO(root));
            // Mise à jour du groupe pour supprimer le membre
            root = service.update(root);
            System.out.println("Output datagraph after removing member from group"+ printDO(root));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     *  deleteEntity Supprime l'entité donnée
     *  @param entityName
     */
    public static void deleteEntity(String entityName)
    {
        try
        {
            DataObject root = SDOHelper.createRootDataObject();
            DataObject entity = SDOHelper.createEntityDataObject(root, null, SchemaConstants.DO_ENTITY);
            // Définition du contrôle de suppression
            DataObject ctrl = SDOHelper.createControlDataObject(root, null, 
                    SchemaConstants.DO_DELETE_CONTROL);
            // Définition de la propriété de retour après suppression
            ctrl.setBoolean(SchemaConstants.PROP_RETURN_DELETED, true);
            // Définition du nom unique de l'entité à supprimer
            entity.createDataObject(SchemaConstants.DO_IDENTIFIER).set(SchemaConstants.PROP_UNIQUE_NAME,
                    entityName);
            System.out.println("Input data graph before deleting entity"+ printDO(root));
            // Suppression de l'entité
            root = service.delete(root);
            System.out.println("Output data graph after deleting entity"+ printDO(root));
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

Graphiques de données d'entrée et de sortie

Les graphiques de données d'entrée et les graphiques de données de sortie résultants pour chaque étape de cet exemple sont fournis ci-après.

Graphique de données d'entrée pour la création d'un utilisateur, à savoir, une entité de type PersonAccount :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:uid>user1</wim:uid>
      <wim:cn>user1cn</wim:cn>
      <wim:sn>user1sn</wim:sn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Graphique de données de sortie après la création d'un utilisateur :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=user1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="96f69bb7-8048-4417-b871-37ebe7362bea" uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Graphique de données d'entrée pour la création d'un groupe, à savoir, une entité de type Group :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:cn>group1</wim:cn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Graphique de données de sortie après la création d'un groupe :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="a814ea28-1bfb-4093-b481-5bb128b4818a" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Graphique de données d'entrée pour l'ajout d'un utilisateur à un groupe :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
      <wim:members>
        <wim:identifier uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
      </wim:members>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Graphique de données de sortie après l'ajout d'un utilisateur à un groupe :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="a814ea28-1bfb-4093-b481-5bb128b4818a" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Graphique de données d'entrée pour l'extraction des membres d'un groupe avec GroupMemberControl :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
    <wim:controls xsi:type="wim:PropertyControl">
      <wim:properties>cn</wim:properties>
    </wim:controls>
    <wim:controls xsi:type="wim:GroupMemberControl">
      <wim:properties>cn</wim:properties>
      <wim:properties>uid</wim:properties>
    </wim:controls>
  </wim:Root>
</sdo:datagraph>
Graphique de données de sortie après l'extraction des membres d'un groupe :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="a814ea28-1bfb-4093-b481-5bb128b4818a" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
      <wim:cn>group1</wim:cn>
      <wim:members xsi:type="wim:PersonAccount">
        <wim:identifier externalName="uid=user1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
            uniqueId="96f69bb7-8048-4417-b871-37ebe7362bea" uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
        <wim:uid>user1</wim:uid>
        <wim:cn>user1cn</wim:cn>
      </wim:members>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Graphique de données d'entrée pour l'extraction des groupes auxquels un utilisateur appartient (appartenance aux groupes) avec GroupMembershipControl :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
    <wim:controls xsi:type="wim:GroupMembershipControl">
      <wim:properties>cn</wim:properties>
    </wim:controls>
  </wim:Root>
</sdo:datagraph>
Graphique de données de sortie après l'extraction des groupes auxquels un utilisateur appartient :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=user1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="96f69bb7-8048-4417-b871-37ebe7362bea" uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
      <wim:groups>
        <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
            uniqueId="a814ea28-1bfb-4093-b481-5bb128b4818a" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
        <wim:cn>group1</wim:cn>
      </wim:groups>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Graphique de données d'entrée pour la suppression d'un membre d'un groupe à l'aide de GroupMemberControl :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
      <wim:members>
        <wim:identifier uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
      </wim:members>
    </wim:entities>
    <wim:controls xsi:type="wim:GroupMemberControl" modifyMode="3"/>
  </wim:Root>
</sdo:datagraph>
Graphique de données de sortie après suppression d'un membre d'un groupe :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="a814ea28-1bfb-4093-b481-5bb128b4818a" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Graphique de données d'entrée pour la suppression d'un utilisateur :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities>
      <wim:identifier uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
    <wim:controls xsi:type="wim:DeleteControl" returnDeleted="true"/>
  </wim:Root>
</sdo:datagraph>
Graphique de données de sortie après la suppression d'un utilisateur :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=user1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="96f69bb7-8048-4417-b871-37ebe7362bea" uniqueName="uid=user1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>
Graphique de données d'entrée pour la suppression d'un groupe :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities>
      <wim:identifier uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
    <wim:controls xsi:type="wim:DeleteControl" returnDeleted="true"/>
  </wim:Root>
</sdo:datagraph>
Graphique de données de sortie après la suppression d'un groupe :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdo="commonj.sdo" xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:Group">
      <wim:identifier externalName="cn=group1,o=defaultWIMFileBasedRealm" repositoryId="InternalFileRepository"
          uniqueId="a814ea28-1bfb-4093-b481-5bb128b4818a" uniqueName="cn=group1,o=defaultWIMFileBasedRealm"/>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>


Conditions d'utilisation | Commentaires