Hi Yeah it sounds like a good idea to try to normalize the pattern if it resemble an uri pattern with query parameters, eg check for ? sign etc. You are welcome to log a JIRA and work on a PR
On Thu, Sep 26, 2019 at 9:15 AM Stig Døssing <stig.doss...@systematic.com> wrote: > > Hi Claus, > > I don't need to match on the query parameters, and your workaround is fine. > My code happened to try to match the query parameters, since I have the > endpoint URI in a constant that I use in both the test and the route > definition. > > I think it's pretty surprising that you can put the exact same URI string > into the route's from(), and the NotifyBuilder's from(), and end up not > getting a match. I'm asking whether we can/should try to fix this weird > behavior, so other people don't get caught out by it? For example, we could > try to normalize the pattern in EndpointHelper.matchEndpoint if it parses as > a URI, we could do it in NotifiyBuilder.from instead, or we could add a note > to the Javadoc for NotifyBuilder.from that tells people that if they're > passing a URI it should be normalized. The parameter naming (endpointUri) and > Javadoc for NotifyBuilder indicates that passing a URI to match is one of the > expected ways to use that method. > > -----Original Message----- > From: Claus Ibsen <claus.ib...@gmail.com> > Sent: 26. september 2019 08:50 > To: users@camel.apache.org > Subject: Re: EndpointHelper.matchEndpoint doesn't normalize the pattern > parameter > > Hi > > Its a pattern and not an endpoint uri, eg you can use sjms* to match all jsms > components etc. > > Why do you want to match on the query parameters, why not just say > > sjms2://queue:my-queue-name* > > > On Thu, Sep 26, 2019 at 7:43 AM Stig Døssing <stig.doss...@systematic.com> > wrote: > > > > Hi, > > > > I'm trying to use NotifyBuilder for a test, and am running into a > > matching issue regarding the "from" method. My route looks like > > > > From( "sjms2:queue:my-queue-name?transacted=true&consumerCount=1") > > //processing here > > > > I use NotifyBuilder like this: > > > > NotifyBuilder notifyBuilder = new NotifyBuilder(context) > > > > .from("sjms2:queue:my-queue-name?transacted=true&consumerCount=1") > > .whenDone(1) > > .create() > > > > Followed by a call to matches(). When I run the test, the NotifyBuilder > > fails to match. > > The NotifyBuilder uses the EndpointHelper to match from endpoint URIs, and > > the call I'm seeing return false has the following parameters: > > > > EndpointHelper.matchEndpoint(context, uri = > > "sjms2://queue:my-queue-name?consumerCount=1&transacted=true", pattern > > = "sjms2:queue:my-queue-name?transacted=true&consumerCount=1") > > > > I would expect these values to match, but the EndpointHelper handles > > reordered query parameters by normalizing the "uri" parameter, but not the > > "pattern" parameter. As the "uri" parameter is already normalized, these > > values end up not matching. > > > > Should I raise an issue for this, or is this a known limitation? > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2