Changelog expanders

Filter x

5.14.1 (2022-09-29)

Added

  • Added custom-annotations anchors to DataExpander.

5.14.0 (2022-09-21)

Added

  • Added technology field to AdditionalExpansionStep and Feature. This will deactivate these steps and features if the technology is not present.

Changed

  • Hibernate now defaults to version 5 is not otherwise specified as support for Hibernate 4 is being phased out everywhere.

Removed

  • Removed some remaining support for Jonas application server.
  • Removed old code from the ExpansionContextCreator class

5.13.3 (2022-09-14)

Removed

  • Removed snakeyaml dependency

5.13.2 (2022-09-07)

Fixed

  • Added missing option value custom to validation expression for option type experimental.persistence.identifier.

5.13.1 (2022-09-06)

Changed

  • Updated 3rd party dependencies in expanders project (not in expanded code):
    • Libraries:
      • org.yaml:snakeyaml: 1.30 -> 1.31 (CVE-2022-25857)
      • org.antlr:ST4: 4.3.3 -> 4.3.4
      • ognl:ognl: 3.3.3 -> 3.3.4
    • Maven plugins:
      • org.apache.maven.plugins:maven-assembly-plugin: 3.3.0 -> 3.4.2

5.13.0 (2022-08-30)

Fixed

  • Added missing @Override annotation to the execute() method in several subclasses of ActionSupport.
  • Added missing @Override annotation to the prepare() method in several implementations of Preparable.

Changed

The following Expanders and Features have been moved to base-components:

  • Engine(Bean Local Remote)Expander (flowElement and serviceElement)
  • ClaimCleanerExpander
  • InterruptRecovererExpander
  • StateTransitionerExpander
  • StateViewerExpander
  • Claimable feature
  • ClaimElement feature
  • WorkflowTaskStatus feature
  • Service feature
  • EngineShutdown feature
  • TaskTimers feature

These Expanders have been modified to move the findByClaimed options to a separate feature in the base-components:

  • FinderBeanExpander
  • FinderDetailsExpander

Other changes:

  • Cleaned up more generic type specifications where they were not required.
  • Cleaned up some minor code style inconsistencies. (){ -> ) {)
  • Replaced deprecated new Long(String) call with Long.parseLong(String).
  • Replaced implementation of <DataElement>Cruds.getDetailsListFromData() with Java stream.
  • Replaced implementation of <DataElement><Projection>.get<TargetElement>Ids() and <DataElement><Projection>.set<TargetElement>Ids(String[]) with Java streams.
  • Replaced implementation of <DataElement>State.get<DataElement>State() with Java stream.
  • Updated nsx-runtime: 2022.2.0 > 2022.3.0
  • Updated hamcrest: 1.3 > 2.2
  • Updated <dataElement>CommandValidator.getValidator() to use Options.Option.notNull().
  • Updated routing of commands in logic bean to use a map with method references analogous to the implementation of the finders in the finder bean.

Removed

  • Removed deprecated support for Java 7 in expanders, as Java 8 is now enforced as the minimum.
  • Removed deprecated elementProjectorMap field in the logic Bean classes, as well as the custom-projection-mapping anchors.
  • Removed redundant unboxing call to Long.longValue() in <DataElement>Cruds.getData()
  • Removed redundant warning suppressions for <DataElement>Cruds.getElementProjector().

5.12.1 (2022-08-11)

Fixed

  • Updated prime-core: 2022.6.0 > 2022.6.1. (2022.6.0 still depended on a SNAPSHOT version)

5.12.0 (2022-08-10)

Fixed

  • Fixed Cruds.getElementDetails, which used the wrong details class.

Changed

  • Replaced new Long(0) in projection pojo classes with 0L.
  • Qualified generics in collection types where showLinkDetails is used.
  • Cleaned up generic type specifications where not needed.
  • Replaced all uses of java.util.Vector with java.util.(Array)List. The old behavior can be re-enabled with the transient option legacy.vectorCollectionType.reenable.
  • Qualified generic of result variable definition in DataRefConverter.fromString() and DataRefConverter.toString().
  • Replaced all uses of deprecated new DataRef() constructor with functional equivalent DataRef.withId(0L).
  • Refactored private method Cruds.project(Context,List,IDataElementProjector) to use the Java streams API.
  • Updated prime-core: 2022.5.4 > 2022.6.0.

5.11.0 (2022-08-08)

Changed

  • Updated OGNL (for use in expander mappings) to version 3.3.3.
  • Updated ST4 StringTemplate library (for use in expander templates) to version 4.3.3.

5.10.0 (2022-08-03)

Added

  • Explicit definition of org.apache.maven.plugins:maven-surefire-plugin in expanded root POM file to decouple it from the Maven version used to compile the application.
  • Added assert to ensure no versions of Java older than 8 are targeted to expand a JEE application.

Changed

  • Updated nsx-parent to 2022.1.0.
  • Updated Maven plugins in expanded code:
    • org.apache.maven.plugins:maven-compiler-plugin: 3.8.1 -> 3.10.1
    • org.codehaus.mojo:build-helper-maven-plugin: 3.0.0 -> 3.3.0
  • All templates, artifacts and harvest files are now read and written in UTF-8 encoding.

5.9.9 (2022-07-26)

Fixed

  • [VEGA-234] Fix implicit name field not being initialized correctly

5.9.8 (2022-06-22)

Fixed

  • Added missing expander comment to ContextRetriever
  • Use UserContextRetriever to fetch UserContext in ContextRetriever

5.9.7 (2022-06-20)

Fixed

Fixed some issues with the ContextRetriever:

  • Fixed context resulting in a null if no context is set in session
  • If no UserContext is defined, a UserContext will be retrieved from the session, if available (this is required to keep things backwards compatible)

5.9.6 (2022-06-14)

Fixed

  • Adding property tomee.jpa.factory.lazy=true to persistence.xml when expanding for TomEE with Hibernate 5, to avoid CDI loading issues. This is advised by Apache in the TomEE documentation.

5.9.5 (2022-06-09)

Added

  • Added FinderOperatorMapping.xml for expanders still using this file

Note: including mapping xml files from other expansion-resources is considered dirty and is prone to break


5.9.4 (2022-06-09)

Changed

  • Updated nsx-parent to 2022.0.0.

Added

  • Added context to user session next to userContext
  • [NSX-220] Add support for OIDC logout
  • [FLOW-43] Add custom anchors to claiming methods
  • Added anchors to FindAction

Fixed

  • Provided better error message if the harvester fails to read the artifact file

5.9.3 (2022-05-25)

Changed

  • Updated 3rd party dependencies in expanders project (not in expanded code):
    • Libraries:
      • ognl:ognl: 3.1.28 -> 3.1.29
      • org.apache.commons:commons-lang3: 3.5 -> 3.12.0
      • commons-io:commons-io: 2.7 -> 2.11.0
      • org.slf4j:commons-io: 1.7.30 -> 1.7.36 (test only)
    • Maven plugins:
      • org.apache.maven.plugins:maven-assembly-plugin: 3.2.0 -> 3.3.0
      • org.apache.maven.plugins:maven-compiler-plugin: 3.8.1 -> 3.10.1
      • org.codehaus.mojo:flatten-maven-plugin: 1.1.0 -> 1.2.7
      • org.jacoco:jacoco-maven-plugin: 0.8.2 -> 0.8.8
      • org.sonarsource.scanner.maven:jacoco-maven-plugin: 3.7.0.1746 -> 3.9.1.2184
  • Updated NSX Maven plugin in expanders project (not in expanded code):
    • net.democritus.maven.plugins:expansion-validation-maven-plugin: 2021.1.0 -> 2022.0.0

5.9.2 (2022-05-23)

Fixed

  • [VEGA-219] Removed name field from ProjectionPojoExpander with option nameNotWanted. To revert this behaviour, use legacy.nameNotWanted.pojoName.
  • Added missing import for workflowRemote

5.9.1 (2022-05-19)

Reverted

  • Reinsert workflowRemote in EngineBean

Updated

  • Removed direct dependency in metamodel-runtime to prevent issues with classloading conflicts in tests
  • Updated dependency:
    • prime-core: 2022.1.0 => 2022.5.4

5.9.0 (2022-05-16)

Added

  • [FLOW-19] Added option projection.detailsWithoutRefs, this adds a projection detailsWithoutRefs which contains the same fields as the details projection, but where the linkFields are represented as ids. This projection is more performant than the details projection as no extra database queries are needed to resolve the DataRefs for the link fields.
  • Update recovery claim timeout to 5mins
  • Added InterruptRecoverer error handling

Changed

  • [FLOW-16] Use cached workflow runtime configuration to reduce the number of database queries
  • [FLOW-16] Use detailsWithoutRefs projection in workflow orchestration to reduce the number of database queries
  • [FLOW-22] Add support for stateTask timeout

Fixed

  • Fixed workflow claiming not working with Se finders
  • [FLOW-38] Fix status capitalization in FlowStateTransitioner

5.8.1 (2022-04-14)

Fixed

  • [useClaims] Fixed recovery failing because recovered instances were not claimed

5.8.0 (2022-03-16)

Added

  • Added ContextRetriever, which is expanded for each Component in the control layer and allows features and customizations to add additional context groups to the Context object.

5.7.5 (2022-02-28)

Revert

  • Revert removing IExecutor interface from ArtifactExpanderRunner

