. . .

Version 19.11

The new November 2019 Release of ApiOmat features the Android SQLite SDK in a stable version, the Supporter Role, handles error responses with standard HTTP codes and a JSON body, offers App-Backend independent crawled JDBC modules and provides attribute encryption within the JavaScript SDK, besides additional changes. See below for further information on these topics.

Note that this is the first version with the changed versioning scheme. As of this version, we will provide larger releases every four months, which will contain a set of the different software parts in different versions. They can be installed over the provided meta packages. The version of these meta packages is oriented on the year and the month where it is released.

The version 19.11 consists of the following new versions:

  • ApiOmat Yambas 3.4.0

  • ApiOmat Dashboard 3.4.0

As well as the already released versions Explorer 1.1.1, Lurker 1.1.0 and Dispatcher 1.0.1

New Features

Android SQLite stable release

Finally the Android SQLite SDK is out of Beta and now more stable than before. Check out the new SDK, modify your code and feel the improvements:

  • stabilized and cleaned the access methods for referenced objects

  • added count functionality for SDK offline mode

  • added access to big offline files via chunking

  • changed method signatures:

    • Removed checked exception from method postMyRefAsync() and removeMyRefAsync()

      • old: postMyRefAsync()/removeMyRefAsync() throws ApiOmatRequestException

      • new: postMyRefAsync()/removeMyRefAsync()

    • Changed signature of method loadMyRef()

      • old: loadMyRef(Class<T> referenceClass, String query)

      • new: loadMyRef(String query, Class<T> referenceClass)

    • Removed signature of method loadMyRef()

      • loadMyRef(Class<T> referenceClass, String query, boolean usePersistentStorage)

New Response Code JSON

As you may know, ApiOmat Yambas provides a lot of custom response codes and messages. With Yambas 3.4.0 those response codes are replaced by standard HTTP codes to comply better with existing infrastructure and tooling. The customized ApiOmat codes and messages are now embedded within the response body as JSON object.

  • You can enable this feature by setting the request header X-apiomat-sdkVersion to 3.4.0 or higher.

  • Choose a lower version or leave out this header to retrieve your reponses from Yambas like before.

Note: The new behavior does not work with the response status code 401 and 407 when using the Android SQLite SDK. To avoid a different behavior the Android SQLite SDK uses as X-apiomat-sdkVersion version '3.3.999-99' instead of '3.4.0.'.

App-backend independent useable crawled JDBC Modules

Since this version, the JDBC Modules can be used independently from the App backend. Due to that, you don't need to re-crawl the database, if you want to change the connection credentials, the database url or use it on another app backend. You can simply configure the connection data as a configuration on your app backend. Additionally, this provides you the possibility to use the crawled module on different app backends and different databases. Therefore, it also reduces the infrastructure costs, as you don't need to crawl a new module for every backend.
Additionally, the meta data and connection information isn't stored in the app backend as data object anymore, which brings you more confidence on your data and improves performance due to less requests to the meta data.

images/download/attachments/65290613/CrawledMySQLModuleConfiguration.png

Nevertheless, the drawback of this great feature is that you need to recrawl any of your already crawled modules. By default, the appName isn't encoded in the module name of the crawled module anymore, so the crawled module will probably have another name than a module which was crawled before. Luckily, if you rely on that name (f.i. due to existing code in modules which use the crawled module), the endpoint for crawling now provides you the opportunity to set a name for the crawled module. So you can set the name to the old one.

Encrypted Attributes for JavaScript SDK

It is now possible to encrypt String attributes on SDK side. The first SDK that implements this feature is the JavaScript SDK.
ApiOmat provides one simple flag to mark any string attribute of your customized classes as encrypted.

The SDK itself will take care about everything so you are able to use the getter and setter methods to access your class attributes like before.
Your benefit: the content of your attributes will be encrypted with AES-256 on the client side and is then only readable with your own secret passphrase.

images/download/attachments/65290613/encrypted_attribute_JS_code_snippet.png

Supporter Role

This release also includes the new supporter role feature which was introduced earlier in Yambas 3.3.1. You can assign customers to be supporters using the SuperAdmin account.
A supporter is basically a customer with a special role that incorporates certain, statically assigned roles for monitoring Yambas itself.

  • For example by selecting the "Support access" flag in the customer creation form as a SuperAdmin:

    images/download/attachments/65290613/SupportCreation.png

  • This new customer can now access the vendor onboarding views with only read access:

    images/download/attachments/65290613/SupportVendor.png

  • With the button in the top right (left besides the logout button) you can switch to the customer dashboard, also with read rights for backends, which belong to others:

    images/download/attachments/65290613/SupportCustomer.png

  • check the Supporter Role for further details


More Technical Improvements

