. . .

Version 3.3.0

New Features

Module Versioning (Beta)

Modules that contain your backend logic are now versionizable. That provides you the possibility to work with different module revisions within your application at the same time.

The huge advantage is that you can switch between two versions of the same module within your application without replacing the old working module code.
That helps you to update your modules in an easier and more focused way.

images/download/attachments/61478255/moduleVersioning_simpleExample.PNG

The new Module Versioning also includes some features and changes that ensure ApiOmat stability.
So make sure you get informed about the following topics:

  • module upload via Maven replaces Ant-Upload

  • usedModule dependency handling via Maven

  • migration of unversioned Modules

  • unversioned persistence of data object and object reference

  • SDK support for Module Versioning

To learn more details about the Module Versioning features visit Module Versioning.

SDK Out-of-Beta & Deprecations

The TypeScript SDK was stabilized, so it's now more robust and finally pulled out of its beta state.

Also some of the SDKs are now deprecated. You can find their future replacements in the following table:

SDK Deprecations

Replacement

Objective-C SDK

Swift

JavaScript SDK
PhoneGap SDK
React Native SDK

TypeScript

Furthermore some of the deprecated methods and functionalities were removed especially in sections like C# SDK, Swift SDK and NativeModules.
For a detailed list of all deprecations visit Deprecations and Migration.

New Service: Dispatcher (Gateway)

The Dispatcher service is an API gateway providing a way to route Application Programming Interfaces.
API Gateways are used to improved the communication between a client application and several microservice instances.

Advantages:

  • Helps determining the locations of service instances

  • Insulates client applications from internal microservices structure

  • Simplifies client applications by moving logic for calling multiple services to API gateway

  • Reduces the amount of client requests when retrieving data from multiple services → fewer requests means less overhead

To learn more about the setup and usage of the Dispatcher service visit Dispatcher Installation.

Breaking changes

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

NativeModule,
Swift SDK,
C# SDK

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

Module upload via Ant removed

The upload of native modules via Ant was completely replaced by a new Maven Plugin upload process in favor of the new Module Versioning feature and ApiOmat stability. Visit the introduction of the Module Versioning to see the new module upload process via Maven.

JDBC Modules

Since Yambas 3.3 all object references are stored as collections to be able to support Module Versioning. Unfortunatly all JDBC Modules needed some minor changes to be able to operate with those reference collections especially when single references were used in past. The newest JDBC module 3.3 and all its derivatives like MSSQL, MySQL and OracleDb already includes those necessary changes.
Be sure to update all your JDBC modules and as the circumstances require also update your crawled native modules.

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.

Query Parsing

The query parser is more strict for queries containing a dot and an unknown prefix. Wrong Queries like "this.id" or "unknownAttribute.id" do not work anymore and should be corrected. This only affects wrongly crafted queries.

Referenced Static Data

Please use the new endpoints with module version as the old ones behave differently now and should only be used as a fallback! Click here for further information!

Also, reading or manipulating static data (files/images) that are linked to a data models attribute, providing a wrong attribute name or type will from now on return the error code

MODEL_NOT_FOUND (804),
and no longerINVALID_ATTRIBUTE_TYPE (751) orATTRIBUTE_NOT_FOUND (779) due to the new behavior since module versioning was included.

C# SQLite SDK

  • New: if offline storage has module classes of different versions than in downloaded SDK the offline storage is dropped (else kept) => old tasks will always be kept and later executed

  • New: implemented SdkInfo.cs in Com.Apiomat.Frontend containing the module version info of the downloaded SDK

  • Fix: deleted references will now be removed from storage (refCollection, singleRef, online and offline)

  • Fix: deleted images/files will now be removed from storage (online and offline)

  • Fix: new references will now be added to offline storage even if device is online (needed for later offline usage)

  • Fix: new images/files will now be added to offline storage even if device is online (needed for later offline usage)

  • Fix: missing collections (references and normal) will now consistently throw an exception with ID_NOT_FOUND

  • Fix: table name in sqlite storage is now unique

  • Fix: reference properties will now be cleared from objects, if loading results in an ID_NOT_FOUND exception was thrown

  • Fix: removed references will now be deleted from object by id (not by hashcode anymore)

  • Fix: deleted objects will now be removed from reference storage, if they are referenced to another object

  • Fix: Delta sync of deleted references now returns the deletedIds

Android SQLite SDK

  • New: to update your sqlite storage after changing modules or classes change your SQLite Database version number located in /frontend/offline/AppDatabase

  • New: if offline storage has module classes of different versions than in downloaded SDK the offline storage is dropped (else kept) => old tasks will always be kept and later executed

  • New: implemented SdkInfo.java in com.apiomat.frontend containing the module version info of the downloaded SDK

  • New: offline tasks from previous versions will be processed if there are no conflicts in types, such as Long to String

  • Fix: new images/files will now be added to offline storage even if device is online (needed for later offline usage)

  • Fix: offline task will now replace offline ids from file, image and reference from storage

  • Fix: major refactoring in AOMOfflineInfo

