Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
artemkovalov
Active Participant
Welcome to the overview of the SAP Cloud SDK releases from June.


Quick links



SAP Cloud SDK for Java 3.48.0



We Made Naming More Flexible in OData v2 & v4 Generators


To future prove OData generators we had to refactor our naming strategy used to generate Java classes, methods, fields, and alike. This update leads to a few breaking changes which are mostly internal and in most cases wouldn't affect users of our generator maven plugin or CLI.

We changed the following interfaces and classes in an incompatible way:

  • The NamingStrategy interface has been redesigned entirely, leading to compilation errors if the existing implementation is used.

  • The DefaultNamingStrategy has been renamed to S4HanaNamingStrategy. We kept the latter as the default strategy to ensure better compatibility.

  • The DefaultNamingStrategy.NameSource enumeration has been moved to the package rather than being nested inside of a class.


Improved Token Exchange Performance for Destinations with Known Strategy


By default, the ScpCfDestinationLoader always performs an initial lookup request against the destination service to get the authentication type configured in the destination. This guarantees that we perform a user token exchange if it's required to authenticate at the target system. On the flip side, this request will be redundant if we know beforehand the token exchange is required. Having to load such a destination often might lead to a significant performance toll.

By introducing ScpCfDestinationTokenExchangeStrategy we're now able to skip the initial authentication type lookup request when loading a destination on BTP Cloud Foundry and do only the token exchange to boost performance. From the options below you can see that having just an authentication type lookup is also possible.

  • LOOKUP_THEN_EXCHANGE (default)

  • LOOKUP_ONLY

  • EXCHANGE_ONLY


Use this new strategy like this when building your destination
DestinationOptions options =
DestinationOptions
.builder()
.augmentBuilder(
ScpCfDestinationOptionsAugmenter
.augmenter()
.tokenExchangeStrategy(ScpCfDestinationTokenExchangeStrategy.EXCHANGE_ONLY))
.build();

Try<Destination> destination = DestinationAccessor.getLoader().tryGetDestination("MyDestination", options);

There's no such thing as a little performance boost in cloud development. We hope you'll enjoy good use of this performance improvement when required.

Better Handling Of JWT Scopes With The SAP Cloud SDK


Our new API Principal#getAuthorizationsByAudience provides OAuth authorization scope of the principal grouped by the audience.

Let's imagine we have the following three audiences with assigned scopes
[ "a.Display", "b.Change.Things", "c.Ignore" ]

We also have a JWT with the following audience claims
{aud: [a, b]}

If you use our existing Principal#getAuthorization API on an App legible only for the audience "a", you'll get just [Display] scope.

With our new API, you'll receive a full map of JWT scopes. For the case above you'll get the following map:
{a: [Display], b: [Change.Things]}

Such API provided more flexibility when validating the JWT in situations where there could exist feature toggles or other use-cases requiring multiple audiences to be matched with scopes.

How to update?


Navigate to a root folder of your project and find a pom.xml file. Bump the version of com.sap.cloud.sdk dependency to 3.48.0 similar to the XML code snippet below and you're done! Mind, because Maven Central relying on CDN it takes a bit of time for the new maven module to be distributed.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.sap.cloud.sdk</groupId>
<artifactId>sdk-bom</artifactId>
<version>3.48.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
<!-- possibly further managed dependencies ... -->
</dependencyManagement>

If for some reason your IDE hasn't fetched an updated dependency version, run mvn clean install from the command line in the root directory of your project.

SAP Cloud SDK for JavaScript 1.46.0


Quick links

We used June to proved multiple fixes and improvements mentioned in our release notes.

How to update?


To update the version of the SAP Cloud SDK for JavaScript used in an existing project, use the command npm update in the root folder of your module. Note that this will also update other modules unless you explicitly specify which packages to update. If you want to check beforehand what will change, use npm outdated.

Additionally, you can consult NPM for more information on version history and update path.

Feedback


We hope you enjoy developing with SAP Cloud SDK! To help us further improve give your ideas and suggestions in the comments to this blog or create an issue in our GitHub repository.

All the best,

SAP Cloud SDK Team