Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 20 additions & 6 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,28 @@
# The LabKey Remote API Library for Java - Change Log

## version 7.4.0-SNAPSHOT
## version 8.1.0-SNAPSHOT
*Released*: TBD
*

## version 8.0.0
*Released*: 2026-08-20
* POTENTIALLY BREAKING CHANGES
* Eliminate the `RequestType` generic type parameter on `Command`
* Eliminate unnecessary `BaseSelect` interface
* Remove deprecated methods from `GetContainersResponse` and `GetUsersCommand`
* Update `StopImpersonatingCommand` to use the `stopImpersonatingApi` action. A successful execute() call now returns
status code 200 instead of 302.
* `ExecuteSqlCommand` now supports `setIncludeMetadata()` and `isIncludeMetadata()`. Use of this flag requires LabKey
Server v26.9+.
* Merge `ExecuteSqlCommand` into the `SelectRowsCommand` hierarchy to add `includeMetadata` support, eliminate redundant
code, and ensure future shared properties can be implemented in both easily.
* Add `ExecuteSqlCommand.quoteIdentifier()` helper method to quote identifiers that may have tricky characters
* Update Gradle, Gradle plugins, Commons Codec, Commons Logging, HttpClient, and JSON-java versions

## version 7.3.0
*Released*: 15 July 2026
* Update Gradle version and remove some deprecated syntax
* Update HttpCore5 to 5.4.3 (CVE-2026-54399) and HttpClient5 to 5.5.2
* Update Gradle plugins, Commons Codec, Commons Logging, and JSONObject versions
* Update Gradle plugins, Commons Codec, Commons Logging, and JSON-java versions

## version 7.2.0
*Released*: 17 February 2026
Expand All @@ -25,7 +39,7 @@

## version 7.0.0
*Released*: 18 July 2025
* Update Gradle, Gradle Plugins, HttpClient, and JSONObject versions
* Update Gradle, Gradle Plugins, HttpClient, and JSON-java versions
* BREAKING CHANGES
* The `SaveRowsCommand` has been updated to be a command wrapper for the `query-saveRows.api`
* The `SaveRowsResponse` now wraps the response from the new `SaveRowsCommand`
Expand All @@ -35,7 +49,7 @@

## version 6.3.0
*Released*: 19 June 2025
* Update Commons Codec, Commons Logging, Gradle, Gradle Plugins, HttpClient, HttpCore, and JSONObject versions
* Update Commons Codec, Commons Logging, Gradle, Gradle Plugins, HttpClient, HttpCore, and JSON-java versions
* Remove defunct FileNotification API and uses
* Update publishing method for new Maven Central API

Expand All @@ -44,7 +58,7 @@
* Add support for `auditUserComment` field for assay import
* Add support for `allowPlateMetadata`, `plateMetadata` fields for assay plate support
* Deprecate `GetContainersResponse` permissions methods which are incompatible with LabKey Server v24.8+
* Update Commons Codec, Commons Logging, Gradle, Gradle Plugins, HttpCore, and JSONObject versions
* Update Commons Codec, Commons Logging, Gradle, Gradle Plugins, HttpCore, and JSON-java versions

