[ 
https://issues.apache.org/jira/browse/CURATOR-608?focusedWorklogId=639103&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-639103
 ]

ASF GitHub Bot logged work on CURATOR-608:
------------------------------------------

                Author: ASF GitHub Bot
            Created on: 18/Aug/21 14:12
            Start Date: 18/Aug/21 14:12
    Worklog Time Spent: 10m 
      Work Description: Ryan0751 commented on a change in pull request #395:
URL: https://github.com/apache/curator/pull/395#discussion_r691278594



##########
File path: 
curator-x-async/src/test/java/org/apache/curator/x/async/modeled/TestZPath.java
##########
@@ -57,11 +57,11 @@ public void testBasic()
         assertFalse(path.startsWith(ZPath.root.child("two")));
 
         ZPath checkIdLike = ZPath.parse("/one/{two}/three");

Review comment:
       Sorry for the churn, but now that I'm looking at this again more 
closely, the current implementation does still seem to have a bug to me.
   
   I understand that the parse() method doesn't resolve parameters, and that 
parseWithID's does resolve parameters.
   
   The unit test calls parse() on a path when parameters in it.
   
   Example:
   `ZPath checkIdLike = ZPath.parse("/one/{two}/three");`
   
   As expected, that doesn't touch the parameters, and returns a ZPath in 
checkIdLike of:
   `/one/{two}/three`
   
   Next, the "isResolved()" method is called on that path, and the unit test is 
currently expecting it to be resolved:
   assertTrue(checkIdLike.isResolved());
   
   The confusion for me is:  How is that considered a resolved path if 
`checkIdLike` still contains the `{two}` parameter?
   
   My change had fixed this, so that if any parameters (items in `{}` 
delimiters} is found in the ZPath, it's considered unresolved.
   




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 639103)
    Time Spent: 1h 20m  (was: 1h 10m)

> ZPath's check for "isParameter()" is too simplistic, leading to isResolved() 
> false negatives
> --------------------------------------------------------------------------------------------
>
>                 Key: CURATOR-608
>                 URL: https://issues.apache.org/jira/browse/CURATOR-608
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 5.1.0
>            Reporter: Ryan Ruel
>            Priority: Major
>             Fix For: 5.2.1
>
>          Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> ZPath's "isParameter()" method checks to see if an element of the path is a 
> parameter which make be substituted (i.e, "\{param}"). 
> Today, the check merely looks to see if the string contains "/" and then some 
> characters.
> Instead, it should check for the full parameter pattern.
> The check that is in place now can lead to ZPath's which appear fully 
> resolved, but when isResolved() is called on the path are indicated as NOT 
> resolved.  This causes failures with certain ModeledFramework operations.
> For example:
> ZPath rootPath = ZPath.from("/root");
> ZPath path = 
> ZPath.parseWithIds("\{root}/\{one}/two/\{three}").resolved(rootPath, "one", 
> "three");
> This produces a fully resolved path: /root/one/two/three
> But calling "isResolved()" on the created path returns false.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to