Bonjour
j'ai un pb avec avec les propriétés.
j'ai un tread qui définit des propriétésce même thread passe l'url à un routeBuilder de Camel ainsi que l'objet properties. le route builder crée des routes camel et instancie un bean qui garde une référence sur les propriétés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 String inUrl1 = "file:data/inbox"; properties.setProperty(inUrl1 + ".origine", "ABC"); ... inUrl2 = "file:data/inbox2"; properties.setProperty(inUrl2 + ".origine", "DEF");
camel démarre la route et lance plusieurs treads
parmis ces treads il y en a un qui appelle une méthode de l'instance du bean.
en mode debug je vois bien l'objet properties avec son contenu
je vois bien mes deux propriétés avec leur clef
"file:data/inbox.origine" et "file:data/inbox2.origine"
dans cette méthode je récupère de camel l'url d'origine et j'ai
"file:data/inbox?option1=...."
je fais donc un split pour récupérer l'url d'origine et j'obtiens
"file:data/inbox"
mais je ne parviens pas à faire mon get.
le getProperty retourne toujours null
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 String uri = exchange.getFromEndpoint().getEndpointUri(); String[] part = uri.split("\\?"); uri = part[0].toString(); origine = properties.getProperty(uri + ".origine");
uri + ".origine" me donne pourtant bien "file:data/inbox2.origine"
si j regarde de plus pres dans mon débuguer
je vois que la propriété est définie ainsi
mais le résultat de uri + ".origine" contient bien la même chaine de caractère mais avec un id d'objet en mémoire différent id192
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 properties [ {key : "file:data/inbox.origine" : id105, value : "ABC"}, {key : "file:data/inbox2.origine" : id144, value : "DEF"}, ]
j'ai essayé avec un variable statique pour voir si mon getProperty retournait quelque chose et il m'envoie effectivement "DEF"
Je mais donc dans mes propriété une valeur avec une chaine donnée
mais je ne peux pas la récupérer car la chaine que j'utilise alors bien ayant la même valeur n'est pas le même objet.
je n'ai pas d'autre possibilité pour connaitre la source que d'utiliser le getEndpointUri c'est le seul élément que j'ai à ma disposition.
il me parait fou que le système de propriété ne se base pas sur une comparaison de valeur mais d'objet
il me parait évident qu'on n'a jamais la garantie d'avoir le même objet.
A+JYT
Partager