Release Notes
Should I update?
We highly recommend regularly updating to the latest SAP Cloud SDK version. It will help you:
- Ensure access to the latest SAP Cloud SDK features
- Keep up with the latest changes in SAP Cloud Platform
- Update client libraries giving access to latest SAP services on SAP Cloud Platform and SAP S/4HANA
- Protect yourself from bugs and breaking changes in the future
The SAP Cloud SDK v3 for Java is Deprecated
Version 3.x of the SAP Cloud SDK for Java has reached its end of life. As a consequence, there won't be any updates to the SAP Cloud SDK version 3 - not even security fixes. To continue using the latest features outlined in the release notes below, please update to the SAP Cloud SDK v4.
3.78.0 - December 15, 2022
newFunctionality
-
Introduce new APIs to configure the destination cache in the
ScpCfDestinationLoader
.We strongly recommend using the following APIs before loading any destination, for example, during application startup only:
ScpCfDestinationLoader.Cache.setSizeLimit
: Set the number of cache entries that will be cached.ScpCfDestinationLoader.Cache.disableSizeLimit
: Disable the cache size limit. The cache will store an infinite amount of entries - use with caution.ScpCfDestinationLoader.Cache.setExpiration
: Set the expiration duration and strategy for cache entries.ScpCfDestinationLoader.Cache.disableExpiration
: Disable the cache entry expiration. The cache will store entries until it is full, which will lead to the deletion of old entries. This might cause destinations to be cached forever - use with caution.ScpCfDestinationLoader.Cache.disable
: Disable the entire cache. All destination will always be retrieved from the Destination Service. This will result in performance degradations - use with caution.
-
The destination loaders now allow for customizing the timeout that is applied to destination retrievals.
- By default, a 6-second timeout is applied when retrieving a destination.
- The timeout can be overridden by using the builder:
final Try<Destination> loadedDestination = ScpCfDestinationLoader.builder()
.withTimeLimiterConfiguration(ResilienceConfiguration.TimeLimiterConfiguration.of(Duration.ofSeconds(10)))
.build()
.tryGetDestination(destinationName, destinationOptions); - Alternatively, the timeout behaviour can be disabled via:
final Try<Destination> loadedDestination = ScpCfDestinationLoader.builder()
.withTimeLimiterConfiguration(ResilienceConfiguration.TimeLimiterConfiguration.disabled())
.build()
.tryGetDestination(destinationName, destinationOptions);
improvements
- Improvements to accessing destinations in a resilient manner:
- The default timeout of
6
seconds for fetching one or all destinations usingtryGetDestination( destinationName,options )
ortryGetAllDestinations(options )
ortryGetAllDestinations( )
is now applied individually for token retrieval and destination service calls. - The experimental method
ScpCfDestinationLoader#tryGetDestination(String,String,String,ScpCfDestinationServiceResponseProvider)
now also performs requests in a resilient manner with automatic timeout configured for6
seconds. - The default timeout value can be overridden or disabled by constructing a
ScpCfDestinationLoader
with a custom time limiter configuration. See the note on new functionality above.
- The default timeout of
- Dependency Updates:
- Other dependency updates:
- Minor version updates:
- Update Tomcat JDBC (
org.apache.tomcat:tomcat-jdbc
) and Tomcat Annotations API (org.apache.tomcat:tomcat-annotations-api
) from8.5.81
to8.5.83
- Update okhttp (
com.squareup.okhttp3:okhttp
) from4.9.3
to4.10.0
- Update Tomcat JDBC (
- Minor version updates:
- Other dependency updates:
fixedIssues
- Retrieving any
OAuth2
destination using theDestinationAccessor
in DwC has been improved to always return a destination with a valid, non-expired Auth token.
3.77.0 - November 17, 2022
Improvements
- Dependency Updates:
- Other dependency updates:
- Minor version updates:
- Update Woodstox Core(
com.fasterxml.woodstox:woodstox-core
) from6.3.0
to6.4.0
- Update Spring Security(
org.springframework.security:spring-security-bom
) from5.7.3
to5.7.5
- Update Woodstox Core(
- Minor version updates:
- Other dependency updates:
3.76.0 - October 31, 2022
Improvements
- The naming of the destination retrieval strategy (
SUBSCRIBER_THEN_PROVIDER
) both in theScpCfDestinationLoader
as well as in theScpNeoDestinationLoader
did not behave as the name implied, as it was taking the current tenant, which might, due to misconfiguration, also be the Provider Tenant for the first destination retrieval attempt. This is now fixed by the following steps:- Deprecation of the unclear
SUBSCRIBER_THEN_PROVIDER
strategy - Adding a new strategy
CURRENT_TENANT_THEN_PROVIDER
, which will not perform a second retrieval attempt in case the current tenant is already the provider
- Deprecation of the unclear
- The naming of the
ScpNeoDestinationRetrievalStrategy
(ALWAYS_SUBSCRIBER
) in theScpNeoDestinationLoader
did not behave as the name implied, as it was taking the current tenant, which might, due to misconfiguration, also be the Provider Tenant. This is now fixed by the following steps:- Deprecation of the unclear
ALWAYS_SUBSCRIBER
strategy - Alternative strategy keeping the same behavior:
CURRENT_TENANT
- Adding a new strategy
ONLY_SUBSCRIBER
which actively enforces that the current tenant is not the provider tenant
- Deprecation of the unclear
- Dependency Updates:
- Other dependency updates:
- Minor version updates:
- Update Jackson BOM (
com.fasterxml.jackson:jackson-bom
) from2.13.3
to2.13.4
- Update Jackson Databind (
com.fasterxml.jackson.core:jackson-databind
) from2.13.3
to2.13.4.2
- Update Commons Text (
org.apache.commons:commons-text
) from1.9.0
to1.10.0
- Update Fabric SDK Java (
org.hyperledger.fabric-sdk-java:fabric-sdk-java
) from2.2.10
to2.2.18
- Update Snake YAML (
org.yaml:snakeyaml
) from1.31
to1.33
- Update Protobuf Java (
com.google.protobuf:protobuf-java
) from3.21.2
to3.21.7
- Update Jackson BOM (
- Minor version updates:
- Other dependency updates:
Fixed Issues
- Fix an issue with OData request payloads containing incomplete entity type indicators.
- Fix an issue with JWT payload parsing from incoming requests:
aud
claim can be an atomic string or an array of strings.
3.75.0 - September 21, 2022
Compatibility Notes
- The
RequestAccessor
API (along all the related classes - e.g. theRequestThreadContextListener
andRequestFacade
) is deprecated. For a replacement, please refer to theRequestHeaderAccessor
.
New Functionality
- Add public method
getAllDestinations()
toEnvVarDestinationLoader
to resolve all destinations from the configured system environment variable (default:destinations
).
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update XSUAA Library from
2.12.2
to2.12.3
- Update XSUAA Library from
- Other dependency updates:
- Minor version updates:
- Update Spring from
5.3.21
to5.3.22
- Update Spring Security from
5.7.2
to5.7.3
- Update Spring from
- Minor version updates:
- SAP dependency updates:
Fixed Issues
- Fix an issue with OData request payloads containing incomplete entity type indicators.
- Fix an issue with JWT payload parsing from incoming requests:
aud
claim can be an atomic string or an array of strings.
3.74.0 - August 11, 2022
Compatibility Notes
- Following modules have been marked as deprecated and will be removed with the upcoming release of SAP Cloud SDK 4.0:
OData Query Listener
and related classes in other modulesRemote Function Query Listener
and related classes in other modulesHTTP Client Listener
and related classes in other modules- The remaining
Quality - Parent POM
and submodules
New Functionality
- Update the OData VDM to the newest release 2208 of SAP S/4HANA Cloud.
This includes completely new services (available as usual in packages
com.sap.cloud.sdk.s4hana.datamodel.odata.services
andcom.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.
3.73.0 - July 28, 2022
Compatibility Notes
- Following modules have been deprecated and will be removed with the upcoming release of the SAP Cloud SDK version 4:
- API Metering (
com.sap.cloud.sdk.cloudplatform:metering
) - API Metering SAP CP Neo (
com.sap.cloud.sdk.cloudplatform:metering-scp-neo
)
- API Metering (
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update XSUAA Library from
2.12.2
to2.12.3
- Update SAP AuditLog from
2.0.16
to2.0.17
- Update SAP Passport from
1.5.0
to1.6.0
- Update NEO SDK from
1.127.12
to1.128.10
- Update NEO Web API from
4.29.8
to4.32.0
- Update XSUAA Library from
- Other dependency updates:
- Minor version updates:
- Update Spring from
5.3.20
to5.3.21
- Update Spring Security from
5.7.1
to5.7.2
- Update
org.scyscreamer:jsonassert
from1.5.0
to1.5.1
- Update
org.liquibase:liquibase-core
from4.12.0
to4.13.0
- Update Spring from
- Minor version updates:
- SAP dependency updates:
Fixed Issues
- Fix an issue where the Rate Limiter pattern wasn't correctly applied when using one of the
ResilienceDecorator.execute...
methods
3.72.0 - July 14, 2022
Improvements
- Dependency Updates:
- SAP Dependency Updates:
- Minor Dependency Updates:
- Update XSUAA Client Library from
2.12.1
to2.12.2
- Update Neo Javaee7 Wp (
com.sap.cloud:neo-javaee7-wp-sdk
) from1.123.12
to1.127.12
- Update Neo Java Web Api (
com.sap.cloud:neo-java-web-api
) from4.27.5
to4.29.8
- Update XSUAA Client Library from
- Minor Dependency Updates:
- Other Dependency Updates:
- Minor Dependency Updates:
- Update Spring Boot (
org.springframework.boot:spring-boot
) from2.6.7
to2.7.0
- Update Spring Security (
org.springframework.security:spring-security-bom
) from5.6.4
to5.7.1
- Update Protobuf Java (
com.google.protobuf:protobuf-java
) from3.21.1
to3.21.2
- Update Spotbugs Annotations (
com.github.spotbugs:spotbugs-annotations
) from4.7.0
to4.7.1
- Update Woodstox Core (
com.fasterxml.woodstox:woodstox-core
) from6.2.8
to6.3.0
- Update Spring Boot (
- Minor Dependency Updates:
- SAP Dependency Updates:
Fixed Issues
- Fix an issue where generation of OData v4 client failed with a
NullPointerException
whenActions
andFunctions
listEntites
that are not associated with anEntitySet
as parameters. The generator skips generating these actions and functions now.
3.71.0 - June 30, 2022
Improvements
- Dependency Updates:
- Other dependency updates:
- Minor version updates:
- Update AssertJ Guava (
org.assertj:assertj-guava
) from3.4.0
to3.5.0
- Update Liquibase Core (
org.liquibase:liquibase-core
) from4.11.0
to4.12.0
- Update Reactor Core (
io.projectreactor:reactor-core
) from3.4.18
to3.4.19
- Update Tomcat JDBC (
org.apache.tomcat:tomcat-jdbc
) and Tomcat Annotations API (org.apache.tomcat:tomcat-annotations-api
) from8.5.77
to8.5.81
- Update AMQP Client (
com.rabbitmq:amqp-client
) from5.14.2
to5.15.0
- Update Error Prone Annotations (
com.google.errorprone:error_prone_annotations
) from2.13.1
to2.14.0
- Update Netty Bom (
io.netty:netty-bom
) from4.1.77
to4.1.78.Final
- Update AssertJ Guava (
- Minor version updates:
- Other dependency updates:
3.70.0 - June 16, 2022
New Functionality
-
Update of the OData VDM to the newest release 2021 FPS2 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 existing Maven artifacts:
s4hana-api-odata-v4-onpremise
manages classes in packagecom.sap.cloud.sdk.s4hana.onpremise.datamodel.odatav4.services
s4hana-api-odata-onpremise
manages classes in packagecom.sap.cloud.sdk.s4hana.onpremise.datamodel.odata.services
The following services are added:
- BudgetPeriodService
- BudgetPeriodHierarchyService
- IncotermsService
- FundsManagementFunctionalAreaService
- FundsCenterService
- GrantService
- FundsManagementCommitmentAndActualItemService
- FundedProgramService
- FundHierarchyService
- FundsManagementBudgetDocumentItemService
- FundsCenterHierarchyService
- FundedProgramHierarchyService
- FundService
- GrantHierarchyService
- CommitmentItemHierarchyService
- CommitmentItemService
- ProjectClaimService
- StatutoryReportingCategoryDefinitionService
- StatutoryReportingReportDefinitionService
The following services are updated:
- CashSecurityDepositService
- CentralRequestForQuotationService
- CentralSupplierQuotationService
- ConditionContractService
- FlexibleConstraintService
- InHouseRepairService
- PlannedOrderService
- ProjectDefinitionService
- QualityTaskService
- ReturnsInspectionService
- SettlementDocumentService
- StatutoryReportingTaskService
- StorePickupOrderService
- VariantTableContentService
- WarehouseDefectService
- ServiceConfirmationService
- ServiceOrderService
- ServiceOrderTemplateService
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update Neo Java Web API from
4.26.4
to4.27.5
- Update Neo JavaEE7 WP API from
1.122.6
to1.123.12
- Update JPaaS Security Utils from
1.4.92
to1.4.93
- Update Neo Java Web API from
- Other dependency updates:
- Minor version updates:
- Update Liquibase Core (
org.liquibase:liquibase-core
) from4.10.0
to4.11.0
- Update Togglz Core (
org.togglz:togglz-core
) from3.1.2
to3.2.1
- Update Plexus Utils (
org.codehaus.plexus:plexus-utils
) from3.4.1
to3.4.2
- Update Protobuf (
com.google.protobuf:protobuf-java
) from3.20.1
to3.21.1
- Update Reactor Core (
io.projectreactor:reactor-core
) from3.4.17
to3.4.18
- Update Rest Assured (
io.rest-assured:rest-assured
) from5.0.1
to5.1.0
- Update Liquibase Core (
- Minor version updates:
- SAP dependency updates:
3.69.0 - June 03, 2022
Compatibility Notes
-
Deprecate the
testutil-*
(com.sap.cloud.sdk.testutil:testutil-parent
,com.sap.cloud.sdk.testutil:testutil-core
, andcom.sap.cloud.sdk.testutil:testutil-resources
) modules. These will be removed from our public deliveries with the next upcoming major release of the SAP Cloud SDK.If you are relying on (one of) these modules for your testing scenarios, please let us know by reacting on this GitHub issue.
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update Neo Java Web API from
4.25.6
to4.26.1
- Update Neo JavaEE7 WP API from
1.121.5
to1.122.6
- Update Neo Java Web API from
- Other dependency updates:
- Minor version updates:
- Update Spring BOM (
org.springframework:spring-framework-bom
) from5.3.19
to5.3.20
- Update Spring Security (
org.springframework:spring-security-bom
) from5.6.3
to5.6.4
- Update Jackson Bom (
com.fasterxml.jackson:jackson-bom
) from2.13.2
to2.13.3
- Update Jackson Databind (
com.fasterxml.jackson.core:jackson-databind
) from2.13.2.2
to2.13.2.3
- Update Spring BOM (
- Minor version updates:
- SAP dependency updates:
Fixed Issues
- Fix an issue with OData Batch request construction when the service path contains special characters.
3.68.0 - May 19, 2022
Compatibility Notes
- To fix the high vulnerability CVE-2022-22968 in Spring, we had to update Spring BOM to
5.3.19
and to maintain compatibility had to also update XSUAA Client Library to2.11.16
. Please note that if you are using SAP JAVA buildpack for your deployments use a static buildpack versionsap_java_buildpack_1_52
to avoid dependency conflicts and class loading issues. - SAP Business Rules OpenAPI client library received breaking change to the field
List<TextPredefinedResults> predefinedResults
which is renamed toList<TextPredefined> predefined
after updating to the latest version of the SAP Business Rules service - Deprecate non-productive
com.sap.cloud.sdk.s4hana.datamodel.odata.adapter.ODataCalendarAdapter
and child classesODataDateTimeAdapter
,ODataDateTimeOffsetAdapter
, andODataTimeAdapter
. It is planned to remove those classes with SAP Cloud SDK v4. - Switch from using
com.google.code.findbugs:annotations
tocom.github.spotbugs:spotbugs-annotations
in modulescloudplatform-core-dwc-cf
andrecast-ai
. No code changes are required if you are consuming these modules. However, if you are planning on consuming these dependencies, remember to declare them directly in your POM as these are declared as optional dependencies. - The
DefaultLocaleFacade
does no longer consider theServletRequest
(accessed via theRequestAccessor
) to determine the desiredLocale
. Instead, the facade uses theRequestHeaderAccessor
to derive theLocale
based on theAccept-Language
header - this change was already introduced in version3.61.0
. As a fallback, in case the header cannot be found, the defaultLocale
for the server will be returned as before. This change does not affect any productive scenarios. However, there might be changes in tests, where theRequestServlet#getLocales()
is mocked to return an arbitrary value that is neither part of theAccept-Language
header nor the default systemLocale
. - Deprecate modules:
Recast AI
Graph
Services - SAP BTP Machine Learning
Improvements
-
The SAP Business Rules OpenAPI client library was updated to the latest version of the Business Rules service. See also the related compatibility note.
-
Dependency Updates:
- SAP dependency updates:
- Update XSUAA Client Library from
2.11.15
to2.11.16
- Update CF Logging Support (
com.sap.hcp.cf.logging:cf-java-logging-support-logback
) from3.6.0
to3.6.2
- Update Neo JavaEE7 WP API from
1.117.2
to1.121.5
- Update Neo Java Web API from
4.21.1
to4.25.6
- Update XSUAA Client Library from
- Other dependency updates:
- Major version updates:
- Add Spotbugs annotations (
com.github.spotbugs:spotbugs-annotations
) version4.7.0
- Add JCIP annotations (
net.jcip:jcip-annotations
) version1.0
- Remove Findbugs annotations (
com.google.code.findbugs:annotations
) - Update Woodstox Core (
com.fasterxml.woodstox:woodstox-core
) from5.3.0
to6.2.8
- Add Spotbugs annotations (
- Minor version updates:
- Update ASM (
org.ow2.asm:asm
) from9.2
to9.3
- Update Java JWT (
com.auth0:java-jwt
) from3.19.0
to3.19.2
- Update Liquibase Core (
org.liquibase:liquibase-core
) from4.9.0
to4.10.0
- Update Lombok (
org.projectlombok:lombok
) from1.18.22
to1.18.24
- Update Swagger Annotations (
io.swagger:swagger-annotations
) from1.6.5
to1.6.6
- Update Error Prone Annotations (
com.google.errorprone:error_prone_annotations
) from2.11.0
to2.13.1
- Update Json Unit AssertJ (
net.javacrumbs.json-unit:json-unit-assertj
) from2.32.0
to2.35.0
- Update Netty Bom (
io.netty:netty-bom
) from4.1.75
to4.1.77
- Update Protobuf Java (
com.google.protobuf:protobuf-java
) from3.19.4
to3.20.1
- Update Reactor Core (
io.projectreactor:reactor-core
) from3.4.16
to3.4.17
- Update Rest Assured (
io.rest-assured:rest-assured
) from5.0.0
to5.0.1
- Update Wiremock (
com.github.tomakehurst:wiremock-jre8-standalone
) from2.32.0
to2.33.2
- Update Spring BOM (
org.springframework:spring-framework-bom
) from5.3.18
to5.3.19
- Update Spring Security (
org.springframework:spring-security-bom
) from5.6.2
to5.6.3
- Update Jsonschema2Pojo Core (
org.jsonschema2pojo:jsonschema2pojo-core
) from1.1.1
to1.1.2
- Update Togglz Core (
org.togglz:togglz-core
) from3.1.1
to3.1.2
- Update ASM (
- Major version updates:
- SAP dependency updates:
Fixed Issues
- Fix an issue with the OpenAPI client not being able to instantiate the class
ApiClient
when Jackson formats other than JSON are possible at runtime. - Fix an issue with some OData services unable to parse the syntax of batch request segments, that have special characters in entity key values.
3.67.0 - April 14, 2022
Compatibility Notes
- To fix the critical CVE-2022-22965 vulnerability in Spring, we had to update Spring BOM to
5.3.18
and to maintain compatibility had to also update XSUAA Client Library to2.11.15
. Please note that if you are using SAP JAVA buildpack for your deployments use a static buildpack versionsap_java_buildpack_1_49
to avoid dependency conflicts and class loading issues. - The module
auditlog-scp-cf
is considered deprecated. The audit logging API used to implement the integration is outdated and no longer adheres to product guidelines. In the future, the SAP Cloud SDK may provide an update leveraging the recommended API. Until then the users have an option to continue using the deprecated logic at their own risk, or directly consume the recommended audit logging API - without the SAP Cloud SDK convenience layer. Please, create an issue if you are interested in the consumption ofauditlog-scp-cf
via the SAP Cloud SDK. This deprecated module will be kept in the upcoming SAP Cloud SDK v4. The module targeting Neo in not deprecated and integration can be consumed as before. - The following modules have been marked as
deprecated
and will be removed with the next major release version (v4):com.sap.cloud.sdk.services.currencyconversion.core
com.sap.cloud.sdk.services.currencyconversion.adapter.integrationobjects
com.sap.cloud.sdk.services.currencyconversion.datamodel.model
com.sap.cloud.sdk.services.currencyconversion.datamodel.adapter
com.sap.cloud.sdk.plugins:usage-analytics
com.sap.cloud.sdk.plugins:usage-analytics-maven-plugin
New Functionality
- Add Rate Limiter to Resilience Capabilities
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update XSUAA Client Library from
2.11.12
to2.11.15
- Update CF Logging Support (
com.sap.hcp.cf.logging:cf-java-logging-support-logback
) from3.5.7
to3.6.0
- Update CDS4J Maven Plugin (
com.sap.cds:cds4j-maven-plugin
) from1.26.2
to1.27.0
- Update XSUAA Client Library from
- Other dependency updates:
- Major version updates:
- Update Rest Assured (
io.rest-assured:rest-assured
) from4.5.1
to5.0.0
- Update Rest Assured (
- Minor version updates:
- Update Json (
org.json:json
) from20211205
to20220320
- Update Java JWT (
com.auth0:java-jwt
) from3.18.3
to3.19.0
- Update liquibase-core (
org.liquiebase:liquibase-core
) from4.8.0
to4.9.0
- Update Fabric Gateway Java (
org.hyperledger.fabric:fabric-gateway-java
) from2.2.3
to2.2.4
- Update Jackson Databind (
com.fasterxml.jackson.core:jackson-databind
) from2.13.2
to2.13.2.2
- Update Joda Time (
joda-time:joda-time
) from2.10.13
to2.10.14
- Update Reactor Core (
io.projectreactor:reactor-core
) from3.4.15
to3.4.16
- Update Tomcat JDBC (
org.apache.tomcat:tomcat-jdbc
) and Tomcat Annotations API (org.apache.tomcat:tomcat-annotations-api
) from8.5.75
to8.5.77
- Update Swagger Core V3 (
io.swagger.core.v3:swagger-core
) and Swagger Core V3 models (io.swagger.core.v3:swagger-models
)from2.1.7
to2.1.13
- Update Swagger Core (
io.swagger:swagger-core
) from1.6.2
to1.6.5
- Update Spring BOM (
org.springframework:spring-framework-bom
) from5.3.15
to5.3.18
- Update Spring Boot (
org.springframework.boot:spring-boot-starter-reactor-netty
) from2.6.3
to2.6.6
- Update Spring Security (
org.springframework:spring-security-bom
) from5.6.1
to5.6.2
- Update Json (
- Major version updates:
- SAP dependency updates:
Fixed Issues
-
Getters and Setters of OpenApi POJOs are no longer considered when using the
ApiClient
(without passing aRestTemplate
) to serialize/deserialize data -
Fixed an issue which caused incorrect encoding of Pipes (
|
) in OData queries -
Fixed an issue where compilation errors occurred on
@Nullable
properties when using the OpenAPI generator
3.66.0 - March 24, 2022
Compatibility Notes
- We upgraded the major version of the
org.liquibase:liquibase-core
dependency to fix the known vulnerability CVE-2022-0839. Please be aware that this change might impact the compatibility of the deprecatedcom.sap.cloud.sdk.frameworks:liquibase
module.
Improvements
-
Improved the
exculdingFields
andincludingFields
options for OData V2 update requests. It now also allows for excluding complex and navigation properties. -
Dependency Updates:
- SAP dependency updates:
- Update Neo JavaEE7 WP API from
1.116.10
to1.117.2
- Update Neo Java Web API from
4.20.7
to4.21.1
- Update Neo JavaEE7 WP API from
- Other dependency updates:
- Major version updates:
- Update liquibase-core (
org.liquiebase:liquibase-core
) from3.10.3
to4.8.0
- Update liquibase-core (
- Minor version updates:
- Update Guava (
com.google.guava:guava
) from31.0.1
to31.1.0
- Update Jackson Bom (
com.fasterxml.jackson:jackson-bom
) from2.13.1
to2.13.2
- Update Logback Classic (
ch.qos.logback:logback-classic
) from1.2.10
to1.2.11
- Update Mockito Core (
org.mockito:mockito-core
) from4.3.1
to4.4.0
- Update Mojo Executor (
org.twdata.maven:mojo-executor
) from2.3.3
to2.4.0
- Update Netty Bom (
io.netty:netty-bom
) from4.1.74
to4.1.75
- Update OpenAPI Generator (org.openapitools:openapi-generator) from
5.0.0-beta3
to5.4.0
- Update Guava (
- Major version updates:
- SAP dependency updates:
Fixed Issues
- Fix an issue with destinations that have key-stores referencing more than one alias.
- Fix an issue with certificate-based authentication for SAP BTP services, e.g. Destination Service.
3.65.0 - March 10, 2022
Compatibility Notes
-
The following modules have been marked as
deprecated
and will be removed with the next major release:com.sap.cloud.sdk.frameworks.cxf
com.sap.cloud.sdk.frameworks.eclipselink
com.sap.cloud.sdk.frameworks.eclipselink-javaee
com.sap.cloud.sdk.frameworks.javaee
com.sap.cloud.sdk.frameworks.jaxrs
com.sap.cloud.sdk.frameworks.jaxrs-gson
com.sap.cloud.sdk.frameworks.liquibase
com.sap.cloud.sdk.frameworks.liquibase-javaee
com.sap.cloud.sdk.frameworks.spring-boot-multitenancy-scp-cf
com.sap.cloud.sdk.frameworks.spring-web
com.sap.cloud.sdk.frameworks.togglz
-
For Media Entities in the OData V2 VDM the method
fetchAsStream()
is deprecated in favour offetchMediaStream()
.
New Functionality
- Update of the OData VDM to the newest release 2021 FPS1 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 existing Maven artifacts:
s4hana-api-odata-v4-onpremise
manages classes in packagecom.sap.cloud.sdk.s4hana.onpremise.datamodel.odatav4.services
s4hana-api-odata-onpremise
manages classes in packagecom.sap.cloud.sdk.s4hana.onpremise.datamodel.odata.services
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update Neo JavaEE7 WP API from
1.115.17
to1.116.10
- Update Neo Java Web API from
4.19.13
to4.20.7
- Update Neo JavaEE7 WP API from
- Other dependency updates:
- Minor version updates:
- Update Json Unit AssertJ (
net.javacrumbs.json-unit:json-unit-assertj
) from2.31.0
to2.32.0
- Update Caffeine JCache (
com.github.ben-manes.caffeine:jcache
) from2.9.2
to2.9.3
- Update Reactor Core (
io.projectreactor:reactor-core
) from3.4.14
to3.4.15
- Update Tomcat JDBC (
org.apache.tomcat:tomcat-jdbc
) and Tomcat Annotations API (org.apache.tomcat:tomcat-annotations-api
) from8.5.72
to8.5.75
- Update Json Smart (
net.minidev:json-smart
) from2.4.7
to2.4.8
- Update Json Unit AssertJ (
- Minor version updates:
- SAP dependency updates:
3.64.0 - February 24, 2022
New Functionality
- Extend the implementation for using the SAP BTP Destination & Connectivity services to now also support the
x509
authentication type.
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update XSUAA Client Library from
2.11.10
to2.11.12
- Update Neo JavaEE7 WP API from
1.113.10.2
to1.115.17
- Update Neo Java Web API from
4.17.4.1
to4.19.13
- Update JPaaS Security Utils from
1.4.91
to1.4.92
- Update XSUAA Client Library from
- Other dependency updates:
- Minor version updates:
- Update Gson (
com.google.code.gson:gson
) from2.8.9
to2.9.0
- Update Json Path (
com.jayway.jsonpath:json-path
) from2.6.0
to2.7.0
- Update Slf4j (
org.slf4j:slf4j-api
) from1.7.35
to1.7.36
- Update Spring BOM (
org.springframework:spring-framework-bom
) from5.3.14
to5.3.15
- Update Swagger Annotations (
io.swagger:swagger-annotations
) from1.6.4
to1.6.5
- Update Togglz (
org.togglz:togglz-testing
) from3.1.0
to3.1.1
- Update AMQP Client (
com.rabbitmq:amqp-client
) from5.14.1
to5.14.2
- Update Jakarta Activation API (
jakarta.activation:jakarta.activation
) from2.0.1
to2.1.0
- Update Json Unit AssertJ (
net.javacrumbs.json-unit:json-unit-assertj
) from2.28.0
to2.31.0
- Update Mojo Executor (
org.twdata.maven:mojo-executor
) from2.3.2
to2.3.3
- Update Netty BOM (
io.netty:netty-bom
) from4.1.73
to4.1.74
- Update PMD Core (
net.sourceforge.pmd:pmd-core
) from6.41.0
to6.42.0
- Update Protobuf Java (
com.google.protobuf:protobuf-java
) from3.19.3
to3.19.4
- Update Rest Assured (
io.rest-assured:rest-assured
) from4.5.0
to4.5.1
- Update Spring Boot (
org.springframework.boot:spring-boot-starter-reactor-netty
) from2.6.2
to2.6.3
- Update Gson (
- Minor version updates:
- SAP dependency updates:
Fixed Issues
- Fix an issue that caused
PrincipalAccessor#getCurrentPrincipal()
to throw aPrincipalAccessException
in K8s based environments
3.63.0 - February 10, 2022
New Functionality
- Update the OData VDM to the newest release 2202 of SAP S/4HANA Cloud. This includes completely new services available as usual in packages:
com.sap.cloud.sdk.s4hana.datamodel.odata.services
com.sap.cloud.sdk.s4hana.datamodel.odatav4.services
You will also find 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.- Add a new method (
excludingFields(...)
) to exclude specific fields from OData V2 and V4PUT
requests (i.e.replacingEntity()
). This method can be used to exclude read-only fields, as well as dependent properties that are not tied to key properties from yourPUT
request payload.
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update CF Logging Support (
com.sap.hcp.cf.logging:cf-java-logging-support-logback
) from3.5.6
to3.5.7
- Update CF Logging Support (
- Other dependency updates:
- Minor version updates:
- Update Caffeine (
com.github.ben-manes.caffeine:caffeine
) from2.9.2
to2.9.3
- Update Eclipse Link (
org.eclipse.persistence:eclipselink
) from2.7.9
to2.7.10
- Update Slf4j (
org.slf4j:slf4j-api
) from1.7.33
to1.7.35
- Update Slf4j (
org.togglz:togglz-core
) from3.0.0
to3.1.0
- Update Mockito (
org.mockito:mockito-core
) from4.2.0
to4.3.1
- Update Caffeine (
- Minor version updates:
- SAP dependency updates:
Fixed Issues
- Fix an issue with Destination initialization, where the
"Authorization"
header value is constructed with improper scheme capitalization. Instead of"bearer [...]"
it will now correctly use"Bearer [...]"
as a header value for outgoing HTTP requests.
3.62.0 - January 28, 2022
New Functionality
-
The experimental Generic OData Client allows for customization of the number deserialization strategy from JSON to Java:
ODataRequestResultGeneric result;
// Default: Number to Double
result.withNumberDeserializationStrategy(NumberDeserializationStrategy.DOUBLE)
// Custom: Number to BigDecimal
result.withNumberDeserializationStrategy(NumberDeserializationStrategy.BIG_DECIMAL)This feature requires
Gson
dependency version2.8.9
or higher.
Improvements
-
The OData generators no longer throw an exception and log an error in case the provided EDMX file does not match the respective OData version schema. Instead, the file(s) that do not qualify for Java code generation will be skipped and debug messages are logged.
-
Dependency Updates:
- SAP dependency updates:
- Update XSUAA Token Client and Token Flow API from
2.11.5
to2.11.10
- Update CF Logging Support (
com.sap.hcp.cf.logging:cf-java-logging-support-logback
) from3.5.5
to3.5.6
- Update Neo JavaEE7 WP API (
com.sap.cloud:neo-javaee7-wp-api
) from1.111.8
to1.113.10.2
- Update Neo Java Web API (
com.sap.cloud:neo-java-web-api
) from4.15.7
to4.17.4.1
- Update XSUAA Token Client and Token Flow API from
- Other dependency updates:
- Minor version updates:
- Update Spring Framework (
org.springframework:spring-framework-bom
) from5.3.13
to5.3.14
- Update Spring Security (
org.springframework:spring-security-bom
) from5.6.0
to5.6.1
- Update Fabric Gateway Java (
org.hyperledger.fabric:fabric-gateway-java
) from2.2.2
to2.2.3
- Update Java JWT (
com.auth0:java-jwt
) from3.18.2
to3.18.3
- Update Slf4j (
org.slf4j:slf4j-api
) from1.7.32
to1.7.33
- Update AMQP Client (
com.rabbitmq:amqp-client
) from5.14.0
to5.14.1
- Update Netty BOM (
io-netty:netty-bom
) from4.1.72
to4.1.73
- Update Protobuf Java (
com.google.protobuf:protobuf-java
) from3.19.1
to3.19.3
- Update Reactor Core (
io.projectreactor:reactor-core
) from3.4.13
to3.4.14
- Update Spring Framework (
- Minor version updates:
- SAP dependency updates:
Fixed Issues
- Fix an issue where service bindings would not be loaded in some Kubernetes environments.
- Fix an issue where log message with
WARN
level would be written regularly with every incoming request.
3.61.0 - January 13, 2022
New Functionality
- The SAP Cloud SDK now supports a new
ProxyType
namedPrivateLink
. This proxy type is used when your destination represents a tunnel created via Private Link Service. - The SAP Cloud SDK now provides a new accessor for HTTP headers of the incoming request.
The new
RequestHeaderAccessor
located in thecloudplatform-core
module can be used to conveniently access HTTP headers of the currently processed incoming request. Furthermore, it can be used to also propagate specific headers to nestedThreadContext
s, much like the other accessors of the SAP Cloud SDK. By default, all present headers are automatically "inherited" when creating a newThreadContext
so that even asynchronous operations are able to access the initial headers.
Fixed Issues
- Fix a regression in version
3.51.0
that caused SOAP transaction commits to not be applied to the same session as the requests being committed. - Fix an issue that could sometimes lead to a
ConcurrentModificationException
when using the Destination or Connectivity service functionality. - Fix an issue that could sometimes lead to
CacheException Cache already exists
when using the Destination / Connectivity service or resilience functionality. - Fix an issue where service bindings were not loaded from the file system in case the working directory of the Java process was not the root directory.
- Fix an issue where custom service-path information is not propagated from OData V2 service classes to batch classes.
Previously this led to a runtime exception:
ODataRequestException: Batch request contains requests to different service paths [...]
. To enable the fix, please use the latest OData V2 VDM and/or re-generate your own OData V2 classes. - Fix CVE-2021-33813 by upgrading
jdom2
to version2.0.6.1
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update XSUAA Token Client and Token Flow API from
2.11.0
to2.11.5
- Update CF Logging Support (
com.sap.hcp.cf.logging:cf-java-logging-support-logback
) from3.5.2
to3.5.5
- Update XSUAA Token Client and Token Flow API from
- Other dependency updates:
- Minor version updates:
- Update Spring Framework (
org.springframework:spring-framework-bom
) from5.3.10
to5.3.13
- Update Spring Security (
org.springframework:spring-security-bom
) from5.5.2
to5.6.0
- Update JDom2 (
org.jdom:jdom2
) from2.0.6
to2.0.6.1
- Update Fabric SDK Java (
org.hyperledger.fabric-sdk-java:fabric-sdk-java
) from2.2.8
to2.2.10
- Update HttpCore (
org.apache.httpcomponents:httpcore
) from4.4.14
to4.4.15
- Update Json (
org.json:json
) from20210307
to20211205
- Update Logback Classic (
ch.qos.logback:logback-classic
) from1.2.7
to1.2.10
- Update Mockito (
org.mockito:mockito-core
) from4.1.0
to4.2.0
- Update Swagger Annotations (
io.swagger:swagger-annotations
) from1.6.3
to1.6.4
- Update Hibernate Core (
org.hibernate:hibernate-core
) from5.6.1.Final
to5.6.3.Final
- Update Json (
org.json:json
) from20210307
to20211205
- Update Netty (
io.netty:netty-bom
) from4.1.70.Final
to4.1.72.Final
- Update Plexus Component Annotations (
org.codehaus.plexus:plexus-component-annotations
) from2.1.0
to2.1.1
- Update Reactor Core (
io.projectreactor:reactor-core
) from3.4.12
to3.4.13
- Update System Lambda (
com.github.stefanbirkner:system-lambda
) from1.2.0
to1.2.1
- Update Wiremock (
com.github.tomakehurst:wiremock-jre8-standalone
) from2.31.0
to2.32.0
- Update Spring Framework (
- Minor version updates:
- SAP dependency updates:
3.60.0 - December 16, 2021
Compatibility Notes
- Add deprecation notice to public methods of service classes in
s4hana-api-odata-onpremise-2020
ands4hana-api-odata-v4-onpremise-2020
. The deprecated API remains functional. We recommend using the latest OData API of your SAP S/4HANA On-Premise release, which can be used with the new dependenciess4hana-api-odata-onpremise
ands4hana-api-odata-v4-onpremise
respectively.
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update Neo JavaEE7 WP API (
com.sap.cloud:neo-javaee7-wp-api
) from1.110.3
to1.111.8
- Update Neo Java Web API (
com.sap.cloud:neo-java-web-api
) from4.14.6
to4.15.7
- Update Neo JavaEE7 WP API (
- Other dependency updates:
- Minor version updates:
- Update JUnit Jupiter (
org.junit.jupiter:junit-jupiter-engine
) and JUnit Vintage (org.junit.vintage:junit-vintage-engine
) from5.8.1
to5.8.2
- Update Bouncycastle (
org.bouncycastle:bcpkix-jdk15on, bcprov-jdk15on
) from1.69
to1.70
- Update JUnit Jupiter (
- Minor version updates:
- SAP dependency updates:
Fixed Issues
- Remove the superfluous WARN log message that appeared whenever a new mTLS HTTP client was built.
3.59.0 - December 02, 2021
Compatibility Notes
- Removed unnecessary dependency
netty-bom
from 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.0
to 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-onpremise
manages classes in packagecom.sap.cloud.sdk.s4hana.onpremise.datamodel.odatav4.services
s4hana-api-odata-onpremise
manages classes in packagecom.sap.cloud.sdk.s4hana.onpremise.datamodel.odata.services
The existing modules
s4hana-api-odata-onpremise-2020
ands4hana-api-odata-v4-onpremise-2020
remain unchanged to reflect the respective (outdated) On-Premise release version. Additional modules with2021
name equivalent are not planned.
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update Neo JavaEE7 WP API (
com.sap.cloud:neo-javaee7-wp-api
) from1.109.7
to1.110.3
- Update Neo Java Web API (
com.sap.cloud:neo-java-web-api
) from4.13.8
to4.14.6
- Update Neo JavaEE7 WP API (
- Other dependency updates:
- Minor version updates:
- Update Logback Classic (
ch.qos.logback:logback-classic
) from1.2.6
to1.2.7
. - Update Mockito (
org.mockito:mockito-core
) from4.0.0
to4.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
oneOf
oranyOf
in either:- The
paths
part of the specification - As an additional property or nested inside a property under a
Schema
listed 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.services
andcom.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-2020
ands4hana-api-odata-v4-onpremise-2020
. This significantly reduces startup times and memory consumption for TomEE applications that are missing their ownbeans.xml
configuration. For consistency the beans scanning ofs4hana-api-odata-v4
is enabled now but also limited to service classes. -
The
ALWAYS_SUBSCRIBER
strategy of the defaultScpCfDestinationRetrievalStrategy
in theScpCfDestinationLoader
did 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_SUBSCRIBER
toCURRENT_TENANT
and making it a new default strategy. - Deprecation the confusingly named
ALWAYS_SUBSCRIBER
strategy - Adding a new
ONLY_SUBSCRIBER
strategy 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.5
to1.109.7
- Update Neo Java Web API (
com.sap.cloud:neo-java-web-api
) from4.12.2
to4.13.8
- Update Neo JavaEE7 WP API (
- Other dependency updates:
- Minor version updates:
- Update Gson (
com.google.code.gson:gson
) from2.8.8
to2.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.5
to1.108.5
- Update Neo Java Web API (
com.sap.cloud:neo-java-web-api
) from4.11.4
to4.12.2
- Update CDS4J Maven Plugin (
com.sap.cds:cds4j-maven-plugin
) from1.16.0
to1.23.0
- Update JPaaS Security Utils (
com.sap.core.jpaas.security:com.sap.core.jpaas.security.utils
) from1.4.90
to1.4.91
- Update Neo JavaEE7 WP API (
- Other dependency updates:
- Major version updates:
- Update Guava (
com.google.guava:guava, guava-testlib
) from30.1.1-jre
to31.0.1-jre
- Update Guava (
- Minor version updates:
- Update Hibernate Core (
org.hibernate:hibernate-core
) from5.5.7.Final
to5.6.0.Final
- Update JUnit Jupiter (
org.junit.jupiter:junit-jupiter-engine
) and JUnit Vintage (org.junit.vintage:junit-vintage-engine
) from5.7.2
to5.8.1
- Update Netty (
io.netty:netty-bom
) from4.1.67.Final
to4.1.69.Final
- Update Protobuf (
com.google.protobuf:protobuf-java
) from3.18.1
to3.19.0
- Update Reactor Core (
io.projectreactor:reactor-core
) from3.4.10
to3.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.Final
by 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
SecretRootKey
service 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
OAuth2Service
instead of dedicated classXsuaaService
. -
To increase compatibility, the OData V2
count()
operation on our OData V2 typed client (VDM) now ignores query options other than$filter
and user-defined query options which are not relevant for the count operation. -
Dependency Updates:
- SAP dependency updates:
- Update
com.sap.cloud:neo-java-web-api
from4.9.4
to4.11.4
- Update
com.sap.cloud:neo-javaee7-wp-api
from1.105.7
to1.107.5
- Update
- Other dependency updates:
- Major version updates:
- Update
org.mockito:mockito-core
from3.12.4
to4.0.0
- Update
- Minor version updates:
- Update
org.projectlombok:lombok
from1.8.20
to1.8.22
- Update
com.fasterxml.jackson:jackson-bom
from2.12.5
to2.13.0
- Update
io.swagger:swagger-annotations
from1.6.2
to1.6.3
- Update
joda-time:joda-time
from2.10.10
to2.10.12
- Update
net.sourceforge.pmd:pmd-core, pmd-java, pmd-test
from6.38.0
to6.39.0
- Update
com.squareup.okhttp3:okhttp, mockwebserver
and from4.9.1
to4.9.2
- Update
org.apache.tomcat:tomcat-annotations-api, tomcat-jdbc
from8.5.71
to8.5.72
- Update
com.google.protobuf:protobuf-java
from3.18.0
to3.18.1
- Update
- Major version updates:
- SAP dependency updates:
Fixed issues
-
We fixed an issue where the
appendDestinationLoader
andprependDestinationLoader
on theDestinationLoader
were not behaving as expected on a givenDestinationLoaderChain
.TheDestinationLoaderChain
s 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
HttpClient
s were not cached correctly on SAP BTP Neo. With this fix the caching should now behave as expected, minimizing the number of concurrentHttpClient
instances 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
ServiceBindingLoader
interface.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
EnvironmentVariableServiceBindingLoader
is capable of parsing environment variables (such as theVCAP_SERVICES
) on SAP BTP Cloud Foundry - The
FileSystemServiceBindingLoader
is capable of parsing service bindings, which are mounted to the file system (for example, when running in a K8s environment). - The
ServiceBindingMerger
is capable of combining the results of an arbitrary amount of otherServiceBindingLoader
instances based on a configurable service binding property (e.g. thename
of 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
ScpCfCloudPlatform
class is loading service bindings to use the newly introducedServiceBindingLoader
API. It allows to seamlessly load service bindings from a file system in K8s-based environments like SAP Gardener.We search and load the
Service bindings
with the following priority, highest to lowest:- From the file system, as provided by the SAP Service Operator K8s service with the
SecretKey
layout - From the file system, as provided by the SAP Service Operator K8s service with the
Data
(default) layout - From the
VCAP_SERVICES
environment 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.5
to2.11.0
- Update XSUAA Token Client and Token Flow API from
- Other dependency updates:
- Major version updates:
- Update
org.togglz:togglz-core
from2.9.9
to3.0.0
- Update
- Minor version updates:
- Update
ch.qos.logback:logback-classic
from1.2.5
to1.2.6
- Update
com.auth0:java-jwt
from3.18.1
to3.18.2
- Update
org.springframework:spring-framework-bom
from5.3.9
to5.3.10
- Update
org.jooq:jooq
from3.14.12
to3.14.15
- Update
io.projectreactor:reactor-core
from3.4.9
to3.4.10
- Update
org.apache.tomcat:tomcat-annotations-api,tomcat-jdbc
from8.5.69
to8.5.71
- Update
com.google.protobuf:protobuf-java
from3.17.3
to3.18.0
- Update
- Major version updates:
- SAP dependency updates:
Fixed issues
- Fix
SapPassportAccessor.getPassportForNextRequest()
to no longer throw an exception if either the currentThreadContext
is 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.Final
release 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_SERVICES
environment 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-logback
from3.5.1
to3.5.2
- Update
com.sap.cloud:neo-javaee7-wp-api
from1.103.10
to1.105.7
- Update
com.sap.cloud:neo-java-web-api
from4.7.9
to4.9.4
- Update
- Other dependency updates:
- Minor version updates:
- Update
org.hyperledger.fabric-sdk-java:fabric-sdk-java
from2.2.7
to2.2.8
- Update
com.fasterxml.jackson:jackson-bom
from2.12.4
to2.12.5
- Update
org.mockito:mockito-core
from3.12.3
to3.12.4
- Update
net.sourceforge.pmd:pmd-core
from6.37.0
to6.38.0
- Update
org.twdata.maven:mojo-executor
from2.3.1
to2.3.2
- Update
org.xerial:sqlite-jdbc
from3.36.0.1
to3.36.0.3
- Update
com.rabbitmq:aqmp-client
from5.13.0
to5.13.1
- Update
org.hibernate:hibernate-core
from5.5.6
to5.5.7.Final
- Update
org.codehaus.plexus:plexus-utils
from3.4.0
to3.4.1
- Update
io.netty:netty-bom
from4.1.66.Final
to4.1.67.Final
- Update
jakarta.activation:jakarta.activation-api
from2.0.0
to2.0.1
- Update
com.github.tomakehurst:wiremock-jre8-standalone
from2.30.1
to2.31.0
- Update
- Minor version updates:
- SAP dependency updates:
3.53.0 - September, 13, 2021
Compatibility Notes
- The Java HTML parser
jsoup
is 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
null
comparison 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
authentication
property 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 theAuthorization
HTTP 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
headers
to adestination
using theproperty
method so that they will always be included when calling the target system. Here's an example of theproperty
method 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
property
method:.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
-
HttpClientFactory
is now a@FunctionalInterface
. This let's you conveniently construct an instance of theHttpClientFactory
using 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.5
to4.7.9
- Update XSUAA Token Client and Token Flow API from
2.10.3
to2.10.5
- Update Neo JavaEE 7 SDK from
1.102.5
to1.103.10
- Update BTP Neo Tomcat 8 SDK from
- Other dependency updates:
- Minor version updates:
- Update Spring from
5.3.8
to5.3.9
- Update GSON from
2.8.7
to2.8.8
- Update Togglz from
2.9.8
to2.9.9
- Update Mockito from
3.11.2
to3.12.3
- Update Spring Security from
5.5.1
to5.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
jsoup
is 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
WARN
messages 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.3
to4.6.5
- Update XSUAA Token Client and Token Flow API from
2.10.2
to2.10.3
- Update Neo JavaEE 7 SDK from
1.101.4
to1.102.5
- Update Error Prone from
2.8.0
to2.8.1
- Update PMD from
6.36.0
to6.37.0
- Update Wiremock from
2.29.1
to2.30.0
- Update ASM from
9.0
to9.2
- Update Spring from
5.3.8
to5.3.9
- Update Spring Boot from
2.5.0
to2.5.3
- Update Commons CSV from
1.8
to1.9.0
- Update Hibernate Core from
5.5.4.Final
to5.5.6
- Update Logback from
1.2.3
to1.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 theCreate
operation was removed. No existing functionality is affected because this operation has never been supported by SAP S/4HANA. SAP__Message
class was updated in a breaking manner. ItsnumericSeverity
property was changed fromShort
toInteger
. 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.services
Find 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_0001
We 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-cf
was 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.7
to1.101.4
- Update BTP Neo Tomcat 8 SDK from
4.2.4
to4.5.3
- Update BTP CF Logging from
3.5.0
to3.5.1
- Update SLF4J from
1.7.31
to1.7.32
- Update AssertJ Vavr from
0.4.1
to0.4.2
- Update Commons IO from
2.10.0
to2.11.0
- Update Vavr from
0.10.3
to0.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.1
changed 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.1
or later on their development machines.
Compatibility Notes
- Mitigate CVE-2021-35515 by update to secure version of
org.apache.commons:commons-compress
in 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
CacheFilter
instance 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 leverageCacheFilter
in 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.0
to3.5.0
- Update XSUAA Token Client and Token Flow API from
2.9.0
to2.10.2
- Update BTP CF Logging from
- Other dependency updates:
- Minor version updates:
- Update Java JWT from
3.17.0
to3.18.1
- Update Jackson from
2.12.3
to2.12.4
- Update Spring from
5.3.7
to5.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:cxf
uses the Apache CXF dependencies of version3.3.10
which 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.8
to1.100.7
- Update BTP Neo Tomcat 8 SDK from
4.1.9
to4.2.4
- Update SAP CP Spring XSUAA Security Library from
2.8.10
to2.9.0
- Update Neo JavaEE 7 SDK from
- Other dependency updates:
- Major version updates:
- Update transitive asm dependency from
7.0
to9.0
- Update transitive asm dependency from
- Minor version updates:
- Update Slf4j from
1.7.30
to1.7.31
- Update Caffeine from
2.9.1
to2.9.2
- Update Java JWT from
3.16.0
to3.17.0
- Update Resilience4j from
1.7.0
to1.7.1
- Update Mockito from
3.11.1
to3.11.2
- Update Fabric SDK from
2.2.6
to2.2.7
- Update Spring from
5.3.5
to5.3.7
- Update Spring Boot from
2.4.4
to2.5.0
- Update Spring security from
5.4.5
to5.5.1
- Update Eclipse Link from
2.7.8
to2.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-analytics
uses the dependencyorg.jdom:jdom:2.0.6
which 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
NamingStrategy
interface.Hereby, we changed the following interfaces and classes in an incompatible way:
- The
NamingStrategy
interface has been redesigned entirely, leading to compilation errors for existing implementations. - The
DefaultNamingStrategy
has been renamed toS4HanaNamingStrategy
. It stays the default value for the generator, though. - The
DefaultNamingStrategy.NameSource
enumeration 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.utility
package:NameSource
NamingStrategy
AbstractNamingStrategy
S4HanaNamingStrategy
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
ScpCfDestinationLoader
always 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
ScpCfDestinationTokenExchangeStrategy
allows 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 immediately
DestinationOptions 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.11
to1.98.8
- Update Neo JavaEE 7 SDK from
- Other dependency updates:
- Minor version updates:
- Update Caffeine from
2.9.0
to2.9.1
- Update Commons IO from
2.9.0
to2.10.0
- Update Eclipse Link from
2.7.7
to2.7.8
- Update Mockito from
3.10.0
to3.11.1
- Update Protobuf from
3.17.1
to3.17.3
- Update Bouncycastle from
1.68
to1.69
- Update Wiremock from
2.28.0
to2.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-warning
was activated.
3.47.0 - June 17, 2021
New Functionality
- We introduced the new API
Principal#getAuthorizationsByAudience
which 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.3
to4.1.9
- Update Neo JavaEE 7 SDK from
1.96.13.1
to1.97.11
- Update SAP CP Spring XSUAA Security Library from
2.8.8
to2.8.10
- Update BTP Neo Tomcat 8 SDK from
- Other dependency updates:
- Update Protobuf Java from
3.17.0
to3.17.1
- Update Netty from
4.1.64.Final
to4.1.65.Final
- Update PMD from
6.34.0
to6.35.0
- Update Commons IO from
2.8.0
to2.9.0
- Update Gson from
2.8.6
to2.8.7
- Update Mockito from
3.9.0
to3.10.0
- Update jsonschema2pojo from
1.1.0
to1.1.1
- Update Hibernate Core from
5.4.31.Final
to5.4.32.Final
- Update Jetty from
9.4.39.v20210325
to9.4.41.v20210516
- Update Spring from
5.3.4
to5.3.5
- Update Spring Boot from
2.4.3
to2.4.4
- Update Json Path from
2.5.0
to2.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.Description
annotation 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
IsHappy
defined 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
composable
you 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.services
andcom.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-tomee
andscp-cf-spring
from1024M
to1500M
. This mitigates potential deployment errors due to the latest extensions in the VDM modules. -
Dependency Updates:
- Update Fabric SDK Java from
2.2.5
to2.2.6
- Update JUnit Jupiter from
5.7.1
to5.7.2
- Update Netty from
4.1.63.Final
to4.1.64.Final
- Update Json Sanitizer from
1.2.2
to1.2.3
- Update PMD from
6.33.0
to6.34.0
- Update jOOR from
0.9.13
to0.9.14
- Update Java JWT from
3.15.0
to3.16.0
- Update Error Prone from
2.6.0
to2.7.1
- Update AMQP Client from
5.11.0
to5.12.0
- Update Reactor from
3.4.5
to3.4.6
- Update Wiremock from
2.27.2
to2.28.0
- Update Protobuf from
3.15.8
to3.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
in
operator in expressions.StructuredQuery query;
// Age in (40,41,42)
query.filter(FieldReference.of("Age").in( 40,41,42 ));
// BestFriend in Friends
query.filter(FieldReference.of("BestFriend").in( FieldReference.of("Friends").asCollection()) );
// 'Green' in Colors
query.filter(ValueString.literal("Green").in( FieldReference.of("Colors").asCollection()) ); -
For the OData V4 Typed Client filterable fields can now use the
in
operator in expressions.GetAllRequestBuilder<Person> request;
// Age in (40,41,42)
request.filter(Person.AGE.in(40,41,42));
// BestFriend in Friends
query.filter(Person.TO_BEST_FRIEND.in( Person.TO_FRIENDS ) ); -
Add new module
btp-business-rules
for out-of-the-box support of- the SAP Business Rules Authoring service,
// requires dependency com.sap.cloud.sdk.services:btp-business-rules
HttpDestination 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-rules
HttpDestination 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.services
andcom.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.2
to3.127.13.3
- Update Neo JavaEE 7 SDK from
1.95.7
to1.96.13.1
- Update BTP CF Logging from
3.3.0
to3.4.0
- Update BTP Neo Tomcat 8 SDK from
- Other dependency updates:
- Minor version updates:
- Update JSON Smart from
2.4.2
to2.4.7
- Update Togglz from
2.9.6
to2.9.8
- Update Fabric Gateway Java from
2.2.1
to2.2.2
- Update jOOQ from
3.14.8
to3.14.9
- Update Hibernate Core from
5.4.39.Final
to5.4.40.Final
- Update JSON Smart from
- Minor version updates:
- SAP dependency updates:
Fixed issues
- Using
null
in OData v2 filter expressions does no longer lead to aNullPointerException
when executing the request. - Fix an edge case where some
BigDecimal
values where not serialized correctly in OData V2 requests.
3.44.1 - May 6, 2021
Compatibility Notes
- The OpenAPI Generator no longer adds the prefix
src/main/java
to the output directory. Thus, you need to explicitly add this part to the output directory if you need it.
New Functionality
- We enhanced the SAP BTP Workflow API client library to reflect the latest state of this SAP BTP service.
- We introduced a new CLI wrapper for the OpenAPI generator that can be used without having to set up a Maven project.
Improvements
- Dependency Updates:
- Minor version updates:
- Update Reactor from
3.4.4
to3.4.5
- Update Protobuf Java from
3.15.7
to3.15.8
- Update PMD from
6.32.0
to6.33.0
- Update JPaaS Security Utils for Neo from
1.4.89
to1.4.90
- Update Jackson from
2.12.2
to2.12.3
- Update Reactor from
- Minor version updates:
Fixed issues
- The OpenAPI Generator no longer adds the prefix
src/main/java
unexpectedly to the output directory. - The OpenAPI Generator generates the equals method for model classes now with an argument annotated as
@Nullable
. - We fixed an issue where the user JWT token was not sent to destinations that use the SAMLAssertion authentication method.
- For HTTP destinations with the authentication type OAuth SAML Bearer Assertion Flow the destination key store is no longer used for the TLS handshake.
3.43.0 - April 22, 2021
New Functionality
-
We added a new API for creating OData v2 Changesets in Batch requests that mimics the existing OData V4 API. As a natural outcome, this new API also supports custom headers on a per-request basis.
Example usage:
// define modification requests including custom headers per request
MyEntityCreate createRequest = new MyEntityCreate(myNewEntityInstance).withHeader("custom-header", "value");
MyEntityUpdate updateRequest = new MyEntityUpdate(myUpdatedEntityInstance).withHeader("another-custom-header", "another value");
// assemble batch request by adding both modifications into a single changeset
MyEntityBatch batchRequest = new MyEntityBatch().addChangeSet(createRequest, updateRequest);
// execute the batch request
BatchResponse response = batchRequest.executeRequest(myDestination);
Improvements
- Dependency Updates:
- Minor version updates:
- Update Netty from
4.1.60.Final
to4.1.63.Final
- Update Lombok from
1.18.18
to1.18.20
- Update Jetty from
9.4.38.v20210224
to9.4.39.v20210325
- Update Bouncycastle from
1.64
to1.68
- Update Error Prone from
2.5.1
to2.6.0
- Update Java JWT from
3.14.0
to3.15.0
- Update Protobuf from
3.15.6
to3.15.7
- Update Apache CXF from
3.3.8
to3.3.10
- Update Mockito from
3.8.0
to3.9.0
- Update Netty from
- Minor version updates:
3.42.0 - April 8, 2021
New Functionality
-
We improved OData v4 update requests that use the PATCH HTTP method. Now they allow adding complex properties without the need to use setters for each value inside the complex property. You can use the builder pattern or the constructor to propagate the property values.
Before:
Entity entity;
ComplexProperty property = new ComplexProperty();
property.setValue("Foo");
entity.setComplexProperty(property);Now:
Entity entity;
entity.setComplexProperty(new ComplexProperty("Foo"));Transitive changes inside a complex property will automatically be detected.
-
The OData v2 generator is able to maintain argument order in function imports and get-by-key fluent helpers over successive generations, even when the originating specification changes parameter order. This is now a default behavior. It can be disabled by adding the flag to the plugin configuration:
<keepExistingSignatures>false</keepExistingSignatures>
-
We updated the OData v2 type-safe client (VDM) for the services that couldn't be generated because of the parameters re-ordering issue mentioned above. Now you can use them as any other service. Find the list below:
- Purchase Requisition - API_PURCHASEREQ_PROCESS_SRV
- Production Order Confirmation - API_PROD_ORDER_CONFIRMATION_2_SRV
- Process Order Confirmation - API_PROC_ORDER_CONFIRMATION_2_SRV
- Attachments - API_CV_ATTACHMENT_SRV
The collection of released SAP S/4HANA Cloud client libraries from the SAP Cloud SDK is now consistent with the set of OData services that you can find in the SAP Business Accelerator Hub for SAP S/4HANA Cloud.
Improvements
-
We enabled the OpenAPI generator to consider the vendor extension field
x-sap-cloud-sdk-api-name
in an OpenAPI specification on the operation, path, or on the root level. -
We enabled the OpenAPI generator to remove the suffix
api
(regardless of the case) from the extension field value ofx-sap-cloud-sdk-api-name
, if present. -
Dependency Updates:
- SAP dependency updates:
- Update SCP Neo Java TomEE7 API from
1.93.10.2
to1.94.8
- Update SCP Neo Java TomEE7 API from
- Other dependency updates:
- Minor version updates:
- Update Reactor from
3.4.3
to3.4.4
- Update Protobuf from
3.15.1
to3.15.6
- Update JooQ from
3.14.7
to3.14.8
- Update PMD from
6.31.0
to6.32.0
- Update Hibernate Core from
5.4.28.Final
to5.4.30.Final
- Update Guava from
30.1-jre
to30.1.1-jre
- Update Togglz from
2.8.0
to2.9.6
- Update Reactor from
- Minor version updates:
- SAP dependency updates:
3.41.0 - March 25, 2021
New Functionality
-
We added a convenience method to configure the proxy authorizations when building a custom
DefaultHttpDestination
. The.proxyAuthorization("value")
will sendvalue
within theProxy-Authorization
header, unless that header is already set. -
The OpenAPI generator now supports the vendor extension field
x-sap-cloud-sdk-api-name
in an OpenAPI specification. By default, the OpenAPI generator uses thetag
of an operation to determine the Java service class name. In case you're not happy with the name generated from thetag
field, and changing it is not possible, you can addx-sap-cloud-sdk-api-name
vendor extension to theoperation
section of the specification. This vendor extension will be used by the generator to derive the Java service class name. -
Enable OData requests to skip the CSRF token retrieval if the server does not require it. Use the method
withoutCsrfToken()
to disable the CSRF token retrieval. -
We provided experimental support for OData v2 read requests as items in a Batch request. The API is unified and similar to the OData v4 Batch request:
BusinessPartnerService service = new DefaultBusinessPartnerService();
BusinessPartnerFluentHelper readOperationAll = service.getAllBusinessPartner().top(10);
BusinessPartnerByKeyFluentHelper readOperationByKey = service.getBusinessPartnerByKey("bupa9000");
BatchResponse response = service.batch()
.addReadOperations(readOperationAll)
.addReadOperations(readOperationByKey)
.executeRequest(destination);
List<BusinessPartner> entities = response.getReadResult(readOperationAll);
BusinessPartner entity = response.getReadResult(readOperationByKey);
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update SCP Neo Java Tomcat API from
3.123.6.2
to3.124.9.2
- Update SCP Neo Java TomEE7 API from
1.92.6.2
to1.93.10.2
- Update SAP CP Spring XSUAA Security Library from
2.8.4
to2.8.7
- Update SCP Neo Java Tomcat API from
- Other dependency updates:
- Minor version updates:
- Update Spring from
5.3.3
to5.3.4
- Update Spring Security from
5.4.2
to5.4.5
- Update Jetty BOM from
9.4.36.v20210114
to9.4.38.v20210224
- Update Woodstox Core from
5.0.3
to5.3.0
- Update Netty from
4.1.59.Final
to4.1.60.Final
- Update Java JWT from
3.13.0
to3.14.0
- Update Jackson from
2.12.1
to2.12.2
- Update Apache Commons Lang from version
3.11
to3.12.0
- Update JSON from version
20201115
to20210307
- Update Jackson from version
2.12.1
to2.12.2
- Update Spring from
- Minor version updates:
- SAP dependency updates:
- The OData type-safe client (VDM) for OData V4 services of newest release 2102 of SAP S/4HANA Cloud and FPS1 of SAP S/4HANA On-Premise 2020 now also supports static fields for accessible properties on
VdmComplex
types.
Fixed issues
-
We fixed an issue with OData V2 read requests where an error message was incorrectly written to the log when using filters. The error messages are no longer logged unless it is applicable:
Registered custom filter expression cannot be used when performing the OData V2 request with toRequest() or executeRequest().
Registered custom filter expression cannot be used when performing the OData V2 request with execute().
-
Fix an issue with OData response handling where deserialization of one-to-many properties failed for primitive and complex data types.
3.40.0 - March 18, 2021
Known issues
- Update requests via PATCH in OData V4 will not contain any changes to complex properties of an entity. This is a feature gap we plan to solve in the upcoming release.
Compatibility Notes
- The general availability of the OpenAPI generator brings the following renamings:
- The following dependencies in the Maven Group ID
com.sap.cloud.sdk.datamodel
have been renamed:- Rename dependency
rest-core
toopenapi-core
- Rename dependency
rest-generator
toopenapi-generator
- Rename dependency
rest-generator-maven-plugin
toopenapi-generator-maven-plugin
- Rename dependency
- The Maven Plugin has been renamed from
rest-generator-maven-plugin
toopenapi-generator-maven-plugin
- The following dependencies in the Maven Group ID
New Functionality
-
The OData v4 type-safe client (VDM) generator now generates static fields for accessible properties on
VdmComplex
types, which can be used exactly like their counterparts onVdmEntity
when building OData queries. -
You can clear the cache for remote functions with the new experimental APIs
RemoteFunctionCache.clearCache(Destination)
andRemoteFunctionCache.clearCache(Destination, functionName)
.- Example usages:
final Destination destination = DestinationAccessor.getDestination(destinationName);
try {
RemoteFunctionCache.clearCache(destination);
}
catch( final RemoteFunctionException e ) {
//deal with exception
}final Destination destination = DestinationAccessor.getDestination(destinationName);
try {
RemoteFunctionCache.clearCache(destination, "BAPI_GET_COSTCENTER");
}
catch( final RemoteFunctionException e ) {
//deal with exception
}
Improvements
- Dependency Updates:
- SAP dependency updates:
- Update SCP Neo Java Tomcat API from
3.121.8.1
to3.123.6.2
- Update SCP Neo Java TomEE7 API from
1.90.9.1
to1.92.6.2
- Update JPaaS Security Utils for Neo from
1.4.87
to1.4.89
- Update SAP CP Spring XSUAA Security Library from
2.8.3
to2.8.4
- Update SCP Neo Java Tomcat API from
- Other dependency updates:
- Minor version updates:
- Update Mockito from
3.7.7
to3.8.0
- Update Spring from
5.3.2
to5.3.3
- Update Spring Boot from
2.4.1
to2.4.2
- Update AQMP Client from
5.10.0
to5.11.0
- Update Protobuf java from
3.14.0
to3.15.1
- Update Mockito from
- Minor version updates:
- SAP dependency updates:
3.39.0 - February 25, 2021
Compatibility Notes
As part of the update of the pregenerated type-safe client for SAP S/4HANA On-premise, we encountered the following changes:
-
The following methods of the OData v4 service
ContractAccountingBusinessPartnerPaymentService
have been renamed:getAllBusPartPaymentParameters
has been renamed togetAllBusPartPayment
countBusPartPaymentParameters
has been renamed tocountBusPartPayment
getBusPartPaymentParametersByKey
has been renamed togetBusPartPaymentByKey
getAllBusPartPaymentItemParameters
has been renamed togetAllBusPartPaymentItem
countBusPartPaymentItemParameters
has been renamed tocountBusPartPaymentItem
getBusPartPaymentItemParametersByKey
has been renamed togetBusPartPaymentItemByKey
-
The following classes of the OData v4 VDM have been renamed:
ProtocolQueryReadSingle
has been renamed toProtocolQueryRead
StructuredPropertyCollection
has been renamed toNavigationPropertyCollection
StructuredPropertyCollectionQuery
has been renamed toNavigationPropertyCollectionQuery
StructuredPropertySingleQuery
has been renamed toNavigationPropertySingleQuery
StructuredPropertySingle
has been replaced by either theNavigationProperty<Single/Collection>Query
or the newly introducedComplexPropertyQuery
-
The type-safe client (VDM) classes for
TimeDependentStockLevelService
have been removed as the SAP S/4HANA On-Premise OData service does not exist in releases 2020 FPS0 or FPS1. -
With SAP S/4HANA On-Premise release 2020 FPS1, in the type-safe client (VDM) class for
VehicleManagementSystemForVehicleService
thegetVMSVehicleIncomingInvoiceByKey
method now takes only two parameters (vMSVehicleUUID
andvMSVehicleActionDateTime
) as input as opposed to three before (vMSVehicleUUID
,vMSVehicleActionDateTime
andvMSVehicleActionDocType
).
New Functionality
-
The type-safe OData client (VDM) is updated to the latest release (FPS1) of SAP S/4HANA On-Premise 2020. This also includes completely new services added to the pre-existing
com.sap.cloud.sdk.s4hana.onpremise.v2020.datamodel.odata.services
andcom.sap.cloud.sdk.s4hana.onpremise.v2020.datamodel.odatav4.services
packages. -
In the OData v2 and v4 type-safe client (VDM) generators we now support generating service methods for multiple entity sets belonging to the same entity type. Formerly only the first entity set of an entity type was regarded.
To ensure backward compatibility this feature is turned off by default.
To activate the new functionality, supply the feature flag explicitly.
Generator Maven Plugin Configuration:
`<serviceMethodsPerEntitySet>true</serviceMethodsPerEntitySet>`
Generator CLI Flag:
`--service-methods-per-entity-set` -
The OpenAPI Generator now allows for customizing the method names on generated API classes. Use the vendor extension
x-sap-cloud-sdk-operation-name
to specify a name on an operation:/operation/path:
get:
summary: My Operation.
x-sap-cloud-sdk-operation-name: performMyOperation
operationId: myOperationThis field is optional and the generator will fall back to using the
operationId
if vendor extensions are not present. -
The OpenAPI Generator now allows for setting a custom copyright header. Use the option
<copyrightHeader>
to set a custom header, or set the flag<sapCopyrightHeader>
to have an SAP copyright header added. By default, no header is generated.
Improvements
-
The OData v2 type-safe client (VDM) classes and generator now support
null
as parameter values for function import methods when applicable. For visibility the respective annotations on arguments are provided, i.e.@Nullable
and@Nonnull
. -
The OData v4 VDM now better reflect which operations are allowed on complex properties. Operations that are not applicable to complex properties like
top(int)
andskip(int)
are no longer available. This causes some existing classes to be renamed/removed (see Compatibility Notes) -
Dependency Updates:
- Update JUnit Jupiter from
5.7.0
to5.7.1
- Update Joda-Time from
2.10.9
to2.10.10
- Update Netty from
4.1.58
to4.1.59.Final
to overcome security vulnerability CVE-2021-21290 - Update Hibernate Core from
5.4.27.Final
to5.4.28.Final
- Update jOOQ from
3.4.16
to3.4.17
- Update Reactor from
3.4.2
to3.4.3
- Update OkHttp from
4.9.0
to4.9.1
- Update Java JWT from
3.12.1
to3.13.0
- Update JUnit from
4.13.1
to4.13.2
- Update Caffeine from
2.8.8
to2.9.0
- Update JUnit Jupiter from
Fixed issues
- We fixed an issue where selecting complex properties in the OData V4 VDM would lead to an incorrect HTTP query.
- We fixed an issue where very long RFC function names (>= 30 characters) would lead to an incorrect
SOAPAction
header.
3.38.0 - February 11, 2021
Compatibility Notes
-
The method
getHeaders(DestinationProperties)
of extension APIDestinationHeaderProvider
is deprecated but still functional. Please implementgetHeaders(DestinationRequestContext)
instead. The new argument allows accessing the request specificURI
as well as the originalDestinationProperties
. -
The method
ResilienceDecorator#invalidateCache
is deprecated but still functional. Please useResilienceDecorator#clearCache
for tenant aware cache invalidation orResilienceDecorator#clearAllCacheEntries
to clear all entries for all tenants and principals. -
As part of the update of the OData VDM to SAP S/4HANA Cloud 2102 a few operations were removed. The operations were never supported by the SAP S/4HANA system (like CRUD support for some entities), so no existing functionality is affected. The following services are affected:
-
Nota Fiscal – Create, Update -
API_LOGBR_NOTAFISCAL_SRV
-
Purchase Contracts -
API_PURCHASECONTRACT_PROCESS_SRV
-
Outbound Delivery (A2X) -
API_OUTBOUND_DELIVERY_SRV_0002
-
New Functionality
-
We introduced a new API on table parameters of
BapiRequest
. When a table uses a domain-type as row-type there are no field names to refer to. But such a table can be treated as a one-dimensional vector of primitive values, e.g.:new BapiRequest("BAPI_DEMO", true)
.withExportingTable("DEMO_TABLE", "BAPI_DEMO_TAB01")
.asVector()
.row("CC01")
.row("CC02")
.row("CC03")
.end(); -
We now support the
SAMLAssertion
authentication type on Cloud Foundry. Refer to the help page for more detail on theSAMLAssertion
authentication type. -
We introduced a new API to build a
Destination
for connecting to services on Cloud Foundry. The information will be read from theVCAP_SERVICES
environment variable at runtime. For certain authentication types i.e.NoAuthentication
andOAuth2ClientCredentials
this API eliminates the need to manually create a destination in the CF account for connecting to services.Example:
final Map<String, String> mapping =
ScpCfServiceDestinationLoader.buildClientCredentialsMapping(
"credentials.endpoints.service_rest_url",
"credentials.uaa.clientid",
"credentials.uaa.clientsecret",
"credentials.endpoints.token_url");ScpCfServiceDestinationLoader.buildClientCredentialsMapping
creates a mapping for loading a destination and provides JSON paths for all required destination properties.final HttpDestination destination =
ScpCfServiceDestinationLoader.getDestinationForService(
"label",
"serviceBindingName",
AuthenticationType.OAUTH2_CLIENT_CREDENTIALS,
mapping);For certain services (only workflow for now), we provide further convenience that skips the need to provide the
mapping
explicitly. Example:final HttpDestination destination =
ScpCfServiceDestinationLoader.getDestinationForService(
ScpCfServiceDestinationLoader.CfServices.WORKFLOW,
"my-workflow"); -
We introduced a new API to construct a
ScpCfDestinationLoader
that allows overriding the default timeout for the Time Limiter resilience pattern. If not specified, requests will automatically timeout after 6 seconds. -
We added support for recursive tables and structures in parameters of
BapiRequest
API for both protocols: JCo and SOAP. Example:final BapiRequest bapiReqauest = new BapiRequest("DEMO_BAPI")
.withExportingTable("TABLE_PARAMETER1","ABC_T_PARAM1" )
.row()
.field("ROW_UUID","STRING","foobar")
//Start nested table
+ .table("TABLE_NESTED1","ABC_T_NESTED1")
+ .row()
+ .field("NESTED_FIELD1","STRING","john")
+ .field("NESTED_FIELD2","STRING","doe")
+ .end() // End nested table
// START nested structure
.fields("NESTED_STRUCTURE", "NESTED_STRUCTURE_TYPE")
.field("latitude", "Axis", "52")
.field("longitude", "Axis", "13")
.end() // End nested structure
.end(); -
We updated the OData type-safe client also known as a VDM to the newest release 2102 of SAP S/4HANA Cloud. This includes completely new services (available as usual in packages
com.sap.cloud.sdk.s4hana.datamodel.odata.services
andcom.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) Purchase Requisition -
API_PURCHASEREQ_PROCESS_SRV
- (OData V2) Production Order Confirmation -
API_PROD_ORDER_CONFIRMATION_2_SRV
- (OData V2) Process Order Confirmation -
API_PROC_ORDER_CONFIRMATION_2_SRV
- (OData V2) Attachments -
API_CV_ATTACHMENT_SRV
- (OData V4) Contract Accounting: Invoices of Business Partner -
API_CABUSPARTINVOICE_0001
- (OData V2) Purchase Requisition -
Improvements
-
ResilienceDecorator.clearCache(ResilienceConfiguration)
does now also respect parameters defined in theResilienceConfiguration.CacheConfiguration
when selecting cache entries to clear. -
Dependency Updates:
- SAP dependency updates:
- Update SAP CP Spring XSUAA Security Library from
2.8.0
to2.8.3
- Update SAP CP Spring XSUAA Security Library from
- Other dependency updates:
- Minor version updates:
- Update Spring from
5.2.10.RELEASE
to5.3.2
- Update Spring Security from
5.3.5.RELEASE
to5.4.2
- Update Mockito from
3.7.0
to3.7.7
- Update AssertJ from
3.18.1
to3.19.0
- Update Fabric SDK for Java from
2.2.4
to2.2.5
- Update Resilience4J from
1.6.1
to1.7.0
- Update Java JWT Java from
3.12.0
to3.12.1
- Update PMD from
6.30.0
to6.31.0
- Update Lombok from
1.18.16
to1.18.18
- Update Jetty from
9.4.35.v20201120
to9.4.36.v20210114
- Update Spring from
- Minor version updates:
- SAP dependency updates:
Fixed Issues
- We fixed an issue with OData V4 update requests where the serialization of primitives with types like Integer, Boolean, and Double leads to null values.
- We fixed an issue with the JCo serialization of BAPI requests, where adding field parameter values of type
ErpType
led to an exception.
3.37.0 - January 28, 2021
Compatibility Notes
- We deprecated the constructor
UncheckedFilterExpression(FilterExpression)
. It can still be used for OData V2 type-safe client (VDM) read requests that are executed with the deprecatedexecute(...)
method. However, we strongly encourage you to migrate toexecuteRequest(...)
. Unchecked filter expressions can be instantiated with recommended constructorUncheckedFilterExpression(ValueBoolean)
. - We deprecated the class
com.sap.cloud.sdk.s4hana.connectivity.RequestBody
as it has no usage. - For SAP BTP Cloud Foundry, instances of
DestinationHeaderProvider
will be called for every HTTP request as of now. Earlier versions invoked the API only once during destination construction.
New Functionality
-
OData V2 helper class
UncheckedFilterExpression
can be instantiated for generic instances ofValueBoolean
. Example:BusinessPartnerService service;
HttpDestination destination;
ValueBoolean customExpression = FieldReference.of("ShoeSize").equalTo(42);
List<BusinessPartner> items = service
.getAllBusinessPartner()
.filter( new UncheckedFilterExpression<>(customExpression) )
.executeRequest(destination); -
The
DefaultHttpDestination
now allows for registering aDestinationHeaderProvider
to enrich outgoing HTTP requests with headers. It can be used as follows:DefaultHttpDestination
.builder(uri)
.headerProviders(new CustomHeaderProvider(), new AnotherCustomHeaderProvider())
.build();
Improvements
-
OData requests are now allowed to contain null values within entity keys and function parameters as per the OData specification. Previously an exception would be thrown in these cases.
-
Removed Swagger annotations
ApiModel
andApiModelProperty
from classes generated by the OpenAPI client generator- Swagger annotations dependency (
io.swagger.swagger-annotations
) can now safely be removed from the project'spom.xml
- Swagger annotations dependency (
-
The Workflow API client library in module
scp-workflow-cf
got enhanced to reflect the latest Workflow API features. -
Dependency Updates:
- SAP dependency updates:
- Update SCP CF Java Logging Support from
3.2.1
to3.3.0
- Update SCP Neo Java Tomcat API from
3.119.9
to3.121.8.1
- Update SCP Neo Java TomEE7 API from
1.88.6
to1.90.9.1
- Update JPaaS Security Utils for Neo from
1.4.86
to1.4.87
- Update SCP CF Java Logging Support from
- Other dependency updates:
- Major version updates: -
- Minor version updates:
- Update Error Prone Annotations from
2.4.0
to2.5.0
- Update Liquibase from
3.8.6
to3.10.3
- Update OWASP Json Sanitizer from
1.2.1
to1.2.2
- Update JsonPath from
2.4.0
to2.5.0
- Update Reactor Core from
3.4.1
to3.4.2
- Update Mockito from
3.6.28
to3.7.0
- Update Jackson from
2.12.0
to2.12.1
- Update Netty BOM from
4.1.56.Final
to4.1.58.Final
- Update Hyperledger Fabric SDK from
2.2.3
to2.2.4
- Update Hibernate from
5.4.26.Final
to5.4.27.Final
- Update Joda time library from
2.10.8
to2.10.9
- Update Apache Olingo OData V4 from
4.7.1
to4.8.0
- Update Error Prone Annotations from
- SAP dependency updates:
3.36.0 - January 14, 2021
Compatibility Notes
-
We removed the following dependencies from the SAP Cloud SDK Bill-of-Material (BOM):
- Netty
- Protobuf
- Spring Security OAuth
- Hibernate Validator
New Functionality
- We introduced support for the String-based filter functions
endsWith
,startsWith
andsubstringOf
in the OData V2 type-safe client (VDM). - Check out our new Feature Matrix. We're actively extending it. Let's us know what you'd like to see there by creating a GitHub issue.
Improvements
-
We replaced the deprecated constant
org.apache.commons.codec.Charsets.UTF_8
in the HelloWorldControllerTest class of the Spring archetype by its recommended successorjava.nio.charset.StandardCharsets.UTF_8
. This resolves a compiler warning. -
We added Maven module
s4hana-api-odata-v4
intos4hana-all
to enable type-safe OData v4 client library (VDM) for SAP S/4HANA Cloud Edition. -
Dependency Updates:
- SAP dependency updates:
- Other dependency updates:
- Major version updates:
- Minor version updates:
- Downgrade Spring dependencies to resolve conflicts with SAP CP Spring XSUAA Security Library
- Change Spring Framework BOM from
5.3.1
to5.2.10.RELEASE
- Change Spring Security BOM from
5.4.2
to5.3.5.RELEASE
- Change Spring Framework BOM from
- Update PMD from
6.29.0
to6.30.0
- Update Caffeine from
2.8.6
to2.8.8
- Update Jackson from
2.11.3
to2.12.0
- Update Reactor from
3.4.0
to3.4.1
- Update Guava from
30.0-jre
to30.1-jre
- Update Hibernate Core from
5.4.25.Final
to5.4.26.Final
- Update Netty BOM from
4.1.49.Final
to4.1.56.Final
- Update Java JWT from
3.11.0
to3.12.0
- Downgrade Spring dependencies to resolve conflicts with SAP CP Spring XSUAA Security Library
Fixed issues
- We fixed incorrect serialization of
date
values for OData V2 requests using thePATCH
request method. - We fixed an issue where OData Batch requests were sending an invalid
Accept
header. - We fixed an issue where the API for OData Batch responses did not conveniently throw or wrap an exception for failing HTTP response code health checks.
Affected methods:
- OData v4 VDM:
getReadResult
ofBatchResult
- OData v2 VDM:
get
ofBatchResponse
- OData Client:
getResult
ofODataRequestResultMultipartGeneric
- OData v4 VDM:
- We removed a log message that incorrectly indicated an error when receiving an OData response without payload.
3.35.0 - December 17, 2020
Known issues
- OData Batch response API is known to not conveniently throw or wrap an exception for failing HTTP response code health checks. This affects the type-safe batch request builders for both v2 and v4 protocol. We're working to fix this in the next release.
Compatibility Notes
- We removed a dependency reference for
JUnit Pioneer
. The last used version was1.0.0