<mavenModule _class='hudson.maven.MavenModule'><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.JobDisplayAction'><displayUrl>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/</displayUrl></action><fullDisplayName>idempiere-rest-master » com.trekglobal.idempiere.rest.api</fullDisplayName><fullName>idempiere-rest-master/com.trekglobal.idempiere.extensions:com.trekglobal.idempiere.rest.api</fullName><name>com.trekglobal.idempiere.extensions:com.trekglobal.idempiere.rest.api</name><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/</url><buildable>true</buildable><build _class='hudson.maven.MavenBuild'><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/mavenArtifacts/</url></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</displayPath><fileName>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/1.0.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#126</displayName><duration>8989</duration><estimatedDuration>7656</estimatedDuration><fullDisplayName>idempiere-rest-master » com.trekglobal.idempiere.rest.api #126</fullDisplayName><id>126</id><inProgress>false</inProgress><keepLog>false</keepLog><number>126</number><queueId>-1</queueId><result>FAILURE</result><timestamp>1785552248201</timestamp><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/pom.xml</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/.classpath</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</affectedPath><commitId>427280be32686d308addb3bd78a3816c82707d89</commitId><timestamp>1785502559000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)

* Add @Table.Column / @bind.Column / @#GlobalVar reference resolution to v1/batch

* Fix @#GlobalVar snapshot and reject duplicate batch aliases

Snapshot the calling session's context before any sub-request runs so
@#GlobalVar resolution isn't affected by ServerContext.dispose() calls
triggered by earlier sub-requests in the same batch.

Also reject an "as" alias that was already used earlier in the batch,
addressing CodeRabbit feedback on #517: previously a duplicate alias
would silently overwrite the earlier sub-request's entry in
referenceCache, causing later @bind.Column references to resolve
against the wrong sub-request.

* Require closing @ for batch reference tokens, delegate global vars to Env.parseContext

unify the reference grammar to match iDempiere's

* Use sessionCtx snapshot for MTable lookups instead of the disposable live context

* Add @bind$.jsonPathExpr@ batch reference support

Per Heng Sin's alternative on #516: standard JSONPath (RFC 9535)
against a prior sub-request's response, for nested/array access
@bind.Column@ can't do. Embeds json-path/json-smart/accessors-smart;
slf4j/asm are imported from iDempiere's own OSGi bundles instead.

* Extract BatchReferenceResolver to fix clean-code issues from this PR

* Drop flat @Table.Column@/@bind.Column@, standardize on bare JSONPath

* Only recognize #/$/+ prefixed context vars, not any @...@ literal

* Make batch responseAlias mandatory, drop tableName-based chaining, update docs

* Wrap batch alias/JSONPath references in @...@, make responseAlias optional

* Fix illegal multi-catch of InvalidPathException and its subclass PathNotFoundException
</comment><date>2026-07-31 14:55:59 +0200</date><id>427280be32686d308addb3bd78a3816c82707d89</id><msg>Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)</msg><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/.classpath</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/pom.xml</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</file></path></item></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><mavenArtifacts><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/mavenArtifacts/</url></mavenArtifacts></build><build _class='hudson.maven.MavenBuild'><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/125/mavenArtifacts/</url></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</displayPath><fileName>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/1.0.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#125</displayName><duration>7143</duration><estimatedDuration>7656</estimatedDuration><fullDisplayName>idempiere-rest-master » com.trekglobal.idempiere.rest.api #125</fullDisplayName><id>125</id><inProgress>false</inProgress><keepLog>false</keepLog><number>125</number><queueId>-1</queueId><result>FAILURE</result><timestamp>1784083451358</timestamp><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/125/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/impl/AuthServiceImpl.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/PasswordResetCompletion.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/PasswordResetRequest.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/AuthService.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/filter/RequestFilter.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/PasswordResetVerification.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api.test/src/com/trekglobal/idempiere/rest/api/v1/auth/impl/test/PasswordResetTest.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</affectedPath><commitId>647fc987a8efb0f41f0fd94538fee97338fca122</commitId><timestamp>1784041646000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>#521 - Implement reset password endpoints in REST (#522)