TypeScript SDK

  • New: if offline storage has module classes of different versions than in downloaded SDK the offline storage is dropped (else kept) => old tasks will always be kept and later executed

  • New: implemented SdkInfo.ts which contains all modules & their versions, which are included in the downloaded SDK

  • Fix: several save-to-storage fixes for network else cache strategies

  • Fix: embedded object "detection" fix for offline task handling

  • Fix: improved offline task handling: stored models are now used as fallback when processing offline tasks

Swift SDK

  • New: implemented SdkInfo.swift containing the module version info of the downloaded SDK

  • New: if offline storage has module classes of different versions than in downloaded SDK the offline storage is dropped (else kept) => old tasks will always be kept and later executed

  • Fix: problem with create and delete references offline

Create/Update MetaModelAttribute

It is no longer possible to create a reference attribute and pass a regular expression, minLength or maxLength patterns. Before, those three parameters were ignored silently when creating a reference attribute.
Now we indicate that patterns can't be set for reference attributes

  • valid data types for using patterns are: Long, Double, String, Date, List (if the generic type is one of the types in this itemization)

  • in Native Module classes, reference attributes can't be annotated with @Size or @Pattern anymore

Update Routines

(when updating from versions prior to ApiOmat 3.0.1)

The update routines prior to ApiOmat 3.0.1 have been removed. If you're running a version below 3.0.1 and you're planning to update to 3.3.0 (f.i. your server is currently running ApiOmat 2.6), you should upgrade to 3.1 or 3.2 first and then upgrade to 3.3.0 to ensure that all routines will be executed.

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

DAS-1958

Setting 0 as key in map will not be displayed in data editor

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

Fixed

DAS-1951

Remove "ant" occurences

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

Fixed

DAS-1943

Create new module with existing name does not show error

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

Fixed

DAS-1942

Click on SDK Download improvements

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

Fixed

DAS-1932

UI my modules page for versions

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

Fixed

DAS-1925

Some characters are URL encoded in a module configuration title

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

Fixed

DAS-1916

show stacktrace on default in log console

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

Fixed

DAS-1888

Show Module Versioning Dialog to add/edit Module from Marketplace

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

Fixed

DAS-1878

Cannot Accept Contract in Internet Explorer

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

Fixed

DAS-1857

Lurker URL not correctly retrieved from consul

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

Fixed

DAS-1853

Description and customMeta field for classes

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

Fixed

DAS-1829

Change password not working with ReadOplog role

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

Fixed

DAS-1816

Dashboard Container is slow on kubernetes cluster

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

Fixed

DAS-1815

Can't see any data if property value is HTML

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

Fixed

DAS-1812

Can't upload module even when I have deploy rights

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

Fixed

DAS-1786

Support Consul as discovery service

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

Fixed

DAS-1772

Input fields for description, example, regex, maxlength and minlength as class attributes

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

Fixed

DAS-1763

Compliance manager view: edit user dialog

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

Fixed

DAS-1762

Compliance manager view: download as JSON and delete with owned data

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

Fixed

DAS-1761

Compliance manager view: User Data display and delete User

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

Fixed

DAS-1760

Compliance manager view: Backend Data Screen

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

Fixed

DAS-1754

Compliance manager view

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

Fixed

AOM-5657

[Android SQLite] Offline Reference/File/ImageUrl not updated after going online

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

Fixed

AOM-5645

Remove deprecated ServerCode module during update

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

Fixed

AOM-5618

[TypeScript] count doesn't work offline

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

Fixed

AOM-5614

Remove deprecated native module methods

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

Fixed

AOM-5613

Remove deprecated SDK methods

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

Fixed

AOM-5611

Remove deprecated static module classes

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

Fixed

AOM-5609

[TypeScript] transpile es6 module and moduleResolution

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

Fixed

AOM-5606

Password change not effective until restart of yambas in cluster

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

Fixed

AOM-5590

[Swift] Integrate Moduleversioning and further Improvements

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

Fixed

AOM-5589

[TypeScript] Integrate Moduleversioning and further Improvements

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

Fixed

AOM-5588

[Android] SQLite - Integrate Moduleversioning and further Improvements

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

Fixed

AOM-5587

