All notable changes to this project will be documented in this file, which follows the guidelines on Keep a CHANGELOG. This project adheres to Semantic Versioning.
2.0.0-rc2 2017-06-06
- Interceptor chain now adds the component name to the context so it can be used by the access control interceptor or anything else that needs it
- Access control Provider annotation and annotation scanning; this functionality has moved to the access control library
2.0.0-rc1 2017-05-31
- Refactor all framework components that are not internal so that they are provided as interfaces via new Framework API modules
- Rework interceptor chain so that it is specific to a service component, by allowing each component to provide an interceptor chain definition rather than using annotation scanning
- Upgrade to use framework parent POM 1.3.0
- Support for default sender destinations removed; senders now always require messaging clients to be provided, typically by generating one from the destination RAML.
- Test cases for random ZonedDateTime generators and added logging to show more info when they fail
- Javadoc errors
- Script for building dependencies locally
- Support for generating and discovering direct adapters, if a message destination exists locally a service component in the same application
1.7.1 2017-05-16
- Utility for browsing and deleting DLQ messages, backported from separate test utils library
- Support for adding additional fields when building metadata
1.7.0 2017-05-16
- Add test event log repository to the test-utils-core module
1.6.0 2017-05-05
- Support for PDF generation in Alfresco interface
- Service names with hyphens were also breaking other adapters and clients
1.5.1 2017-04-05
- Event listeners for services with a hyphen in the name generated invalid class names
1.5.0 - 2017-03-30
- MultipartRestClient in test-utils: client for multipart file uploads
- LiquibaseDatabaseBootstrapper in test-utils: bootstraps a database using your liquibase scripts
- Dependency on utilities-core
- Ability for multipart endpoint to handle multiple files
- Generators for generating multipart endpoints from RAML
- Generate random ZonedDateTime in different time zones and provide option to generate in UTC specific timezone
- Duplicate classes that are in utilities-core from the framework
- Configuration classes that are now in utilities-core
- Use File Service version 1.8.0
- Use Utilities version 1.6.0
- JsonEnvelopePayloadMatcher to support matching of JsonValue NULL payloads
1.4.3 - 2017-03-30
- Duplicate method names in REST client generator, fixed by making method name generation use more things
- Concurrently issue in event stream appends; optimistic locking did not kick in when it should
1.4.2 - 2017-03-08
- Uplift Resteasy dependency versions and changed to provided scope
- Allow JNDI values to fall back to globals
- Performance fix to internal optimistic locking failure retries
1.4.1 - 2017-02-13
- ObjectMapper truncation of converted ZoneDateTimes when milliseconds part ends with zero
- Ignore non vendor-specific media types while generating clients
1.4.0 - 2017-02-02
- JsonEnveloperBuilder in test-utils-core to replace the deprecated builer in DefaultJsonEnvelope.
- Generator support for CustomAdapter and CustomServiceComponent annotations
- Metadata causation being ignored in the Rest Adapter
- Deprecated the DefaultJsonEnvelope builder methods in favour of a test utils version.
1.3.0 - 2017-01-26
- Handle ACCEPTED(202) response type set in raml for asynchronous REST endpoints
- Fix of unclosed connections in MessageConsumerClient
- Log warning if generated rest adapter already exists
1.2.0 - 2017-01-19
- No wait retrieve method to MessageConsumerClient
- No close method to MessageConsumerClient
- wrong version of apache bean utils pulled in by open ejb core
1.1.0 - 2017-01-19
- Fix logging filter metadata bug
- Immediate retries to RetryInterceptor, defaults to 3 before applying wait period between retries
- Support for Http Methods DELETE, PATCH, POST and PUT. REST Adaptor and REST Client generators now support RAML that contains asynchronous DELETE, PATCH and PUT, and synchronous PATCH, POST and PUT.
- Support for matchers in TypeCheck class.
- Optimistic lock log message changed from warn to debug.
- Move default port provider to common module
- Add ConflictedResourceException for 409 responses
- Common-bom version to 1.6.0
1.0.1 - 2016-12-23
- Logging filter was breaking if a message payload contained the string _metadata to avoid having to parse the JSON; fixed so that it only looks for top level a top level _metadata field.
1.0.0 - 2016-12-16
- Logging request data is set in the SLF4J mapped diagnostic context (MDC) and can be added to the log output by setting %X{requestData} in the logger pattern
- Support for managing optimistic lock retry for event log, when using the PostgreSQL database. Default is to retry forever.
- ZonedDateTimeGenerator to generate random future or past ZonedDateTimes
- Improve ResponsePayloadMatcher to support string matchers on response payload
- Upgraded ObjectMapper to allow single arg constructors in Object serialization
- Aggregate snapshot repository enabled by default. This requires the
aggregate-snapshot-repository-liquibase
schema to have been applied to the event store database, which makes this release backwards incompatible - Event timestamps now added to private events automatically and stored in the event store as part
of the metadata and in a separate field. This requires the latest
event-repository-liquibase
schema to be applied to the event store database, which makes this release backwards incompatible
- DateTimeProvider after two months deprecation. Use Clock/UtcClock instead.
- JsonSchemaValidationMatcher to look for json schema in correct location
- JSON schema validation of date-time format fixed by using a forked version of the JSON schema validator library
- JsonSchemaValidationMatcher to fallback to raml maven dependency if not on json classpath
- File, file-api and file-alfresco modules
- File service interface
- Alfresco file service implementation
- Refactor random generators for string, uri and email
- Stream of streams event retrieval
- Proxy support to Rest Client
- JsonObjects toJsonArray method
- Improve BigDecimalGenerator to cover both positive and negative range
- Improve DoubleGenerator to cover the bounds of double
- TypeCheck class to provide better feedback on failure
- Parent pom to 1.2.0, common bom to 1.4.0 and raml-plugin to 1.3.0
- JDBC Repository resource close ordering
- Test cases related to random date generation
- ValueGenerator to randomly pick items from a given pool and renamed the class to ItemPicker
0.33.0 - 2016-10-31
- Support for RestClient to use proxy details from environment properties
- Matchers for matching handler and handler class methods, annotations and pass through process type (Sender or Requester)
- Empty stream matching to EventStreamMatcher
- toJsonArray utility function
- Improved event stream processing
0.32.0 - 2016-10-24
- JsonEnvelope.asJsonObject() for simple conversion of the entire envelope to a JsonObject.
- EventStreamMatcher to match stream of JsonEnvelopes appended
- RestPoller. A polling REST client utility for integration tests
- Mechanism for taking snapshots of aggregates, disabled by default. To enable, add a dependency on
the
aggregate-snapshot-service
module. Requires theaggregate-snapshot-repository-liquibase
schema to be applied to the event store. - JSON schema matching support in the JsonEnvelopeMatcher
- Added new module 'rest-core'
- Added 'rest-client-core' as a standard dependency for event-processor'
- Added 'hamcrest-date' as a standard dependency for 'test-utils-core'
- JsonEnvelopeMetadataMatcher to allow matching with JSON paths
- Deprecated PollingRestClient in favour of the new RestPoller
- RestProcessor now allows metadata from payload to be merged with headers instead of being overwritten
- Removed unwanted dependency on the RAML parser within the REST adapter so that adding the REST client to event processors does not break the application
- Failed release; do not use
0.30.0 - 2016-10-11
- Event buffer connection held open after exception in event listener
- RestClientProcessor tests clashing using common 8080 port
- JMS listeners for event topics did not use shared subscriptions. Fixing this allows multiple instances to run. Each message will be consumed only once across a cluster.
- Hamcrest Matchers for asserting JsonEnvelopes contained within either Streams or Lists
- New Clock interface to replace DateTimeProvider
- EnumPicker in random generators
- DateTimeProvider is now deprecated - use Clock instead
- JsonEnvelopeBuilder is now deprecated - use DefaultJsonEnvelope.envelope() instead
- Extend DefaultJsonEnvelope.Builder to accept JsonObject as part of the payload
- Unused JdbcConnectionProvider utility
0.29.0 - 2016-09-30
- 'Response is closed' bug in PollingRequestClient
- ZonedDateTimes methods to convert between ZDT and SQL timestamps
- LocalDate conversion functions
- EnveloperFactory method to create a Enveloper with a list of Event classes registered
- EventStreamMockHelper that provides a method to verify and return the Stream argument from a call to the EventStream append method
- DateProvider to allow easy mocking of date creating for testing
- Random generators and TypeCheck class for type-based testing
- Metrics per action name
- Event Store to include a 'date_created' timestamp field - added to the DB schema but not yet enabled in code
0.28.0 - 2016-09-21
- EventBufferInterceptor container discovery
0.27.0 - 2016-09-20
- JsonSchemaValidationMatcher class to validate json content against a schema
- PollingRequestClient class as a new implementation of the HttpResponsePoller
- Moved EventBufferInterceptor and EventFilterInterceptor to event-listener component
- Added withHeaders method to HttpResponsePoller
- BaseTransactionalTest to cleanup with rollback
- HttpResponsePoller, replaced with PollingRestClient
0.26.0 - 2016-09-20
- Failed release; do not use
0.25.0 - 2016-09-12
- sender.sendAsAdmin() method
- NPE JsonSenderWrapper
0.24.0 - 2016-09-08
- Configurable JNDI Auditing blacklist regex of action names in AuditingService
- Expose component metrics via Rest and JMX
- TestJdbcConnectionProvider: for getting hard out of container connections to the event and view stores
- DatabaseCleaner: allows easy clearing of database tables for integration tests
0.23.0 - 2016-09-01
- persistence-jdbc to the framework bom
0.22.0 - 2016-08-31
- Add JDBC Connection classes for easy access to event store and view store databases
- Fixed message producer client to use a system property to override the queue url
0.21.0 - 2016-08-30
- Add json object value matching to HttpResponsePoller utility
- Add a 'Request as Admin' request to the requester
- HttpResponsePoller conditional poll fixed
0.19.0 - 2016-08-26
- Dispatcher interceptor integration. Interceptors are chained between the adapter and the dispatcher
according to a priority setting. Interceptors implement the Interceptor interface and are registered
at startup.
Implemented interceptors: Event Buffer Interceptor, Access Control Interceptor - Event Listener Filter
- Additional features to the HttpResponsePoller utility
- Remote Client unable to POST to REST end point with media type that is different to action name
- SenderProducer support for @FrameworkComponent annotated Senders
0.18.0 - 2016-08-22
- test-utils-persistence to the framework bom
- CORS response header mismatch
- JMS Message Producer test-util connection closing issue
0.17.0 - 2016-08-19
- Travis build file settings
- Javadoc build issues
0.16.0 - 2016-08-18
- MessageProducerClient in test-utils for easy integration testing of sending messages
- UuidStringMatcher: A Hamcrest matcher for asserting that a string is a valid UUID
- EnvelopeFactory: for creating a simple JsonEnvelope for testing
- Updated to use DeltaSpike container managed persistence and transaction
- Remove asynchronous and synchronous differences from Dispatcher
0.15.0 - 2016-08-11
- Initial implementation of event ordering buffer for event listeners
- Add a simple Audit Client
- Add a toDebugStringPrettyPrinted() method that returns the JsonEnvelope as JSON
- Move the logic of JsonEnvelopeLoggerHelper to the toString() method of JsonEnvelope
- Move EnveloperFactory to test utils
0.14.0 - 2016-08-08
- Add a match all and do nothing EventMatcher to the EventSwitcher. This will ignore all other events. Example:
match(event).with(
when(SomethingAdded.class).apply(x -> id = x.getId()),
otherwiseDoNothing());
- Added test utility classes for logger producer, test messaging client and other http utilities.
- Removed schema validation for requests without a payload (actions without schema/example specified in raml and denoted with !!null).
Example (Two actions, the second has no payload):
application/vnd.people.modified-user+json:
schema: !include json/schema/people.modified-user.json
example: !include json/update-user.json
application/vnd.people.link-user+json: !!null
0.13.0 - 2016-07-28
- Service component passthrough test utility; test Command API, Command Controller, Query API and Query Controller as passthrough services
- Support for listening to all events on a topic or queue
- Causation HTTP header not sent by the REST client
- Removed limitation on messaging RAML resources to allow any queue or topic name
- 403 response from REST calls caused 500 to be returned
- Stream order not guaranteed when retrieving events from the event store
0.12.0 - 2016-07-14
- Use new parent POM and common POM projects
- Prevent access control triggering for remote handlers
- Ignore GET resources when generating JMS adapters
- Support for Event API components in RAML
- Action mapper annotation now always required in REST RAML; it is no longer possible to disable the action mapper system
0.11.0 - 2016-07-08
- Access control violations now return 403 forbidden response
- Support for Event API components in RAML
- Access control provider scanning and bean injection
- Event processor and JEE dependencies were incorrect
- Component module dependencies cleaned up and made consistent
0.10.1 - 2016-07-05
- Set framework BOM to POM packaging
0.10.0 - 2016-07-05
- Support for generating messaging clients from RAML
- Added EVENT_API service component type
- Support for simple access control with a default implementation that allows all requests
- New ZonedDateTimes utility class for converting JSON strings to UTC date times
- New JsonEnvelopeBuilder test utility class for building envelopes
- Bill of materials (BOM) for easier framework module dependency management in other Maven projects
- Object mapper configured to exclude nulls from JSON
- Ensure dates are stored and retrieved in UTC format
- Refactor DispatcherProvider into component parts
- Updated USER_ID constant in response to change by IDAM
- Updated COMMAND_API service component type to an http default input
0.9.0 - 2016-06-15
- Messaging adapter generator now uses Java Poet for code generation instead of a template
- Fix RAML action mapping description to allow other description text surrounding the mapping
- Fix action mapper to support media types with different character sets
0.8.12 - 2016-06-13
- Support for types on query parameters in the REST adapter generator
- Initial action mapping support for the REST adapter generator, turned off by default
- Fix media type handling in the test utilities REST client
0.8.11 - 2016-06-07
- Ensure Jackson always adds a timezone when marshalling timestamps
- Allow JAX-RS providers to be overridden in generated REST adapters
- Do not change port on REST requests to service components within the current service
0.8.10 - 2016-06-03
- Configuration option to control REST client port via a system property
- Add user id, session id and correlation id to REST headers for remote calls
- JSON schema validation error logging
0.8.9 - 2016-05-31
- Allow senders to be annotated at the field level
- Add ListToJsonArrayConverter
0.8.8 - 2016-05-31
- Requester injection for non-handler classes
- Skip generation flag for RAML plugin
- Metadata handling for REST client queries
- POST support for REST clients
- Persistence module and example for Deltaspike integration testing
0.8.7 - 2016-05-26
- CORS filter
0.8.6 - 2016-05-26
- Message trace logging
- JEE integration test support
- REST client test-utils module
- Version now supplied in event metadata
0.8.5 - 2016-05-23
- Revert to consistently use Jackson 2.6.4
0.8.4 - 2016-05-23
- Use Jackson 2.7.4
0.8.3 - 2016-05-23
- Relax event type validation to accept plural to ease context migration to new framework
0.8.2 - 2016-05-19
- Support for remote service invocation
0.8.1 - 2016-05-12
- Add annotation support for properties
- Add JSON schema validation support
- Support 404 response
- Optional query parameter support
- Support for endpoint exclusion in RAML rest generator
- Add aggregate service and helper functions
- Convert REST adapter generator to use Java Poet
- Disable WRITE_DATES_AS_TIMESTAMPS in Jackson
- Fix generator duplicate class detection for multi-platform support
0.8.0 - 2016-04-22
- Initial release with basic dispatcher, handler and adapter generation