Pas possible de faire un cast d'un type different

Résolu/Fermé
mehdikwa Messages postés 9 Date d'inscription mercredi 26 février 2014 Statut Membre Dernière intervention 29 mai 2014 - 29 avril 2014 à 17:59
mehdikwa Messages postés 9 Date d'inscription mercredi 26 février 2014 Statut Membre Dernière intervention 29 mai 2014 - 30 avril 2014 à 11:35
Bonjour,

Merci de m'aider, j'ai un objet abstrait PartyRole que je voudrais caster en SIGroup afin d'obtenir un attribut name de le reponse de mon webservice si le PartyRoleType=SIGroup

Voici mon code

for (PartyRole pr : user.value.getPartyRole()) {
if(pr.getPartyRoleType().equals("SIGroup")){
//identity.addGroup(user.value.getPartyRole().get(i).getPartyRoleID());
identity.addGroup(((SIGroup)pr).getName());
}

Voici la reponse que je parse de mon service


<user creationDate="2014-04-04+04:00" partyType="Person" xmlns="">
<ns3:partyRole xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
status="ACTIVE" xsi:type="ns3:User">
<ns3:partyRoleType>SIGroup</ns3:partyRoleType>
<ns3:electronicIdentity
electronicIdentityID="xxxx">
<ns4:credential login="xxxx" xsi:type="ns4:LoginPasswordCredential" />
</ns3:electronicIdentity>
</ns3:partyRole>
<ns3:partyRole xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
description="conseillers clients" name="456" partyRoleID="2"
xsi:type="ns3:SIGroup">
<ns3:partyRoleType>SIGroup</ns3:partyRoleType>
</ns3:partyRole>
<ns3:personName firstName="xxxx" lastName="xxxx" />
</user>

Je souhaiterai obtenir la valeur "456" de l'attribut name, mais ca ne me retourne rien.
A voir également:

3 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
29 avril 2014 à 21:37
Bonjour,

Quelles technologies tu utilises pour manipuler ton XML ?

De manière générale,
pr.getPartyRoleType().equals("SIGroup")
n'est pas suffisant pour déterminer que
pr
est une instance de la classe
SIGroup
, il faudrait plutôt avoir un test
pr instanceof SIGroup
. Est-ce que tu pourrais faire un affichage de
pr.getClass()
cela permettrait d'en savoir plus sur les objets que tu manipules.
0
mehdikwa Messages postés 9 Date d'inscription mercredi 26 février 2014 Statut Membre Dernière intervention 29 mai 2014
30 avril 2014 à 09:30
Bonjour,

J'utilise apache-cxf pour generer mes beans depuis les wsdl du service. Ci-dessous les objets dans partyRole:

public class PartyRole {

@XmlElement(namespace = "http://orange.re/common-business-party", required = true)
protected PRT partyRoleType;
@XmlElement(namespace = "http://orange.re/common-business-party")
protected List<EntityWithRights> entityWithRight;
@XmlAttribute(name = "partyRoleID")
protected String partyRoleID;

Le souci cependant n'est pas dans la condition mais plutot dans le cast que je fait

identity.addGroup(((SIGroup)pr).getName());

J'ai un cast exception comme quoi User ne peu pas être casté a un type SIGroup
0
mehdikwa Messages postés 9 Date d'inscription mercredi 26 février 2014 Statut Membre Dernière intervention 29 mai 2014
30 avril 2014 à 11:35
Souci résolut, en effet KX merci, ma condition n'etait pas suffisante il fallait passer par instanceof

if(pr instanceof SIGroup)
{
identity.addGroup(((SIGroup)pr).getName().toString());
}
0