5.7.4 (2022-02-25)

Added

  • Added expansion option expansion.failFast to fail at the first error
  • [CommandFormJsExpander] Expose messages from CommandResult

Changed

  • BlockingJobManager now executes all tasks by default and only fails fast if the option expansion.failFast is provided

Removed

  • Removed IExecutor interface from ArtifactExpanderRunner
  • Removed ExpansionResourceXmlGenerator. Instead, use the expansionResource goal of the expanders-maven-plugin
  • Removed ComponentDirectoryFinder (the source directory is now part of the ModuleExpansionContext)
  • Removed HarvestReader (has been replaced with ArtifactHarvestFileReader)
  • Removed PrimeDataLoaderHotfix (use net.democritus.data.PrimeDataLoader instead)
  • Removed public access to net.democritus.expander.ArtifactPathBuilder#cache
  • Removed public access to net.democritus.testing.CoverageCollector#callsMap
  • Removed several methods from AssertUtil
  • Removed TemplateType

5.7.3 (2022-02-18)

Fixed

  • Fixed expansion failure due to mapping error when no dataBaseSchemaName is provided for a component

Added

  • Added some support for harvesting base-components
    • Added expansion option harvest.force to ignore harvest.skip
    • Added expansion option harvest.modelDirectory.override to set a single directory for harvest files

5.7.2 (2022-02-18)

Fixed

  • Fixed Context not being passed by StateTransitioner, causing compareAndSet() to fail if claims are used

5.7.1 (2022-02-18)

Fixed

  • [NSX-214] Simplified logic around in operators wrt linkFields in finder-mappers

5.7.0 (2022-02-17)

Added

  • [NSX-224] Added applicationInstance/component/data option cruds.table.csvExportButton, which adds a button to the cruds table to export instances, which takes into account the selected finder.
  • [NSX-214][VEGA-194] Added support for finders with in operator in combination with linkFields
  • Added support for linkfieldInput binding in finder forms
  • [NSX-207] Added ehcache.xml stub file with anchors to configure caching with Hibernate 5.

Removed

  • Option editorconfig.global has been removed and .editorconfig file now always applies globally to both gen and ext sources.

5.6.0 (2022-02-07)

Added

  • [VEGA-209] Added @Deprecated and comments to methods in legacy features
  • Added expansion option expanders.traceFeatures to enable feature tracing

Changed

  • Merged expanders-common into expanders-core

Fixed

  • [VEGA-171] Added checkClaims() to compareAndSet() method for claimable DataElements

5.5.4 (2022-02-02)

Fixed

  • Fixed another duplication of _FindByNotClaimed in InterruptRecovererExpander

5.5.3 (2022-02-01)

Changed

  • Only render linkfield binding when visible

Fixed

  • Fixed InterruptRecovererExpander duplicating _FindByNotClaimed postfix if finder with postfix is not present in the model

5.5.2 (2022-01-24)

Fixed

  • [NSX-212] Projector class did not add imports for types of local calculated fields.

5.5.1 (2022-01-18)

Changed

  • [NSX-197] Render waterfall tab only once an instance is selected

5.5.0 (2022-01-12)

Changed

  • [TaskElement] The following options are now supported for modifying the input type of a task:
    • target.element.projection: Changes the projection used from Details to the provided value
    • target.class.custom: Overrides the parameter type with the value (takes a fully qualified name)
  • [Logging] Changed how LoggingAspects are created:
    • In mapping files, the logging aspect can be defined with:
      <value name="logging" eval="@net.democritus.common.logging.LoggingAspects@getLoggingAspect(expansionContext, {name})"/>
      
    • Logging aspects can now be changed with some ApplicationInstance options: logging.none and logging.custom
    • Enabled logging in several action classes where it was disabled

Fixed

  • [generateArtifactLabel] Fixed artifactLabel not being included in the application root pom

Removed

  • Removed long-obsolete ReporterExpander hidden behind now removed dataOption struts.reporter.enable
  • Removed JndiProperties and ComponentJNDI imports from BeanExpander as neither was relevant since 4.0 rewrite
  • Removed support for MonoLogger

These artifacts have been removed. Since they are internal artifacts, no issues are expected

  • Removed expanders-skeleton module
  • Removed ValueFieldTypeMapping.xml
  • Removed FlowElementExpanderMapping.xml

For clones of the ValueFieldTypeMapping.xml file, here is a newly optimized version of the properties:

<?xml version="1.0" encoding="UTF-8" ?>
<mapping xmlns="https://schemas.normalizedsystems.org/xsd/expanders/2021/0/0/mapping">
  <let name="valueTypeClass" eval="classBuilder.from(valueFieldType)"/>
  <let name="storageType" eval="valueFieldType.storageType.toLowerCase()"/>
  <let name="displayType" eval="valueFieldType.displayType.toLowerCase()"/>

  <value name="className" eval="valueTypeClass.className"/>
  <value name="packageName" eval="valueTypeClass.packageName"/>
  <value name="variableName" eval="valueTypeClass.varName"/>

  <value name="requiresImport" eval="valueFieldType.requiresImport()"/>

  <value name="isBuiltin" eval="valueFieldType.builtin"/>
  <value name="isDate" eval="storageType.equals('date')"/>
  <value name="isDateTime" eval="displayType.equals('datelong')"/>
  <value name="isBigDecimal" eval="storageType.equals('bigdecimal')"/>
  <value name="isStringLike" eval="valueFieldType.isStringLike"/>
  <value name="isBigString" eval="displayType.equals('memo') or displayType.equals('multiline')"/>
  <value name="isByteArray" eval="storageType.equals('byte[]')"/>
  <value name="isNumber" eval="valueFieldType.isNumberLike"/>

  <value name="internalType" eval="classBuilder.from(valueFieldType.storageTypeClass)"/>
</mapping>

5.4.3 (2022-01-04)

Added

  • [NSX-204] Add field option view.linkfield.displayField which specifies the field to use in the experimental linkFieldInput through the experimental.view.linkFieldInput option.

5.4.2 (2021-12-17)

Added

[NSX-161] Option persistence.secondLevelCache on DataElement to enable second level cache. Currently only available for Hibernate 5 and is activated with SearchDetails.setAllowCaching(true).


5.4.1 (2021-12-13)

Fixed

  • [VEGA-200] Fixed FinderBean not using {DataElement}Data.ENTITY_NAME and not applying jpa.entity.name.format option
    • requires peer-dependency net.democritus:base-components:2021.6.1 for a custom harvest fix

5.4.0 (2021-12-06)

Removed

  • [VEGA-193] Removed unused/obsolete @PostConstruct from BeanExpander
    • requires peer-dependency net.democritus:base-components:2021.6.0
  • Removed unused/obsolete uninitialized initalContext attributes from BeanExpander, EngineBeanExpander, and ProxyExpander
  • Removed original onion/test specs; only expanded (prime-core) test-specs are now available

Fixed

  • [VEGA-186] Fixed some copying steps (ext, harvest) not following active layer configuration (copying no{X}Layer files)

5.3.4 (2021-12-06)

Fixed

  • Fixed linkfieldInput rendering dataElements with nameNotWanted, hasDisplayName and functionalKey as [Object object]

5.3.3 (2021-11-24)

Fixed

  • [NSX-193] Fixed getStatus(), getStatusAsEnum() return type in case of noDataLayer

5.3.2 (2021-11-24)

Added

  • [NSX-161] Added fetch-after-create-queries anchors to FinderBean.fetchData().

Fixed

  • [NSX-198][UI][NG] Hide tabs in waterfall setup for elements to which the users does not have view access

5.3.1 (2021-11-22)

Fixed

  • [VEGA-196] Fixed expansion option hideAnchors failing on .properties expanders

5.3.0 (2021-11-22)

Changed

  • [tests] The method FeatureExpanderTester#testAnchor() has been changed. In previous versions, the method would ignore the name of the test method and instead construct the template name based on the anchor name (e.g. test_anchor_myAnchor).
    This has now been changed to use the name of the test method instead, which is more in line with the other methods. Note that this only affects feature tests, not regular expander tests, where the ExpanderTester#testAnchor() method already had this behaviour.
  • [NSX-194] Move the getData-strategy anchors in the Cruds classes to a separate method, so that the getData-after anchors are reached in case of a defined strategy.
  • [NSX-195] Made Cruds.getName() opt-in. Add transient.cruds.useGetName to add getName() to the Cruds classes.

Added

  • Added option harvest.skip that skips harvest for that component/module. (primarily useful for model resources)

Fixed

  • before-harvest and after-harvest are now correctly ignored for base-components. This prevents issues with harvest files in base-components being cleaned during harvest. [VEGA-195]

Removed

  • Temporarily removed model information (number of elements, harvests, etc.) from ApplicationPropertiesExpander for technical reasons
  • Removed expansion trace from core, it now lives in net.democritus:expansion-tracer expansion bundle instead

5.2.10 (2021-11-22)

Fixed

  • Fixed getStatus(), getStatusAsEnum(), setStatus(), setStatusAsEnum() method in case of noDataLayer

5.2.9 (2021-11-16)

Fixed

  • Fixed compareAndSetStatus() method in case of noDataLayer

5.2.8 (2021-11-02)

Changed

  • Moved logic of patch method to separate class so feature can be injected

5.2.7 (2021-10-28)

Fixed

  • Add backwards compatible methods in LayerSourceFinder because it was used in other bundles