[C#] SQLite - Integrate Moduleversioning and further Improvements

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

Fixed

AOM-5579

Collection attributes can't be created when a regex is set

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

Fixed

AOM-5565

[Documentation] How to debug in ApiOmat Modules

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

Fixed

AOM-5559

Fix CSV export of resources for new StaticDataHooks usage

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

Fixed

AOM-5534

Predicates in userInRoles doesn't work with custom auth enabled

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

Fixed

AOM-5530

Make App-Backend specific Apidocs available for customer with READ_DATA role

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

Fixed

AOM-5513

Yambas shuts down with error due to deregistered logging

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

Fixed

AOM-5506

[Typescript] "+" or "?" in the password leads to session token generation problems

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

Fixed

AOM-5498

Validation of collections should be done for its elements instead of for the collection object itself

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

Fixed

AOM-5494

Organizations should have full access to data of an app of one of its customers

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

Fixed

AOM-5493

[IOS][Swift] Adaptation SDK for Swift 5

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

Fixed

AOM-5490

Customer requests aren't checked by custom role check anymore

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

Fixed

AOM-5478

[TypeScript] can't get right class instance with new type format

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

Fixed

AOM-5467

[iOS][Swift] Add possibility to use analytics

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

Fixed

AOM-5462

[CSV] Add createdAt Timestamp to CSV Export

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

Fixed

AOM-5461

[Analytics] Fix Customer deletion when Analytics is activated

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

Fixed

AOM-5452

[TypeScript] Add localforage sql.js driver to typeorm

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

Fixed

AOM-5445

[Android SQLite] Export description and examples for class attributes

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

Fixed

AOM-5444

[Typescript] Export description and examples for class attributes

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

Fixed

AOM-5443

Support Swift 5

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

Fixed

AOM-5425

[TypeScript] requestSessionToken does not work with inherited users.

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

Fixed

AOM-5413

Manual auth verification in a hook method doesn't work when using an OAuth token

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

Fixed

AOM-5411

[Redhat] Yambas Service restart leads to java.net.BindException 8080/8009

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

Fixed

AOM-5395

[TypeScript] transient class instances should be saved in the collection storage

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

Fixed

AOM-5377

[Android-SQLite, C#-SQLite, TypeScript] Protect against internal SQL Injections + improve query by limit and offset

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

Fixed

AOM-5354

Transient class delivers incomplete data on query

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

Fixed

AOM-5353

Add JavaDoc to public methods in native module base classes

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

Fixed

AOM-5336

[Android SQLite] Check regex for class attributes

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

Fixed

AOM-5335

[Swift] Export description and examples for class attributes in SDKs

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

Fixed

AOM-5333

[Typescript] Check regex for class attributes

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

Fixed

AOM-5332

Query with '+' gets decoded when using X-forwarded-proto header

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

Fixed

AOM-5329

Dynamic JSON based field for attributes and classes

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

Fixed

AOM-5316

[TypeScript] loadWithHref can be unified with load but with optional parameter

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

Fixed

AOM-5312

[TypeScript] rename simpleName attribute to modelName

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

Fixed

AOM-5299

[Android] SQLite Check deletion of referenced objects

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

Fixed

AOM-5295

Misleading Access Denied Error message in Log

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

Fixed

AOM-5290

[Objective-C/Swift] Countly SDK update to 18.08

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

Fixed

AOM-5288

[TypeScript] Add Countly SDK

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

Fixed

AOM-5287

Add zipkin tracing

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

Fixed

AOM-5255

Give developer the possibility to disable classNameFilter in native modules findBy.. methods

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

Fixed

AOM-5232

Docker with consul based hazelcast not working because of wrong configuration

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

Fixed

AOM-5141

Provide example regular expressions within snippets.md and documentation

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

Fixed

AOM-5137

[TypeScript] Rename function toJson() to toJsonString()

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

Fixed

AOM-5102

Bulk operation improvements

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

Fixed

AOM-5075

Support for MongoDB 4.0

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

Fixed

AOM-5073

Foreign ID gets overwritten by ID before calling custom role check method when a single reference is overwritten

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

Fixed

AOM-5069

A PUT request without changed allowedRoles is seen as GRANT request

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

Fixed

AOM-4936

Change Owner of App Backend is not applied for Analytics

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

Fixed

AOM-4929

Update to AdoptOpenJDK 8

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

Fixed

AOM-4857

[Xamarin/C#] Countly SDK update to 18.08

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

Fixed

AOM-4855

[SDK] Analytics SDK update to 18.08

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

Fixed

AOM-4852

Multiple methods don't use the correct Role hierarchy

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

Fixed

AOM-4273

[Push] Extend documentation for using in NativeModules

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

Fixed

AOM-4043

[Swift] When loading a reference collection the query parameter should not be ignored

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

Fixed

AOM-3845

[Android] Can't load reference collections when offline

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

Fixed

AOM-3804

Implement base functionality of module version

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

Fixed

AOM-3702

Forbid same name for module and class (of module)

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

Fixed

AOM-1199

Add description and customMeta field for classes

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

Fixed

Authentifizierung um Ihren Vorgang abzurufen

91 Vorgänge