Changelog#
JCL 1.1.1#
Released: 2024-06-26
Bugs fixed#
The
SolidContainer
class now has better support for thegetHeaders()
method, making it possible for clients using this class to access response headers from remote Web resources.The
OpenIdProvider.authorize()
method had previously ignoredscope
,nonce
andstate
values. If a client supplies these values, they will now be included in the resulting redirection URL.
Dependency updates#
Apache Commons Codec 1.17.0
Apache Commons IO 2.16.1
Guava 33.2.1
Jackson 2.17.1
Jose4j 0.9.6
Quarkus 3.12.0
Spring Security 6.3.1
JCL 1.1#
Released: 2023-11-29
Additions#
The
Resource
interface now includes agetHeaders()
method, making it possible for clients to access all response headers from remote Web resources. This method is available on all subtypes, includingRDFSource
,NonRDSource
,SolidRDFSource
,SolidNonRDFSource
and any derived user-defined type.Standard URI normalization is now performed automatically for all resource identifiers, so it is now unnecessary to call
URI::normalize
in user code before interacting with SolidClient API methods.An
inrupt-client-spring
module is available to make it easier to integrate Spring applications with the Inrupt Solid Client Libraries. At present, this integration layer includes anasSession(OAuth2User)
method to convert a Spring user object into aSession
object that can be used with these libraries.An
inrupt-client-quarkus
module is available to make it easier to integrate Quarkus applications with the Inrupt Solid Client Libraries. As with the Spring integration, this module includes anasSession(JsonWebToken)
utility method to convert a Microprofile user object into aSession
object.
Dependency updates#
Guava 32.1.3
Jackson 2.16.0
Jena 4.10.0
OkHttp 4.12.0
Quarkus 3.6.0
RDF4J 4.3.8
Spring Boot 3.2.0
JCL 1.0.1#
Released: 2023-08-31
Bugs fixed#
The SolidContainer class method getResources() is now more strict in validating containment triples: it now excludes containment triples that include fragment and query components.
JCL 1.0#
Released: 2023-07-17
Additions#
To support Android development, the library uses RDF Module with Java8 support
Added
NonRDFSource
class to handle non-rdf resources.The
Session
interface has added a new methodauthenticate(Authenticator auth, Request req, Set<String> algs)
and deprecatesauthenticate(Request req, Set<String> algs)
. This change makes use of the ClientCache<K, V> mechanism to speed up the use of session credential objects.The AccessGrantClient now includes a verify(AccessCredential) method, returning an AccessCredentialVerification object.
When the high-level Solid Client encounters an HTTP error (e.g. 404 Not Found or 409 Conflict), rather than throwing the generic SolidClientException, it throws specializations, such as NotFoundException or ConflictException.
Added
SolidContainer::getResources
method which returns a Set and deprecatedSolidContainer::getContainedResources
which returns a Stream.The Java Client libraries now publish an inrupt-client-runtime artifact that includes all of the modules that are commonly used by application developers.
The AccessGrantClient now includes a grantAccess(AccessRequest) method for approving access requests.
The WebIdProfile and AccessGrant classes use consistent naming for getters such that methods that return collections have pluralized names (e.g.,
.getStorages()
). Existing (non-plural) getter methods are now deprecated.The antlr dependency used by the inrupt-client-parser module is now listed in the provided Maven BOM, making it easier for users of the Java Client Libraries to have a consistent runtime version of antlr.
The Session interface now includes a reset() method that can be used to clear the internal state of the session.
The AccessGrantClient now includes a denyAccess(AccessRequest) method for issuing access denials.
The Metadata class in the Solid package now has an Optional<URI> getAcl() method, returning the location of an ACL document, if one is available.
To enable Access Grant usage, added
AccessGrantUtils
to update Access Control Resource(s).The AccessGrantClient.query method now accepts a Set<URL> parameter for purpose arguments.
The AccessCredential classes (AccessGrant, AccessRequest, AccessDenial) now include a method to retrieve the date at which the credential was issued: getIssuedAt()
To specify multiple query values for multiple purpose and access mode values, introduces an
AccessCredentialQuery
class (with a.builder
) that can be used with theAccessGrantClient.query
method.The AccessGrantClient.requestAccess method now accepts an AccessRequest.RequestParameters object so that the access request can be constructed via a builder pattern. This also adds support for issuance dates in the future.
The SolidContainer and SolidNonRDFSource objects can now be created without the need for explicitly providing a Metadata parameter
The SolidContainer class now includes an implementation of the RDFSource::validate() method so that, in the high-level client, during data mapping, a resource with the wrong shape (e.g. invalid ldp:contains triples, missing trailing slash) will throw a DataMappingException. This makes the handling of containment triples much safer for applications, as a malicious server cannot trick a client into processing unexpected resources. Strictly speaking, this change is superfluous when interacting with ESS, as the server already validates the shape of a container in this regard. This is relevant specifically for servers that maliciously or inadvertently do not conform to the Solid protocol
Updates#
The java client libraries now use the groupId: com.inrupt.client
The UmaSession class is now deprecated. A developer should use either the OpenIdSession or AccessGrantSession instead.
Upgrade JSON-B module to use JakartaEE 10+.
Developers may write custom plugins for supporting different authentication mechanisms in Solid. For known insecure mechanisms, however, the reactive authorization mechanism explicitly excludes the auth schemes: Basic and Digest
This change introduces a new parameter to the AccessGrantClient.query method such that developers can filter access credential queries on creator and/or recipient (instead of the more ambiguous “agent”)
The internal session caches are based on request URI, but those caches unnecessarily consider query parameters and fragment URIs. Those elements are now removed from the internal cache keys if they are present.
Ensure that the PKCE verifier code always produces strings that correspond to the specification requirements.
Removals#
All deprecated methods and classes from the Beta series of releases have been removed for 1.0 GA
Bugs fixed#
No longer send
Accept: text/turtle
when handling Non-RDF resources.Improved support for concurrent OpenId session refresh flows.
Bugfix preventing runtime exceptions thrown when processing an OkHttp response to bubble up and not be caught instead of being gracefully handled.