* #521 - Implement reset password endpoints in REST

* #521 - Coderabbit suggestion
</comment><date>2026-07-14 17:07:26 +0200</date><id>647fc987a8efb0f41f0fd94538fee97338fca122</id><msg>#521 - Implement reset password endpoints in REST (#522)</msg><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/filter/RequestFilter.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/AuthService.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</file></path><path><editType>add</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/PasswordResetCompletion.java</file></path><path><editType>add</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/PasswordResetRequest.java</file></path><path><editType>add</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/PasswordResetVerification.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</file></path><path><editType>add</editType><file>com.trekglobal.idempiere.rest.api.test/src/com/trekglobal/idempiere/rest/api/v1/auth/impl/test/PasswordResetTest.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/auth/impl/AuthServiceImpl.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/server.product.rest.launch</affectedPath><commitId>f962a2fbfef22297730a1986b932321d7278262a</commitId><timestamp>1784041725000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>- synchronize launcher with latest changes on master (#523)
</comment><date>2026-07-14 17:08:45 +0200</date><id>f962a2fbfef22297730a1986b932321d7278262a</id><msg>- synchronize launcher with latest changes on master (#523)</msg><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/server.product.rest.launch</file></path></item></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><mavenArtifacts><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/125/mavenArtifacts/</url></mavenArtifacts></build><build _class='hudson.maven.MavenBuild'><action></action><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/mavenArtifacts/</url></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#54</displayName><duration>6836</duration><estimatedDuration>7656</estimatedDuration><fullDisplayName>idempiere-rest-master » com.trekglobal.idempiere.rest.api #54</fullDisplayName><id>54</id><inProgress>false</inProgress><keepLog>false</keepLog><number>54</number><queueId>-1</queueId><result>SUCCESS</result><timestamp>1739245450779</timestamp><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</affectedPath><commitId>63f0e593e0485b0ac8581855b5ae7d939b924e0f</commitId><timestamp>1739195034000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>OpenAPI 3.0.0 yaml documentation for iDempiere REST API #331 (#332)

</comment><date>2025-02-10 14:43:54 +0100</date><id>63f0e593e0485b0ac8581855b5ae7d939b924e0f</id><msg>OpenAPI 3.0.0 yaml documentation for iDempiere REST API #331 (#332)</msg><path><editType>add</editType><file>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/model/MRestView.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/LocationTypeConverter.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/expand/ExpandParser.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/DefaultPOSerializer.java</affectedPath><commitId>f14153642cdcebb405b7f5e94ded181fb27cd8b8</commitId><timestamp>1739209466000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>When using REST_View, json property should map to REST_ViewColumn.Name only #329 (#330)

</comment><date>2025-02-10 18:44:26 +0100</date><id>f14153642cdcebb405b7f5e94ded181fb27cd8b8</id><msg>When using REST_View, json property should map to REST_ViewColumn.Name only #329 (#330)</msg><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/model/MRestView.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/expand/ExpandParser.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/LocationTypeConverter.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/DefaultPOSerializer.java</file></path></item></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><mavenArtifacts><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/mavenArtifacts/</url></mavenArtifacts></build><color>red</color><firstBuild _class='hudson.maven.MavenBuild'><action></action><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/mavenArtifacts/</url></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#54</displayName><duration>6836</duration><estimatedDuration>7656</estimatedDuration><fullDisplayName>idempiere-rest-master » com.trekglobal.idempiere.rest.api #54</fullDisplayName><id>54</id><inProgress>false</inProgress><keepLog>false</keepLog><number>54</number><queueId>-1</queueId><result>SUCCESS</result><timestamp>1739245450779</timestamp><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</affectedPath><commitId>63f0e593e0485b0ac8581855b5ae7d939b924e0f</commitId><timestamp>1739195034000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>OpenAPI 3.0.0 yaml documentation for iDempiere REST API #331 (#332)

</comment><date>2025-02-10 14:43:54 +0100</date><id>63f0e593e0485b0ac8581855b5ae7d939b924e0f</id><msg>OpenAPI 3.0.0 yaml documentation for iDempiere REST API #331 (#332)</msg><path><editType>add</editType><file>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/model/MRestView.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/LocationTypeConverter.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/expand/ExpandParser.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/DefaultPOSerializer.java</affectedPath><commitId>f14153642cdcebb405b7f5e94ded181fb27cd8b8</commitId><timestamp>1739209466000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>When using REST_View, json property should map to REST_ViewColumn.Name only #329 (#330)

</comment><date>2025-02-10 18:44:26 +0100</date><id>f14153642cdcebb405b7f5e94ded181fb27cd8b8</id><msg>When using REST_View, json property should map to REST_ViewColumn.Name only #329 (#330)</msg><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/model/MRestView.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/expand/ExpandParser.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/LocationTypeConverter.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/DefaultPOSerializer.java</file></path></item></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><mavenArtifacts><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/mavenArtifacts/</url></mavenArtifacts></firstBuild><healthReport><description>Build stability: 2 out of the last 3 builds failed.</description><iconClassName>icon-health-20to39</iconClassName><iconUrl>health-20to39.png</iconUrl><score>33</score></healthReport><inQueue>false</inQueue><keepDependencies>false</keepDependencies><lastBuild _class='hudson.maven.MavenBuild'><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/mavenArtifacts/</url></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</displayPath><fileName>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/1.0.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#126</displayName><duration>8989</duration><estimatedDuration>7656</estimatedDuration><fullDisplayName>idempiere-rest-master » com.trekglobal.idempiere.rest.api #126</fullDisplayName><id>126</id><inProgress>false</inProgress><keepLog>false</keepLog><number>126</number><queueId>-1</queueId><result>FAILURE</result><timestamp>1785552248201</timestamp><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/pom.xml</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/.classpath</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</affectedPath><commitId>427280be32686d308addb3bd78a3816c82707d89</commitId><timestamp>1785502559000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)

* Add @Table.Column / @bind.Column / @#GlobalVar reference resolution to v1/batch

* Fix @#GlobalVar snapshot and reject duplicate batch aliases

Snapshot the calling session's context before any sub-request runs so
@#GlobalVar resolution isn't affected by ServerContext.dispose() calls
triggered by earlier sub-requests in the same batch.

Also reject an "as" alias that was already used earlier in the batch,
addressing CodeRabbit feedback on #517: previously a duplicate alias
would silently overwrite the earlier sub-request's entry in
referenceCache, causing later @bind.Column references to resolve
against the wrong sub-request.

* Require closing @ for batch reference tokens, delegate global vars to Env.parseContext

unify the reference grammar to match iDempiere's

* Use sessionCtx snapshot for MTable lookups instead of the disposable live context

* Add @bind$.jsonPathExpr@ batch reference support

Per Heng Sin's alternative on #516: standard JSONPath (RFC 9535)
against a prior sub-request's response, for nested/array access
@bind.Column@ can't do. Embeds json-path/json-smart/accessors-smart;
slf4j/asm are imported from iDempiere's own OSGi bundles instead.

* Extract BatchReferenceResolver to fix clean-code issues from this PR

* Drop flat @Table.Column@/@bind.Column@, standardize on bare JSONPath

* Only recognize #/$/+ prefixed context vars, not any @...@ literal

* Make batch responseAlias mandatory, drop tableName-based chaining, update docs

* Wrap batch alias/JSONPath references in @...@, make responseAlias optional

* Fix illegal multi-catch of InvalidPathException and its subclass PathNotFoundException
</comment><date>2026-07-31 14:55:59 +0200</date><id>427280be32686d308addb3bd78a3816c82707d89</id><msg>Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)</msg><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/.classpath</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/pom.xml</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</file></path></item></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><mavenArtifacts><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/mavenArtifacts/</url></mavenArtifacts></lastBuild><lastCompletedBuild _class='hudson.maven.MavenBuild'><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/mavenArtifacts/</url></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</displayPath><fileName>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/1.0.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#126</displayName><duration>8989</duration><estimatedDuration>7656</estimatedDuration><fullDisplayName>idempiere-rest-master » com.trekglobal.idempiere.rest.api #126</fullDisplayName><id>126</id><inProgress>false</inProgress><keepLog>false</keepLog><number>126</number><queueId>-1</queueId><result>FAILURE</result><timestamp>1785552248201</timestamp><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/pom.xml</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/.classpath</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</affectedPath><commitId>427280be32686d308addb3bd78a3816c82707d89</commitId><timestamp>1785502559000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)

* Add @Table.Column / @bind.Column / @#GlobalVar reference resolution to v1/batch

* Fix @#GlobalVar snapshot and reject duplicate batch aliases

Snapshot the calling session's context before any sub-request runs so
@#GlobalVar resolution isn't affected by ServerContext.dispose() calls
triggered by earlier sub-requests in the same batch.

Also reject an "as" alias that was already used earlier in the batch,
addressing CodeRabbit feedback on #517: previously a duplicate alias
would silently overwrite the earlier sub-request's entry in
referenceCache, causing later @bind.Column references to resolve
against the wrong sub-request.

* Require closing @ for batch reference tokens, delegate global vars to Env.parseContext

unify the reference grammar to match iDempiere's

* Use sessionCtx snapshot for MTable lookups instead of the disposable live context

* Add @bind$.jsonPathExpr@ batch reference support

Per Heng Sin's alternative on #516: standard JSONPath (RFC 9535)
against a prior sub-request's response, for nested/array access
@bind.Column@ can't do. Embeds json-path/json-smart/accessors-smart;
slf4j/asm are imported from iDempiere's own OSGi bundles instead.

* Extract BatchReferenceResolver to fix clean-code issues from this PR

* Drop flat @Table.Column@/@bind.Column@, standardize on bare JSONPath

* Only recognize #/$/+ prefixed context vars, not any @...@ literal

* Make batch responseAlias mandatory, drop tableName-based chaining, update docs

* Wrap batch alias/JSONPath references in @...@, make responseAlias optional

* Fix illegal multi-catch of InvalidPathException and its subclass PathNotFoundException
</comment><date>2026-07-31 14:55:59 +0200</date><id>427280be32686d308addb3bd78a3816c82707d89</id><msg>Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)</msg><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/.classpath</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/pom.xml</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</file></path></item></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><mavenArtifacts><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/mavenArtifacts/</url></mavenArtifacts></lastCompletedBuild><lastFailedBuild _class='hudson.maven.MavenBuild'><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/mavenArtifacts/</url></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</displayPath><fileName>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/1.0.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#126</displayName><duration>8989</duration><estimatedDuration>7656</estimatedDuration><fullDisplayName>idempiere-rest-master » com.trekglobal.idempiere.rest.api #126</fullDisplayName><id>126</id><inProgress>false</inProgress><keepLog>false</keepLog><number>126</number><queueId>-1</queueId><result>FAILURE</result><timestamp>1785552248201</timestamp><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/pom.xml</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/.classpath</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</affectedPath><commitId>427280be32686d308addb3bd78a3816c82707d89</commitId><timestamp>1785502559000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)

* Add @Table.Column / @bind.Column / @#GlobalVar reference resolution to v1/batch

* Fix @#GlobalVar snapshot and reject duplicate batch aliases

Snapshot the calling session's context before any sub-request runs so
@#GlobalVar resolution isn't affected by ServerContext.dispose() calls
triggered by earlier sub-requests in the same batch.

Also reject an "as" alias that was already used earlier in the batch,
addressing CodeRabbit feedback on #517: previously a duplicate alias
would silently overwrite the earlier sub-request's entry in
referenceCache, causing later @bind.Column references to resolve
against the wrong sub-request.

* Require closing @ for batch reference tokens, delegate global vars to Env.parseContext

unify the reference grammar to match iDempiere's

* Use sessionCtx snapshot for MTable lookups instead of the disposable live context

* Add @bind$.jsonPathExpr@ batch reference support

Per Heng Sin's alternative on #516: standard JSONPath (RFC 9535)
against a prior sub-request's response, for nested/array access
@bind.Column@ can't do. Embeds json-path/json-smart/accessors-smart;
slf4j/asm are imported from iDempiere's own OSGi bundles instead.

* Extract BatchReferenceResolver to fix clean-code issues from this PR

* Drop flat @Table.Column@/@bind.Column@, standardize on bare JSONPath

* Only recognize #/$/+ prefixed context vars, not any @...@ literal

* Make batch responseAlias mandatory, drop tableName-based chaining, update docs

* Wrap batch alias/JSONPath references in @...@, make responseAlias optional

* Fix illegal multi-catch of InvalidPathException and its subclass PathNotFoundException
</comment><date>2026-07-31 14:55:59 +0200</date><id>427280be32686d308addb3bd78a3816c82707d89</id><msg>Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)</msg><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/.classpath</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/pom.xml</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</file></path></item></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><mavenArtifacts><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/mavenArtifacts/</url></mavenArtifacts></lastFailedBuild><lastStableBuild _class='hudson.maven.MavenBuild'><action></action><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/mavenArtifacts/</url></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#54</displayName><duration>6836</duration><estimatedDuration>7656</estimatedDuration><fullDisplayName>idempiere-rest-master » com.trekglobal.idempiere.rest.api #54</fullDisplayName><id>54</id><inProgress>false</inProgress><keepLog>false</keepLog><number>54</number><queueId>-1</queueId><result>SUCCESS</result><timestamp>1739245450779</timestamp><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</affectedPath><commitId>63f0e593e0485b0ac8581855b5ae7d939b924e0f</commitId><timestamp>1739195034000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>OpenAPI 3.0.0 yaml documentation for iDempiere REST API #331 (#332)

</comment><date>2025-02-10 14:43:54 +0100</date><id>63f0e593e0485b0ac8581855b5ae7d939b924e0f</id><msg>OpenAPI 3.0.0 yaml documentation for iDempiere REST API #331 (#332)</msg><path><editType>add</editType><file>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/model/MRestView.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/LocationTypeConverter.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/expand/ExpandParser.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/DefaultPOSerializer.java</affectedPath><commitId>f14153642cdcebb405b7f5e94ded181fb27cd8b8</commitId><timestamp>1739209466000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>When using REST_View, json property should map to REST_ViewColumn.Name only #329 (#330)

</comment><date>2025-02-10 18:44:26 +0100</date><id>f14153642cdcebb405b7f5e94ded181fb27cd8b8</id><msg>When using REST_View, json property should map to REST_ViewColumn.Name only #329 (#330)</msg><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/model/MRestView.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/expand/ExpandParser.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/LocationTypeConverter.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/DefaultPOSerializer.java</file></path></item></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><mavenArtifacts><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/mavenArtifacts/</url></mavenArtifacts></lastStableBuild><lastSuccessfulBuild _class='hudson.maven.MavenBuild'><action></action><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/mavenArtifacts/</url></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2artifacts.xml</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-p2metadata.xml</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT-sources.jar</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.jar</relativePath></artifact><artifact><displayPath>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</displayPath><fileName>com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/0.1.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-0.1.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#54</displayName><duration>6836</duration><estimatedDuration>7656</estimatedDuration><fullDisplayName>idempiere-rest-master » com.trekglobal.idempiere.rest.api #54</fullDisplayName><id>54</id><inProgress>false</inProgress><keepLog>false</keepLog><number>54</number><queueId>-1</queueId><result>SUCCESS</result><timestamp>1739245450779</timestamp><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</affectedPath><commitId>63f0e593e0485b0ac8581855b5ae7d939b924e0f</commitId><timestamp>1739195034000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>OpenAPI 3.0.0 yaml documentation for iDempiere REST API #331 (#332)

</comment><date>2025-02-10 14:43:54 +0100</date><id>63f0e593e0485b0ac8581855b5ae7d939b924e0f</id><msg>OpenAPI 3.0.0 yaml documentation for iDempiere REST API #331 (#332)</msg><path><editType>add</editType><file>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/model/MRestView.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/LocationTypeConverter.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/expand/ExpandParser.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/DefaultPOSerializer.java</affectedPath><commitId>f14153642cdcebb405b7f5e94ded181fb27cd8b8</commitId><timestamp>1739209466000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>When using REST_View, json property should map to REST_ViewColumn.Name only #329 (#330)

