release-notes-45-to-59
3.59.0 - December 02, 2021β
Compatibility Notesβ
- Removed unnecessary dependency
netty-bomfrom the Bill of Material (BOM). - Replaced the experimental API
HttpSecuritySettings getHttpSecuritySettings()withSSLContext getSslContext()onCloudPlatform. Removed the experimental interfaceHttpSecuritySettings
New Functionalityβ
-
Add the remaining changes since
3.58.0to our update of the OData typed client (VDM) with the newest release 2111 of SAP S/4HANA Cloud. Now the SAP Cloud SDK supports all OData services listed in the SAP Business Accelerator Hub for SAP S/4HANA Cloud. -
Update of the OData VDM to the newest release 2021 of SAP S/4HANA On-Premise. The SAP Cloud SDK supports all OData services listed in the SAP Business Accelerator Hub for SAP S/4HANA On-Premise This includes completely new services, new operations in previously existing services, and new entity types in the following new Maven artifacts:
s4hana-api-odata-v4-onpremisemanages classes in packagecom.sap.cloud.sdk.s4hana.onpremise.datamodel.odatav4.servicess4hana-api-odata-onpremisemanages classes in packagecom.sap.cloud.sdk.s4hana.onpremise.datamodel.odata.services
The existing modules
s4hana-api-odata-onpremise-2020ands4hana-api-odata-v4-onpremise-2020remain unchanged to reflect the respective (outdated) On-Premise release version. Additional modules with2021name equivalent are not planned.
Improvementsβ
- Dependency Updates:
- SAP dependency updates:
- Update Neo JavaEE7 WP API (
com.sap.cloud:neo-javaee7-wp-api) from1.109.7to1.110.3 - Update Neo Java Web API (
com.sap.cloud:neo-java-web-api) from4.13.8to4.14.6
- Update Neo JavaEE7 WP API (
- Other dependency updates:
- Minor version updates:
- Update Logback Classic (
ch.qos.logback:logback-classic) from1.2.6to1.2.7. - Update Mockito (
org.mockito:mockito-core) from4.0.0to4.1.0
- Update Logback Classic (
- Minor version updates:
- SAP dependency updates:
Fixed issuesβ
- We fixed a race-condition issue when serializing OData V2 VDM entity objects concurrently in multiple threads. This addresses errors reported as "Could not serialize property 'FooBar'. Returning null instead."
3.58.0 - November 18, 2021β
Compatibility Notesβ
- The OpenAPI generator now fails with a helpful message during generation if the input specification contains any of these keywords
oneOforanyOfin either:- The
pathspart of the specification - As an additional property or nested inside a property under a
Schemalisted in the specification.
- The
Please, remove these properties from your specification and generation will succeed.
It will allow you to use the remaining endpoints via the type-safe client by the SAP Cloud SDK.
Support for oneOf, anyOf might be added in the future but the timeline for that is unknown.
New Functionalityβ
- Update the OData VDM to the newest release 2111 of SAP S/4HANA Cloud.
This includes completely new services (available as usual in packages
com.sap.cloud.sdk.s4hana.datamodel.odata.servicesandcom.sap.cloud.sdk.s4hana.datamodel.odatav4.services), new operations in previously existing services, and new entity types. The SAP Cloud SDK supports all OData services listed in the SAP Business Accelerator Hub for SAP S/4HANA Cloud with the exception of the following services:- (OData V2) Maintenance Item -
API_MAINTENANCEITEM - (OData V2) Enterprise Project V2 -
API_ENTERPRISE_PROJECT_SRV_0002 - (OData V2) Service Order Template -
OP_API_SERVICE_ORDER_TEMPLATE_SRV_0001 - (OData V4) Contract Accounting Business Transaction -
CABUSINESSPARTNER_0001 - (OData V4) Handling Unit -
HANDLINGUNIT_0001 - (OData V4) Maintenance Task List -
MAINTENANCETASKLIST_0001 - (OData V4) Measuring Point -
MEASURINGPOINT_0001 - (OData V4) Planned Order -
PLANNEDORDER_0001 - (OData V4) Process Warehouse Task -
WAREHOUSEORDER_0001 - (OData V4) Product Exclusion -
PRODUCTEXCLUSION_0001 - (OData V4) Product Substitution -
PRODUCTSUBSTITUTION_0001 - (OData V4) Supplier Item -
SUPPLIERITEM_0001 - (OData V4) Warehouse Resource -
WAREHOUSERESOURCE_0001
- (OData V2) Maintenance Item -
Improvementsβ
-
Limit beans scanning to service classes only in dependencies
s4hana-api-odata,s4hana-api-odata-onpremise-2020ands4hana-api-odata-v4-onpremise-2020. This significantly reduces startup times and memory consumption for TomEE applications that are missing their ownbeans.xmlconfiguration. For consistency the beans scanning ofs4hana-api-odata-v4is enabled now but also limited to service classes. -
The
ALWAYS_SUBSCRIBERstrategy of the defaultScpCfDestinationRetrievalStrategyin theScpCfDestinationLoaderdid not behave as its name implied. It was taking the current tenant, which might also be a Provider Tenant due to misconfiguration. We fixed it by:- Renaming
ALWAYS_SUBSCRIBERtoCURRENT_TENANTand making it a new default strategy. - Deprecation the confusingly named
ALWAYS_SUBSCRIBERstrategy - Adding a new
ONLY_SUBSCRIBERstrategy that actively enforces that a current tenant is not a provider tenant
- Renaming
-
Dependency Updates:
- SAP dependency updates:
- Update Neo JavaEE7 WP API (
com.sap.cloud:neo-javaee7-wp-api) from1.108.5to1.109.7 - Update Neo Java Web API (
com.sap.cloud:neo-java-web-api) from4.12.2to4.13.8
- Update Neo JavaEE7 WP API (
- Other dependency updates:
- Minor version updates:
- Update Gson (
com.google.code.gson:gson) from2.8.8to2.8.9
- Update Gson (
- Minor version updates:
- SAP dependency updates:
3.57.0 - November 4, 2021β
Improvementsβ
- Dependency Updates:
- SAP dependency updates:
- Update Neo JavaEE7 WP API (
com.sap.cloud:neo-javaee7-wp-api) from1.107.5to1.108.5 - Update Neo Java Web API (
com.sap.cloud:neo-java-web-api) from4.11.4to4.12.2 - Update CDS4J Maven Plugin (
com.sap.cds:cds4j-maven-plugin) from1.16.0to1.23.0 - Update JPaaS Security Utils (
com.sap.core.jpaas.security:com.sap.core.jpaas.security.utils) from1.4.90to1.4.91
- Update Neo JavaEE7 WP API (
- Other dependency updates:
- Major version updates:
- Update Guava (
com.google.guava:guava, guava-testlib) from30.1.1-jreto31.0.1-jre
- Update Guava (
- Minor version updates:
- Update Hibernate Core (
org.hibernate:hibernate-core) from5.5.7.Finalto5.6.0.Final - Update JUnit Jupiter (
org.junit.jupiter:junit-jupiter-engine) and JUnit Vintage (org.junit.vintage:junit-vintage-engine) from5.7.2to5.8.1 - Update Netty (
io.netty:netty-bom) from4.1.67.Finalto4.1.69.Final - Update Protobuf (
com.google.protobuf:protobuf-java) from3.18.1to3.19.0 - Update Reactor Core (
io.projectreactor:reactor-core) from3.4.10to3.4.11
- Update Hibernate Core (
- Major version updates:
- SAP dependency updates:
Fixed issuesβ
- We fixed the vulnerability CVE-2021-37137 that affects Netty with versions
< 4.1.68.Finalby updating to version4.1.69.Final. - We fixed an issue where some OData exception messages were not encoded correctly.
3.56.0 - October 21, 2021β
New Functionalityβ
- We added support for the newly introduced
SecretRootKeyservice binding layout as defined by the SAP BTP Service Operator for K8s. We recommend all consumers to use this binding layout as it solves the problem of incorrectly parsed array properties. Please refer to our K8s Guide for more detailed instructions on how to create service bindings using the SAP BTP Service Operator.
Improvementsβ
-
We improved API generalization to accept custom implementations of interface
OAuth2Serviceinstead of dedicated classXsuaaService. -
To increase compatibility, the OData V2
count()operation on our OData V2 typed client (VDM) now ignores query options other than$filterand user-defined query options which are not relevant for the count operation. -
Dependency Updates:
- SAP dependency updates:
- Update
com.sap.cloud:neo-java-web-apifrom4.9.4to4.11.4 - Update
com.sap.cloud:neo-javaee7-wp-apifrom1.105.7to1.107.5
- Update
- Other dependency updates:
- Major version updates:
- Update
org.mockito:mockito-corefrom3.12.4to4.0.0
- Update
- Minor version updates:
- Update
org.projectlombok:lombokfrom1.8.20to1.8.22 - Update
com.fasterxml.jackson:jackson-bomfrom2.12.5to2.13.0 - Update
io.swagger:swagger-annotationsfrom1.6.2to1.6.3 - Update
joda-time:joda-timefrom2.10.10to2.10.12 - Update
net.sourceforge.pmd:pmd-core, pmd-java, pmd-testfrom6.38.0to6.39.0 - Update
com.squareup.okhttp3:okhttp, mockwebserverand from4.9.1to4.9.2 - Update
org.apache.tomcat:tomcat-annotations-api, tomcat-jdbcfrom8.5.71to8.5.72 - Update
com.google.protobuf:protobuf-javafrom3.18.0to3.18.1
- Update
- Major version updates:
- SAP dependency updates:
Fixed issuesβ
-
We fixed an issue where the
appendDestinationLoaderandprependDestinationLoaderon theDestinationLoaderwere not behaving as expected on a givenDestinationLoaderChain.TheDestinationLoaderChains are now correctly added to an existingDestinationLoaderChain. -
We fixed an issue with the OData V4 generator not considering actions and functions when one of their arguments references a complex- or entity-type that is not transitively exposed through entity sets.
-
We fixed the issue where
HttpClients were not cached correctly on SAP BTP Neo. With this fix the caching should now behave as expected, minimizing the number of concurrentHttpClientinstances in use.
3.55.1 - October 7, 2021β
New Functionalityβ
-
We introduced a new abstraction to load service bindings from various locations in an environment agnostic manner: The
ServiceBindingLoaderinterface.This utility interface consists of just a single method (
load), which returns all service bindings for the current application. We also provide the following implementations:- The
EnvironmentVariableServiceBindingLoaderis capable of parsing environment variables (such as theVCAP_SERVICES) on SAP BTP Cloud Foundry - The
FileSystemServiceBindingLoaderis capable of parsing service bindings, which are mounted to the file system (for example, when running in a K8s environment). - The
ServiceBindingMergeris capable of combining the results of an arbitrary amount of otherServiceBindingLoaderinstances based on a configurable service binding property (e.g. thenameof the bindings).
During the design of this new feature, we paid special attention to the reconfigurability and extensibility of the API to enable consumers to support any runtime with as few changes as possible.
- The
-
We changed the way
ScpCfCloudPlatformclass is loading service bindings to use the newly introducedServiceBindingLoaderAPI. It allows to seamlessly load service bindings from a file system in K8s-based environments like SAP Gardener.We search and load the
Service bindingswith the following priority, highest to lowest:- From the file system, as provided by the SAP Service Operator K8s service with the
SecretKeylayout - From the file system, as provided by the SAP Service Operator K8s service with the
Data(default) layout - From the
VCAP_SERVICESenvironment variable
- From the file system, as provided by the SAP Service Operator K8s service with the
Improvementsβ
- Dependency Updates:
- SAP dependency updates:
- Update XSUAA Token Client and Token Flow API from
2.10.5to2.11.0
- Update XSUAA Token Client and Token Flow API from
- Other dependency updates:
- Major version updates:
- Update
org.togglz:togglz-corefrom2.9.9to3.0.0
- Update
- Minor version updates:
- Update
ch.qos.logback:logback-classicfrom1.2.5to1.2.6 - Update
com.auth0:java-jwtfrom3.18.1to3.18.2 - Update
org.springframework:spring-framework-bomfrom5.3.9to5.3.10 - Update
org.jooq:jooqfrom3.14.12to3.14.15 - Update
io.projectreactor:reactor-corefrom3.4.9to3.4.10 - Update
org.apache.tomcat:tomcat-annotations-api,tomcat-jdbcfrom8.5.69to8.5.71 - Update
com.google.protobuf:protobuf-javafrom3.17.3to3.18.0
- Update
- Major version updates:
- SAP dependency updates:
Fixed issuesβ
- Fix
SapPassportAccessor.getPassportForNextRequest()to no longer throw an exception if either the currentThreadContextis unavailable or the incoming HTTP request is missing the SAP passport header.- Instead, we generate a new passport on behalf of the base passport template.
- If the base passport template is not defined, a new template will be instantiated at runtime via
SapPassportFactory.
3.54.0 - September 23, 2021β
Known Issuesβ
- We are aware of the vulnerability CVE-2021-37137 that affects Netty in version
4.1.67.Final. Unfortunately, we are not yet able to resolve that vulnerability due to an issue with the4.1.68.Finalrelease of Netty, which prevents projects from compiling. We will update the related dependencies once the build issue has been resolved. The vulnerability affects only deprecated modules that are not recommended to use which significantly mitigates the risks for the SAP Cloud SDK's customers.
New Functionalityβ
- Applications that use an IAS binding instead of XSUAA are now supported out of the box.
- Incoming JWTs issued by IAS are validated and decoded
- In case no JWT is provided the SAP Cloud SDK defaults to the zone ID of the provider tenant
- Destination & Connectivity service can be accessed on behalf of the IAS tenant via zone ID
- Not supported: JWTs issued by IAS can not yet be used for Principal Propagation and User Token Exchange
- Under the hood, the SAP Cloud SDK now uses zone IDs to pass tenant information to both IAS and XSUAA. See the note under "Improvements"
Improvementsβ
-
Internally the SAP Cloud SDK now passes the tenant information via zone ID (instead of subdomain) to the OAuth2 services XSUAA and IAS
-
Resolving the provider tenant no longer requires an internal HTTP request. Instead, the
VCAP_SERVICESenvironment variable will be parsed at runtime for the necessary information. -
Dependency Updates:
- SAP dependency updates:
- Update
com.sap.hcp.cf.logging:cf-java-logging-support-logbackfrom3.5.1to3.5.2 - Update
com.sap.cloud:neo-javaee7-wp-apifrom1.103.10to1.105.7 - Update
com.sap.cloud:neo-java-web-apifrom4.7.9to4.9.4
- Update
- Other dependency updates:
- Minor version updates:
- Update
org.hyperledger.fabric-sdk-java:fabric-sdk-javafrom2.2.7to2.2.8 - Update
com.fasterxml.jackson:jackson-bomfrom2.12.4to2.12.5 - Update
org.mockito:mockito-corefrom3.12.3to3.12.4 - Update
net.sourceforge.pmd:pmd-corefrom6.37.0to6.38.0 - Update
org.twdata.maven:mojo-executorfrom2.3.1to2.3.2 - Update
org.xerial:sqlite-jdbcfrom3.36.0.1to3.36.0.3 - Update
com.rabbitmq:aqmp-clientfrom5.13.0to5.13.1 - Update
org.hibernate:hibernate-corefrom5.5.6to5.5.7.Final - Update
org.codehaus.plexus:plexus-utilsfrom3.4.0to3.4.1 - Update
io.netty:netty-bomfrom4.1.66.Finalto4.1.67.Final - Update
jakarta.activation:jakarta.activation-apifrom2.0.0to2.0.1 - Update
com.github.tomakehurst:wiremock-jre8-standalonefrom2.30.1to2.31.0
- Update
- Minor version updates:
- SAP dependency updates:
3.53.0 - September, 13, 2021β
Compatibility Notesβ
- The Java HTML parser
jsoupis no longer part of our implicit dependency management. If your application relies on the version provided by the SAP Cloud SDK, please consider declaring the dependency version yourself. The latest version can be found in Maven Central.
New Functionalityβ
-
We added convenience methods for
nullcomparison in our OData API to avoid unnecessary null-casting:Entity.FIELD_NAME.equalToNull()- OData V4 VDM / Generic OData ClientEntity.FIELD_NAME.notEqualToNull()- OData V4 VDM / Generic OData ClientEntity.FIELD_NAME.eqNull()- OData V2 VDMEntity.FIELD_NAME.neNull()- OData V2 VDM
-
We now support function import calls in OData V2 using the HTTP GET method inside batch requests. Within the batch request, the function import call can be added to the
addReadOperations()method. You can execute a batch request containing a function import call as follows:
singleValueReturnFunction = service.callSomeFunction();
service.batch()
.addReadOperations(singleValueReturnFunction)
.executeRequest(destination);
You can read the response of the function by:
functionResult = batchResponse.getReadResult(singleValueReturnFunction);
You can also add functions that return a collection inside batch requests and parse the results yourself in a similar manner. Please refer to our documentation for more details.
-
[Beta] Reading destinations from environment variables now allows you to configure authorization token forwarding to the target system. You can activate this feature in the following ways
-
Setting the
authenticationproperty directly:[{"type": "HTTP","name": "destinationName","url": "https://URL","authentication": "TokenForwarding"}] -
Adding the property
forwardAuthToken=true, as already known from the approuter:[ { "type": "HTTP", "name": "destinationName", "url": "https://URL", "forwardAuthToken": true } ]Both of those settings will cause the destination to take the value of theAuthorizationHTTP header contained in the current HTTP request for every request to the specified target system.
Note: The settings above will override a token set with
AuthTokenAccessor.executeWith(...). Moreover, authentication tokens set viaAuthTokenAccessor.executeWith(...)will not be forwarded to the target system. -
-
You can now add
headersto adestinationusing thepropertymethod so that they will always be included when calling the target system. Here's an example of thepropertymethod call:.property("URL.headers.foo1", "bar1"). Find more details on setting properties here. -
You can now add query parameters to a destination using properties. They will always be included in the query string when calling the target system. The query values should be provided without encoding. They will be encoded in the query string by the SAP Cloud SDK. Example of adding a query parameter using
propertymethod:.property("URL.queries.airport", "KΓΆln Bonn"). The rendered query string will look like:airport=K%C3%B6ln%20Bonn. Find more details on adding query parameters here.
Improvementsβ
-
HttpClientFactoryis now a@FunctionalInterface. This let's you conveniently construct an instance of theHttpClientFactoryusing a simple lambda expression:HttpClientFactory factory = destination -> HttpClients.createDefault();. -
We removed unnecessary warning messages when generated when an XSUAA or IAS service is not bound to an application.
-
Dependency Updates:
- SAP dependency updates:
- Update BTP Neo Tomcat 8 SDK from
4.6.5to4.7.9 - Update XSUAA Token Client and Token Flow API from
2.10.3to2.10.5 - Update Neo JavaEE 7 SDK from
1.102.5to1.103.10
- Update BTP Neo Tomcat 8 SDK from
- Other dependency updates:
- Minor version updates:
- Update Spring from
5.3.8to5.3.9 - Update GSON from
2.8.7to2.8.8 - Update Togglz from
2.9.8to2.9.9 - Update Mockito from
3.11.2to3.12.3 - Update Spring Security from
5.5.1to5.5.2
- Update Spring from
- Minor version updates:
- SAP dependency updates:
Fixed Issuesβ
- We fixed the issue where HTTP header keys of an OData response were not handled case-insensitive, causing problems with processing those responses. This is fixed now and should handle headers the same way, regardless of capitalization.
3.52.0 - August 26, 2021β
Known Issuesβ
- The Java HTML parser
jsoupis used in a version which contains the vulnerability CVE-2021-37714. We plan to remove this dependency in future versions of the SAP Cloud SDK.
New Functionalityβ
-
We enabled support for certificate-based authentication for services on Cloud Foundry which allows services to use Mutual Transport Layer Security or mTLS instead of providing client credentials. In the future, this will become the default authentication method on the SAP BTP Cloud Foundry.
- If the service binding has a property
credentials: { credential-type: x509 }then this is an indicator for the new authentication method. - Please note: you might see
WARNmessages in the logs. These are produced by the Java Security Library that we use as a dependency. We verified the logic with the library publisher and it's safe to use. The false log message is soon to be removed.
- If the service binding has a property
-
We enabled the use of a certificate-based authentication without password protection for the Destination Service on the SAP BTP Cloud Foundry.
-
We updated the remaining OData VDM services to the newest release 2108 of SAP S/4HANA Cloud. Operations and data types of the following services may have faced backward-incompatible changes, that can be explored in the SAP Business Accelerator Hub for SAP S/4HANA Cloud:
- (OData V2) Maintenance Item -
API_MAINTENANCEITEM - (OData V2) Maintenance Plan -
API_MAINTENANCEPLAN - (OData V2) Bills of Material -
API_BILL_OF_MATERIAL_SRV_0002 - (OData V2) Service Order -
API_SERVICE_ORDER_SRV - (OData V4) Supplier Item -
SUPPLIERITEM_0001
- (OData V2) Maintenance Item -
Improvementsβ
- Dependency updates:
- Update BTP Neo Tomcat 8 SDK from
4.5.3to4.6.5 - Update XSUAA Token Client and Token Flow API from
2.10.2to2.10.3 - Update Neo JavaEE 7 SDK from
1.101.4to1.102.5 - Update Error Prone from
2.8.0to2.8.1 - Update PMD from
6.36.0to6.37.0 - Update Wiremock from
2.29.1to2.30.0 - Update ASM from
9.0to9.2 - Update Spring from
5.3.8to5.3.9 - Update Spring Boot from
2.5.0to2.5.3 - Update Commons CSV from
1.8to1.9.0 - Update Hibernate Core from
5.5.4.Finalto5.5.6 - Update Logback from
1.2.3to1.2.5
- Update BTP Neo Tomcat 8 SDK from
3.51.0 - August 12, 2021β
Compatibility Notesβ
- While updating the OData client libraries (VDM) to match the latest SAP S/4HANA Cloud 2108 release we identified the following breaking changes:
- Affected service ID:
HANDLINGUNIT_0001. In the OData V4 service Handling Unit Item theCreateoperation was removed. No existing functionality is affected because this operation has never been supported by SAP S/4HANA. SAP__Messageclass was updated in a breaking manner. ItsnumericSeverityproperty was changed fromShorttoInteger. This affects multiple OData V4 services. Note: This change is likely to be reverted in the future. We'll separately communicate about this in the release notes.
- Affected service ID:
New Functionalityβ
-
The SAP Cloud SDK now provides out-of-the-box support for the Identity Authentication Service (IAS). Here's the list of accessors that are currently able to handle JWTs authored by the IAS service:
- AuthTokenAccessor
- TenantAccessor
- PrincipalAccessor
-
We updated the pregenerated OData V2 and V4 type-safe clients libraries for the latest 2108 release of SAP S/4HANA Cloud. After updating your dependencies you'll find the latest version of SAP S/4HANA Cloud services, operations, and entities in
-
com.sap.cloud.sdk.s4hana.datamodel.odata.services -
com.sap.cloud.sdk.s4hana.datamodel.odatav4.servicesFind details of OData services supported by the SAP Cloud SDK in the SAP Business Accelerator Hub for SAP S/4HANA Cloud. We excluded the following services from the latest release because of identified breaking changes:- (OData V2) Maintenance Item -
API_MAINTENANCEITEM - (OData V2) Maintenance Plan -
API_MAINTENANCEPLAN - (OData V2) Bills of Material -
API_BILL_OF_MATERIAL_SRV_0002 - (OData V2) Service Order -
API_SERVICE_ORDER_SRV - (OData V4) Supplier Item -
SUPPLIERITEM_0001We are working with the SAP S/4HANA team to make sure the changes are intended and plan to add these services in the following releases. We'll communicate it explicitly in the release notes. Let us know via support if you have any deadlines related to the consumption of those services.
- (OData V2) Maintenance Item -
Improvementsβ
-
The Workflow API client library in module
scp-workflow-cfwas updated to support the latest version of the Workflow Service on the SAP BTP Cloud Foundry. -
Dependency Updates:
- Update Neo JavaEE 7 SDK from
1.100.7to1.101.4 - Update BTP Neo Tomcat 8 SDK from
4.2.4to4.5.3 - Update BTP CF Logging from
3.5.0to3.5.1 - Update SLF4J from
1.7.31to1.7.32 - Update AssertJ Vavr from
0.4.1to0.4.2 - Update Commons IO from
2.10.0to2.11.0 - Update Vavr from
0.10.3to0.10.4
- Update Neo JavaEE 7 SDK from
3.50.0 - July 29, 2021β
Known issuesβ
- The vulnerability CVE-2021-2629 refers to the non-encrypted access to Maven repositories which eases man-in-the-middle attacks where an attacker manipulates a repository.
Maven
3.8.1changed the default behaviour to no longer follow non-encrypted repository URLs. The SAP Cloud SDK uses Maven libraries in the version3.6.0, mainly since we release Maven plugins. An update to the latest Maven version is planned to mitigate this issue. Internal analysis revealed that there is no direct harm for SAP BTP applications using the SAP Cloud SDK for Java. To minimize the attack vector, we recommend to developers to use Maven3.8.1or later on their development machines.
Compatibility Notesβ
- Mitigate CVE-2021-35515 by update to secure version of
org.apache.commons:commons-compressin the SAP Cloud SDK moduleblockchain-client-fabric.
New Functionalityβ
- We introduced a new API to give you precise control over discarding cache entries by passing a
CacheFilterinstance to your resilience configuration like thisResilienceDecorator.clearCache(ResilienceConfiguration, CacheFilter). You can combine multiple cache filters to a disjunction or conjunction by callingCacheFilter.or(firstFilter, secondFilter)orCacheFilter.and(firstFilter, secondFilter)respectively. Check more examples on how to leverageCacheFilterin the detailed feature documentation. - The OData V4 generator now supports the generation of actions with non-primitive value types, i.e.
Entity,Complex type,Enum, and collection-based types.
Improvementsβ
- Dependency Updates:
- SAP dependency updates:
- Update BTP CF Logging from
3.4.0to3.5.0 - Update XSUAA Token Client and Token Flow API from
2.9.0to2.10.2
- Update BTP CF Logging from
- Other dependency updates:
- Minor version updates:
- Update Java JWT from
3.17.0to3.18.1 - Update Jackson from
2.12.3to2.12.4 - Update Spring from
5.3.7to5.3.8
- Update Java JWT from
- Minor version updates:
- SAP dependency updates:
3.49.0 - July 15, 2021β
Known issuesβ
- The module
com.sap.cloud.sdk.frameworks:cxfuses the Apache CXF dependencies of version3.3.10which is affected by vulnerabilities CVE-2021-30468. Currently, this module is not consumed in other SAP Cloud SDK modules. Use of the SAP Cloud SDK doesn't compromise your application runtime unless you consume this module in your code directly.
New Functionalityβ
- We added a new
SimpleNamingStrategy, which, in contrast to ourS4HanaNamingStrategy, does not apply any unnecessary modifications to the generated names. - We added the option to specify additional properties for the OpenAPI generator. The Maven plugin and CLI now accept a list of additional properties as described here.
Improvementsβ
- Dependency Updates:
- SAP dependency updates:
- Update Neo JavaEE 7 SDK from
1.98.8to1.100.7 - Update BTP Neo Tomcat 8 SDK from
4.1.9to4.2.4 - Update SAP CP Spring XSUAA Security Library from
2.8.10to2.9.0
- Update Neo JavaEE 7 SDK from
- Other dependency updates:
- Major version updates:
- Update transitive asm dependency from
7.0to9.0
- Update transitive asm dependency from
- Minor version updates:
- Update Slf4j from
1.7.30to1.7.31 - Update Caffeine from
2.9.1to2.9.2 - Update Java JWT from
3.16.0to3.17.0 - Update Resilience4j from
1.7.0to1.7.1 - Update Mockito from
3.11.1to3.11.2 - Update Fabric SDK from
2.2.6to2.2.7 - Update Spring from
5.3.5to5.3.7 - Update Spring Boot from
2.4.4to2.5.0 - Update Spring security from
5.4.5to5.5.1 - Update Eclipse Link from
2.7.8to2.7.9
- Update Slf4j from
- Major version updates:
- SAP dependency updates:
Fixed issuesβ
- We fixed an issue where OData batch requests could not be build in case the service bath did not start with a leading forward slash.
3.48.0 - July 1, 2021β
Known issuesβ
- The module
usage-analyticsuses the dependencyorg.jdom:jdom:2.0.6which is affected by the vulnerability CVE-2021-33813. There was no fixed dependency version available at the release date. We'll update this dependency once a secure version is available. The dependency is used in a Maven plugin and hence there is no harm during the runtime of any SAP BTP application.
Compatibility Notesβ
-
We refactored the way Java names (e.g., for classes, methods, fields, etc.) are being generated in both the OData V2 and the OData V4 VDM generator. This refactoring aims to grant more power over what names are to be used in the VDM to implementations of the
NamingStrategyinterface.Hereby, we changed the following interfaces and classes in an incompatible way:
- The
NamingStrategyinterface has been redesigned entirely, leading to compilation errors for existing implementations. - The
DefaultNamingStrategyhas been renamed toS4HanaNamingStrategy. It stays the default value for the generator, though. - The
DefaultNamingStrategy.NameSourceenumeration has been moved to the package rather than being nested inside a class.
Additionally, the entire logic, which consists of the items listed below, has been moved to the
com.sap.cloud.sdk.datamodel.odata.utilitypackage:NameSourceNamingStrategyAbstractNamingStrategyS4HanaNamingStrategy
Users of the Maven Plugin or the CLI variant of the generators are (most likely) not affected by any incompatible changes.
- The
-
We fixed a typo in the
com.sap.cloud.sdk.datamodel.odata.utility(previouslyutililty) package name. The only class affected by this change is theLegacyClassScanner, which is meant for internal usage only.
New Functionalityβ
-
We added the
ScpCfDestinationTokenExchangeStrategy, which can be used to change the user token exchange behavior when retrieving destinations on SAP BTP Cloud Foundry.By default, the
ScpCfDestinationLoaderalways performs an initial "look up" request against the destination service. This is needed to get the authentication type configured in the destination, which might then require a user token exchange to authenticate at the target system.The newly added
ScpCfDestinationTokenExchangeStrategyallows users to skip either the initial "look up" to increase performance, or the user token exchange:// configure the ScpCfDestinationLoader to perform the user token exchange immediatelyDestinationOptions options =DestinationOptions.builder().augmentBuilder(ScpCfDestinationOptionsAugmenter.augmenter().tokenExchangeStrategy(ScpCfDestinationTokenExchangeStrategy.EXCHANGE_ONLY)).build();Try<Destination> destination = DestinationAccessor.getLoader().tryGetDestination("MyDestination", options); -
The OData V4 Generator now supports parameter reordering also on bound operations (both functions and actions). The generator will now maintain the parameter order of a previously generated VDM, even if the parameter ordering in the EDMX changes.
Improvementsβ
- Dependency Updates:
- SAP dependency updates:
- Update Neo JavaEE 7 SDK from
1.97.11to1.98.8
- Update Neo JavaEE 7 SDK from
- Other dependency updates:
- Minor version updates:
- Update Caffeine from
2.9.0to2.9.1 - Update Commons IO from
2.9.0to2.10.0 - Update Eclipse Link from
2.7.7to2.7.8 - Update Mockito from
3.10.0to3.11.1 - Update Protobuf from
3.17.1to3.17.3 - Update Bouncycastle from
1.68to1.69 - Update Wiremock from
2.28.0to2.28.1
- Update Caffeine from
- Minor version updates:
- SAP dependency updates:
Fixed issuesβ
- We fixed an issue with the OData V4 VDM where bound operations on entity sets would target an incorrect URL.
- We fixed an issue in both the OData V2 and V4 VDM generators where certain OpenAPI fields on a path item led to a generator warning and caused the generation to fail if the flag
fail-on-warningwas activated.
3.47.0 - June 17, 2021β
New Functionalityβ
- We introduced the new API
Principal#getAuthorizationsByAudiencewhich returns the authorizations (scopes) of the principal grouped by their audience.
Improvementsβ
- Dependency Updates:
- SAP dependency updates:
- Update BTP Neo Tomcat 8 SDK from
3.127.13.3to4.1.9 - Update Neo JavaEE 7 SDK from
1.96.13.1to1.97.11 - Update SAP CP Spring XSUAA Security Library from
2.8.8to2.8.10
- Update BTP Neo Tomcat 8 SDK from
- Other dependency updates:
- Update Protobuf Java from
3.17.0to3.17.1 - Update Netty from
4.1.64.Finalto4.1.65.Final - Update PMD from
6.34.0to6.35.0 - Update Commons IO from
2.8.0to2.9.0 - Update Gson from
2.8.6to2.8.7 - Update Mockito from
3.9.0to3.10.0 - Update jsonschema2pojo from
1.1.0to1.1.1 - Update Hibernate Core from
5.4.31.Finalto5.4.32.Final - Update Jetty from
9.4.39.v20210325to9.4.41.v20210516 - Update Spring from
5.3.4to5.3.5 - Update Spring Boot from
2.4.3to2.4.4 - Update Json Path from
2.5.0to2.6.0
- Update Protobuf Java from
- SAP dependency updates:
Fixed issuesβ
- We fixed an issue in the Javadoc generation for the OData V4 type-safe client (VDM), which caused the content of the
Core.Descriptionannotation to be ignored. - We improved an exception message in both the OData V2 and V4 generator where an empty class name was subject to generation.
This happens, for instance, if an entity type is named
Type.
3.46.0 - June 3, 2021β
Compatibility Notesβ
-
We updated the (OData V2) Trial Balance - Read (
C_TRIALBALANCE_CDS) VDM to the newest release 2105 of SAP S/4HANA CloudCaution: The service introduced some intended breaking changes with the latest update which are now, in consequence, also present in the type-safe client (VDM) by the SAP Cloud SDK.
New Functionalityβ
-
The type-safe client (VDM) for OData V4 now gives access to bound functions and actions. Entities will now expose all operations bound to their type on their class.
For example assume there is a function
IsHappydefined for an entityPerson, then you can use:service.forEntity(person).applyFunction(Person.isHappy());In case the function is bound to a collection use e.g.:
service.applyFunction(Person.AreAllHappy());Furthermore, if a function is marked by the service as
composableyou can also apply an operation to the result of a function directly:service.forEntity(person).withFunction(Person.getBestFriend()).navigateTo(Person.FRIENDS).getAll();The creation of the new operation types is enabled in the OData V4 generator as well. Check out the full documentation of the feature for more information.
-
We updated the OData type-safe client also known as the VDM to the newest release FPS2 of SAP S/4HANA On-Premise 2020. This also includes completely new services added (available as usual in packages
com.sap.cloud.sdk.s4hana.onpremise.v2020.datamodel.odata.servicesandcom.sap.cloud.sdk.s4hana.onpremise.v2020.datamodel.odatav4.services), new operations in previously existing services, and new entity types.
Improvementsβ
-
We increased the default application memory setting for archetypes
scp-cf-tomeeandscp-cf-springfrom1024Mto1500M. This mitigates potential deployment errors due to the latest extensions in the VDM modules. -
Dependency Updates:
- Update Fabric SDK Java from
2.2.5to2.2.6 - Update JUnit Jupiter from
5.7.1to5.7.2 - Update Netty from
4.1.63.Finalto4.1.64.Final - Update Json Sanitizer from
1.2.2to1.2.3 - Update PMD from
6.33.0to6.34.0 - Update jOOR from
0.9.13to0.9.14 - Update Java JWT from
3.15.0to3.16.0 - Update Error Prone from
2.6.0to2.7.1 - Update AMQP Client from
5.11.0to5.12.0 - Update Reactor from
3.4.5to3.4.6 - Update Wiremock from
2.27.2to2.28.0 - Update Protobuf from
3.15.8to3.17.0
3.45.0 - May 20, 2021β
- Update Fabric SDK Java from
New Functionalityβ
-
Function import calls in OData V2 using the HTTP POST method can now be embedded in batch requests. Within the batch request, the function import call is wrapped inside a change set since function imports can also alter business data. You can execute a batch request containing a function import call as follows:
service.batch().beginChangeSet().addFunctionImport(service.callSomeFunction()).endChangeSet().executeRequest(destination); -
For the Generic OData Client filterable values and fields can now use the
inoperator in expressions.StructuredQuery query;// Age in (40,41,42)query.filter(FieldReference.of("Age").in( 40,41,42 ));// BestFriend in Friendsquery.filter(FieldReference.of("BestFriend").in( FieldReference.of("Friends").asCollection()) );// 'Green' in Colorsquery.filter(ValueString.literal("Green").in( FieldReference.of("Colors").asCollection()) ); -
For the OData V4 Typed Client filterable fields can now use the
inoperator in expressions.GetAllRequestBuilder<Person> request;// Age in (40,41,42)request.filter(Person.AGE.in(40,41,42));// BestFriend in Friendsquery.filter(Person.TO_BEST_FRIEND.in( Person.TO_FRIENDS ) ); -
Add new module
btp-business-rulesfor out-of-the-box support of- the SAP Business Rules Authoring service,
// requires dependency com.sap.cloud.sdk.services:btp-business-rulesHttpDestination authoringDestination =ScpCfServiceDestinationLoader.getDestinationForService(ScpCfServiceDestinationLoader.CfServices.BUSINESS_RULES_AUTHORING,"my-business-rules");ProjectsApi projectsApi = new ProjectsApi(authoringDestination);List<ProjectVersionObject> allProjects = projectsApi.readProjects();- and the SAP Business Rules Execution service.
// requires dependency com.sap.cloud.sdk.services:btp-business-rulesHttpDestination executionDestination =ScpCfServiceDestinationLoader.getDestinationForService(ScpCfServiceDestinationLoader.CfServices.BUSINESS_RULES_EXECUTION,"my-business-rules");DeployUndeployRuleServiceApi deployService = new DeployUndeployRuleServiceApi(executionDestination);List<WorkingsetRuleServiceDefinitionResult> deployedWorkingSets = deployService.readWorkingsetRuleServices(); -
We updated the OData type-safe client also known as a VDM to the newest release 2105 of SAP S/4HANA Cloud. This includes completely new services (available as usual in packages
com.sap.cloud.sdk.s4hana.datamodel.odata.servicesandcom.sap.cloud.sdk.s4hana.datamodel.odatav4.services), new operations in previously existing services, and new entity types. The following two services were however not updated:- (OData V2) Trial Balance - Read -
C_TRIALBALANCE_CDS - (OData V4) Bank -
BANK_0001
- (OData V2) Trial Balance - Read -
Improvementsβ
-
Using a Swagger file to generate OData V4 entity classes will now mark entities accessible on service root path as
VdmEntitySet. This enables the experimental API to query the OData service over navigation properties directly. This feature was originally enabled for entities generated by EDMX metadata files in version3.20.0. -
Dependency Updates:
- SAP dependency updates:
- Update BTP Neo Tomcat 8 SDK from
3.124.9.2to3.127.13.3 - Update Neo JavaEE 7 SDK from
1.95.7to1.96.13.1 - Update BTP CF Logging from
3.3.0to3.4.0
- Update BTP Neo Tomcat 8 SDK from
- Other dependency updates:
- Minor version updates:
- Update JSON Smart from
2.4.2to2.4.7 - Update Togglz from
2.9.6to2.9.8 - Update Fabric Gateway Java from
2.2.1to2.2.2 - Update jOOQ from
3.14.8to3.14.9 - Update Hibernate Core from
5.4.39.Finalto5.4.40.Final
- Update JSON Smart from
- Minor version updates:
- SAP dependency updates:
Fixed issuesβ
- Using
nullin OData v2 filter expressions does no longer lead to aNullPointerExceptionwhen executing the request. - Fix an edge case where some
BigDecimalvalues where not serialized correctly in OData V2 requests.