IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Groovy Java Discussion :

Fonction qui retourne null


Sujet :

Groovy Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Fonction qui retourne null
    Bonjour,

    J'utilise Groovy avec SoapUI 5.3.0 en version gratuite

    J'ai un TestCase avec deux webservices et un script Groovy
    Le but est de générer un fichier texte avec les infos qui m'intéressent

    Le code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    import com.eviware.soapui.support.XmlHolder
    import java.text.MessageFormat
    import org.apache.commons.lang.ObjectUtils
    import java.util.ArrayList
     
    def groovyUtils=new com.eviware.soapui.support.GroovyUtils(context)
     
    def responseHolder1 = groovyUtils.getXmlHolder( testRunner.testCase.testSteps["getDataRequest"].testRequest.response.getContentAsXml())
    def responseHolder2 = groovyUtils.getXmlHolder( testRunner.testCase.testSteps["getAssignments"].testRequest.response.getContentAsXml())
    def file = new File("C:/temps.txt")
    def findAssignment(id1) {
    	for (int i=0; i++; ID2.size()-1){
    		if (id1 == ID2[i]) {
    			return Assignment[i]
    		}
    	}
    }
     
    //temps de présence
    List<String> ID1
    List<String> time
    List<String> date
     
    //affectations
    List<String> ID2
    List<String> Assignment
     
    List<String> list
    List<String> list2
     
    ID1=responseHolder1.getDomNodes("//*:FromDateToDateJobTotal/*:employeeIdentificationNumber").collect{node->node.getFirstChild().nodeValue}
    date=responseHolder1.getDomNodes("//*:FromDateToDateJobTotal/*:startDate").collect{node->node.getFirstChild().nodeValue}
    time=responseHolder1.getDomNodes("//*:FromDateToDateJobTotal/*:hours").collect{node->node.getFirstChild().nodeValue}
     
    ID2=responseHolder2.getDomNodes("//*:JobAssignment/*:employeeIdentificationNumber").collect{node->node.getFirstChild().nodeValue}
    Assignment=responseHolder2.getDomNodes("//*:JobAssignment/*:jobDescription").collect{node->node.getFirstChild().nodeValue}
     
    list=([ID1, date, time].transpose().collect{it -> it[0] + " | " + it[1] + " | " + it[2] + " | " + findAssignment(it[0])})
     
    for (String s: list) {	
        file.append(s  + System.getProperty("line.separator"))
    }
    Le permier service va me chercher des temps de présence, le deuxième l'affectation à un poste de travail. Le lien entre les deux est employeeIdentificationNumber que j'appelle respectivement ID1 et ID2
    Je souhaiterais obtenir une liste finale avec ID1, date, time, Assignment (Assignment tel que ID1=ID2)
    Mon problème est que la fonction findAssignment me retourne null dans ma liste et je ne comprends pas pourquoi

    J'ai bien relu tout le code mais je ne trouve pas, quelqu'un pourrait m'aiguiller svp sur ce qui coince ?
    Je précise que je suis débutant et pas du tout informaticien... juste un peu seul au monde en PME

  2. #2
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Bonjour,

    Déjà, le code n'est pas des plus clairs avec les listes ID1 et ID2... Des noms plus explicites faciliteraient la lecture.

    Et éviterait peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def findAssignment(id1){    for (int i=0; i++; ID2.size()-1){
            if (id1 == ID2[i]) {
                return Assignment[i]
            }
        }
    }
     
    //temps de présence List<String> ID1
    Avoir un id1 en paramètre d'un méthode, en même temps qu'une liste ID1, et en Groovy, c'est prêter le flanc à l'erreur.

    Quelque chose risque en tous cas d'être toujours faux :Comparer deux String nécessite d'utiliser la méthode equals() et non == (si tant est que id1 est du type String, Groovy permettant comme ici de ne pas typer explicitement les paramètres).

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2017
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Cincinnatus,

    Merci pour cette réponse complète, j'ai bien pris note des deux conseils, je vais reprendre le code avec des noms plus explicites, en particulier ID/id et je pense que equals() va régler le problème

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction qui retourne plusieurs valeurs !
    Par casafa dans le forum C++
    Réponses: 20
    Dernier message: 23/04/2014, 16h56
  2. Réponses: 2
    Dernier message: 15/06/2009, 13h46
  3. Réponses: 7
    Dernier message: 03/12/2004, 12h40
  4. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo