{
  "_class" : "hudson.maven.MavenBuild",
  "actions" : [
    {
      "_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/"
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    {
      "displayPath" : "com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom",
      "fileName" : "com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom",
      "relativePath" : "com.trekglobal.idempiere.extensions/com.trekglobal.idempiere.rest.api/1.0.0-SNAPSHOT/com.trekglobal.idempiere.rest.api-1.0.0-SNAPSHOT.pom"
    }
  ],
  "building" : False,
  "description" : None,
  "displayName" : "com.trekglobal.idempiere.rest.api",
  "duration" : 8989,
  "estimatedDuration" : 7656,
  "executor" : None,
  "fullDisplayName" : "idempiere-rest-master » com.trekglobal.idempiere.rest.api com.trekglobal.idempiere.rest.api",
  "id" : "126",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 126,
  "queueId" : -1,
  "result" : "FAILURE",
  "timestamp" : 1785552248201,
  "url" : "https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.maven.FilteredChangeLogSet",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java",
          "com.trekglobal.idempiere.rest.api/pom.xml",
          "com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java",
          "com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF",
          "com.trekglobal.idempiere.rest.api/.classpath",
          "com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml",
          "com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json"
        ],
        "commitId" : "427280be32686d308addb3bd78a3816c82707d89",
        "timestamp" : 1785502559000,
        "author" : {
          "absoluteUrl" : "https://jenkins.younex.de/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)\u000a\u000a* Add @Table.Column / @bind.Column / @#GlobalVar reference resolution to v1/batch\u000a\u000a* Fix @#GlobalVar snapshot and reject duplicate batch aliases\u000a\u000aSnapshot the calling session's context before any sub-request runs so\u000a@#GlobalVar resolution isn't affected by ServerContext.dispose() calls\u000atriggered by earlier sub-requests in the same batch.\u000a\u000aAlso reject an \"as\" alias that was already used earlier in the batch,\u000aaddressing CodeRabbit feedback on #517: previously a duplicate alias\u000awould silently overwrite the earlier sub-request's entry in\u000areferenceCache, causing later @bind.Column references to resolve\u000aagainst the wrong sub-request.\u000a\u000a* Require closing @ for batch reference tokens, delegate global vars to Env.parseContext\u000a\u000aunify the reference grammar to match iDempiere's\u000a\u000a* Use sessionCtx snapshot for MTable lookups instead of the disposable live context\u000a\u000a* Add @bind$.jsonPathExpr@ batch reference support\u000a\u000aPer Heng Sin's alternative on #516: standard JSONPath (RFC 9535)\u000aagainst a prior sub-request's response, for nested/array access\u000a@bind.Column@ can't do. Embeds json-path/json-smart/accessors-smart;\u000aslf4j/asm are imported from iDempiere's own OSGi bundles instead.\u000a\u000a* Extract BatchReferenceResolver to fix clean-code issues from this PR\u000a\u000a* Drop flat @Table.Column@/@bind.Column@, standardize on bare JSONPath\u000a\u000a* Only recognize #/$/+ prefixed context vars, not any @...@ literal\u000a\u000a* Make batch responseAlias mandatory, drop tableName-based chaining, update docs\u000a\u000a* Wrap batch alias/JSONPath references in @...@, make responseAlias optional\u000a\u000a* Fix illegal multi-catch of InvalidPathException and its subclass PathNotFoundException\u000a",
        "date" : "2026-07-31 14:55:59 +0200",
        "id" : "427280be32686d308addb3bd78a3816c82707d89",
        "msg" : "Batch reference resolution: bind$.jsonPathExpr + @#GlobalVar@ in v1/batch (#517)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/impl/BatchRequestResourseImpl.java"
          },
          {
            "editType" : "edit",
            "file" : "com.trekglobal.idempiere.rest.api/openapi/idempiere-rest.yml"
          },
          {
            "editType" : "edit",
            "file" : "com.trekglobal.idempiere.rest.api/src/com/trekglobal/idempiere/rest/api/v1/resource/BatchRequestResource.java"
          },
          {
            "editType" : "edit",
            "file" : "com.trekglobal.idempiere.rest.api/pom.xml"
          },
          {
            "editType" : "edit",
            "file" : "com.trekglobal.idempiere.rest.api/postman/trekglobal-idempiere-rest.postman_collection.json"
          },
          {
            "editType" : "edit",
            "file" : "com.trekglobal.idempiere.rest.api/META-INF/MANIFEST.MF"
          },
          {
            "editType" : "edit",
            "file" : "com.trekglobal.idempiere.rest.api/.classpath"
          }
        ]
      }
    ],
    "kind" : None
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.younex.de/user/noreply",
      "fullName" : "noreply"
    }
  ],
  "mavenArtifacts" : {
    "url" : "https://jenkins.younex.de/job/idempiere-rest-master/com.trekglobal.idempiere.extensions$com.trekglobal.idempiere.rest.api/126/mavenArtifacts/"
  }
}