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
plugin
formodule
forDcsaSharedStorage
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
inDeleteResource
which lets you conveniently delete theResourceSource
orResourceEntity
together with its binary data. This property was also added to theResourceDeleteBuilder
in theResourceAccess
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 aResourceSource
entity at hand and it's cumbersome to create aResource
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 ServiceRequestContext
s
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 specialplatform-only
module. This meansJinni
fails if a module has a dependency on it. Reason is to prevent strange runtime behavior. - Exposing
MimeTypeRegistr
y andMimeTypeDetector
onResourceProcessingContract
.
Platform Reflection
- Introduced request
GetSetupDescriptor
which returns content ofsetup-descriptor.yaml
unmarshalled asSetupDescriptor
. PlatformReflectionRequest
is aPlatformRequest
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
, 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.WorkbenchAction
can now be configured withcom.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
fromshared 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)
- updates
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
(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-INF
in casedebugJs
is set to true (only on Unix). - JavaScript parts are classified with
.js.zip
andmin.js.zip
js-libraries
is a subfolder oftribefire-services
now- Module collector writes
allowLinking
injs-libraries/META-INF
context in case of unix and debug mode. - tribefire.cortex.js:tribefire-js
is a
JsLibrary` 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.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)