La propriété Boolean ou Integer n'est pas mise à jour avec la valeur par défaut

Effectuez les étapes répertoriées ici pour éviter qu'une propriété étendue dont le type de données est boolean ou integer ne soit pas mise à jour lorsqu'elle est associée à la valeur par défaut.

Problème

Si vous tentez d'associer une propriété étendue dont le type de données est une valeur unique boolean ou integer à sa valeur par défaut, la propriété n'est pas mise à jour. Par exemple, si vous tentez d'associer un type de données integer à valeur unique à une valeur autre que 0, qui est la valeur par défaut, la mise à jour aboutit. En revanche, si vous tentez de l'associer à sa valeur par défaut, qui est 0, la propriété n'est pas mise à jour. De même, si vous tentez d'associer une propriété étendue dont le type de données est boolean à la valeur true, la mise à jour aboutit. En revanche, si vous tentez de l'associer à sa valeur par défaut, qui est false, la propriété n'est pas mise à jour.

Ce problème survient uniquement lorsque la propriété étendue est une propriété à valeur unique. Il s'agit d'une limitation EMF.

Solution

Effectuez les opérations ci-dessous pour contourner le problème.

Remarque : Avant d'utiliser les fragments de code exemple dans votre application, assurez-vous d'avoir lu les informations et effectué les opérations décrites dans la rubrique Prérequis pour la programmation.
  1. Utilisez la méthode createSchema() dans le code de votre application pour créer une propriété étendue à plusieurs valeurs dont le type de données est boolean ou integer et qui est associée à la valeur true.

    Pour des détails, voir Exemple de code pour l'extension du schéma dans le référentiel de fichiers, Exemple de code pour l'extension du schéma dans le référentiel d'extension de propriété et Exemple de code pour l'extension du schéma dans un référentiel LDAP.

    Vous pouvez aussi utiliser la commande addIdMgrPropertyToEntityTypes wsadmin pour créer une propriété étendue à plusieurs valeurs dont le type de données est boolean ou integer et qui est associée à la valeur true.

    Remarque : Vous pouvez aussi changer la définition d'une propriété étendue existante à valeur unique en indiquant qu'il s'agit d'une propriété à plusieurs valeurs en éditant le fichier wimxmlextension.xml, bien que cette opération ne soit pas recommandée.
  2. Utilisez la méthode create() ou update() pour spécifier la valeur de la nouvelle propriété comme valeur par défaut, c'est-à-dire false pour le type de données boolean et 0 pour le type de données integer. La valeur de la propriété est mise à jour correctement.
    Le code exemple suivant explique comment utiliser la méthode create() afin de définir la valeur par défaut 0 pour une propriété à plusieurs valeurs dont le type de données est integer :
    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);
    // Création d'une liste de tableau dont la taille est un
    List lst = new ArrayList();
    lst.add(0);
    entity.set("jersyNumber", lst );
    System.out.println("Input datagraph before creating user"+ printDO(root));
    // Création de l'entité PersonAccount
    root = service.create(root);
    // Impression du graphique de données de sortie
    System.out.println("Output datagraph after creating user"+ printDO(root));
    return root;


Conditions d'utilisation | Commentaires