This document describes the steps needed to upgrade the edoras one application to 1.5.0.S121.
Please stop the edoras one server, perform all upgrade steps described below and then restart the server again at the end.
Encoded property support
If your project overwrites the property placeholder bean configuration and you want to make use of the
encoded property support then you will have to add the propertyEncoder
property to the propertyPlaceholderConfigurer
bean configuration:
<bean id="propertyPlaceholderConfigurer" class="com.edorasware.one.spring.OnePropertyPlaceholderConfigurer"> <property name="propertyEncoder" ref="propertyEncoder"/> ... </bean>
The propertyEncoder
bean is defined by the default edoras one Spring configuration and should not be changed.
Improved elasticsearch index support
elasticsearch Spring profile
In order to disable the elasticsearch integration without having to remove the edoras-gear-search
module as a
project dependency, a new elasticsearch
Spring profile has been added. This profile now needs to be added to
enable the elasticsearch integration.
SyncAdapter renamed to SyncWriter
The SyncAdapter
class has been renamed to SyncWriter
to better reflect the fact that it should
be used for writing changes to the index being synchronized. As this class is used in the IndexConfiguration
interface, any IndexConfiguration
implementations must be updated to include this change.
Indexing of work object definitions
The elasticsearch integration module now supports the indexing of work object definitions as well as work objects. After upgrading to this release, any IndexConfiguration implementation will have to implement the following methods to specify the indexing behaviour for work object definitions:
/**
* Allows work object definitions to be filtered before they are indexed / synchronized.
*
* Only work object definitions that are accepted by this filter method will
* be received by the individual indexing / synchronization methods.
*
* @param definition the work object definition to be filtered
* @return <code>true</code> if the work object definition should be indexed
*/
boolean accept(WorkObjectDefinition<?, ?> definition);
/**
* Called when a work object definition is added or updated, so that it can be added to
* the index.
*
* @param definition the work object definition
*/
void indexWorkObjectDefinition(WorkObjectDefinition<?, ?> definition);
/**
* Called when a work object definition is deleted, so that it can be removed from the index.
*
* @param definitionId the work object definition ID
*/
void deleteWorkObjectDefinition(WorkObjectDefinitionId definitionId);
/**
* Returns the predicate to be used for work object definition (re)synchronization.
*
* If no work object definition synchronization is required for this index, this
* method should return Optional.absent().
*
* @return the optional predicate to be used for (re)synchronization
*/
Optional<Predicate> getWorkObjectDefinitionSynchronizationPredicate();
/**
* Called when (re)syncing, so that a work object definition can be added to the
* working index.
*
* Please use the provided sync writer and working index name to update the working index.
*
* @param syncWriter the sync writer (should be used to update the working index)
* @param workingIndexName the working index name
* @param definition the work object definition to be added to the working index
*/
void syncUpdateWorkObjectDefinition(SyncWriter syncWriter,
String workingIndexName,
WorkObjectDefinition<?, ?> definition);
/**
* Called when (re)syncing, so that a work object definition can be deleted from the
* working index.
* <p>
* Please use the provided sync writer and working index name to update the working index.
*
* @param syncWriter the sync writer (should be used to update the working index)
* @param workingIndexName the working index name
* @param definitionId the work object definition ID to be removed from the working index
*/
void syncDeleteWorkObjectDefinition(SyncWriter syncWriter,
String workingIndexName,
WorkObjectDefinitionId definitionId);
The behaviour of these methods is exactly equivalent to the existing work object indexing methods.
If you have added definition indexing to your custom index configuration, or if you are using the default 'full index' configuration, then you will need to resynchronize the index to include the definition information.
Opting out of work object or definition synchronization
An index configuration can now choose to opt out of the synchronization process
for either work objects or work object definitions completely. The methods to return
the synchronization predicate for work objects or work object definitions now return an
Optional
value, where a return value of Optional.absent()
indicates that no synchronization
should be performed for the relevant entity type.
To opt-in to synchronization, return the predicate to select the items that should be added to the index:
return Optional.of(Predicate.EMPTY);
The corresponding accept()
method should always return false, and no implementation is
required for the corresponding syncUpdate
and syncDelete
methods.
Bootstrap project
Here you will find a list of files which have changed in the bootstrap project since the last release. This helps you check the difference between your bootstrap project version and the current one:
-
src/main/resources/com/edorasware/bootstrap/config/one.properties
-
password.validation.pattern
property was added