## version 6.1.0
*Released*: 26 February 2024
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ repositories {

group = "org.labkey.api"

version = "7.4.0-SNAPSHOT"
version = "8.1.0-SNAPSHOT"

dependencies {
api "org.json:json:${jsonObjectVersion}"
Expand Down
8 changes: 4 additions & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ artifactory_contextUrl=https://labkey.jfrog.io/artifactory
sourceCompatibility=17
targetCompatibility=17

gradlePluginsVersion=9.1.0
gradlePluginsVersion=10.0.0

commonsCodecVersion=1.22.0
commonsCodecVersion=1.22.1
commonsLoggingVersion=1.4.0

httpclient5Version=5.5.2
httpclient5Version=5.6.4
httpcore5Version=5.4.3

jsonObjectVersion=20260522
jsonObjectVersion=20260719

junitVersion=4.13.2

Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
4 changes: 3 additions & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.7.1-bin.zip
networkTimeout=10000
retries=0
retryBackOffMs=500
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
6 changes: 3 additions & 3 deletions gradlew

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 12 additions & 23 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions src/org/labkey/remoteapi/Command.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
* Note that this class is not thread-safe. Do not share instances of this class or its
* descendants between threads, unless the descendant declares explicitly that it is thread-safe.
*/
public abstract class Command<ResponseType extends CommandResponse, RequestType extends HttpUriRequest> implements HasRequiredVersion
public abstract class Command<ResponseType extends CommandResponse> implements HasRequiredVersion
{
/**
* A constant for the official JSON content type ("application/json")
Expand Down Expand Up @@ -448,7 +448,7 @@ protected ResponseType createResponse(String text, int status, String contentTyp
* @throws URISyntaxException Thrown if there is a problem parsing the base URL in the connection.
*/

protected RequestType getHttpRequest(Connection connection, String folderPath) throws URISyntaxException
protected HttpUriRequest getHttpRequest(Connection connection, String folderPath) throws URISyntaxException
{
//construct a URI from connection base URI, folder path, and current parameters
URI uri = createURI(connection, folderPath);
Expand All @@ -461,7 +461,7 @@ protected RequestType getHttpRequest(Connection connection, String folderPath) t
* @param uri the uri to convert
* @return The HttpUriRequest instance.
*/
protected abstract RequestType createRequest(URI uri);
protected abstract HttpUriRequest createRequest(URI uri);

/**
* Returns a full URI for this Command, including base URI, folder path, and query string.
Expand Down
3 changes: 1 addition & 2 deletions src/org/labkey/remoteapi/Connection.java
Original file line number Diff line number Diff line change
Expand Up @@ -380,8 +380,7 @@ public Connection stopImpersonating() throws IOException, CommandException
{
CommandResponse resp = new StopImpersonatingCommand().execute(this, _impersonatePath);

// on success, a 302 response is returned (this command disables redirects)
if (resp.getStatusCode() != 302)
if (resp.getStatusCode() != 200)
throw new CommandException("Failed to stop impersonating");

_impersonateUser = null;
Expand Down
2 changes: 1 addition & 1 deletion src/org/labkey/remoteapi/GetCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import java.net.URI;

/** Base class for all commands that use get **/
public abstract class GetCommand<ResponseType extends CommandResponse> extends Command<ResponseType, HttpGet>
public abstract class GetCommand<ResponseType extends CommandResponse> extends Command<ResponseType>
{
protected GetCommand(String controllerName, String actionName)
{
Expand Down
2 changes: 1 addition & 1 deletion src/org/labkey/remoteapi/PostCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
* specialized class in this library, the developer may invoke these APIs by creating an instance of
* the {@link SimplePostCommand} class and setting the JSON object to post.
*/
public abstract class PostCommand<ResponseType extends CommandResponse> extends Command<ResponseType, HttpPost>
public abstract class PostCommand<ResponseType extends CommandResponse> extends Command<ResponseType>
{
/**
* Constructs a new PostCommand given a controller and action name.
Expand Down
4 changes: 2 additions & 2 deletions src/org/labkey/remoteapi/assay/nab/NAbRunsCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
package org.labkey.remoteapi.assay.nab;

import org.json.JSONObject;
import org.labkey.remoteapi.query.BaseQueryCommand;
import org.labkey.remoteapi.query.BaseSelectRowsCommand;

/**
* Command for obtaining information about the current assay definitions
Expand All @@ -26,7 +26,7 @@
* you may use the various setters to filter this list to assays of a given
* name, type or id.
*/
public class NAbRunsCommand extends BaseQueryCommand<NAbRunsResponse>
public class NAbRunsCommand extends BaseSelectRowsCommand<NAbRunsResponse>
{
private String _assayName;
private boolean _includeStats = true;
Expand Down
Loading