5.2.6 (2021-10-25)

Fixed

  • Fixed ext directories for some layerImplementations not being generated because of missing variables when resolving the conditions

5.2.5 (2021-10-22)

Added

  • [NSX-189] Enable findAll to be used as searchMethod on the find-json struts endpoint
  • [NSX-189] Implement hasDisplayName option in experimental.view.linkFieldInput
  • [NSX-190] Enable experimental.view.linkFieldInput for commands
  • Added Data Option view.buttons.commands, which adds buttons to NG pages to open command forms. Primarily useful for prototyping and quickly testing new DataCommand features

5.2.4 (2021-10-18)

Fixed

  • Moved ApplicationSettings to shared layer.

5.2.3 (2021-10-18)

Added

  • Component option configuration.properties to expand ApplicationSettings class for component which can load settings from a properties file on the classpath.

5.2.2 (2021-10-11)

Fixed

  • Fixed issues when trying to use Component in program other than Application
  • Improved CsvMerger feature so that update happens in one call per instance.
  • Fixed CsvMerger not creating new instances on import

Added

  • Added more custom anchors to CsvMerger feature

5.2.1 (2021-10-07)

Fixed

  • It was no longer possible to expand export() and importFile() pipelines without the use of the includeCsvImport and includeCsvExport options. This functionality is now available separately with the io.import and io.export options for the DataElement.
  • Now using correct classLoader in ArtifactPathModelBuilder

Removed

  • Removed deprecated transient option io.strutsAction.

5.2.0 (2021-10-01)

Added

  • [NSX-152] Added applicationInstanceOption csv.import.merge, which changes the CSV import so that the imported fields are merged into the existing data, as opposed to the original implementation, which overwrites all fields.

5.1.6 (2021-10-01)

Fixed

  • Fixed issue where dataRegistry would not be filled in for expansionContexts in tests with external metamodels

5.1.5 (2021-09-30)

Fixed

  • Fixed ComponentRootPomExpander so that it creates a valid pom.xml file when one of the layers is not included in the expansionContext (based on moduleType+options).

5.1.4 (2021-09-30)

Fixed

  • Fixed ExpansionContextCreator for metamodels like scripts metamodel (see examples), where the expansionContext is not rooted in a custom ExpansionContextFactory

5.1.3 (2021-09-29)

Fixed

  • Fixed issues with maven selecting wrong onion-spec-runtime version when adding expanders-test-utils as dependency alongside another dependency depending on onion-spec-runtime

5.1.2 (2021-09-25)

Fixed

  • Fixed ExpansionContextCreator so it can be used without custom ExpansionContextFactory classes

5.1.1 (2021-09-24)

Fixed

  • Fixed issue in ApplicationPropertiesExpander with technologies where concernType=null

Removed

  • Removed ANT file mapping from ArtifactPathBuilderMapping

5.1.0 (2021-09-22)

Added

  • Application option experimental.view.linkFieldInput will activate a new knockout implementation for many-to-one linkFields. For now, options for the binding will have to be provided with custom code in the -form.js file.
  • Added camelCase format option and asCamelCase shorthand for expander templates.
  • Implemented cruds.bulk.delete for knockout v1 (NSX KNOCKOUT OG)

Changed

  • Changed view layer expanders to use NSX KNOCKOUT OG/NG technologies, which replace the version on PresentationSettings. PresentationVersionHelper is now obsolete.
  • Updated ApplicationPropertiesExpander to use more of the modern composite API
  • Bean methods importFile/exportFile are now only expanded when includeCsvImport/includeCsvExport option is defined [VEGA-178]

Removed

  • Removed some obsolete references to COCOON

Fixed

  • Fixed some logic still using ApplicationExpansionSettings
  • Fixed support for elementType any
  • Fixed external metamodel expansions being run twice (once by generic ExpansionRunner classes and once in dedicated ExpansionStep)
  • Fixed ExpansionRunner causing ConcurrentModificationException in some cases

5.0.2 (2021-08-25)

Fixed

  • Fixed ClassNotFoundException with some external metamodels

5.0.1 (2021-08-23)

Fixed

  • Fixed issue with loading of ValueFieldTemplates
  • Fixed isDetailsOnly option still expanding finders etc.

5.0.0 (2021-08-23)

Added

  • Added support for driving expansion based on programTypes, moduleTypes and expandableElements.

Changed

  • Application is now an expandable element, and Component now has Application as its parent in the expansion hierarchy. Expanding with ApplicationInstance still works as before.
  • Expansion now uses specialized ExpansionRunner classes instead of expanded classes. Old setups using expansionSteps should still work, but easier alternatives are now available using dataResources describing expandable elements.
  • ApplicationExpansionSettingsComposite has been replaced with the ExpansionSettingsComposite. A stubbed object is still available, but it is highly recommended switching to the new composite class.
  • ExpansionJobManager has a new method submit(Consumer<T>, Iterable<T>) to submit new tasks, which replaces the outdated IExecutor interface with the java 8 Consumer interface.

Technologies and Layers

  • Layers are decided by the ModuleType and ProgramType configuration. These include all applicable layers. In case you have expanders that introduce a new layer, the correct way to add the layer is to define a new ModuleType and ProgramType with your new layer included.
  • Technologies are decide by the linked TechnologyStacks. If your expanders introduce a new Technology, users will have to add it to their technologyStacks.

Removed

  • Removed ANT expanders

4.19.5 (in 5.0.0)

Changed

  • [presentationSettings 2.*] Individual root html pages (with <head>, etc.) are no longer expanded for each dataElement
    • instead struts direct the requests to a a single jsp page that launches an appropriate input model
  • [presentationSettings 2.*] DataElement’s HTML page no longer contains inline scripts to allow for strict CSP
  • Changed favicon URL path /$application$/images/pageIcon.ico to ../../images/favicon.ico (both paths normalize to the same location)
    • place your favicon to applications/$application$/ext/view-ext/knockout/images/favicon.ico

Removed

  • [presentationSettings 2.*] Removed obsolete jqplot loading, and dead graph features (hasCountByStatusGraph and hasCountPerHourGraph)
  • [presentationSettings 2.*] removed inline script setting obsolete window['NSX']
    • requires peer-dependency web-styles 2021.2.0
  • [presentationSettings 2.*] removed root HTML pages for each dataElement and its IO
    • to force their expansion, use applicationInstanceOption transient.ui.expandRootPages
    • ext pages created by copy-pasting regular ones can mostly be removed and replaced in struts with /jsp/ps2/page.jsp?pageModel={path-to-ext-page-model-js-file} (without extension), e.g. /jsp/ps2/page.jsp?pageModel=testComp/Person/custom-page-model

Fixed

  • [NSX-131] uniqueKey validation in Bean moved from @preCreate, @preModify, and @preCreateOrModify to their @pre-validation anchor counterparts.
  • [NSX-144] isRequired validation in Cruds moved from @preCreate, @preCreate-projection, @preModify, and @preModify-projection to their @pre-validation anchor counterparts.
  • [NSX-166] Data projector in Struts UI now does not show a “find failed” warning after element deletion.
  • [NSX-180] Added missing details method variable within the find method of a customizable finder without field operator pairs.
  • [NSX-181] Added custom anchors to the form html file of a customizable finder.
  • [expansionTrace] fixed double-expansion needlessly failing expansionTrace

4.19.4 (2021-07-19)

Added

  • Added applicationInstanceOption vega.transient.taskBean.mImplementation to provide TaskBean implementation under previous variable name [VEGA-162]
  • Marked implementation variable in TaskBean as final

4.19.3 (2021-07-15)

Added

  • [JPA] Ln04 linkFields now support fieldOption hasOtmMappedBy [NSX-172]

4.19.2 (2021-07-15)

Fixed

  • [cruds] resolveDataRef and findData now returns error if the the functional key is malformed (such as having null or empty fields) [NSX-69]
  • [finders] functional key no longer requires explicit findBy<fk_fields> finder (also requires prime-core 2021.3.1+)

4.19.1 (2021-07-08)

Reverted

  • [finders] Reverted FinderBean generics signatures (<T>) back to wildcard signatures (<?>) due to downstream incompatibility

4.19.0 (2021-07-05)

Added

  • [finders] Added customizable finders via finderOption isCustomizableFinder [NSX-164]
    • customizable finder expands like a regular finder, however it provides customization anchors within the FinderBean
  • [finders] Added finderOption noViewLayer to exclude a finder from the UI
    • supported by both 2.x and 1.x UI
  • [finders] Added Gte and Lte operators [NSX-157]
  • [finders] Added Null, Notnull, In, and Nin (not in) operators [NSX-117],[NSX-157]
    • no UI support yet; use them with customizable, custom, or noViewLayer finders
    • see foundation for the semantics of these finders
  • [core] Added support for SQL anchor comment formats (line -- %s, block /*%s*/)
  • [maven] Added applicationInstanceOption experimental.maven.logicLayer.noDataTestSources to no longer compile data layer test sources and test resources second time within the logic layer pom
  • [NSX-163] Added field option validation.listField. This option adds a validation in the bean class, which matches incoming values of that field with the options configured in the TagValuePair table. If the value is not a valid option, the validation will return an error.

Fixed

  • [NSX-130] Added missing uniqueKey validation to createOrModify method in the bean

4.17.1 (2022-01-19)

Fixed

  • Fixed web.xml containing duplicate @servlets and custom-servlets anchors

4.17.0 (2021-06-15)

Added

  • Added valueListTag to connectorField. By provided a value, the field will be rendered as a dropdown, where the options will be selected based on the matching instances in the TagValuePair table. (Only for expanded command form)

4.16.3 (2021-06-08)

Fixed

  • Fixed some issues with the experimental.workflow.batchLess option:
    • Exclude duplicate instances
    • Prevent double check if initial find did not return any results

4.16.2 (2021-06-08)

Changed

  • Changed SQL Server dialect for Hibernate to SQLServer2012Dialect to have support for native sequences. Versions of SQL server older than 2012 are no longer supported by Microsoft as af May 2020.

4.16.1 (2021-05-17)

Added

  • Added clean-harvest support for harvest and test directories; fixed some edge cases for ext harvesting
  • Added DataElement option vega.localInterface.enableExtends to enable extending DataElement’s Local interface
    • note that vega.*, rigel.*, and other star-named options are not be used without prior consultation

4.16.0 (2021-05-07)

Added

  • [experimental] Added applicationInstance option experimental.workflow.useExecutorService, which enables the workflow to run with an executorService. The api of the executorService allows us to more efficiently chain tasks. This can improve throughput for workflows where there is a large difference between the time for each task in the batch.

    To get this to work on TomEE, you will also need to add the following to your tomee.xml:

    <Resource id="executorService" type="ManagedExecutorService">
      Core = 10
      Max = 25
      KeepAlive = 5 s
      Queue = 15
      ThreadFactory = org.apache.openejb.threads.impl.ManagedThreadFactoryImpl
      Lazy = true
    </Resource>
    

    Also note that the queue size should be correctly configures for all workflows. Otherwise, the executorService might start rejecting tasks from simultaneous workflow runs.

    To get this to work on another application server, configure the ManagedExecutorService and then add a ParamTargetValue with paramName workflow.executorService.jndiName, target ExecutorServiceTaskProcessor and value equal to the jndiName of the ManagedExecutorService.

  • [experimental] Added flowElement option experimental.workflow.batchLess. This will change the EngineBean so that it fetches new instances when executing tasks. With this change, the EngineBean will relentlessly try to execute all possible tasks for each StateTask in one run. Note that this feature can create issues, so keep these considerations in mind:

    • If there is a cycle in the workflow, this can cause the run to go on endlessly .
    • Each StateTask is still executed sequentially, meaning it can take a while before the 2nd, 3rd etc. task are executed. You can combine this option with sequencingStrategy=greedy to improve the response time.
    • The settings works best with claims, since that prevents the same instance from being fetched twice. Though without, there will not be any functional problems. (The count of tasks processed may yield strange results though)

Changed

  • The EngineBeanExpander now prefers a finder with Se to Eq when selecting the correct finder.
  • The EngineBeanExpander will explicitly check for the existence of the finder used when fetching a new batch during expansion.

4.15.5 (2021-05-06)

Changed

  • When Hibernate 5 is selected with an Oracle Database as target, the Oracle 12c dialect is now used.

4.15.4 (2021-05-03)

Fixed

  • Fixed artifact file naming in expansionTrace not being relative
  • Fixed featureSegments in expansionTrace to also contain expanderFeature reference and feature anchor name (with @ prefix)

4.15.3 (2021-04-30)

Reverted

  • Revert change that made ExporterActionExpander and ImporterActionExpander always expand, not just with options includeCsvExport and includeCsvImport. While this change was made to promote the usage of expanded code for exporting/importing, it can create collisions with existing custom code. Hence, the actions are now only expanded with the csv options, or with the component option io.strutsAction.

4.15.2 (2021-04-27)

Fixed

  • Fixed error when expanding ExporterActionExpander with a DataElement without finders. Note: This has only been added for backwards compatibility. To ensure regular behaviour, it is required to at least add a findAll finder.

4.15.1 (2021-04-22)

Added

  • Added several feature anchors for noDataLayer in BeanExpander

4.15.0 (2021-04-15)

Added

  • Added some variables to artifact path scope for easier customization:
    • isHarvest: a boolean value that is true iff running a harvest. You can use this to specify where the harvest files should end up. E.g <artifactPath>$if(isHarvest)$$componentRoot.directory$/foo$else$$application.root$/foo/components/$element.component.name$$endif$/sub/path</artifactPath
    • technologyDir: the subdirectory for the expander’s technology setting. E.g. build/$technologyDir$/ will translate to build/common or build/ejb etc.
    • sourceDir: the subdirectory for the expander’s sourceType setting. E.g. main/$sourceType$ will translate to main/src or main/js
    • genDir: will translate to gen/ during expansion, or an empty string during harvest
    • expansionRoot.directory: the root directory of the expansion
  • Added kebab format for stringtemplates (and artifactPath), which converts camelcase to dashed lowercase
  • Added ApplicationOptionType/ComponentOptionType experimental.persistence.defaultIdentifier to be used with values sequence or identityColumn to consistently specify the use of a sequence or identity column for id generation in the database
  • Added ApplicationOptionType/ComponentOptionType experimental.persistence.sequence.defaultSchema to set a custom schema when experimental.persistence.defaultIdentifier: sequence is used, instead of defaulting to the component schema
  • Added ApplicationOptionType/ComponentOptionType experimental.persistence.sequence.defaultName to set a custom sequence name when experimental.persistence.defaultIdentifier: sequence is used, instead of defaulting to NS_SEQUENCE

4.14.1 (2021-04-09)

Reverted

  • Reverted addition of combined sources jars due to deployment conflicts

4.14.0 (2021-04-09)

Added

  • Added build config for complete sources jar
  • Added FieldOptionType experimental.instanceView.stringDisplayHandler for String fields to provide custom field binding for InstanceViewHtml pages
    • e.g. fieldOption("experimental.instanceView.stringDisplayHandler : markdown")
  • Added FieldOptionType experimental.valueFieldType.storageType for String fields to customize database representation
    • e.g. fieldOption("experimental.valueFieldType.storageType : varchar : 1024")
  • Merged v4.11.9

Changed

  • [struts2] Agents are now initialized in a prepare step for most struts actions, so that interceptors have the chance to run first.
  • [knockout] Rearranged anchors in finder forms to make more sense

Fixed

  • Add more information to exceptions occurring during isApplicable mapping
  • [expansionTrace] Fixed ext file missing content
  • [expansionTrace] Fixed inconsistent URI paths
  • Fixed FeatureInjector producing method groups for segments with blank content
  • Removed print statements from StrutsValidatorExpander
  • Fixed an import for branching tasks in BeanExpander (task)

Removed

  • Dropped support for nsfInstallation file
  • Removed PrimeRadiant-specific expanders and features
  • Removed obsolete expanders
    • net.democritus.expander.ejb3.serviceElement.TaskLocalExpander
    • net.democritus.expander.ejb3.serviceElement.TaskRemoteExpander

4.13.5 (2021-03-05)

Fixed

  • Fixed issue where custom feature anchors would be removed when expanding

4.13.4 (2021-03-01)

Fixed

  • Fixed ArtifactFeatureExpander not using ModelBuildFactory correctly

4.13.3 (2021-02-18)

Fixed

  • Fixed linkFields in functional key DataRefs not being resolved before find.

4.13.2 (2021-02-15)

Added

  • Merged v4.12.4

Fixed

  • Fixed default-complete application.menu adding noViewLayer elements

4.13.1 (2021-02-11)

Added

  • Merged v4.12.3

4.13.0 (2021-02-11)

Added

  • Page title in ko2 UI is now translated property
  • SearchDetails now has a field skipCount that can be set to true to skip the count query during a find
  • Added a new default-complete profile to application menu listing all applicable components/dataElements
    • nsx-runtime v2021.0.0 will fallback to this default-complete, if no other profile is available
    • both Application and Component navigations now have XSDs

Changed

  • The title in the menu of a page has been changed to a separate property (<component>.<element>.menu.title)
  • Renamed expansionOption disableExpansionTrace to expansion.trace.enable (and flipped the logic)
  • Renamed expansionOption exportTraceZip to expansion.trace.exportToZip
    • if defined, relative paths are now resolved against expansionSettings.expansionDirectory

Fixed

  • Fixed issue with bulk delete dialog throwing error when delete action is not allowed
  • Fixed imports for CascadeDelete
  • Fixed ComponentRootPomExpander ignoring applicationInstanceOption no{name}Layer
  • Added experimental applicationInstanceOption experimental.maven.noViewPom to exclude view from maven reactor

4.12.4 (2021-02-11)

Fixed

  • Fixed ModifyAction expander and struts reference option conditions not in sync

4.12.3 (2021-02-11)

Fixed

  • Fixed ModifyAction being referenced in struts element xml without cruds.modifyWithProjection option

4.12.2 (2021-02-09)

Changed

  • Made createWithProjection() and modifyWithProjection() optional.
    • Add cruds.createWithProjection to add createWithProjection(). This will move the create anchors in the cruds class, so check for any broken custom code.
    • Add cruds.modifyWithProjection to add modifyWithProjection(). This was the behaviour for the previous versions.
  • The createOrModify() method implementation will be different depending on which methods are available (see options above).

Removed

  • Removed BeanAnchor expanders

4.12.1 (2021-01-26)

