Skip to content
logoBack to home screen

tribefire 2.0 - 29/09/2020

Announcements

In case you are still using cartridges: Cartridges always must be re-built against the release repository.

New Runtime Properties

The following runtime properties were added in this release:

PropertyDescriptionDefault Value
TRIBEFIRE_DEPLOYMENT_STANDARD_THREADSNumber of Standard Deployment Threads5
ENVIRONMENT_SETUP_INFO_DIRPath to the setup-info directory
TRIBEFIRE_RPC_THREAD_POOL_SIZECore pool size of the "Master RPC Service" threadpool250
TRIBEFIRE_PLATFORM_THREAD_POOL_SIZECore pool size of the "Platform Thread-Pool" threadpool250

General

  • Replacing plugin for module for DcsaSharedStorage in all setups.
  • Separated codebase (CORETS-451) and added readme
  • Got rid of deprecated tomcat context descriptor settings.
  • FileTools supports recursive links during deletion and copying now
  • Added marker interface SupportsNonAssetDeps to abstractly filter non asset dependencies.
  • Added new ant script: artifact-aggregator-ant-script.
  • Made check API more resilient.
  • ExtendedThreadPoolExecutor and ExtendedScheduledThreadPoolExecutor have been refactored to better support priorities and transfer attribute contexts.
  • Forcibly stopping a native process when an InterruptedException is thrown.
  • Fixed code that broke compatibility with Java 8 (when sources are compiled with a higher Java version) (Buffer.flip())
  • Made the BasicDelegateInputStream non-abstract for direct use
  • Performance improvement: replaced String.replaceAll by String.replace where applicable
  • Introduced the AutoCloseInputStream that will automatically close the delegate InputStream when all data has been read
  • Added convenience methods in StringTools/FileTools to truncate String by byte-length while taking into account and preserving UTF-8 characters
  • Extended the DefaultHttpClientProvider to take the optional Socket Timeout parameter from the client parameters
  • Added a convenience method to stringify HttpServletRequests
  • Extended com.braintribe.model.execution.persistence.Job with the creation date/time to better differentiate between creation and actual execution start
  • Added support for very long domain names in the GmDbLeadershipManager
  • Increased timeout and interval if the GmDbLeadershipManager

Model extensions for Model Accessory Factories

  • There is a way to extend the model of an access or a service domain with extra dependencies (which might also bring meta-data), which is visible to the Model Accessory Factory. As an example, one can configure that every HibernateAccess supports NativeQuery request (service domain extension), or that every CollaborativeSmoodAccess uses a special lazy-loading BinaryRetrieval (meta-data configuration).

Resource Streaming

  • New property deletionScope in DeleteResource which lets you conveniently delete the ResourceSource or ResourceEntity together with its binary data. This property was also added to the ResourceDeleteBuilder in the ResourceAccess conveniece API.
  • New series of convenience requests, which allow to upload, delete and stream a resource with just a ResourceSource entity. This is convenient when you only have a ResourceSource entity at hand and it's cumbersome to create a Resource entity from it by hand:
    • UploadSource
    • DeleteSource
    • GetSource
    • StreamSource
  • It is now supported to have multiple binary processors of the same type (for example two FileSystemBinary processors with different file system directories). They can be selected and configured via a MetaData-usecase.
  • Reworked EncryptedZippingInputStreamProvider to use Stream Pipes
  • Added the PipeBackedZippingInputStreamProvider for zipping files (based on Stream Pipes)

OpenAPI

  • The OpenAPI UI endpoint supports now a new parameter includeSessionId which can also be enabled via the UI menu. When enabled, the current sessionId of the logged in user is set as default value to all AuthorizableRequests so that it is visible in all different presentations of the request. This is especially useful when copy-pasting a CURL command which then already has a valid sessionId included.

Marshalling

The GmSerializationOptions and GmDeserializationOptions which were used to configure marshallers got new implementations to improve stability and create a consistent configuration API. Specifically they now use the AttributeContext API which you might already be familiar with from the ServiceRequestContexts

Even though a few methods were deprecated and replaced with new ones, the old API is still supported to be backwards compatible.

Modules

  • Marking tribefire-platform-commons as a special platform-only module. This means Jinni fails if a module has a dependency on it. Reason is to prevent strange runtime behavior.
  • Exposing MimeTypeRegistry and MimeTypeDetector on ResourceProcessingContract.

Platform Reflection

  • Introduced request GetSetupDescriptor which returns content of setup-descriptor.yaml unmarshalled as SetupDescriptor.
  • PlatformReflectionRequest is a PlatformRequest now.
  • Improved wiring of marshallers in PlatformReflectionProcessor.
  • Added SetupDescriptor to About page and Diagnostic Package
  • Added Module information / files to the Diagnostic Package
  • About page: added summary information about connection pools for a better overview
  • Made platform reflection more robust by catching individual exceptions per step
  • About page: added server's system date/time for reference

