This is an automated email from the ASF dual-hosted git repository. alsuliman pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit 14d9cfdd44a7b78943f20a552637125b19035f58 Merge: 5e11053 8363dcb Author: Michael Blow <[email protected]> AuthorDate: Sat Dec 4 22:00:24 2021 -0500 Merge branch 'gerrit/stabilization-02ea049d7a' Change-Id: I5036734c21343389c7378a06eb9cfb10948af4db asterixdb/asterix-app/pom.xml | 36 ++++- .../test/resources/runtimets/testsuite_sqlpp.xml | 5 + asterixdb/asterix-common/pom.xml | 2 +- asterixdb/asterix-dashboard/pom.xml | 8 +- asterixdb/asterix-external-data/pom.xml | 21 ++- asterixdb/asterix-server/pom.xml | 28 +++- asterixdb/pom.xml | 10 +- .../appended-resources/supplemental-models.xml | 151 +++++++++++++++++++-- ....com_netty_netty_netty-4.1.69.Final_NOTICE.txt} | 20 ++- .../api/network/INetworkSecurityConfig.java | 9 +- .../hyracks-control/hyracks-control-cc/pom.xml | 6 +- hyracks-fullstack/hyracks/hyracks-http/pom.xml | 22 ++- .../ipc/security/NetworkSecurityConfig.java | 23 ++-- .../ipc/security/NetworkSecurityManager.java | 5 +- .../maven/license/SourcePointerResolver.java | 10 ++ hyracks-fullstack/pom.xml | 72 ++++++++-- 16 files changed, 369 insertions(+), 59 deletions(-) diff --cc asterixdb/asterix-app/pom.xml index 53f577f,4b1fecf..73d425a --- a/asterixdb/asterix-app/pom.xml +++ b/asterixdb/asterix-app/pom.xml @@@ -813,18 -714,17 +829,30 @@@ </exclusions> </dependency> <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-codec-http</artifactId> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-buffer</artifactId> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-common</artifactId> + </dependency> ++ <dependency> + <groupId>org.mindrot</groupId> + <artifactId>jbcrypt</artifactId> + </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-csv</artifactId> + </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpmime</artifactId> + <scope>test</scope> + </dependency> <!-- AWS --> <dependency> <groupId>software.amazon.awssdk</groupId> diff --cc asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml index 1e142a2,600dde8..f37648e --- a/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml +++ b/asterixdb/asterix-app/src/test/resources/runtimets/testsuite_sqlpp.xml @@@ -10016,283 -9391,8 +10016,288 @@@ </compilation-unit> </test-case> <test-case FilePath="string"> - <compilation-unit name="varlen-encoding"> - <output-dir compare="Text">varlen-encoding</output-dir> + <compilation-unit name="reverse"> + <output-dir compare="Text">reverse</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="split"> + <output-dir compare="Text">split</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="starts-with1"> + <output-dir compare="Text">starts-with1</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="starts-with2"> + <output-dir compare="Text">starts-with2</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="starts-with3"> + <output-dir compare="Text">starts-with3</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="starts-with4"> + <output-dir compare="Text">starts-with4</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="starts-with5"> + <output-dir compare="Text">starts-with5</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="string-equal1"> + <output-dir compare="Text">string-equal1</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="string-equal2"> + <output-dir compare="Text">string-equal2</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="string-equal3"> + <output-dir compare="Text">string-equal3</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="string-equal4"> + <output-dir compare="Text">string-equal4</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="string-to-codepoint"> + <output-dir compare="Text">string-to-codepoint</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="string-to-codepoint1"> + <output-dir compare="Text">string-to-codepoint1</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="string-to-codepoint2"> + <output-dir compare="Text">string-to-codepoint2</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="string_to_codepoint_multi_codepoints_01"> + <output-dir compare="Text">string_to_codepoint_multi_codepoints_01</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="strlen02"> + <output-dir compare="Text">strlen02</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="strlen03"> + <output-dir compare="Text">strlen03</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="strtocpt01"> + <output-dir compare="Text">strtocpt01</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="strtocpt02"> + <output-dir compare="Text">strtocpt02</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="strtocpt03"> + <output-dir compare="Text">strtocpt03</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substr01/offset0/substring"> + <output-dir compare="Text">substr01/offset0/substring</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substr01/offset0/substr"> + <output-dir compare="Text">substr01/offset0/substr</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substr01/offset0/substring0"> + <output-dir compare="Text">substr01/offset0/substring0</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substr01/offset0/substr0"> + <output-dir compare="Text">substr01/offset0/substr0</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substr01/offset1/substring1"> + <output-dir compare="Text">substr01/offset1/substring1</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substr01/offset1/substr1"> + <output-dir compare="Text">substr01/offset1/substr1</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substr04"> + <output-dir compare="Text">substr04</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substr05"> + <output-dir compare="Text">substr05</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substr06"> + <output-dir compare="Text">substr06</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring_multi_codepoint_01"> + <output-dir compare="Text">substring_multi_codepoint_01</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> ++ <compilation-unit name="substr-ASTERIXDB-2949"> ++ <output-dir compare="Text">substr-ASTERIXDB-2949</output-dir> ++ </compilation-unit> ++ </test-case> ++ <test-case FilePath="string"> + <compilation-unit name="substring-after-1"> + <output-dir compare="Text">substring-after-1</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring-after-2"> + <output-dir compare="Text">substring-after-2</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring-after-3"> + <output-dir compare="Text">substring-after-3</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring-after-4"> + <output-dir compare="Text">substring-after-4</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring-before-1"> + <output-dir compare="Text">substring-before-1</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring-before-2"> + <output-dir compare="Text">substring-before-2</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring-before-3"> + <output-dir compare="Text">substring-before-3</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring2-1/offset0/substring"> + <output-dir compare="Text">substring2-1/offset0/substring</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring2-1/offset0/substr"> + <output-dir compare="Text">substring2-1/offset0/substr</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring2-1/offset0/substring0"> + <output-dir compare="Text">substring2-1/offset0/substring0</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring2-1/offset0/substr0"> + <output-dir compare="Text">substring2-1/offset0/substr0</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring2-1/offset1/substring1"> + <output-dir compare="Text">substring2-1/offset1/substring1</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring2-1/offset1/substr1"> + <output-dir compare="Text">substring2-1/offset1/substr1</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring2-2"> + <output-dir compare="Text">substring2-2</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring2-3"> + <output-dir compare="Text">substring2-3</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring2-4"> + <output-dir compare="Text">substring2-4</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="substring_01"> + <output-dir compare="Text">substring_01</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="title"> + <output-dir compare="Text">initcap</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="toLowerCase02"> + <output-dir compare="Text">toLowerCase02</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="toLowerCase03"> + <output-dir compare="Text">toLowerCase03</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="toLowerCase04"> + <output-dir compare="Text">toLowerCase04</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="trim"> + <output-dir compare="Text">trim</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="ltrim"> + <output-dir compare="Text">ltrim</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="rtrim"> + <output-dir compare="Text">rtrim</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="uppercase"> + <output-dir compare="Text">uppercase</output-dir> + </compilation-unit> + </test-case> + <test-case FilePath="string"> + <compilation-unit name="varlen-encoding"> + <output-dir compare="Text">varlen-encoding</output-dir> </compilation-unit> </test-case> <test-case FilePath="string"> diff --cc asterixdb/asterix-external-data/pom.xml index 7b8269c,611e58b..dd4d661 --- a/asterixdb/asterix-external-data/pom.xml +++ b/asterixdb/asterix-external-data/pom.xml @@@ -206,7 -206,6 +206,10 @@@ <usedDependency>com.sun.xml.bind:jaxb-core</usedDependency> <usedDependency>com.sun.xml.bind:jaxb-impl</usedDependency> <usedDependency>com.sun.activation:javax.activation</usedDependency> + <usedDependency>net.razorvine:serpent</usedDependency> ++ <usedDependency>io.netty:netty-resolver-dns</usedDependency> ++ <usedDependency>io.netty:netty-codec-http2</usedDependency> ++ <usedDependency>io.netty:netty-transport-native-unix-common</usedDependency> </usedDependencies> </configuration> </plugin> @@@ -434,13 -433,13 +437,17 @@@ </dependency> <dependency> <groupId>io.netty</groupId> - <artifactId>netty-all</artifactId> + <artifactId>netty-buffer</artifactId> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-codec-http</artifactId> </dependency> <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + </dependency> + <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-core</artifactId> </dependency> @@@ -464,25 -463,5 +471,37 @@@ <groupId>software.amazon.awssdk</groupId> <artifactId>auth</artifactId> </dependency> + <dependency> + <groupId>com.azure</groupId> + <artifactId>azure-storage-blob</artifactId> + </dependency> + <dependency> + <groupId>org.msgpack</groupId> + <artifactId>msgpack-core</artifactId> + </dependency> + <dependency> + <groupId>org.apache.parquet</groupId> + <artifactId>parquet-column</artifactId> + </dependency> + <dependency> + <groupId>org.apache.parquet</groupId> + <artifactId>parquet-hadoop</artifactId> + </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-1.2-api</artifactId> + </dependency> ++ <dependency> ++ <groupId>io.netty</groupId> ++ <artifactId>netty-resolver-dns</artifactId> ++ </dependency> ++ <dependency> ++ <groupId>io.netty</groupId> ++ <artifactId>netty-codec-http2</artifactId> ++ </dependency> ++ <dependency> ++ <groupId>io.netty</groupId> ++ <artifactId>netty-transport-native-unix-common</artifactId> ++ </dependency> </dependencies> </project> diff --cc asterixdb/src/main/appended-resources/supplemental-models.xml index 6df5edd,999b414..2368f2f --- a/asterixdb/src/main/appended-resources/supplemental-models.xml +++ b/asterixdb/src/main/appended-resources/supplemental-models.xml @@@ -157,17 -157,89 +157,137 @@@ <supplement> <project> <groupId>io.netty</groupId> - <artifactId>netty-all</artifactId> + <artifactId>netty-transport</artifactId> <properties> <!-- netty is ALv2, and does not contain any embedded LICENSE or NOTICE file --> - <license.ignoreMissingEmbeddedLicense>4.1.63.Final</license.ignoreMissingEmbeddedLicense> - <license.ignoreMissingEmbeddedNotice>4.1.63.Final</license.ignoreMissingEmbeddedNotice> - <license.ignoreNoticeOverride>4.1.63.Final</license.ignoreNoticeOverride> + <license.ignoreMissingEmbeddedLicense>4.1.69.Final</license.ignoreMissingEmbeddedLicense> + <license.ignoreMissingEmbeddedNotice>4.1.69.Final</license.ignoreMissingEmbeddedNotice> + <license.ignoreNoticeOverride>4.1.69.Final</license.ignoreNoticeOverride> + </properties> + </project> + </supplement> + <supplement> + <project> + <groupId>io.netty</groupId> ++ <artifactId>netty-transport-native-unix-common</artifactId> ++ <properties> ++ <!-- netty is ALv2, and does not contain any embedded LICENSE or NOTICE file --> ++ <license.ignoreMissingEmbeddedLicense>4.1.69.Final</license.ignoreMissingEmbeddedLicense> ++ <license.ignoreMissingEmbeddedNotice>4.1.69.Final</license.ignoreMissingEmbeddedNotice> ++ <license.ignoreNoticeOverride>4.1.69.Final</license.ignoreNoticeOverride> ++ </properties> ++ </project> ++ </supplement> ++ <supplement> ++ <project> ++ <groupId>io.netty</groupId> + <artifactId>netty-codec</artifactId> + <properties> + <!-- netty is ALv2, and does not contain any embedded LICENSE or NOTICE file --> + <license.ignoreMissingEmbeddedLicense>4.1.69.Final</license.ignoreMissingEmbeddedLicense> + <license.ignoreMissingEmbeddedNotice>4.1.69.Final</license.ignoreMissingEmbeddedNotice> + <license.ignoreNoticeOverride>4.1.69.Final</license.ignoreNoticeOverride> + </properties> + </project> + </supplement> + <supplement> + <project> + <groupId>io.netty</groupId> ++ <artifactId>netty-codec-dns</artifactId> ++ <properties> ++ <!-- netty is ALv2, and does not contain any embedded LICENSE or NOTICE file --> ++ <license.ignoreMissingEmbeddedLicense>4.1.69.Final</license.ignoreMissingEmbeddedLicense> ++ <license.ignoreMissingEmbeddedNotice>4.1.69.Final</license.ignoreMissingEmbeddedNotice> ++ <license.ignoreNoticeOverride>4.1.69.Final</license.ignoreNoticeOverride> ++ </properties> ++ </project> ++ </supplement> ++ <supplement> ++ <project> ++ <groupId>io.netty</groupId> ++ <artifactId>netty-codec-http2</artifactId> ++ <properties> ++ <!-- netty is ALv2, and does not contain any embedded LICENSE or NOTICE file --> ++ <license.ignoreMissingEmbeddedLicense>4.1.69.Final</license.ignoreMissingEmbeddedLicense> ++ <license.ignoreMissingEmbeddedNotice>4.1.69.Final</license.ignoreMissingEmbeddedNotice> ++ <license.ignoreNoticeOverride>4.1.69.Final</license.ignoreNoticeOverride> ++ </properties> ++ </project> ++ </supplement> ++ <supplement> ++ <project> ++ <groupId>io.netty</groupId> + <artifactId>netty-handler</artifactId> + <properties> + <!-- netty is ALv2, and does not contain any embedded LICENSE or NOTICE file --> + <license.ignoreMissingEmbeddedLicense>4.1.69.Final</license.ignoreMissingEmbeddedLicense> + <license.ignoreMissingEmbeddedNotice>4.1.69.Final</license.ignoreMissingEmbeddedNotice> + <license.ignoreNoticeOverride>4.1.69.Final</license.ignoreNoticeOverride> + </properties> + </project> + </supplement> + <supplement> + <project> + <groupId>io.netty</groupId> + <artifactId>netty-buffer</artifactId> + <properties> + <!-- netty is ALv2, and does not contain any embedded LICENSE or NOTICE file --> + <license.ignoreMissingEmbeddedLicense>4.1.69.Final</license.ignoreMissingEmbeddedLicense> + <license.ignoreMissingEmbeddedNotice>4.1.69.Final</license.ignoreMissingEmbeddedNotice> + <license.ignoreNoticeOverride>4.1.69.Final</license.ignoreNoticeOverride> + </properties> + </project> + </supplement> + <supplement> + <project> + <groupId>io.netty</groupId> + <artifactId>netty-common</artifactId> + <properties> + <!-- netty is ALv2, and does not contain any embedded LICENSE or NOTICE file --> + <license.ignoreMissingEmbeddedLicense>4.1.69.Final</license.ignoreMissingEmbeddedLicense> + <license.ignoreMissingEmbeddedNotice>4.1.69.Final</license.ignoreMissingEmbeddedNotice> + <license.ignoreNoticeOverride>4.1.69.Final</license.ignoreNoticeOverride> + </properties> + </project> + </supplement> + <supplement> + <project> + <groupId>io.netty</groupId> + <artifactId>netty-codec-http</artifactId> + <properties> + <!-- netty is ALv2, and does not contain any embedded LICENSE or NOTICE file --> + <license.ignoreMissingEmbeddedLicense>4.1.69.Final</license.ignoreMissingEmbeddedLicense> + <license.ignoreMissingEmbeddedNotice>4.1.69.Final</license.ignoreMissingEmbeddedNotice> + <license.ignoreNoticeOverride>4.1.69.Final</license.ignoreNoticeOverride> + </properties> + </project> + </supplement> + <supplement> + <project> + <groupId>io.netty</groupId> + <artifactId>netty-resolver</artifactId> + <properties> + <!-- netty is ALv2, and does not contain any embedded LICENSE or NOTICE file --> + <license.ignoreMissingEmbeddedLicense>4.1.69.Final</license.ignoreMissingEmbeddedLicense> + <license.ignoreMissingEmbeddedNotice>4.1.69.Final</license.ignoreMissingEmbeddedNotice> + <license.ignoreNoticeOverride>4.1.69.Final</license.ignoreNoticeOverride> + </properties> + </project> + </supplement> + <supplement> + <project> ++ <groupId>io.netty</groupId> ++ <artifactId>netty-resolver-dns</artifactId> ++ <properties> ++ <!-- netty is ALv2, and does not contain any embedded LICENSE or NOTICE file --> ++ <license.ignoreMissingEmbeddedLicense>4.1.69.Final</license.ignoreMissingEmbeddedLicense> ++ <license.ignoreMissingEmbeddedNotice>4.1.69.Final</license.ignoreMissingEmbeddedNotice> ++ <license.ignoreNoticeOverride>4.1.69.Final</license.ignoreNoticeOverride> + </properties> + </project> + </supplement> + <supplement> + <project> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <properties> diff --cc hyracks-fullstack/pom.xml index 81970b4,7ec00ad..11dc49a --- a/hyracks-fullstack/pom.xml +++ b/hyracks-fullstack/pom.xml @@@ -84,10 -85,35 +85,50 @@@ <dependencies> <dependency> <groupId>io.netty</groupId> - <artifactId>netty-all</artifactId> - <version>4.1.63.Final</version> + <artifactId>netty-buffer</artifactId> + <version>4.1.69.Final</version> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-common</artifactId> + <version>4.1.69.Final</version> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-codec-http</artifactId> + <version>4.1.69.Final</version> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-transport</artifactId> + <version>4.1.69.Final</version> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-codec</artifactId> + <version>4.1.69.Final</version> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-handler</artifactId> + <version>4.1.69.Final</version> + </dependency> + <dependency> ++ <groupId>io.netty</groupId> ++ <artifactId>netty-resolver-dns</artifactId> ++ <version>4.1.69.Final</version> ++ </dependency> ++ <dependency> ++ <groupId>io.netty</groupId> ++ <artifactId>netty-codec-http2</artifactId> ++ <version>4.1.69.Final</version> ++ </dependency> ++ <dependency> ++ <groupId>io.netty</groupId> ++ <artifactId>netty-transport-native-unix-common</artifactId> ++ <version>4.1.69.Final</version> + </dependency> + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version>
