tree 4fa459fe9c64c6c1b193d7bc9ab24fc1107921f2
parent 7ac9421c2c27d12ae88f001866b4444310fcaa3f
author Grainier <grainier@wso2.com> 1570056632 -0700
committer hchen9 <hchen9@ebay.com> 1570056632 -0700

[EAGLE-1068] Upgrade Siddhi dependency to v5.1.4

<!--
{% comment %}
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to you under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
{% endcomment %}
-->

## Purpose
Purpose of this pull request is to upgrade the [Siddhi](https://mvnrepository.com/artifact/io.siddhi) dependency version to `v5.1.4`. With this, it'll also;
- Fix `alert-core` and tests to support new Siddhi APIs.
- Fix existing custom Siddhi extensions to support new Siddhi APIs.
- Improve extension loading (use annotation support instead of `siddhiext`).
- Add the following dependencies (since they are now separated from Siddhi core);
```xml
<dependency>
    <groupId>io.siddhi.extension.execution.regex</groupId>
    <artifactId>siddhi-execution-regex</artifactId>
    <version>5.0.5</version>
</dependency>

<dependency>
    <groupId>io.siddhi.extension.execution.string</groupId>
    <artifactId>siddhi-execution-string</artifactId>
    <version>5.0.5</version>
</dependency>
```

## Remarks
- Fixes https://issues.apache.org/jira/browse/EAGLE-1068
- https://issues.apache.org/jira/browse/EAGLE-1065

---
Contribution Tasks:
 - [x] Make sure the PR title is formatted like:
   `[EAGLE-<Jira issue #>] Description of pull request`
 - [x] Make sure tests pass via `mvn clean verify`. (Even better, enable
       Travis-CI on your fork and ensure the whole test matrix passes).
 - [x] Replace `<Jira issue #>` in the title with the actual Jira issue
       number, if there is one.
 - [ ] If this contribution is large, please file an Apache
       [Individual Contributor License Agreement](https://www.apache.org/licenses/icla.txt).

---

Author: Grainier <grainier@wso2.com>

Closes #1003 from grainier/EAGLE-1068.