Fixed

  • Fixed issue with legacy.searchDataRefMethods.reenable
  • Do not expand for legacy.oldCollectionMethods.reenable and legacy.oldSearchMethods.reenable with noDataLayer
  • Using finders.enableTypedFinders resulted in a compilation error

4.12.0 (2021-01-14)

Added

  • Added createOrModify() method that updates an instance if it already exists in the database and creates it otherwise.
  • Added createWithProjection() method to create an instance with a projection
  • Added resolveDataRef() method that takes any DataRef and returns a DataRef with database values, if it exists.
  • Added delete(dataRef) method to replace the delete based on id
  • Added ApplicationInstance options to replace settings in GlobalOptionSettings:
    • struts.security.custom replaces useJavaEESecurity=TRUE, or, don’t have account component in your application
    • struts.security.csrfProtection replaces useCsrfProtection
    • struts.security.enforceHttpMethod replaces enforceHttpMethod
    • baseCompsMode=NONE can be replaced with leaving out the account component Old behaviour is kept backwards compatible:
    • useJavaEESecurity=TRUE and baseCompsModel=NONE always activate, even if there is an account component present
    • csrfProtection and enforceHttpMethod can be activated both with the new options and the GlobalOptionSettings
  • To enable soft delete, cruds.softDelete can be used instead of naming a field disabled
  • Added DataElementFindDetails interface for every DataElement, which is implemented by the FindDetails class of every Finder when using the ApplicationInstance option finders.enableTypedFinders
  • Constraint on type of the finder in all find() methods to prevent the use of finders with agents of different DataElements when using the ApplicationInstance option finders.enableTypedFinders
  • New implementation for mapping finders to their implementation without reflection when targeting at least Java 8 and using the ApplicationInstance option finders.enableTypedFinders
  • Added a number of descriptions to expanders, expansionSteps and expansionResources
  • Added several feature anchors to task artifacts
  • Added several feature anchors for commands

Fixed

  • Cleaned up inconsistencies in html templates
  • Removed some redundant imports
  • Fixed an issue with using strictly equals for flowElement in InterruptRecoverer

Changed

  • Projector classes now use resolveDataRef() to resolve linkFields during create/modify, meaning functionalKeys will also be resolved. (This previously worked only for Ln02)
  • Projector classes now return projection.getDataRef() in the getDataRef() method, which should include more data
  • As a result of the previous change, modify() now correctly fetches the target instance based on name or functionalKey, not just on id

Removed

Removed several outdated methods. To revert them, use the following options:

  • legacy.oldCollectionMethods.reenable: raw methods to fetch collections
  • legacy.oldSearchMethods.reenable: raw methods to search instances
  • legacy.logicDataMethods.reenable: methods in bean using Data class or other data layer artifacts
  • legacy.relationRetrievalMethods.reenable: methods in agent to fetch instances of related dataElements
  • legacy.searchDataRefMethods.reenable: methods to search instances with a SearchDataRef object instead of the more modern finder objects

Note

  • nsx-actions.js:performSearch() uses the searchDataRef-based find action. So if you wish to use this method, enable legacy.searchDataRefMethods.reenable

4.11.9 (2021-02-08)

Fixed

  • Fixed an issue with artifactPath caching for delegating composites

4.11.8 (2021-01-21)

Fixed

  • Fixed having a single option for pageSize generating a pageSize picker with a single option

4.11.7 (2021-01-15)

Fixed

  • Fixed issue where getName() on Data object of a DataElement with option nameNotWanted could throw a NullPointerException

4.11.6 (2021-01-04)

Fixed

  • Fixed feature anchors with option separator: '\n' to work as expected

4.11.5 (2020-12-18)

Fixed

  • Fixed an issue where runWorkflowWithTargets() would be interrupted because of the status of an engineService
  • Fixed bulk delete in combination with ejbPolicy=LOCAL

4.11.4 (2020-12-08)

Fixed

  • Fixed issue with any expanders during harvest

4.11.3 (2020-11-27)

Added

Added field options for second generation UI:

  • cruds.form.hide: Hide this field in all forms
  • cruds.form.hideOnCreate: Hide this field on the create form
  • cruds.form.hideOnModify: Hide this field on the edit form

  • cruds.form.disable: Disable this field in all forms
  • cruds.form.disableOnCreate: Disable this field on the create form
  • cruds.form.disableOnModify: Disable this field on the edit form

Added data/component/applicationInstance option cruds.table.pageSize, which can be configured as follows:

  • cruds.table.pageSize: 10: set the pageSize to specific number (10 in this case)
  • cruds.table.pageSize: unlimited: disable paging
  • cruds.table.pageSize: 10, 25, 50: add a dropdown to the table to select the pageSize (her with options 10, 25 and 50)

Fixed

  • Fixed issue where field errors would not show

4.11.2 (2020-11-25)

Fixed

  • Fixed bulk delete for waterfall tables

4.11.1 (2020-11-24)

Fixed

  • Fixed issue in form.js with fileUpload features

4.11.0 (2020-11-24)

Changed

  • expansionTrace zip: Replace :: with // when using dataRefs as value to avoid parsing ambiguity

Added

  • [phase] Added initialize phase, which is present for both harvest and expand and runs at the start
  • [cruds] Added bulk delete feature, activated by appInstance option cruds.bulk.delete
  • [UI] Added expander for -actions.js file, which contains functions for UI actions sent to the backend
  • [TreeToPrime] Added feature for PrimeToTree to automatically provision missing option types in PR

4.10.6 (2020-11-24)

Fixed

  • Fixed issue where artifactPathModifiers were being calculated before isApplicable

4.10.5 (2020-11-12)

  • Merged v4.9.4

4.10.4 (2020-11-10)

Added

  • Applied changes to mapping parameters and delegates to isApplicable conditions as well

Fixed

  • Fixed issue with 4.10.3 where calculating the artifactPath would throw an exception at runtime

4.10.3 (2020-11-09)

Changed

  • Changed how delegating and extendable composites work:
    • delegating: changes the variable named after the element to the ‘model’ object, adds <elementName>Wrapper variable for the composite object
    • extendable: extensions can be accessed with <parent>.getExtension['<extensionName>']

Added

  • Added feature as parameter in mapping files for features
  • Added expansionResource as parameter in any mapping file
  • Added parent element and other ancestors as parameter in any mapping file (e.g. use component in DataElement expander)

4.10.2 (2020-11-05)

Fixed

  • Additional fix for issues with missing dependencies

4.10.1 (2020-11-04)

Fixed

  • Removed scope provided for multiple dependencies so that other projects can depend on just Expanders instead of all related artifacts. Instead, build is managed with assembly descriptor.

Updated

  • Merged changes from v4.8.2 release

4.10.0 (2020-10-29)

Added

  • [mapping] Any property or method calls to a composite implementing DelegatingComposite are delegated to the internal model object.
  • [mapping] Extensions can be added to ExtendableComposites to use them as regular properties in the mapping files

Updated

  • Uses prime-core 2020.13.2 as source for elements classes instead of elements-shared etc.

4.9.4 (2020-10-30)

Changed

  • [fileUpload feature] Fixed improper handling of URI/File in file upload; improved error reporting

Fixed

  • Fixed expansion using different encoding than harvesting

4.9.3 (2020-10-29)

Added

  • [persistence.xml] Use Hibernate 5’s org.hibernate.jpa.HibernatePersistenceProvider when configured
    • to enable, add applicationInstanceOption hibernate.version : 5
    • by default (or when version is set to 4), we use the current org.hibernate.ejb.HibernatePersistence

4.9.2 (2020-10-20)

Changed

  • [internal] Internal reorganization
    • Moved src under Expanders module
    • Fixed expanders-test-utils depending on expanders-core instead of e-common + e-skeleton (to avoid cyclic dependency)

4.9.1 (2020-10-09)

Added

  • [maven] The component option maven.component.isJarModule will make sure the logic layer of your component is built as a jar module instead of an ejb module.
  • [internal] Added BlockingJobManager to run single-threaded for debugging
  • [perf] Added caching for ArtifactPathBuilder
  • [perf] Bunch of caching and general performance improvements

Fixed

  • [utils] Updated isApplicable on ReporterExpander to only expand if the component has a dependency on utils

Changed

  • [TreeToPrime] TreeToPrime expanders are now only active if the applicationInstance option enableTreeToPrime is defined
  • [js] plain AMD/RequireJS returns replaced with CommonJS-like exports
    • return { a : a }; vs var exports = {}; exports.a = a; return exports;
    • has no impact on runtime functionality
    • enables better module detection for VSCode+tsc+JS combination

Updated

  • [internal] expanders-skeleton updated expanders 4.0.2.2 -> 4.7.0
  • [internal] updated nsx-parent 2019.5 -> 2020.9.1

Removed

  • [test] Removed deprecated ArtifactExpander#getContent
    • use ArtifactExpander#getContentWithoutFeatures or ArtifactExpander#getArtifact#getContent

4.9.0 (2020-09-30)

This version releases changes made to make the metamodel-stack possible.
The most important feature is the introduction of expanders-core, which includes only the expanders infrastructure needed to expand anything.

Updated

  • Merged changes from v4.6.x,v4.7.x, and v4.8.x (v4.8.1) releases

4.8.2 (2020-11-02)

Added

  • [valueFieldType] Added error message when referencing a valueFieldType that is not from the same component or from a componentDependency
  • [valueFieldType] Added error message finding a valueFieldType template which is not mapped to any valueFieldType in the model