Tribefire Services

  • Added the JvmShutdownWatcher to monitor/control shutdown of the server
  • Performance improvement: caching resolved TribefireRuntime properties to prevent constant re-evaluation
  • Using the DcsaUpdateProfiler only when TRACE level logging is enabled
  • Refactored handling of SecurityServiceException and AuthorizationException to keep a better state of the actual error
  • Extended the StandardExceptionHandler to provide more information about the request that caused the error
  • Updated Groovy library from version 2.5.7 to 3.0.5
  • Fixed a bug in the MimeTypeRegistry (wrong map was used for registering Extension to MimeType mapping)
  • Moved the logout of a remote TF session to a separate thread to prevent blocking of the original request
  • Reduced logging in the WebSocket service
  • Added information about the source of RegistryEntry's
  • Fixed an error in the cleanup of com.braintribe.model.execution.persistence.Job's
  • MimeTypeRegistry is not available to modules
  • Preventing duplicate execution of EnsureAdminUserWorker by using locking
  • Refactored the DocumentModel: moved most of the Document properties to the AbstractDocument to make the available also to the CompoundDocument
  • Increased core pool size of "Master RPC Service" threadpool from 20 to 250. Can be configured via TRIBEFIRE_RPC_THREAD_POOL_SIZE
  • Increased core pool size of "Platform Thread-Pool" threadpool from 100 to 250. Can be configured via TRIBEFIRE_PLATFORM_THREAD_POOL_SIZE

Tribefire ControlCenter / Explorer

  • Prepared support for ViewWithJsUxComponent metadata, allowing the use of external js components within GME.
  • Added better error handling in the client for session expired.
  • Added support for the new Message metadata.
  • Added support for navigation within the Home constellation.
  • New Preview feature for contents.
  • Prepared for KeyConfiguration (shortcuts) for actions.
  • Removed global CSS styles.
  • Bug Fixes, such as: fixed result of DynamicSelectList being duplicated sometimes; fixed mapping edition not saving the editions under some circumstances; fixed problem of commit action being called twice with autoCommit under some circumstances; fixed some DnD related problems; fixed Embedded support within AssemblyPanel and PropertyPanel; fixed cancel button within GIMA not working correctly sometimes; fixed TimeSpan field support; fixed support for ColumnData; fixed scrollbar issues within comboboxes.

WebReader

  • A new kind of com.braintribe.model.workbench.WorkbenchAction, the PreviewOpenerAction, is now available. Its expert implementation in the client takes the selected entry, opens a new window with a WebReader, and then set that selected content to the WebReader.
  • com.braintribe.model.workbench.WorkbenchAction can now be configured with com.braintribe.model.workbench.KeyConfiguration, which defines the shortcut needed to fire the corresponding action.

HibernateAccess

  • Support for native (HQL) queries.
  • Fixing support for Localize function.

DCSA

  • Initial reading from shared storage is performed offline, writing data to disk only.
  • Added multi-threaded bulk loading and logging about number of available packets and timing information in JdbcDcsaStorage
  • Refactored JdbcDcsaStorage to lazy-load resources when requested

Jinni

  • Completion script for bash, found in the bin folder under the name jinni-completion.sh
  • Adding commands for offline CSA file manipulations.
  • GmNature of modules can now also be specified via pom.xml properties (not just manifest).

Templates

  • When projecting artifact templates the version now defaults to the 'parent' artifact version, if one exists, otherwise 1.0 will be used.
  • Added GWT support for model and library templates. You get GWT relevant files by setting --gwt flag when issuing projection.
  • DDSA template now supports testing of access service processors.

JavaScript support

  • Added new requests
    • assemble-js-deps for JavaScript project management
      • updates lib folder with symbol links to unpacked js libraries
      • updates resource references in source files
      • self-reference via lib/_src (Always use this folder for editing sources)
    • upload-artifacts for general artifact upload and used by firex for Javascript 3rd partry library import from NPM registries
  • Added new asset natures and builders for it
    • JsUxModule
    • JsLibrary
  • Added artifact templates
    • create-js-library
    • create-js-library-aggregator
    • create-js-ux-module
  • Introduced Boolean debugJs (alias dj) on PlatformSetupConfig. If set, the js-libraries folder will use symbolic links to the library cache or project sources directly instead of copied files from the library cache. ** Web context descriptor is not written in js-libraries/META-INF in case debugJs is set to true (only on Unix).
  • JavaScript parts are classified with .js.zip and min.js.zip
  • js-libraries is a subfolder of tribefire-services now
  • Module collector writes allowLinking in js-libraries/META-INF context in case of unix and debug mode.
  • tribefire.cortex.js:tribefire-jsis aJsLibrary` now and therefore respected during setup as a JavaScript library.

Bugfixes

  • fixed broken singleton mechanism for JinniOptions (alias options) type.

JavaScript Artifact Support

  • jsinterop artifacts generate typescript declaration files by reflecting annotated classes
  • model artifacts generate typescript declaration files by reflecting GmMetaModel

YamlMarshaller

  • switched to snakeyaml-engine#2.1 as new yaml parser
  • support for ScalarEntityParser MarshallerOption to allow string values for entity values

Bugfixes

  • yaml can now contain tab characters which before let the parser fail

Ant

  • multi-threaded transitive tasks (e.g. ant -Drange=. -Dthreads=4)
  • optional support for ANSI color output, configurable via environment variable (BT__ANT_COLORS=true), or by command argument (-Dcolors=true)

Wire

  • Added some common support for Wire templates (TemplateContext, TemplateContextBuilder , TemplateContextImpl)