[ https://issues.apache.org/jira/browse/SLING-12737?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mircea Stan updated SLING-12737: -------------------------------- Description: I am using the method findJobs in JobManager to iterate through all Sling jobs. I would like to find all history jobs with a finished date before a certain date specified by a user. First of all, there are no tests that test templates with operations, so I had to reverse engineer how should I build the template. In the end, I created a template like this: {code:java} Map<String, Object> templateBefore = Map.of("<" + JobImpl.PROPERTY_FINISHED_DATE,"2026-04-03T11:38:25.360+03:00"); {code} The template is not working though because the key is encoded before extracting the first character and the first character is no longer '<'. {code:java} final String key = ISO9075.encode(current.getKey()); final char firstChar = key.length() > 0 ? key.charAt(0) : 0; final String propName; final Operation op; if ( firstChar == '=' ) { propName = key.substring(1); op = Operation.EQUALS; } else if ( firstChar == '<' ) { final char secondChar = key.length() > 1 ? key.charAt(1) : 0; if ( secondChar == '=' ) { op = Operation.LESS_OR_EQUALS; propName = key.substring(2); } else { op = Operation.LESS; propName = key.substring(1); } } {code} Could you confirm the bug and if it is not a bug, share a template that can work in the scenario I described? Thanks! was: I am using the method findJobs in JobManager to iterate through all Sling jobs. I would like to find all history jobs with a finished date before a certain date specified by a user. First of all, there are no tests that test templates with operators, so I had to reverse engineer how should I build the template. In the end, I created a template like this: {code:java} Map<String, Object> templateBefore = Map.of("<" + JobImpl.PROPERTY_FINISHED_DATE,"2026-04-03T11:38:25.360+03:00"); {code} The template is not working though because the key is encoded before extracting the first character and the first character is no longer '<'. {code:java} final String key = ISO9075.encode(current.getKey()); final char firstChar = key.length() > 0 ? key.charAt(0) : 0; final String propName; final Operation op; if ( firstChar == '=' ) { propName = key.substring(1); op = Operation.EQUALS; } else if ( firstChar == '<' ) { final char secondChar = key.length() > 1 ? key.charAt(1) : 0; if ( secondChar == '=' ) { op = Operation.LESS_OR_EQUALS; propName = key.substring(2); } else { op = Operation.LESS; propName = key.substring(1); } } {code} Could you confirm the bug and if it is not a bug, share a template that can work in the scenario I described? Thanks! > The method findJobs in JobManagerImpl does not accept a template containing > an operation > ---------------------------------------------------------------------------------------- > > Key: SLING-12737 > URL: https://issues.apache.org/jira/browse/SLING-12737 > Project: Sling > Issue Type: Bug > Components: Event > Affects Versions: Event 4.3.14 > Reporter: Mircea Stan > Priority: Major > > I am using the method findJobs in JobManager to iterate through all Sling > jobs. > I would like to find all history jobs with a finished date before a certain > date specified by a user. > First of all, there are no tests that test templates with operations, so I > had to reverse engineer how should I build the template. > In the end, I created a template like this: > {code:java} > Map<String, Object> templateBefore = Map.of("<" + > JobImpl.PROPERTY_FINISHED_DATE,"2026-04-03T11:38:25.360+03:00"); {code} > The template is not working though because the key is encoded before > extracting the first character and the first character is no longer '<'. > {code:java} > final String key = ISO9075.encode(current.getKey()); > final char firstChar = key.length() > 0 ? key.charAt(0) : 0; > final String propName; > final Operation op; > if ( firstChar == '=' ) { > propName = key.substring(1); > op = Operation.EQUALS; > } else if ( firstChar == '<' ) { > final char secondChar = key.length() > 1 ? key.charAt(1) : 0; > if ( secondChar == '=' ) { > op = Operation.LESS_OR_EQUALS; > propName = key.substring(2); > } else { > op = Operation.LESS; > propName = key.substring(1); > } > } {code} > Could you confirm the bug and if it is not a bug, share a template that can > work in the scenario I described? > Thanks! -- This message was sent by Atlassian Jira (v8.20.10#820010)