The new version of ApiOmat also includes some technical improvements. Some of them are listed here:

  • Removing a reference will now return an exception if the given reference id doesn't match

  • outdated deprecations were removed like Chatmodul, C#, Xamarin, Backbone, Titanium, IModelHooks (see Deprecations and Migration)

  • new NativeModule method to read the module configuration across the used module hierarchy

  • new NativeModule methods to check whether a MetaModel or -attribute name is valid

  • new NativeModule method to get the url of the discovery service

  • fixes for C# SQLite SDK and Android SQLite SDK

  • all fixes of Yambas 3.3.1 are included (see Version 3.3.1)

Breaking changes

Breaking changes may require changes in configuration, apps, or native module code after an ApiOmat upgrade to ensure system stability.

Affects

Change

NativeModule

Some of the deprecated methods were removed in NativeModule Code.
See Deprecations and Migration for the full list of removed methods.

Chat Module

The static Chat module ran out of deprecation and was removed. Please use the native module GroupChat instead.

old C# SDK,
old Xamarin SDK,
Backbone SDK,
Titanium SDK

The following SDKs ran out of deprecation and were removed from ApiOmat:

  • old C# SDK, old Xamarin SDK, Backbone SDK, Titanium SDK

Please use the following replacements instead: C# SQLite, Xamarin SQLite, Typescript.

Remarkable changes

Remarkable changes do not affect system stability after ApiOmat upgrade, but may require changes in configuration, apps, or modules in the next development cycle.

Affects

Change

REST endpoint for reference deletion

The endpoint to remove a referenced object from a referencing object will now return an error response if the given ID doesn't match the ID of the actual referenced object. Previously this error was only logged, while the response status code was 204 (not indicating an error).

The related methods (e.g. obj.removeMyRef(...)) in the SDKs will now return an exception.

If you use:

  • SDKs: If your code calls one of the methods to remove a reference and the object you pass might not be referenced you should catch and handle the exception

  • NativeModule: Similar to the SDK - handle the exception if your code might lead to it

  • REST endpoint: Change the code from expecting a 204 status code to the new error code.

Android SQLite: removed checked exception and changed signature of methods

  • Removed checked exception from method postMyRefAsync() and removeMyRefAsync()

    • old: postMyRefAsync()/removeMyRefAsync() throws ApiOmatRequestException

    • new: postMyRefAsync()/removeMyRefAsync()

  • Changed signature of method loadMyRef()

    • old: loadMyRef(Class<T> referenceClass, String query)

    • new: loadMyRef(String query, Class<T> referenceClass)

  • Removed signature of method loadMyRef()

    • loadMyRef(Class<T> referenceClass, String query, boolean usePersistentStorage)

All changes in the current and previous versions can be found at the root page.

All deprecations and their removal date can be found at Deprecations and Migration.

Changelog

Schlüssel

Zusammenfassung

S

Lösung

NM-329

Implement LDAPS

images/jira.apiomat.com/secure/viewavatar.png

Fixed

NM-13

[JDBC] Store data in configuration and make crawled modules usable in multiple backends

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

DAS-1988

map entities with empty values are not editable

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

DAS-1973

Supporter role

images/jira.apiomat.com/secure/viewavatar.png

Fixed

AOM-5793

[Android SQLite] createdAt value is 0

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5750

Remove deprecations

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5740

Getting consul url from yambas within native module

images/jira.apiomat.com/secure/viewavatar.png

Fixed

AOM-5730

Error responses with HTTP compliant status codes and JSON body

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5729

Fix versioned Git Module Deployment

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5726

Module can be deleted from Applications if deleteCompletely is false

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5725

Can't initial upload a versioned module with references which has version != 1.0.0

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5716

Provide possibility to check whether a name is a valid model/attribute name

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5707

Improve performance of customer creation

images/jira.apiomat.com/secure/viewavatar.png

Fixed

AOM-5663

Client side attribute encryption in Javascript SDK

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5637

Remove deprecated IModelHooks

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5630

Embedded object list within embedded object list is wrongly stored to database

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5623

Wrong class loader for inherited embedded document across modules

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5612

Password reset link does not work correctly for other ApiOmat systems

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5603

[Webhosting] More tolerant root url resolution

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5573

Apidocs - Parent specific attributes endpoints for references and static data are missing in child

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5560

Docker container can't start when it's in two Docker networks

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5551

[Android SQLite] implement chunking for files > 2MB

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5399

Implementing Supporter role for reading system data in yambas backend

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5364

[Documentation] How to set up a Yambas cluster

images/jira.apiomat.com/secure/viewavatar.png

Fixed

AOM-5337

[Java SDK] Add description, examples and check min, max and regex for class attributes

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5194

Make it possible to read module configuration of used modules

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-5083

[Android SQLite] possibility to count offline

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

AOM-3292

[Android SQLite] SDK reference collection load methods return wrong results

images/jira.apiomat.com/secure/viewavatar.svg

Fixed

28 Vorgänge