</comment><date>2025-02-10 18:44:26 +0100</date><id>f14153642cdcebb405b7f5e94ded181fb27cd8b8</id><msg>When using REST_View, json property should map to REST_ViewColumn.Name only #329 (#330)</msg><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/model/MRestView.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/expand/ExpandParser.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/LocationTypeConverter.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/json/DefaultPOSerializer.java</file></path></item></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><mavenArtifacts><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/54/mavenArtifacts/</url></mavenArtifacts></lastSuccessfulBuild><lastUnsuccessfulBuild _class='hudson.maven.MavenBuild'><action _class='hudson.maven.reporters.MavenArtifactRecord'><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/mavenArtifacts/</url></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><artifact><displayPath>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</displayPath><fileName>com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</fileName><relativePath>com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/1.0.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom</relativePath></artifact><building>false</building><displayName>#126</displayName><duration>8989</duration><estimatedDuration>7656</estimatedDuration><fullDisplayName>idempiere-rest-master » com.trekglobal.idempiere.rest.api #126</fullDisplayName><id>126</id><inProgress>false</inProgress><keepLog>false</keepLog><number>126</number><queueId>-1</queueId><result>FAILURE</result><timestamp>1785552248201</timestamp><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/</url><builtOn></builtOn><changeSet _class='hudson.maven.FilteredChangeLogSet'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/pom.xml</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/.classpath</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</affectedPath><affectedPath>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</affectedPath><commitId>427280be32686d308addb3bd78a3816c82707d89</commitId><timestamp>1785502559000</timestamp><author><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)

* Add @Table.Column / @bind.Column / @#GlobalVar reference resolution to v1/batch

* Fix @#GlobalVar snapshot and reject duplicate batch aliases

Snapshot the calling session's context before any sub-request runs so
@#GlobalVar resolution isn't affected by ServerContext.dispose() calls
triggered by earlier sub-requests in the same batch.

Also reject an "as" alias that was already used earlier in the batch,
addressing CodeRabbit feedback on #517: previously a duplicate alias
would silently overwrite the earlier sub-request's entry in
referenceCache, causing later @bind.Column references to resolve
against the wrong sub-request.

* Require closing @ for batch reference tokens, delegate global vars to Env.parseContext

unify the reference grammar to match iDempiere's

* Use sessionCtx snapshot for MTable lookups instead of the disposable live context

* Add @bind$.jsonPathExpr@ batch reference support

Per Heng Sin's alternative on #516: standard JSONPath (RFC 9535)
against a prior sub-request's response, for nested/array access
@bind.Column@ can't do. Embeds json-path/json-smart/accessors-smart;
slf4j/asm are imported from iDempiere's own OSGi bundles instead.

* Extract BatchReferenceResolver to fix clean-code issues from this PR

* Drop flat @Table.Column@/@bind.Column@, standardize on bare JSONPath

* Only recognize #/$/+ prefixed context vars, not any @...@ literal

* Make batch responseAlias mandatory, drop tableName-based chaining, update docs

* Wrap batch alias/JSONPath references in @...@, make responseAlias optional

* Fix illegal multi-catch of InvalidPathException and its subclass PathNotFoundException
</comment><date>2026-07-31 14:55:59 +0200</date><id>427280be32686d308addb3bd78a3816c82707d89</id><msg>Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)</msg><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/.classpath</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/pom.xml</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java</file></path><path><editType>edit</editType><file>com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml</file></path></item></changeSet><culprit><absoluteUrl>https://jenkins.younex.de/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><mavenArtifacts><url>https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/mavenArtifacts/</url></mavenArtifacts></lastUnsuccessfulBuild><nextBuildNumber>127</nextBuildNumber><concurrentBuild>false</concurrentBuild><disabled>false</disabled><scm _class='hudson.scm.NullSCM'><type>hudson.scm.NullSCM</type></scm><displayName>com.trekglobal.idempiere.rest.api</displayName></mavenModule>