Fixed

  • [version field] Added missing VersionField feature, which adds optimistic locking to a dataElement

4.8.1 (2020-09-25)

Fixed

  • [claims] Fixed some compile issues with java 7

4.8.0 (2020-09-24)

  • [anchors] Added several feature anchors to ProjectionPojoExpander
  • [workflow] Added claimInstances() method to claimable dataElements
  • [workflow] Added support in engineBean for runWorkflowWithEngineService() and runWorkflowWithTargets() methods

Changed

  • [ui] Modified defineSearchBar() function to return an object containing the search field value observable + calling it and storing the result in the page-after anchor.

4.7.1 (2020-09-30)

Fixed

  • Fixed issues with java_pojo.stg or ValueFieldTypeMapping.xml not being available in tests

4.7.0 (2020-09-08)

Fixed

  • Fixed css class of finder button in UI2
  • Fixed valueFieldType template loading to search for both name and fullType. (This fixes issues with DateTime on Linux)

4.6.0 (2020-06-29)

Added

  • The FinderBean will now skip any data queries where the result is expected to be an empty set, based on the count result or if the rowsPerPage is set to 0. Can be disabled with the option jpa.optimization.skipDataQuery.disable.

Changed

  • All essential expander classes are now gathered in expanders-core. Expansion-resources should depend on this as much as possible instead of Expanders, so that they can be expanded without the need of the default expanders stack.
  • field-type-expanders contains essentials for value-field-types
  • functional-key-expanders contains essentials for functional key dataRefs
  • Tester classes now use PrimeDataLoader from elements-ioxml, since it provides better support for additional data-resources outside prime-data.

4.5.6 (2020-08-26)

Fixed

  • [expanders-tests-utils] Fixed loading of external DataResources when testing Expanders

4.5.5 (2020-08-21)

Updated

  • Merged changes from v4.4.7-v4.4.12 to v4.5.5

4.5.4 (2020-08-17)

Fixed

  • Fixed css class of finder button in UI2
  • Fixed valueFieldType template loading to search for both name and fullType. (This fixes issues with DateTime on Linux)

4.5.3 (2020-07-03)

Fixed

  • Fixed java 11 warning about illegal reflective access

4.5.2 (2020-07-01)

Fixed

  • Fixed Ln03 setter in CrudsExpander by removing a reference to non-existent exception

4.5.1 (2020-06-16)

Changed

  • Updated commons-io to 2.7

Fixed

  • Fixed read streams not being closed when comparing files for overriding

4.5.0 (2020-05-29)

Added

  • Added FeatureTester.isApplicable and FeatureTester.isNotApplicable

Changed

  • Updated dependencies

4.4.12 (2020-07-02)

Fixed

  • Fixed Ln03 setter in CrudsExpander by removing a reference to non-existent exception

4.4.11 (2020-06-25)

Fixed

  • DataRefConverter now checks for empty Strings instead of just null values before parsing functional keys

4.4.10 (2020-06-15)

Added

  • Added custom and feature anchors to FinderBeanExpander

4.4.9 (2020-06-15)

Added

  • Added feature anchors to FinderBean

4.4.8 (2020-05-28)

  • Internal cleanup

4.4.7 (2020-05-28)

Changed

  • Updated dependencies

4.4.6 (2020-05-28)

Added

  • Added several anchors to getData() and getDataRef() methods in the CrudsExpander
  • Added @anchor:includes to component struts XML

Fixed

  • Fixed issue where DateLong fields were not initialized as Date fields in the forms, which created issues with the timezone conversions.

4.4.5 (2020-05-11)

Added

  • Ln03 fields can now be imported and exported with csv files.

Fixed

  • The shouldEngineRun method in engineBeans should now fail correctly is the engineService can not be found.

4.4.3 (2020-05-04)

Changed

  • EditorConfig now applied to all file types + some additional rules.

Fixed

  • Fixed issue with graph options using the wrong page template
  • Fixed isRequired option for Ln03 fields

4.4.1 (2020-04-27)

Fixed

  • Fixed OGNL List.exists not being registered for let inside included mappings.

4.4.0 (2020-04-24)

Added

  • ApplicationInstance or component options jpa.datasource will set the data-sources in the persistence.xml file. The value of the option should refer to the name of the custom data-source. The option jpa.datasource.nonjta can be added to define a specific non-jta data-source.
  • ApplicationInstance option jpa.entity.name.format will define the naming strategy for jpa entities. By default, this is the fully qualified java name. Alternative formats are:
    • java_underscore: fully qualified java name, but with . replaced with _
    • element: <component.name>.<element.name>
    • underscore: <component.name>_<element.name>

Changed

  • RecursiveDirectoryCopier can now handle copying from zip files

Removed

  • WebStylesDirectoryCopier has been moved to web-styles

4.3.10 (2020-04-27)

Fixed

  • (backport) Fixed OGNL List.exists not being registered for let inside included mappings.

4.3.9 (2020-04-16)

Added

  • Added jetty-schemas to WAR pom to go with JEE6+

Changed

  • JavaEE version (technicalInfrastructure.jeeVersion) must be the spec name (5, 6, …), and not a patch version ( 6.0.15)

4.3.8 (2020-04-14)

Fixed

  • [internal] Updated OGNL and removed use of single-equals comparator pre-processing of OGNL statements
    • ==/eq should now work as expected even on nulls (null == 'string') and non-Comparable objects (by using .equals() method instead of identity comparison)
    • OGNL assignment (=) is no longer broken, although its excessive use is not recommended

4.3.7 (2020-04-14)

Fixed

  • [internal] Fixed pre-compiled OGNL expressions being ignored sometimes

Changed

  • [internal] Enabled mapping cache by default
    • disable with flag expanders.mappingReader.useCache in case of issues
    • if error occurs, the XML stacktrace is still likely incorrect, but expansion can be re-run with the cache disabled to (temporarily) get correct stacktrace

4.3.6 (2020-04-14)

Added

  • Added multiple anchors to InstanceViewHtmlExpander and ListHtmlExpander
  • Added multiple anchors to WebXmlExpander
  • Added support for src directories in application control directory. (disable with applicationInstance option disableControlSources)
  • Added HSTSFilterExpander, which adds a Strict-Transport-Security header to each response, which is activated by the applicationInstance option security.hstsHeader. The value of this option can set the content of the header if the default content does not suffice.

Fixed

  • Fixed EngineBeanExpander missing extra imports for taskStatus and timerStatus where necessary
  • Fixed dataElement.LocalExpander running for REMOTE ejb policy.
  • Fixed dataElement.AgentLocalExpander running for REMOTE ejb policy.

Changed

  • [elements-ioxml] ImportRunners now print the result of an import to the console
  • [elements-ioxml] TreeToPrime now correctly logs errors when updating instances during imports

4.3.5 (2020-04-02)

Added

  • Added isService flow option which adds logic to make a flow into a service.

Changed

  • flag switch expanders.artifactPathBuilder.useJavaMapping is now enabled by default

Fixed

  • Fixed EngineBeanExpander missing flowElement.targetClass imports when in a different package
  • Fixed EngineBeanExpander missing shutdown check in processBatch method
  • Fixed StateTransitioner’s endTransition() not updating taskStatus

4.3.4 (2020-03-30)

Fixed

  • [knockout] fixed custom value field types rendering as [Object object]
  • Fixed duplication for defaultValue feature
  • Fixed issue with long types for defaultValue feature

4.3.3 (2020-03-30)

Fixed

  • Fixed KoListHtmlExpander not processing calculated fields
  • Unfixed KoListHtmlExpander to match 3.x behavior
    • when name is not in isInfoField projection, it is now ignored for all projections
    • name field is always forced first irrespective of declared field order

4.3.2 (2020-03-26)

Changed

  • Updated maven plugins to their latest versions
    • compiler-plugin 3.8.1, maven-ear-plugin 3.0.2, maven-war-plugin 3.2.3, maven-ejb-plugin 3.0.1, build-helper-maven-plugin 3.0.0, maven-assembly-plugin 3.2.0
  • Added support for targeting JDK9 and higher
    • not specifying technicalInfrastructure.javaVersion now throws an exception instead of silently defaulting to 1.6
  • [experimental] added applicationInstanceOption experimental.maven.useIncrementalCompilation to speed up repeated builds
  • [experimental] added applicationInstanceOption experimental.maven.speedOverSize to enable caching and disable compression of ear/war builds
  • [experimental] set flag switches via expansionOption javaProperty.my.propertyName

4.3.1 (2020-03-26)

Added

  • [experimental] property flags can be set via environment variables as well
    • e.g. property ‘expanders.artifactPathBuilder.useJavaMapping’ or env ‘EXPANDERS_ARTIFACTPATHBUILDER_USEJAVAMAPPING’
  • ApplicationInstanceOption struts.unauthorized will define the behaviour of the application when the user is unauthorized. If undefined or set to redirect, the application will redirect unauthorized users to the relogin page. If set to error-page, a dedicated unauthorized error-page will be expanded.
  • ApplicationInstanceOption struts.unauthorized.json will define the response on an unauthorized json request. The option value should be status <statusCode> where statusCode is 401 or another http status code. A result will be added to struts that returns this status code.
  • Feature anchors can add a sort option with the fully qualified name of a sorter class. This sorter class should implement Comparator<FeatureSegmentComposite>. Adding this will make sure the feature segments are sorted by the provided sorter class before being injected.
  • Added several custom and feature anchors in InstanceFormHtmlExpander and InstanceFormJsExpander

