tribefire 2.0 - 29/09/2020
On this page
- Announcements
- New Runtime Properties
- General
- Model extensions for Model Accessory Factories
- Resource Streaming
- OpenAPI
- Marshalling
- Modules
- Platform Reflection
- Tribefire Services
- Tribefire ControlCenter / Explorer
- WebReader
- HibernateAccess
- DCSA
- Jinni
- JavaScript Artifact Support
- YamlMarshaller
- Ant
- Wire
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:
| Property | Description | Default Value | 
|---|---|---|
| TRIBEFIRE_DEPLOYMENT_STANDARD_THREADS | Number of Standard Deployment Threads | 5 | 
| ENVIRONMENT_SETUP_INFO_DIR | Path to the setup-info directory | |
| TRIBEFIRE_RPC_THREAD_POOL_SIZE | Core pool size of the "Master RPC Service" threadpool | 250 | 
| TRIBEFIRE_PLATFORM_THREAD_POOL_SIZE | Core pool size of the "Platform Thread-Pool" threadpool | 250 | 
General
- Replacing pluginformoduleforDcsaSharedStoragein 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 SupportsNonAssetDepsto 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 deletionScopeinDeleteResourcewhich lets you conveniently delete theResourceSourceorResourceEntitytogether with its binary data. This property was also added to theResourceDeleteBuilderin theResourceAccessconveniece API.
- New series of convenience requests, which allow to upload, delete and stream a resource with just a ResourceSourceentity. This is convenient when you only have aResourceSourceentity at hand and it's cumbersome to create aResourceentity 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 includeSessionIdwhich 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-commonsas a specialplatform-onlymodule. This meansJinnifails if a module has a dependency on it. Reason is to prevent strange runtime behavior.
- Exposing MimeTypeRegistry andMimeTypeDetectoronResourceProcessingContract.
Platform Reflection
- Introduced request GetSetupDescriptorwhich returns content ofsetup-descriptor.yamlunmarshalled asSetupDescriptor.
- PlatformReflectionRequestis a- PlatformRequestnow.
- 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 ViewWithJsUxComponentmetadata, allowing the use of external js components within GME.
- Added better error handling in the client for session expired.
- Added support for the new Messagemetadata.
- 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, thePreviewOpenerAction, 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.WorkbenchActioncan 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 Localizefunction.
DCSA
- Initial readingfromshared storageis 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.xmlproperties (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 --gwtflag when issuing projection.
- DDSA template now supports testing of access service processors.
JavaScript support
- Added new requests
- assemble-js-depsfor JavaScript project management- updates libfolder 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)
 
- updates 
- upload-artifactsfor 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(aliasdj) onPlatformSetupConfig. 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 injs-libraries/META-INFin casedebugJsis set to true (only on Unix).
- JavaScript parts are classified with .js.zipandmin.js.zip
- js-librariesis a subfolder of- tribefire-servicesnow
- Module collector writes allowLinkinginjs-libraries/META-INFcontext 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(aliasoptions) 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.1as 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)