Changed

  • Expanders will now generate more /gen/ directories on application level to prevent build failures if those directories are added to layerImplementations, but none of the related expanders were activated.

Fixed

  • Fixed KoListHtmlExpander running only on info projection (fixes missing dataElement-dataProjection-ko-list.html files)

4.3.0 (2020-03-19)

Added

  • [experimental] The field option defaultValue will provide a default field value for all new instances. E.g. add defaultValue: true to a Boolean field to set it to true by default or add defaultValue: 'new name' to a String field to provide ‘new name’ as initial value.

Changed

  • Expanders now require Java 8+
  • Struts Expanders now target either Struts 2.3 or Struts 2.5, with Struts 2.5 being the default
    • to use struts 2.3, add applicationInstanceOption struts.version with value 2.3
    • requires nsx-runtime, baseComponents, and prime-data 2020.5.0+
  • Soft delete on modify with disabled=yes is now opt-in behind applicationInstanceOption('cruds.softDeleteOnModify')

Fixed

  • Applicable layers, layer implementation technologies, and library technologies are now properly filtered when building POM dependency/dependencyManagement lists.

Removed

  • Removed Struts2View feature for unused Struts view layer

4.2.7 (2020-03-16)

Added

  • New anchors in BeanExpander (CsvFeature):
    • anchor:custom-post-import
    • anchor:custom-post-export
    • anchor:custom-import-unsupported
    • anchor:custom-export-unsupported
  • New anchors in CsvExporterImplExpander:
    • anchor:custom-post-export
    • anchor:custom-map-instance
  • New anchors in CsvImporterImplExpander:
    • anchor:custom-post-import
    • anchor:custom-post-persist

Changed

  • Methods importFile() and export() in bean now define an importResult or exportResult, which is returned at the end of the method. This allows for new anchors. Though usual customisations should not be broken, it might be worthwhile to check whether the code may need to be cleaned up.

4.2.4 (2020-02-26)

Added

  • custom-access-info-stack and custom-access-info-default-style-stack anchors added to account security stack in struts header xml.

Changed

  • Loosened encoding generated artifacts.

4.2.2 (2020-02-21)

Changed

  • ioxml client expanders now use CliParser from nsx-runtime/nsx-shared-cli
  • Moved initialization of agent in CommandPerformer to prepare method to allow custom interceptors to provide an alternative UserContext.
  • Adjusted the encoding so that all templates are read as UTF-8 and all artifacts are generated to the same encoding.

Added

  • Struts field errors are now translated to CommandResult errors in the CommandPerformer action class.
    • Disable with applicationInstance option struts.disableStrutsErrorsToCommandResult.

4.2.1 (2020-02-11)

Changed

  • If the field option generateUuid is given the value if_empty, the field will only be set with a new UUID (on create) if the field was empty.
  • Expanded EditorConfig now includes support for .html files.

4.2.0 (2020-02-07)

Added

  • Added runExpansionStep() method to ExpanderTester and FeatureTester to run expansionSteps before testing. This can be useful if the expansionStep adds an option to the model or applies some other modification necessary for the test.
  • Projection pojo’s getDataRef() methods now return typed DataRef classes if functionalKey is defined
  • Otherwise, the getDataRef() methods return DataRefs with component, packageName and className filled in
  • EditorConfig file, which is applied to all gen (and gen_test) folders to ensure a consistent code formatting. This can be disabled using the ApplicationInstance option editorconfig.disabled. The rules can also be applied globally ( also to ext and test) using the ApplicationInstance option editorconfig.global.
  • The field option generateUuid will inject code to generate a new UUID in the create-afterProjection feature anchor of the cruds create method. This will ensure that a new UUID is generated and stored for these fields when an instance of the DataElement is created. The option is applicable to fields with a String or byte[] storage type.
  • For all active technologies a gen_test folder will be expanded with java and resources subfolders to allow expanders to expand unit tests that can be harvested.

Changed

  • Struts Expanders now target Struts-2.5
    • requires baseComponents 2020.2.0+ and nsx-runtime 2020.2.0+
  • Behavior of suffix parameter for feature anchors is now the same as the behavior of the suffix parameter in inline feature anchors. This means that the suffix will now be placed only after the last feature injected. The separator parameter is now also available, which places the separator in between all features. The combination of the separator and suffix parameters will mimic the previous behavior suffix, where it was placed after every injected feature. A prefix parameter was also added just as it is available in inline feature anchors. The prefix is placed in front of the first feature. E.g. @anchor:featurename(suffix : ', ')' is now @anchor:featurename(separator : ', ', suffix : ', ')'.

Fixed

  • Fixed bug in ExpansionJobManager that in some occasions would skip additional tasks added by additionalExpansionStep.

4.1.1.1 (2020-02-07)

Fixed

  • Fixed issue with manyToMany fields in old UI. The issue was caused by initializing the fields incorrectly in the <dataElement>-ko-mapper.js scripts.

4.1.1 (2020-01-22)

Fixed

  • Fixed TaskElement Proxy using getTaskRemoteName for LOCAL-only lookup

4.1.0 (2020-01-22)

Removed

  • Pre-rewrite (< v4.0.0) expander classes have been removed. If they are necessary nonetheless, add a expanders 3.2.1.7 or lower to the classpath

Added

  • Added before-harvest and after-harvest phases to the harvest runner.
  • Added ExpansionStepTester class to facilitate the implementation of tests of applicability conditions for additional expansion steps.
  • Added custom-annotations-getter-id and custom-annotations-setter-id anchors in Data class.

Changed

  • <Element>Cruds::project() now takes Context as input and only Data objects of the correct DataElement
  • Removed noCache result parameters from StrutsElementExpander. To reinsert them, use applicationInstance option struts.useNoCacheResult. These parameters have been removed because they overwrote the behaviour of the NoCachingInterceptor, which is more complete.
  • Value field type pojo comparison will now use identity comparison by default
  • Value field type pojo now provides a default hashcode function. Any custom implementation needs to be moved into the custom anchors. This can be disabled by adding componentOption valueFieldType.disableHashCodeMethod.
  • Table names are now escaped in the @Table annotations in the Data classes. This prevents collisions with reserved words in certain databases, such as User in SQL Server. This behavior can be disabled with the ApplicationInstanceOption db.schema.disableEscapeTableName.

Fixed

  • ValueFieldTypePojoExpander now only runs if valueFieldType.customTransportClass is false
  • Classes interacting with trees will now use the actual field name for children instead of the name of the child dataElement.
  • Fixed names for abbreviations in translation files (e.g. ‘ETB’ instead of ‘e t b’)
  • CALCULATED_FIELD with isRequired are no longer added to Projector’s checkRequired()
  • CALCULATED_FIELD with custom valueFieldType now correctly returns valueTypeClass in Cruds
  • @expanderComment in test STG templates is no longer tied to specific comment formats

4.0.9.1 (2020-01-08)

Fixed

  • Added missing imports for FunctionalKeyDataRefExpander
  • Functional key dataRefs toString() methods now return "" when on errors
  • Functional key dataRefs toString() methods will null-check values before converting to avoid nullPointerExceptions and “null” strings

4.0.9 (2020-01-06)

Added

  • Added expanderResource name to expanderComment

    e.g. <!-- expanded with nsx-expanders:4.0.9-SNAPSHOT, expansionResource org.normalizedsystems:sand-castle-expanders:1.0-SNAPSHOT -->

  • [experimental] Updated java-mapped ArtifactPath
    • toggled by -Dexpanders.artifactPathBuilder.useJavaMapping=true|false (false by default)
  • [experimental] Updated mapping cache corrupting XML stacktrace (disabled in 4.0.7.2)
    • toggled by -Dexpanders.mappingReader|mappingFactory.useCache=true|false (both false by default)
  • [experimental] Stop expansion on first error instead of collecting all failures first
    • toggled by -Dexpanders.expansion.failFast=true|false (false by default)
  • Added basic test-template caching

Fixed

  • Expander/… Tester method lookup now searches for org.junit.Test or org.junit.jupiter.api.Test annotated method in stacktrace

4.0.8.2 (2019-12-17)

Changed

  • Always use prime-data’s expansionResource.xml

Fixed

  • Fixed <elementTypeName>any</elementTypeName> failing type validation

4.0.8 (2019-12-16)

Fixed

  • CompositeFinderExpander: removed exception for dataElements with a parent which does not have a reverse field and replaced it with a customizable method

Added

  • New anchors to StateTransitioner:

    • anchor:custom-interim-before
    • anchor:custom-interim-error
    • anchor:custom-interim-after
    • anchor:custom-failed-before
    • anchor:custom-failed-error
    • anchor:custom-failed-after
    • anchor:custom-end-before
    • anchor:custom-end-error
    • anchor:custom-end-after
    • anchor:custom-revert-before
    • anchor:custom-revert-error
    • anchor:custom-revert-after
  • New anchors to DataRefConverterExpander:

    • anchor:custom-formatX

Changed

  • Extracted creation and update of TaskStatus instances in StateTransioner to WorkflowTaskStatus feature

4.0.7.7 (2019-12-06)

Changed

  • Updated dependencies

4.0.7.6 (2019-12-06)

Fixed

  • Added encoding of the HTML document to artifacts generated by PageHtmlExpander and IoPageHtmlExpander
  • Fixed indent of PageHtmlExpander

Added

  • New anchors to PageHtmlExpander and IoPageHtmlExpander:

    • anchor:custom-head
    • anchor:custom-script

4.0.7.5 (2019-12-02)

Added

  • Added SVG comment format

Fixed

  • Fixed expansion and harvest directories using applicationInstance.shortName instead of application.shortName
  • <Composite>ExpansionContext is now validated against <expanderComposite.elementTypeName>

4.0.7.3 (2019-11-21)

Added

  • Added artifactModifiers field to Expander which allows variables to be defined in ognl which can be used in the artifactName and Path

    Example of how to use it:


<expander name="...">
  <!--...-->
  <artifactModifiers>#{
  'postfix' : taskElement.getOption('useLocalInterfaceName').defined ? 'Local' : 'Remote'
  }
  </artifactModifiers>
  <artifactName>$taskElement.name$$postfix$.java</artifactName>
</expander>
  • Field elements are now expandable

4.0.7.2 (2019-11-12)

Fixed

  • Disabled caching of mapping files to prevent stacktrace from being corrupted

4.0.7.1 (2019-11-08)

Added

  • DataExpander now adds length property for BigString
    • @Column(columnDefinition="varchar(X)") becomes @Column(columnDefinition="varchar(X)", length = X)

Removed

  • Obsoleted JaxRs struts features

4.0.7 (2019-11-03)

Added

  • [testing] Added dependency on expanded onion specs
  • [testing] Use expanded ExpansionContext factories for tests setup

Changed

  • [testing] Default application and component expansion directories are C:/APPLICATION_ROOT and C:/COMPONENT_ROOT

4.0.6.3 (2019-10-29)

Fixed

  • CommandFormHtmlExpander now correctly expands Ln03/Ln06 fields
  • CommandPojoExpander initializes collections fields to placate struts

4.0.6.2 (2019-10-28)

Changed

  • Deprecated (original) hand-written onion specs

4.0.6.1 (2019-10-25)

Added

  • Implemented disableExpansionTrace expansionOption to speed up expansion. This disables the gathering of meta-data, used by the codeImport, reporting and nsx-model-querying.

Changed

  • Errors in cruds are now logged at ERROR level instead of INFO.
    • To revert the behavior, use applicationInstanceOption logging.cruds.degradeErrorToInfo. Note that this option will be eventually removed.

4.0.6 (2019-10-18)

Added

  • new anchors in net.democritus.expander.knockout.dataElement.SortingJsExpander:

    • anchor:custom-variables
    • anchor:custom-sorting-columns
    • anchor:custom-get-sort-fields
    • anchor:custom-after

4.0.5.3 (2019-10-14)

Added

  • new anchor in net.democritus.expander.common.projection.DataRefProjectorExpander:

    • anchor:custom-toData-setters

4.0.5.2 (2019-10-11)

Fixed

  • Remove duplicate anchor in CrudsExpander:

    • anchor:custom-variables

4.0.5.1 (2019-10-10)

Fixed

  • Downgrade persistence.xml version for JOnAS server

4.0.5 (2019-10-08)

Added

  • new anchor in net.democritus.expander.ejb3.serviceElement.EngineBeanExpander:

    • anchor:custom-after-loop
  • new anchors in net.democritus.expander.common.projection.ProjectorExpander:

    • anchor:custom-toData-setters
    • anchor:custom-project-setters
    • several feature anchors (used by expanders)
  • Added OpenJPA automatic schema updating that is enabled by default
  • Added applicationInstanceOption persistence.schemaUpdating to control automatic schema generation
    • none/empty or ‘update’ to enable, ‘none’ to disable
  • Added applicationInstanceOption experimental.cruds.failOnProjectionNotFound
    • return CrudsError when elements are not found via Cruds instead of CrudsSuccess(object-with-empty-fields)
  • Added ExpansionComposite to ExpansionConfigurationExpansionContext, which can be used in expanders to access meta information of the expansion (artifacts, custom insertions …).
  • Added expansion option exportTraceZip, which creates a zip which contains information on the expanded artifacts, custom insertions etc. This will replace the default expansion of artifacts.
  • Add expansion option skipPhase which lets you define which phases to skip during expansion (e.g overlay)
  • Added XML Schema to persistence.xml and updated version from 1.0 to 2.2

Changed

  • Using JDNI appName lookup (java:app/AppName) is now behind jndi.appName applicationInstanceOption
  • persistence.xml version updated to 2.2
  • ECLIPSELINK schema updating changed from create-tables to create-or-extend-tables
  • [struts] PerformerExpander now returns TaskResult.error() on perform failure

4.0.4 (2019-08-27)

Added

  • Expansion option harvestBaseComponents will make sure the baseComponents are harvested, as they are ignored by default.
  • Component Option cascadeDelete will add cascading delete for all collection fields with option aggregate: composite

    This option requires the option enableComposites to work

Fixed

  • Used application.shortName instead of applicationInstance.shortName during expansion
  • Removed dependencies on validationImplementation
  • Fixed issues with xml tag and directory names for ioxml

4.0.2.5 (2019-08-12)

Added

  • new anchors in net.democritus.expander.ejb3.flowElement.EngineBeanExpander

    • anchor:custom-orchestrate-before
    • anchor:custom-orchestrate-after
    • anchor:custom-batchDescription
    • anchor:custom-processBatch-before
    • anchor:custom-processBatch-after
    • anchor:custom-processTask-after
  • Expander for CompositeToTree (ioxml)


4.0.2.4 (2019-08-02)

Fixed

  • Fixed default constructor of functional dataRefs to set componentName, packageName and elementName
  • Migrated latest changes to ioxml expanders to composite-based expanders

4.0.2.3 (2019-08-01)

Fixed

  • Fixed target paths of both *-io-page-model.js and *-io-page.html file
  • Fixed error logs for import/export

4.0.2.2 (2019-07-30)

Fixed

  • Fixed external meta-expanders being ignored (since 4.0.1.6)

4.0.2.1 (2019-07-19)

Fixed

  • Fixed StringFile not sending the uploaded file to server

4.0.2 (2019-07-12)

Added

  • ExpansionOptions excludeExpanders, excludeFeatures and excludeExpansionSteps to exclude expanders etc. from running.
  • ExpansionOptions includeExpanders to select specific expanders to run.
  • ExpansionOption hideAnchors to hide all non-custom anchors
  • AdditionalExpansionSteps can introduce new jobs to the ExpansionJobManager to make external expansionRunner possible

4.0.1.7 (2019-07-10)

Fixed

  • Fixed issues with component-level overlay
  • Fixed issues with combination nameNotWanted + hasDisplayName not showing any names

4.0.1.3 (2019-07-04)

Fixed

  • Fixed issues with fields with type CALCULATED_FIELD in ListHtmlExpander and InstanceViewHtmlExpander (UI2)

4.0.1.2 (2019-06-26)

Added

  • Added missing dynamic DEPLOYMENT_NAME in ComponentMetaData for modern application servers

Fixed

  • Fixed nullPointerException in functionalKey dataRef to string method
  • Fixed issue with ValueFieldTypes in validators.xml

4.0.1.1 (2019-06-25)

Fixed

  • Fixed issues with Service Element Expanders
  • Fixed noDataLayer option being ignored
  • Fixed issues with full import of a new application
  • Restored names of enums for DataState to be backwards compatible with some edge cases

4.0.1 (2019-06-21)

Added

  • DataElements can define the option functionalKey
  • The flow option setBatchFinder will allow you to modify the finder used to find the next batch in your EngineBean
  • Finders can now use the Se (strictly equals) operator. In this case, only the = operator will be used in JPA and not, in case of a String, the LIKE operator.

    The Se operator can be used to e.g. findByStatusSe, which can then be used in the setBatchFinder option to avoid using a slow LIKE operator in your engineBean.

Changed

  • In previous versions, if a linkfield was set in the Cruds-class, any failure to find the linked instance would be ignored and the link would not be said. The setters have now been made stricter and will throw an exception should this occur. In order to avoid this behavior, use the application instance option disableStrictLinkMode.

    This will prevent the cruds layer from silently ignoring incorrect link fields during an import.

Fixed

  • A bug has been fixed where a Ln02 link field could not be set to null. This fix can be disabled with the application instance option disableFixNullableLn02.

4.0.0 (2019-06-12)

Added

  • Option hasTranslation now works for name field and findByNameEq finder
  • Option hasTranslation on field will be used for the translation of the corresponding finders the translation properties for the English translation will now contain correct English translations the pom.xml files of different layers may contain new source and resource directories to be more consistent with the ANT build

Fixed

  • Options no*Layer are now correctly applied, mainly when added as component options. If any artifacts are missing, check for options

Changed

  • Rework of the expander framework. The features of the expanders have been kept the same as the previous versions. The biggest changes will be in the use and extension of the expansion. There might be some small variations/improvements to the previous versions.
  • The classes in the client layer have been changed to allow version transparency between changes of a dataElement
  • The order of harvested anchors may change. Therefore it is best to harvest and commit these changes before making any functional changes. For more information, see harvest sorting.
  • The expansion from the PR will now take the CustomRepository of your components in account when expanding the application. Which means that if this repository is different from the customRepository of the applicationInstance, the expanders might be looking in the wrong harvest directories. To fix this, make sure that there is only one directory named after the component in all used source bases.