Split music src into music-core and music-rest 08/96308/2
authorArthur Martella <arthur.martella.1@att.com>
Thu, 26 Sep 2019 20:40:58 +0000 (16:40 -0400)
committerArthur Martella <arthur.martella.1@att.com>
Thu, 26 Sep 2019 21:02:22 +0000 (17:02 -0400)
Separating music into two directories to build with two pom files.
Hopefully this should allow both jars to be deployed in nexus.
Do not merge without careful review!!!

Issue-ID: MUSIC-505
Signed-off-by: Martella, Arthur <arthur.martella.1@att.com>
Change-Id: I9dd2074e7f4499216c2bcd00095829dd43e2d0f9

115 files changed:
music-core/pom.xml [new file with mode: 0755]
music-core/src/main/java/LICENSE.txt [moved from src/main/java/LICENSE.txt with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/Condition.java [moved from src/main/java/org/onap/music/datastore/Condition.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/MusicDataStore.java [moved from src/main/java/org/onap/music/datastore/MusicDataStore.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/MusicDataStoreHandle.java [moved from src/main/java/org/onap/music/datastore/MusicDataStoreHandle.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/PreparedQueryObject.java [moved from src/main/java/org/onap/music/datastore/PreparedQueryObject.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/jsonobjects/JSONObject.java [moved from src/main/java/org/onap/music/datastore/jsonobjects/JSONObject.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/jsonobjects/JsonDelete.java [moved from src/main/java/org/onap/music/datastore/jsonobjects/JsonDelete.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/jsonobjects/JsonIndex.java [moved from src/main/java/org/onap/music/datastore/jsonobjects/JsonIndex.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/jsonobjects/JsonInsert.java [moved from src/main/java/org/onap/music/datastore/jsonobjects/JsonInsert.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/jsonobjects/JsonKeySpace.java [moved from src/main/java/org/onap/music/datastore/jsonobjects/JsonKeySpace.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/jsonobjects/JsonLeasedLock.java [moved from src/main/java/org/onap/music/datastore/jsonobjects/JsonLeasedLock.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/jsonobjects/JsonLock.java [moved from src/main/java/org/onap/music/datastore/jsonobjects/JsonLock.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/jsonobjects/JsonSelect.java [moved from src/main/java/org/onap/music/datastore/jsonobjects/JsonSelect.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/jsonobjects/JsonTable.java [moved from src/main/java/org/onap/music/datastore/jsonobjects/JsonTable.java with 100% similarity]
music-core/src/main/java/org/onap/music/datastore/jsonobjects/JsonUpdate.java [moved from src/main/java/org/onap/music/datastore/jsonobjects/JsonUpdate.java with 100% similarity]
music-core/src/main/java/org/onap/music/eelf/healthcheck/MusicHealthCheck.java [moved from src/main/java/org/onap/music/eelf/healthcheck/MusicHealthCheck.java with 100% similarity]
music-core/src/main/java/org/onap/music/eelf/logging/EELFLoggerDelegate.java [moved from src/main/java/org/onap/music/eelf/logging/EELFLoggerDelegate.java with 100% similarity]
music-core/src/main/java/org/onap/music/eelf/logging/format/AppMessages.java [moved from src/main/java/org/onap/music/eelf/logging/format/AppMessages.java with 100% similarity]
music-core/src/main/java/org/onap/music/eelf/logging/format/ErrorCodes.java [moved from src/main/java/org/onap/music/eelf/logging/format/ErrorCodes.java with 100% similarity]
music-core/src/main/java/org/onap/music/eelf/logging/format/ErrorSeverity.java [moved from src/main/java/org/onap/music/eelf/logging/format/ErrorSeverity.java with 100% similarity]
music-core/src/main/java/org/onap/music/eelf/logging/format/ErrorTypes.java [moved from src/main/java/org/onap/music/eelf/logging/format/ErrorTypes.java with 100% similarity]
music-core/src/main/java/org/onap/music/exceptions/MusicDeadlockException.java [moved from src/main/java/org/onap/music/exceptions/MusicDeadlockException.java with 100% similarity]
music-core/src/main/java/org/onap/music/exceptions/MusicLockingException.java [moved from src/main/java/org/onap/music/exceptions/MusicLockingException.java with 100% similarity]
music-core/src/main/java/org/onap/music/exceptions/MusicPolicyVoilationException.java [moved from src/main/java/org/onap/music/exceptions/MusicPolicyVoilationException.java with 100% similarity]
music-core/src/main/java/org/onap/music/exceptions/MusicQueryException.java [moved from src/main/java/org/onap/music/exceptions/MusicQueryException.java with 100% similarity]
music-core/src/main/java/org/onap/music/exceptions/MusicServiceException.java [moved from src/main/java/org/onap/music/exceptions/MusicServiceException.java with 100% similarity]
music-core/src/main/java/org/onap/music/lockingservice/cassandra/CassaLockStore.java [moved from src/main/java/org/onap/music/lockingservice/cassandra/CassaLockStore.java with 100% similarity]
music-core/src/main/java/org/onap/music/lockingservice/cassandra/LockType.java [moved from src/main/java/org/onap/music/lockingservice/cassandra/LockType.java with 100% similarity]
music-core/src/main/java/org/onap/music/lockingservice/cassandra/MusicLockState.java [moved from src/main/java/org/onap/music/lockingservice/cassandra/MusicLockState.java with 100% similarity]
music-core/src/main/java/org/onap/music/main/CipherUtil.java [moved from src/main/java/org/onap/music/main/CipherUtil.java with 99% similarity]
music-core/src/main/java/org/onap/music/main/CorePropertiesLoader.java [new file with mode: 0644]
music-core/src/main/java/org/onap/music/main/DeadlockDetectionUtil.java [moved from src/main/java/org/onap/music/main/DeadlockDetectionUtil.java with 100% similarity]
music-core/src/main/java/org/onap/music/main/MusicCore.java [moved from src/main/java/org/onap/music/main/MusicCore.java with 100% similarity]
music-core/src/main/java/org/onap/music/main/MusicUtil.java [moved from src/main/java/org/onap/music/main/MusicUtil.java with 100% similarity, mode: 0644]
music-core/src/main/java/org/onap/music/main/ResultType.java [moved from src/main/java/org/onap/music/main/ResultType.java with 100% similarity]
music-core/src/main/java/org/onap/music/main/ReturnType.java [moved from src/main/java/org/onap/music/main/ReturnType.java with 100% similarity]
music-core/src/main/java/org/onap/music/service/MusicCoreService.java [moved from src/main/java/org/onap/music/service/MusicCoreService.java with 100% similarity]
music-core/src/main/java/org/onap/music/service/impl/MusicCassaCore.java [moved from src/main/java/org/onap/music/service/impl/MusicCassaCore.java with 100% similarity]
music-core/src/main/resources/LICENSE.txt [moved from src/main/resources/LICENSE.txt with 100% similarity]
music-core/src/main/resources/Resources.properties [moved from src/main/resources/Resources.properties with 100% similarity]
music-core/src/main/resources/application.properties [moved from src/main/resources/application.properties with 100% similarity]
music-core/src/main/resources/logback.xml [moved from src/main/resources/logback.xml with 100% similarity]
music-core/src/main/resources/project.properties [moved from src/main/resources/project.properties with 100% similarity]
music-core/src/main/webapp/WEB-INF/.gitignore [new file with mode: 0644]
music-core/src/test/java/LICENSE.txt [moved from src/test/java/LICENSE.txt with 100% similarity]
music-core/src/test/java/org/onap/music/datastore/PreparedQueryObjectTest.java [moved from src/test/java/org/onap/music/datastore/PreparedQueryObjectTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/eelf/logging/format/AppMessagesTest.java [moved from src/test/java/org/onap/music/eelf/logging/format/AppMessagesTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/exceptions/MusicLockingExceptionTest.java [moved from src/test/java/org/onap/music/exceptions/MusicLockingExceptionTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/exceptions/MusicPolicyVoilationExceptionTest.java [moved from src/test/java/org/onap/music/exceptions/MusicPolicyVoilationExceptionTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/exceptions/MusicQueryExceptionTest.java [moved from src/test/java/org/onap/music/exceptions/MusicQueryExceptionTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/exceptions/MusicServiceExceptionTest.java [moved from src/test/java/org/onap/music/exceptions/MusicServiceExceptionTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/CassandraCQL.java [moved from src/test/java/org/onap/music/unittests/CassandraCQL.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/MusicUtilTest.java [moved from src/test/java/org/onap/music/unittests/MusicUtilTest.java with 99% similarity]
music-core/src/test/java/org/onap/music/unittests/ResultTypeTest.java [moved from src/test/java/org/onap/music/unittests/ResultTypeTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/ReturnTypeTest.java [moved from src/test/java/org/onap/music/unittests/ReturnTypeTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/jsonobjects/JSONObjectTest.java [moved from src/test/java/org/onap/music/unittests/jsonobjects/JSONObjectTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/jsonobjects/JsonDeleteTest.java [moved from src/test/java/org/onap/music/unittests/jsonobjects/JsonDeleteTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/jsonobjects/JsonInsertTest.java [moved from src/test/java/org/onap/music/unittests/jsonobjects/JsonInsertTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/jsonobjects/JsonKeySpaceTest.java [moved from src/test/java/org/onap/music/unittests/jsonobjects/JsonKeySpaceTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/jsonobjects/JsonLeasedLockTest.java [moved from src/test/java/org/onap/music/unittests/jsonobjects/JsonLeasedLockTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/jsonobjects/JsonSelectTest.java [moved from src/test/java/org/onap/music/unittests/jsonobjects/JsonSelectTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/jsonobjects/JsonTableTest.java [moved from src/test/java/org/onap/music/unittests/jsonobjects/JsonTableTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/jsonobjects/JsonUpdateTest.java [moved from src/test/java/org/onap/music/unittests/jsonobjects/JsonUpdateTest.java with 100% similarity]
music-core/src/test/java/org/onap/music/unittests/jsonobjects/MusicHealthCheckTest.java [moved from src/test/java/org/onap/music/unittests/jsonobjects/MusicHealthCheckTest.java with 100% similarity]
music-core/src/test/resources/LICENSE.txt [moved from src/test/resources/LICENSE.txt with 100% similarity]
music-core/src/test/resources/Resources.properties [moved from src/test/resources/Resources.properties with 100% similarity]
music-core/src/test/resources/application.properties [moved from src/test/resources/application.properties with 100% similarity]
music-core/src/test/resources/cache.ccf [moved from src/test/resources/cache.ccf with 100% similarity]
music-core/src/test/resources/logback.xml [moved from src/test/resources/logback.xml with 100% similarity]
music-core/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker [moved from src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker with 100% similarity]
music-core/src/test/resources/mockito-extensions/org.mockito.plugins.StackTraceCleanerProvider [moved from src/test/resources/mockito-extensions/org.mockito.plugins.StackTraceCleanerProvider with 100% similarity]
music-core/src/test/resources/project.properties [moved from src/test/resources/project.properties with 100% similarity]
music-rest/pom.xml [new file with mode: 0755]
music-rest/src/main/java/LICENSE.txt [new file with mode: 0644]
music-rest/src/main/java/org/onap/music/JerseyConfig.java [moved from src/main/java/org/onap/music/JerseyConfig.java with 100% similarity]
music-rest/src/main/java/org/onap/music/MusicApplication.java [moved from src/main/java/org/onap/music/MusicApplication.java with 100% similarity]
music-rest/src/main/java/org/onap/music/authentication/AuthUtil.java [moved from src/main/java/org/onap/music/authentication/AuthUtil.java with 100% similarity]
music-rest/src/main/java/org/onap/music/authentication/AuthorizationError.java [moved from src/main/java/org/onap/music/authentication/AuthorizationError.java with 100% similarity]
music-rest/src/main/java/org/onap/music/authentication/CadiAuthFilter.java [moved from src/main/java/org/onap/music/authentication/CadiAuthFilter.java with 100% similarity]
music-rest/src/main/java/org/onap/music/authentication/MusicAuthorizationFilter.java [moved from src/main/java/org/onap/music/authentication/MusicAuthorizationFilter.java with 100% similarity]
music-rest/src/main/java/org/onap/music/conductor/conditionals/JsonConditional.java [moved from src/main/java/org/onap/music/conductor/conditionals/JsonConditional.java with 100% similarity]
music-rest/src/main/java/org/onap/music/conductor/conditionals/MusicConditional.java [moved from src/main/java/org/onap/music/conductor/conditionals/MusicConditional.java with 100% similarity]
music-rest/src/main/java/org/onap/music/conductor/conditionals/RestMusicConditionalAPI.java [moved from src/main/java/org/onap/music/conductor/conditionals/RestMusicConditionalAPI.java with 100% similarity]
music-rest/src/main/java/org/onap/music/conductor/conditionals/UpdateDataObject.java [moved from src/main/java/org/onap/music/conductor/conditionals/UpdateDataObject.java with 100% similarity]
music-rest/src/main/java/org/onap/music/eelf/healthcheck/MusicHealthCheck.java [new file with mode: 0644]
music-rest/src/main/java/org/onap/music/eelf/logging/MusicContainerFilter.java [moved from src/main/java/org/onap/music/eelf/logging/MusicContainerFilter.java with 100% similarity]
music-rest/src/main/java/org/onap/music/eelf/logging/MusicLoggingServletFilter.java [moved from src/main/java/org/onap/music/eelf/logging/MusicLoggingServletFilter.java with 100% similarity]
music-rest/src/main/java/org/onap/music/exceptions/MusicAuthenticationException.java [moved from src/main/java/org/onap/music/exceptions/MusicAuthenticationException.java with 100% similarity]
music-rest/src/main/java/org/onap/music/exceptions/MusicExceptionMapper.java [moved from src/main/java/org/onap/music/exceptions/MusicExceptionMapper.java with 100% similarity]
music-rest/src/main/java/org/onap/music/main/PropertiesLoader.java [moved from src/main/java/org/onap/music/main/PropertiesLoader.java with 100% similarity]
music-rest/src/main/java/org/onap/music/response/jsonobjects/JsonResponse.java [moved from src/main/java/org/onap/music/response/jsonobjects/JsonResponse.java with 100% similarity]
music-rest/src/main/java/org/onap/music/rest/Application.java [moved from src/main/java/org/onap/music/rest/Application.java with 100% similarity]
music-rest/src/main/java/org/onap/music/rest/RestMusicDataAPI.java [moved from src/main/java/org/onap/music/rest/RestMusicDataAPI.java with 100% similarity]
music-rest/src/main/java/org/onap/music/rest/RestMusicHealthCheckAPI.java [moved from src/main/java/org/onap/music/rest/RestMusicHealthCheckAPI.java with 100% similarity]
music-rest/src/main/java/org/onap/music/rest/RestMusicLocksAPI.java [moved from src/main/java/org/onap/music/rest/RestMusicLocksAPI.java with 100% similarity]
music-rest/src/main/java/org/onap/music/rest/RestMusicQAPI.java [moved from src/main/java/org/onap/music/rest/RestMusicQAPI.java with 100% similarity]
music-rest/src/main/java/org/onap/music/rest/RestMusicTestAPI.java [moved from src/main/java/org/onap/music/rest/RestMusicTestAPI.java with 100% similarity]
music-rest/src/main/java/org/onap/music/rest/RestMusicVersionAPI.java [moved from src/main/java/org/onap/music/rest/RestMusicVersionAPI.java with 100% similarity]
music-rest/src/main/resources/key.properties [moved from src/main/resources/key.properties with 100% similarity]
music-rest/src/test/java/LICENSE.txt [new file with mode: 0644]
music-rest/src/test/java/org/onap/music/exceptions/MusicExceptionMapperTest.java [moved from src/test/java/org/onap/music/exceptions/MusicExceptionMapperTest.java with 100% similarity]
music-rest/src/test/java/org/onap/music/rest/ApplicationTest.java [moved from src/test/java/org/onap/music/rest/ApplicationTest.java with 100% similarity]
music-rest/src/test/java/org/onap/music/unittests/CassandraCQL.java [new file with mode: 0644]
music-rest/src/test/java/org/onap/music/unittests/JsonResponseTest.java [moved from src/test/java/org/onap/music/unittests/JsonResponseTest.java with 100% similarity]
music-rest/src/test/java/org/onap/music/unittests/MusicDataStoreTest.java [moved from src/test/java/org/onap/music/unittests/MusicDataStoreTest.java with 100% similarity]
music-rest/src/test/java/org/onap/music/unittests/TestRestMusicQAPI.java [moved from src/test/java/org/onap/music/unittests/TestRestMusicQAPI.java with 100% similarity]
music-rest/src/test/java/org/onap/music/unittests/TestsUsingCassandra.java [moved from src/test/java/org/onap/music/unittests/TestsUsingCassandra.java with 100% similarity]
music-rest/src/test/java/org/onap/music/unittests/TstRestMusicConditionalAPI.java [moved from src/test/java/org/onap/music/unittests/TstRestMusicConditionalAPI.java with 100% similarity]
music-rest/src/test/java/org/onap/music/unittests/TstRestMusicDataAPI.java [moved from src/test/java/org/onap/music/unittests/TstRestMusicDataAPI.java with 100% similarity]
music-rest/src/test/java/org/onap/music/unittests/TstRestMusicLockAPI.java [moved from src/test/java/org/onap/music/unittests/TstRestMusicLockAPI.java with 100% similarity]
music-rest/src/test/java/org/onap/music/unittests/authentication/AuthUtilTest.java [moved from src/test/java/org/onap/music/unittests/authentication/AuthUtilTest.java with 100% similarity]
music-rest/src/test/java/org/onap/music/unittests/authentication/AuthorizationErrorTest.java [moved from src/test/java/org/onap/music/unittests/authentication/AuthorizationErrorTest.java with 100% similarity]
music-rest/src/test/resources/logback.xml [new file with mode: 0644]
pom.xml

diff --git a/music-core/pom.xml b/music-core/pom.xml
new file mode 100755 (executable)
index 0000000..ae50e64
--- /dev/null
@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============LICENSE_START==========================================
+ org.onap.music
+ ===================================================================
+  Copyright (c) 2017 AT&T Intellectual Property
+ ===================================================================
+  Modifications Copyright (c) 2019 IBM.
+ ===================================================================
+  Licensed 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.
+
+ ============LICENSE_END=============================================
+ ====================================================================
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.onap.music</groupId>
+    <artifactId>MUSIC-core</artifactId>
+    <packaging>jar</packaging>
+    <version>3.2.37-SNAPSHOT</version>
+    <description>
+            This is the MUSIC core interface, packaged as a jar file.
+    </description>
+    <name>music-core</name>
+
+    <parent>
+        <groupId>org.onap.music</groupId>
+        <artifactId>MUSIC</artifactId>
+        <version>3.2.37-SNAPSHOT</version>
+    </parent>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>1.8</java.version>
+        <jaxrs.version>2.0.1</jaxrs.version>
+        <cassandra.version>3.6.0</cassandra.version>
+        <!--nexus -->
+<!--
+        <nexusproxy>https://nexus.onap.org</nexusproxy>
+        <onap.nexus.url>https://nexus.onap.org</onap.nexus.url>
+        <snapshotNexusPath>/content/repositories/snapshots/</snapshotNexusPath>
+        <releaseNexusPath>/content/repositories/releases/</releaseNexusPath>
+        <stagingNexusPath>/content/repositories/staging/</stagingNexusPath>
+        <sitePath>/content/sites/site/org/onap/music/${project.version}</sitePath>
+-->
+        <!--maven -->
+<!--
+        <timestamp>${maven.build.timestamp}</timestamp>
+        <maven.build.timestamp.format>yyyy.MM.dd.HH.mm</maven.build.timestamp.format>
+-->
+        <!--skip checkstyle -->
+<!--
+        <maven.check.skip>false</maven.check.skip>
+-->
+        <!--docker -->
+<!--
+        <docker.tag>${project.version}-${timestamp}</docker.tag>
+        <docker.latest.tag>${project.version}-latest</docker.latest.tag>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+-->
+    </properties>
+
+    <repositories>
+        <repository>
+            <id>onap-releases</id>
+            <name>ONAP - Release Repository</name>
+            <url>${nexusproxy}/${releaseNexusPath}</url>
+        </repository>
+        <repository>
+            <id>onap-staging</id>
+            <name>ONAP - Staging Repository</name>
+            <url>${nexusproxy}/${stagingNexusPath}</url>
+        </repository>
+        <repository>
+            <id>onap-snapshots</id>
+            <name>ONAP - Snapshot Repository</name>
+            <url>${nexusproxy}/${snapshotNexusPath}</url>
+        </repository>
+        <repository>
+            <id>onap-public</id>
+            <name>ONAP public Repository</name>
+            <url>${nexusproxy}/content/groups/public</url>
+        </repository>
+    </repositories>
+
+    <build>
+        <finalName>${project.artifactId}</finalName>
+        <sourceDirectory>src/main/java</sourceDirectory>
+        <outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory>
+        <testSourceDirectory>src/test/java</testSourceDirectory>
+        <testOutputDirectory>target/test-classes</testOutputDirectory>
+        <defaultGoal>validate</defaultGoal>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+                <includes>
+                <include>**/*.properties</include>
+                <include>**/*.xml</include>
+                <include>**/*.ccf</include>
+                </includes>
+            </resource>
+        </resources>
+        <testResources>
+            <testResource>
+                <directory>${project.basedir}/src/test/resources</directory>
+            </testResource>
+            <!-- <testResource>
+                <directory>${project.basedir}/src/main/resources</directory>
+            </testResource> -->
+        </testResources>
+        <plugins>
+<!--
+            <plugin>
+                <artifactId>maven-war-plugin</artifactId>
+                <version>2.4</version>
+                <configuration>
+                    <warSourceDirectory>WebContent</warSourceDirectory>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+-->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+                <configuration>
+                    <skip>${maven.check.skip}</skip>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <version>2.4</version>
+                <executions>
+                    <execution>
+                        <id>make-a-jar</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                        <configuration>
+                            <excludes>
+                                <!--<exclude>**/*.xml</exclude>
+                                <exclude>**/*.properties</exclude>-->
+                                <exclude>**/Sample*</exclude>
+                            </excludes>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-install-plugin</artifactId>
+                <version>2.4</version>
+                <executions>
+                    <execution>
+                        <id>core</id>
+                        <phase>install</phase>
+                        <goals>
+                            <goal>install-file</goal>
+                        </goals>
+                        <configuration>
+                            <packaging>jar</packaging>
+                            <artifactId>${project.artifactId}</artifactId>
+                            <groupId>${project.groupId}</groupId>
+                            <version>${project.version}</version>
+                            <file>${project.build.directory}/${project.artifactId}.jar</file>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <!-- Development -->
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.4</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>3.0.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <!-- /Development -->
+        <!-- Logging -->
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-core</artifactId>
+            <version>1.2.3</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <version>1.2.3</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.att.eelf</groupId>
+            <artifactId>eelf-core</artifactId>
+            <version>1.0.1-oss</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.powermock</groupId>
+                    <artifactId>powermock-api-mockito</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.powermock</groupId>
+                    <artifactId>powermock-module-junit4</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <!-- End Logging -->
+        <!-- Cassandra -->
+        <dependency>
+            <groupId>io.dropwizard.metrics</groupId>
+            <artifactId>metrics-core</artifactId>
+            <version>4.1.0-rc3</version>
+        </dependency>
+        <dependency>
+            <groupId>com.datastax.cassandra</groupId>
+            <artifactId>cassandra-driver-core</artifactId>
+            <version>${cassandra.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.datastax.cassandra</groupId>
+            <artifactId>cassandra-driver-extras</artifactId>
+            <version>${cassandra.version}</version>
+        </dependency>        <!-- /Cassandra -->
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-jcs-core</artifactId>
+            <version>2.2</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>1.11</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+            <version>3.8</version>
+        </dependency>
+
+        <!-- Testing -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.cassandraunit</groupId>
+            <artifactId>cassandra-unit-spring</artifactId>
+            <version>3.5.0.1</version>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>ch.qos.logback</groupId>
+                    <artifactId>logback-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>ch.qos.logback</groupId>
+                    <artifactId>logback-classic</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.cassandraunit</groupId>
+                    <artifactId>cassandra-unit</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.dropwizard.metrics</groupId>
+                    <artifactId>metrics-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.addthis.metrics</groupId>
+                    <artifactId>reporter-config-base</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.cassandraunit</groupId>
+            <artifactId>cassandra-unit-shaded</artifactId>
+            <version>3.5.0.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <version>2.23.4</version>
+            <scope>test</scope>
+        </dependency>
+        <!--  /Testing -->
+
+        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310 -->
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+            <version>2.9.9</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>2.9.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+            <version>2.9.9</version>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+            <version>2.9.9</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.httpcomponents</groupId>
+            <artifactId>httpclient</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-jersey-jaxrs</artifactId>
+            <version>1.5.22</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>de.svenkubiak</groupId>
+            <artifactId>jBCrypt</artifactId>
+            <version>0.4.1</version>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-handler</artifactId>
+            <version>4.1.33.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-buffer</artifactId>
+            <version>4.1.33.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-codec</artifactId>
+            <version>4.1.33.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-common</artifactId>
+            <version>4.1.33.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-resolver</artifactId>
+            <version>4.1.33.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-transport</artifactId>
+            <version>4.1.33.Final</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.aaf.authz</groupId>
+            <artifactId>aaf-cadi-aaf</artifactId>
+            <version>2.1.7</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.aaf.authz</groupId>
+            <artifactId>aaf-cadi-client</artifactId>
+            <version>2.1.7</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.aaf.authz</groupId>
+            <artifactId>aaf-cadi-core</artifactId>
+            <version>2.1.7</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>2.8.5</version>
+        </dependency>
+    </dependencies>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+                <version>2.10.3</version>
+                <configuration>
+                    <author>true</author>
+                    <breakiterator>true</breakiterator>
+                    <version>true</version>
+                    <links>
+                        <link>https://docs.oracle.com/javase/7/docs/api/</link>
+                        <link>https://tomcat.apache.org/tomcat-7.0-doc/jspapi/</link>
+                        <link>http://docs.oracle.com/javaee/7/api/</link>
+                    </links>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+        </plugins>
+    </reporting>
+
+    <profiles>
+        <profile>
+            <id>docker</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>io.fabric8</groupId>
+                        <artifactId>docker-maven-plugin</artifactId>
+                        <version>0.19.1</version>
+                        <configuration>
+                            <verbose>true</verbose>
+                            <apiVersion>1.23</apiVersion>
+                            <registry>nexus3.onap.org:10003</registry>
+                            <images>
+                                <!-- MUSIC War -->
+                                <image>
+                                    <name>onap/music/music_sb</name>
+                                    <alias>docker_music</alias>
+                                    <build>
+                                        <cleanup>true</cleanup>
+                                        <tags>
+                                            <tag>${docker.tag}</tag>
+                                            <tag>${docker.latest.tag}</tag>
+                                        </tags>
+                                        <dockerFileDir>${project.basedir}/distribution/music</dockerFileDir>
+<!--                                    <assembly>
+                                            <descriptorRef>artifact</descriptorRef>
+                                        </assembly>  -->
+                                    </build>
+                                </image>
+                                <!-- Cassandra -->
+                                <image>
+                                    <name>onap/music/cassandra_3_11</name>
+                                    <alias>docker_cassandra_sec</alias>
+                                    <build>
+                                        <cleanup>true</cleanup>
+                                        <tags>
+                                            <tag>${docker.tag}</tag>
+                                            <tag>${docker.latest.tag}</tag>
+                                        </tags>
+                                        <dockerFileDir>${project.basedir}/distribution/cassandra</dockerFileDir>
+                                    </build>
+                                </image>
+                                <!-- Cassandra Job -->
+                                <image>
+                                    <name>onap/music/cassandra_job</name>
+                                    <alias>docker_cassandra_job</alias>
+                                    <build>
+                                        <cleanup>true</cleanup>
+                                        <tags>
+                                            <tag>${docker.tag}</tag>
+                                            <tag>${docker.latest.tag}</tag>
+                                        </tags>
+                                        <dockerFileDir>${project.basedir}/distribution/cassandra_job</dockerFileDir>
+                                    </build>
+                                </image>
+                                <!-- tomcat 8.5 -->
+                                <!-- <image> <name>onap/music/tomcat_music</name>
+                                    <alias>docker_tomcat</alias> <build> <cleanup>true</cleanup> <tags> <tag>8.5-${timestamp}</tag>
+                                    <tag>8.5-latest</tag> </tags> <dockerFileDir>${project.basedir}/distribution/tomcat</dockerFileDir>
+                                    </build> </image>\ -->
+                            </images>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <id>clean-images</id>
+                                <phase>pre-clean</phase>
+                                <goals>
+                                    <goal>remove</goal>
+                                </goals>
+                                <configuration>
+                                    <removeAll>true</removeAll>
+                                    <image>music</image>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>generate-images</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>build</goal>
+                                </goals>
+                            </execution>
+                            <execution>
+                                <id>push-images</id>
+                                <phase>deploy</phase>
+                                <goals>
+                                    <goal>push</goal>
+                                </goals>
+                                <configuration>
+                                    <image>onap/music/music</image>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+        <profile>
+            <id>default</id>
+        </profile>
+    </profiles>
+    <distributionManagement>
+        <repository>
+            <id>ecomp-releases</id>
+            <name>Release Repository</name>
+            <url>${nexusproxy}/${releaseNexusPath}</url>
+        </repository>
+        <snapshotRepository>
+            <id>ecomp-snapshots</id>
+            <name>Snapshot Repository</name>
+            <url>${nexusproxy}/${snapshotNexusPath}</url>
+        </snapshotRepository>
+        <!-- added for javadoc -->
+        <site>
+            <id>ecomp-site</id>
+            <url>dav:${nexusproxy}${sitePath}</url>
+        </site>
+    </distributionManagement>
+</project>
@@ -208,7 +208,7 @@ public class CipherUtil {
             decrypted = cipher.doFinal(realData);
 
         } catch (Exception ex) {
-            
+               logger.error(EELFLoggerDelegate.errorLogger, "Error in decryptPKC", ex);
             
         }
 
diff --git a/music-core/src/main/java/org/onap/music/main/CorePropertiesLoader.java b/music-core/src/main/java/org/onap/music/main/CorePropertiesLoader.java
new file mode 100644 (file)
index 0000000..c386667
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ *  Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ *  Licensed 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.
+ * 
+ * ============LICENSE_END=============================================
+ * ====================================================================
+ */
+
+package org.onap.music.main;
+
+import java.util.Properties;
+
+import org.onap.music.eelf.logging.EELFLoggerDelegate;
+
+public class CorePropertiesLoader {
+
+    public static void loadProperties(Properties properties) {
+        if (properties.getProperty("cassandra.host")!=null) {
+            MusicUtil.setMyCassaHost(properties.getProperty("cassandra.host"));
+        }
+
+        if (properties.getProperty("cassandra.port")!=null) {
+            MusicUtil.setCassandraPort(Integer.parseInt(properties.getProperty("cassandra.port")));
+        }
+
+        if (properties.getProperty("cassandra.user")!=null) {
+            MusicUtil.setCassName(properties.getProperty("cassandra.user"));
+        }
+
+        if (properties.getProperty("cassandra.password")!=null) {
+            MusicUtil.setCassPwd(properties.getProperty("cassandra.password"));
+        }
+        
+        if (properties.getProperty("music.properties")!=null) {
+            MusicUtil.setMusicPropertiesFilePath(properties.getProperty("music.properties"));
+        }
+
+        if (properties.getProperty("debug")!=null) {
+            MusicUtil.setDebug(Boolean.parseBoolean(properties.getProperty("debug")));
+        }
+
+        if (properties.getProperty("version")!=null) {
+            MusicUtil.setVersion(properties.getProperty("version"));
+        }
+
+        if (properties.getProperty("build")!=null) {
+            MusicUtil.setBuild(properties.getProperty("build"));
+        }
+
+        if (properties.getProperty("lock.lease.period")!=null) {
+            MusicUtil.setDefaultLockLeasePeriod(Long.parseLong(properties.getProperty("lock.lease.period")));
+        }
+
+        if (properties.getProperty("cadi")!=null) {
+            MusicUtil.setIsCadi(Boolean.parseBoolean(properties.getProperty("cadi")));
+        }
+
+        if (properties.getProperty("keyspace.active")!=null) {
+            MusicUtil.setKeyspaceActive(Boolean.parseBoolean(properties.getProperty("keyspace.active")));
+        }
+
+        if (properties.getProperty("retry.count")!=null) {
+            MusicUtil.setRetryCount(Integer.parseInt(properties.getProperty("retry.count")));
+        }
+
+        if (properties.getProperty("transId.header.prefix")!=null) {
+            MusicUtil.setTransIdPrefix(properties.getProperty("transId.header.prefix"));
+        }
+
+        if (properties.getProperty("conversation.header.prefix")!=null) {
+            MusicUtil.setConversationIdPrefix(properties.getProperty("conversation.header.prefix"));
+        }
+
+        if (properties.getProperty("clientId.header.prefix")!=null) {
+            MusicUtil.setClientIdPrefix(properties.getProperty("clientId.header.prefix"));
+        }
+
+        if (properties.getProperty("messageId.header.prefix")!=null) {
+            MusicUtil.setMessageIdPrefix(properties.getProperty("messageId.header.prefix"));
+        }
+
+        if (properties.getProperty("transId.header.required")!=null) {
+            MusicUtil.setTransIdRequired(Boolean.parseBoolean(properties.getProperty("transId.header.required")));
+        }
+
+        if (properties.getProperty("conversation.header.required")!=null) {
+            MusicUtil.setConversationIdRequired(Boolean.parseBoolean(properties.getProperty("conversation.header.required")));
+        }
+
+        if (properties.getProperty("clientId.header.required")!=null) {
+            MusicUtil.setClientIdRequired(Boolean.parseBoolean(properties.getProperty("clientId.header.required")));
+        }
+
+        if (properties.getProperty("messageId.header.required")!=null) {
+            MusicUtil.setMessageIdRequired(Boolean.parseBoolean(properties.getProperty("messageId.header.required")));
+        }
+
+        if (properties.getProperty("music.aaf.ns")!=null) {
+            MusicUtil.setMusicAafNs(properties.getProperty("music.aaf.ns"));
+        }
+
+        if (properties.getProperty("cipher.enc.key")!=null) {
+            MusicUtil.setCipherEncKey(properties.getProperty("cipher.enc.key"));
+        }
+
+    }
+    
+}
diff --git a/music-core/src/main/webapp/WEB-INF/.gitignore b/music-core/src/main/webapp/WEB-INF/.gitignore
new file mode 100644 (file)
index 0000000..840e7d3
--- /dev/null
@@ -0,0 +1 @@
+/classes/
@@ -35,7 +35,7 @@ import java.util.UUID;
 import org.junit.Test;
 import org.onap.music.datastore.PreparedQueryObject;
 import org.onap.music.main.MusicUtil;
-import org.onap.music.main.PropertiesLoader;
+//import org.onap.music.main.CorePropertiesLoader;
 import org.onap.music.service.MusicCoreService;
 
 import com.datastax.driver.core.ConsistencyLevel;
@@ -123,7 +123,7 @@ public class MusicUtilTest {
         assertEquals(MusicUtil.buildVersion("1","2",null),"1.2");
     }
 
-
+/*
     @Test
     public void testBuileVersionResponse() {
         assertTrue(MusicUtil.buildVersionResponse("1","2","3").getClass().getSimpleName().equals("Builder"));
@@ -131,7 +131,7 @@ public class MusicUtilTest {
         assertTrue(MusicUtil.buildVersionResponse("1","2",null).getClass().getSimpleName().equals("Builder"));
         assertTrue(MusicUtil.buildVersionResponse(null,null,null).getClass().getSimpleName().equals("Builder"));
     }
-
+*/
     @Test
     public void testGetConsistency() {
         assertTrue(ConsistencyLevel.ONE.equals(MusicUtil.getConsistencyLevel("one")));
@@ -322,11 +322,11 @@ public class MusicUtilTest {
         MusicUtil.setTransIdRequired(true);
         assertEquals(true,MusicUtil.getTransIdRequired());
     }
-
+/*
     @Test
     public void testLoadProperties() {
         PropertiesLoader pl = new PropertiesLoader();
         pl.loadProperties();
     }
-    
+*/
 }
diff --git a/music-rest/pom.xml b/music-rest/pom.xml
new file mode 100755 (executable)
index 0000000..6c611e8
--- /dev/null
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ============LICENSE_START==========================================
+ org.onap.music
+ ===================================================================
+  Copyright (c) 2017 AT&T Intellectual Property
+ ===================================================================
+  Modifications Copyright (c) 2019 IBM.
+ ===================================================================
+  Licensed 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.
+
+ ============LICENSE_END=============================================
+ ====================================================================
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.onap.music</groupId>
+    <artifactId>MUSIC-rest</artifactId>
+    <packaging>jar</packaging>
+    <version>3.2.37-SNAPSHOT</version>
+    <description>
+            This is the MUSIC Spring-based REST service.
+    </description>
+    <name>music-rest</name>
+
+    <parent>
+        <groupId>org.onap.music</groupId>
+        <artifactId>MUSIC</artifactId>
+        <version>3.2.37-SNAPSHOT</version>
+    </parent>
+
+    <properties>
+        <start-class>org.onap.music.MusicApplication</start-class>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <java.version>1.8</java.version>
+        <jersey1.version>1.19</jersey1.version>
+        <jersey2.version>2.25.1</jersey2.version>
+        <jaxrs.version>2.0.1</jaxrs.version>
+
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <!--nexus -->
+        <nexusproxy>https://nexus.onap.org</nexusproxy>
+        <onap.nexus.url>https://nexus.onap.org</onap.nexus.url>
+        <snapshotNexusPath>/content/repositories/snapshots/</snapshotNexusPath>
+        <releaseNexusPath>/content/repositories/releases/</releaseNexusPath>
+        <stagingNexusPath>/content/repositories/staging/</stagingNexusPath>
+        <sitePath>/content/sites/site/org/onap/music/${project.version}</sitePath>
+        <!--maven -->
+        <timestamp>${maven.build.timestamp}</timestamp>
+        <maven.build.timestamp.format>yyyy.MM.dd.HH.mm</maven.build.timestamp.format>
+        <!--skip checkstyle -->
+        <maven.check.skip>false</maven.check.skip>
+        <!--docker -->
+        <docker.tag>${project.version}-${timestamp}</docker.tag>
+        <docker.latest.tag>${project.version}-latest</docker.latest.tag>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+    </properties>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-dependencies</artifactId>
+                <version>2.1.1.RELEASE</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <!-- Springboot -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-cassandra</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jersey</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-tomcat</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-aop</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.aspectj</groupId>
+            <artifactId>aspectjweaver</artifactId>
+            <scope>compile</scope>
+        </dependency>
+        <!-- Springboot -->
+        <dependency>
+          <groupId>org.onap.music</groupId>
+          <artifactId>MUSIC-core</artifactId>
+          <version>3.2.37-SNAPSHOT</version>
+        </dependency>
+        <!-- Jersey -->
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-client</artifactId>
+            <version>${jersey1.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-server</artifactId>
+            <version>${jersey1.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-json</artifactId>
+            <version>${jersey1.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.sun.jersey</groupId>
+            <artifactId>jersey-servlet</artifactId>
+            <version>${jersey1.version}</version>
+        </dependency>
+        <!-- /Jersey -->
+        <!-- Testing -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.12</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.cassandraunit</groupId>
+            <artifactId>cassandra-unit-spring</artifactId>
+            <version>3.5.0.1</version>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>ch.qos.logback</groupId>
+                    <artifactId>logback-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>ch.qos.logback</groupId>
+                    <artifactId>logback-classic</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.cassandraunit</groupId>
+                    <artifactId>cassandra-unit</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.dropwizard.metrics</groupId>
+                    <artifactId>metrics-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.addthis.metrics</groupId>
+                    <artifactId>reporter-config-base</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.cassandraunit</groupId>
+            <artifactId>cassandra-unit-shaded</artifactId>
+            <version>3.5.0.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <version>2.23.4</version>
+            <scope>test</scope>
+        </dependency>
+        <!--  /Testing -->
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.1.1.RELEASE</version>
+                <configuration>
+                    <mainClass>org.onap.music.MusicApplication</mainClass>
+                    <outputDirectory>../distribution/music/</outputDirectory>
+                    <addResources>true</addResources>
+                    <finalName>MUSIC-SB</finalName>
+                </configuration>
+                <executions>
+                    <execution>
+                        <phase>install</phase>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
+            <plugins>
+                <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
+                <plugin>
+                    <artifactId>maven-clean-plugin</artifactId>
+                    <version>3.1.0</version>
+                </plugin>
+                <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
+                <plugin>
+                    <artifactId>maven-resources-plugin</artifactId>
+                    <version>3.0.2</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>3.8.0</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-surefire-plugin</artifactId>
+                    <version>2.22.1</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>3.0.2</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-install-plugin</artifactId>
+                    <version>2.5.2</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-deploy-plugin</artifactId>
+                    <version>2.8.2</version>
+                </plugin>
+                <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
+                <plugin>
+                    <artifactId>maven-site-plugin</artifactId>
+                    <version>3.7.1</version>
+                </plugin>
+                <plugin>
+                    <artifactId>maven-project-info-reports-plugin</artifactId>
+                    <version>3.0.0</version>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+</project>
diff --git a/music-rest/src/main/java/LICENSE.txt b/music-rest/src/main/java/LICENSE.txt
new file mode 100644 (file)
index 0000000..cc6cdea
--- /dev/null
@@ -0,0 +1,24 @@
+
+The following license applies to all files in this and sub-directories. Licenses
+are included in individual source files where appropriate, and if it differs
+from this text, it supersedes this.  Any file that does not have license text
+defaults to being covered by this text; not all files support the addition of
+licenses. 
+#
+# -------------------------------------------------------------------------
+#   Copyright (c) 2017 AT&T Intellectual Property
+#
+#   Licensed 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.
+#
+# -------------------------------------------------------------------------
+#
\ No newline at end of file
diff --git a/music-rest/src/main/java/org/onap/music/eelf/healthcheck/MusicHealthCheck.java b/music-rest/src/main/java/org/onap/music/eelf/healthcheck/MusicHealthCheck.java
new file mode 100644 (file)
index 0000000..fbfc0de
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ *  Copyright (c) 2017 AT&T Intellectual Property
+ *  
+ *  Modifications Copyright (C) 2019 IBM.
+ * ===================================================================
+ *  Licensed 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.
+ * 
+ * ============LICENSE_END=============================================
+ * ====================================================================
+ */
+
+package org.onap.music.eelf.healthcheck;
+
+import java.util.UUID;
+
+import org.onap.music.datastore.MusicDataStoreHandle;
+import org.onap.music.datastore.PreparedQueryObject;
+import org.onap.music.eelf.logging.EELFLoggerDelegate;
+import org.onap.music.eelf.logging.format.AppMessages;
+import org.onap.music.eelf.logging.format.ErrorSeverity;
+import org.onap.music.eelf.logging.format.ErrorTypes;
+import org.onap.music.exceptions.MusicQueryException;
+import org.onap.music.exceptions.MusicServiceException;
+import org.onap.music.main.MusicUtil;
+import org.onap.music.main.ResultType;
+import org.onap.music.main.MusicCore;
+
+import com.datastax.driver.core.ConsistencyLevel;
+
+/**
+ * @author inam
+ *
+ */
+public class MusicHealthCheck {
+
+    private static EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(MusicUtil.class);
+
+    private String cassandrHost;
+
+    public String getCassandraStatus(String consistency) {
+        logger.info(EELFLoggerDelegate.applicationLogger, "Getting Status for Cassandra");
+        
+        boolean result = false;
+        UUID randomUUID = UUID.randomUUID();
+        try {
+            result = getAdminKeySpace(consistency, randomUUID);
+        } catch( Exception e) {
+            if(e.getMessage().toLowerCase().contains("unconfigured table healthcheck")) {
+                logger.error("Error", e);
+                logger.debug("Creating table....");
+                try {
+                    boolean ksresult = createKeyspace();
+                    if(ksresult) {
+                        result = getAdminKeySpace(consistency, randomUUID);
+                    }
+                } catch (MusicServiceException e1) {
+                    logger.error(EELFLoggerDelegate.errorLogger, e1.getMessage(), AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.UNKNOWN, e1);
+                } catch (MusicQueryException e1) {
+                    logger.error(EELFLoggerDelegate.errorLogger, e1.getMessage(), AppMessages.UNKNOWNERROR, ErrorSeverity.ERROR, ErrorTypes.UNKNOWN,e1);
+                }
+            } else {
+                logger.error("Error", e);
+                return "One or more nodes are down or not responding.";
+            }
+        }
+        try {
+                       cleanHealthCheckId(randomUUID);
+               } catch (MusicServiceException | MusicQueryException e) {
+                       logger.error("Error while cleaning healthcheck record id...", e);
+               }
+        if (result) {
+            return "ACTIVE";
+        } else {
+            logger.info(EELFLoggerDelegate.applicationLogger, "Cassandra Service is not responding");
+            return "INACTIVE";
+        }
+    }
+
+    private Boolean getAdminKeySpace(String consistency, UUID randomUUID) throws MusicServiceException,MusicQueryException {
+        PreparedQueryObject pQuery = new PreparedQueryObject();
+        pQuery.appendQueryString("insert into admin.healthcheck (id) values (?)");
+        pQuery.addValue(randomUUID);
+        ResultType rs = null;
+        rs = MusicCore.nonKeyRelatedPut(pQuery, consistency);
+        logger.info(rs.toString());
+        return null != rs;
+        
+    }
+
+       private void cleanHealthCheckId(UUID randomUUID) throws MusicServiceException, MusicQueryException {
+               String cleanQuery = "delete  from admin.healthcheck where id = ?";
+        PreparedQueryObject deleteQueryObject = new PreparedQueryObject();
+        deleteQueryObject.appendQueryString(cleanQuery);
+        deleteQueryObject.addValue(randomUUID);
+        MusicDataStoreHandle.getDSHandle().executePut(deleteQueryObject, "eventual");  
+        logger.info(EELFLoggerDelegate.applicationLogger, "Cassandra healthcheck responded and cleaned up.");
+       }
+    
+    
+    
+    private boolean createKeyspace() throws MusicServiceException,MusicQueryException {
+        PreparedQueryObject pQuery = new PreparedQueryObject();
+        pQuery.appendQueryString("CREATE TABLE admin.healthcheck (id uuid PRIMARY KEY)");
+        ResultType rs = null ;
+        rs = MusicCore.nonKeyRelatedPut(pQuery, ConsistencyLevel.ONE.toString());
+        return rs != null && rs.getResult().toLowerCase().contains("success");
+    }
+
+    public String getCassandrHost() {
+        return cassandrHost;
+    }
+
+    public void setCassandrHost(String cassandrHost) {
+        this.cassandrHost = cassandrHost;
+    }
+
+}
\ No newline at end of file
diff --git a/music-rest/src/test/java/LICENSE.txt b/music-rest/src/test/java/LICENSE.txt
new file mode 100644 (file)
index 0000000..cc6cdea
--- /dev/null
@@ -0,0 +1,24 @@
+
+The following license applies to all files in this and sub-directories. Licenses
+are included in individual source files where appropriate, and if it differs
+from this text, it supersedes this.  Any file that does not have license text
+defaults to being covered by this text; not all files support the addition of
+licenses. 
+#
+# -------------------------------------------------------------------------
+#   Copyright (c) 2017 AT&T Intellectual Property
+#
+#   Licensed 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.
+#
+# -------------------------------------------------------------------------
+#
\ No newline at end of file
diff --git a/music-rest/src/test/java/org/onap/music/unittests/CassandraCQL.java b/music-rest/src/test/java/org/onap/music/unittests/CassandraCQL.java
new file mode 100644 (file)
index 0000000..7b116bc
--- /dev/null
@@ -0,0 +1,247 @@
+/*
+ * ============LICENSE_START==========================================
+ * org.onap.music
+ * ===================================================================
+ *  Copyright (c) 2017 AT&T Intellectual Property
+ * ===================================================================
+ *  Licensed 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.
+ * 
+ * ============LICENSE_END=============================================
+ * ====================================================================
+ */
+
+package org.onap.music.unittests;
+
+/**
+ * @author srupane
+ * 
+ */
+
+import java.math.BigInteger;
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+//import org.apache.thrift.transport.TTransportException;
+import org.cassandraunit.utils.EmbeddedCassandraServerHelper;
+import org.onap.music.datastore.MusicDataStore;
+import org.onap.music.datastore.PreparedQueryObject;
+import org.onap.music.lockingservice.cassandra.LockType;
+import com.datastax.driver.core.Cluster;
+import com.datastax.driver.core.Session;
+import com.datastax.driver.extras.codecs.enums.EnumNameCodec;
+
+public class CassandraCQL {
+       public static final String createAdminKeyspace = "CREATE KEYSPACE admin WITH REPLICATION = "
+                       + "{'class' : 'SimpleStrategy' , 'replication_factor': 1} AND DURABLE_WRITES = true";
+       
+       public static final String createAdminTable = "CREATE TABLE admin.keyspace_master (" + "  uuid uuid, keyspace_name text,"
+                       + "  application_name text, is_api boolean,"
+                       + "  password text, username text,"
+                       + "  is_aaf boolean, PRIMARY KEY (uuid)\n" + ");";
+       
+    public static final String createKeySpace =
+                    "CREATE KEYSPACE IF NOT EXISTS testcassa WITH replication = "
+                    +"{'class':'SimpleStrategy','replication_factor':1} AND durable_writes = true;";
+
+    public static final String dropKeyspace = "DROP KEYSPACE IF EXISTS testcassa";
+
+    public static final String createTableEmployees =
+                    "CREATE TABLE IF NOT EXISTS testcassa.employees "
+                    + "(vector_ts text,empid uuid,empname text,empsalary varint,address Map<text,text>,PRIMARY KEY (empname)) "
+                    + "WITH comment='Financial Info of employees' "
+                    + "AND compression={'sstable_compression':'DeflateCompressor','chunk_length_kb':64} "
+                    + "AND compaction={'class':'SizeTieredCompactionStrategy','min_threshold':6};";
+
+    public static final String insertIntoTablePrepared1 =
+                    "INSERT INTO testcassa.employees (vector_ts,empid,empname,empsalary) VALUES (?,?,?,?); ";
+
+    public static final String insertIntoTablePrepared2 =
+                    "INSERT INTO testcassa.employees (vector_ts,empid,empname,empsalary,address) VALUES (?,?,?,?,?);";
+
+    public static final String selectALL = "SELECT *  FROM testcassa.employees;";
+
+    public static final String selectSpecific =
+                    "SELECT *  FROM testcassa.employees WHERE empname= ?;";
+
+    public static final String updatePreparedQuery =
+                    "UPDATE testcassa.employees  SET vector_ts=?,address= ? WHERE empname= ?;";
+
+    public static final String deleteFromTable = " ";
+
+    public static final String deleteFromTablePrepared = " ";
+
+    // Set Values for Prepared Query
+
+    public static List<Object> setPreparedInsertValues1() {
+
+        List<Object> preppreparedInsertValues1 = new ArrayList<>();
+        String vectorTs =
+                        String.valueOf(Thread.currentThread().getId() + System.currentTimeMillis());
+        UUID empId = UUID.fromString("abc66ccc-d857-4e90-b1e5-df98a3d40cd6");
+        BigInteger empSalary = BigInteger.valueOf(23443);
+        String empName = "Mr Test one";
+        preppreparedInsertValues1.add(vectorTs);
+        preppreparedInsertValues1.add(empId);
+        preppreparedInsertValues1.add(empName);
+        preppreparedInsertValues1.add(empSalary);
+        return preppreparedInsertValues1;
+    }
+
+    public static List<Object> setPreparedInsertValues2() {
+
+        List<Object> preparedInsertValues2 = new ArrayList<>();
+        String vectorTs =
+                        String.valueOf(Thread.currentThread().getId() + System.currentTimeMillis());
+        UUID empId = UUID.fromString("abc434cc-d657-4e90-b4e5-df4223d40cd6");
+        BigInteger empSalary = BigInteger.valueOf(45655);
+        String empName = "Mr Test two";
+        Map<String, String> address = new HashMap<>();
+        preparedInsertValues2.add(vectorTs);
+        preparedInsertValues2.add(empId);
+        preparedInsertValues2.add(empName);
+        preparedInsertValues2.add(empSalary);
+        address.put("Street", "1 some way");
+        address.put("City", "Some town");
+        preparedInsertValues2.add(address);
+        return preparedInsertValues2;
+    }
+
+    public static List<Object> setPreparedUpdateValues() {
+
+        List<Object> preparedUpdateValues = new ArrayList<>();
+        String vectorTs =
+                        String.valueOf(Thread.currentThread().getId() + System.currentTimeMillis());
+        Map<String, String> address = new HashMap<>();
+        preparedUpdateValues.add(vectorTs);
+        String empName = "Mr Test one";
+        address.put("Street", "101 Some Way");
+        address.put("City", "New York");
+        preparedUpdateValues.add(address);
+        preparedUpdateValues.add(empName);
+        return preparedUpdateValues;
+    }
+
+    // Generate Different Prepared Query Objects
+    /**
+     * Query Object for Get.
+     * 
+     * @return
+     */
+    public static PreparedQueryObject setPreparedGetQuery() {
+
+        PreparedQueryObject queryObject = new PreparedQueryObject();
+        String empName1 = "Mr Test one";
+        queryObject.appendQueryString(selectSpecific);
+        queryObject.addValue(empName1);
+        return queryObject;
+    }
+
+    /**
+     * Query Object 1 for Insert.
+     * 
+     * @return {@link PreparedQueryObject}
+     */
+    public static PreparedQueryObject setPreparedInsertQueryObject1() {
+
+        PreparedQueryObject queryobject = new PreparedQueryObject();
+        queryobject.appendQueryString(insertIntoTablePrepared1);
+        List<Object> values = setPreparedInsertValues1();
+        if (!values.isEmpty() || values != null) {
+            for (Object o : values) {
+                queryobject.addValue(o);
+            }
+        }
+        return queryobject;
+
+    }
+
+    /**
+     * Query Object 2 for Insert.
+     * 
+     * @return {@link PreparedQueryObject}
+     */
+    public static PreparedQueryObject setPreparedInsertQueryObject2() {
+
+        PreparedQueryObject queryobject = new PreparedQueryObject();
+        queryobject.appendQueryString(insertIntoTablePrepared2);
+        List<Object> values = setPreparedInsertValues2();
+        if (!values.isEmpty() || values != null) {
+            for (Object o : values) {
+                queryobject.addValue(o);
+            }
+        }
+        return queryobject;
+
+    }
+
+    /**
+     * Query Object for Update.
+     * 
+     * @return {@link PreparedQueryObject}
+     */
+    public static PreparedQueryObject setPreparedUpdateQueryObject() {
+
+        PreparedQueryObject queryobject = new PreparedQueryObject();
+        queryobject.appendQueryString(updatePreparedQuery);
+        List<Object> values = setPreparedUpdateValues();
+        if (!values.isEmpty() || values != null) {
+            for (Object o : values) {
+                queryobject.addValue(o);
+            }
+        }
+        return queryobject;
+
+    }
+
+    private static ArrayList<String> getAllPossibleLocalIps() {
+        ArrayList<String> allPossibleIps = new ArrayList<String>();
+        try {
+            Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
+            while (en.hasMoreElements()) {
+                NetworkInterface ni = (NetworkInterface) en.nextElement();
+                Enumeration<InetAddress> ee = ni.getInetAddresses();
+                while (ee.hasMoreElements()) {
+                    InetAddress ia = (InetAddress) ee.nextElement();
+                    allPossibleIps.add(ia.getHostAddress());
+                }
+            }
+        } catch (SocketException e) {
+            System.out.println(e.getMessage());
+        }
+        return allPossibleIps;
+    }
+
+    public static MusicDataStore connectToEmbeddedCassandra() throws Exception {
+       System.setProperty("log4j.configuration", "log4j.properties");
+       
+        String address = "localhost";
+
+        EmbeddedCassandraServerHelper.startEmbeddedCassandra();
+        Cluster cluster = new Cluster.Builder().withoutJMXReporting().withoutMetrics().addContactPoint(address).withPort(9142).build();
+        cluster.getConfiguration().getSocketOptions().setReadTimeoutMillis(5000);
+        EnumNameCodec<LockType> lockTypeCodec = new EnumNameCodec<LockType>(LockType.class);
+        cluster.getConfiguration().getCodecRegistry().register(lockTypeCodec);
+        
+        Session session = cluster.connect();
+        
+        return new MusicDataStore(cluster, session);
+    }
+
+}
diff --git a/music-rest/src/test/resources/logback.xml b/music-rest/src/test/resources/logback.xml
new file mode 100644 (file)
index 0000000..6bc5fd5
--- /dev/null
@@ -0,0 +1,302 @@
+<!-- 
+ ============LICENSE_START==========================================
+ org.onap.music
+ ===================================================================
+  Copyright (c) 2017 AT&T Intellectual Property
+ ===================================================================
+  Licensed 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.
+ ============LICENSE_END=============================================
+ ====================================================================
+-->
+<configuration scan="true" scanPeriod="3 seconds">
+  <!--<jmxConfigurator /> -->
+  <!-- directory path for all other type logs -->
+  <property name="logDir" value="/opt/app/music/logs" />
+  
+  <!-- directory path for debugging type logs -->
+  <property name="debugDir" value="debug-logs" />
+  
+  <!--  specify the component name -->
+  <!--  <property name="componentName" value="EELF"></property> -->
+  <property name="componentName" value="MUSIC"></property>
+  
+  <!--  log file names -->
+  <property name="generalLogName" value="music" />
+  <property name="securityLogName" value="security" />
+  <property name="errorLogName" value="error" />
+  <property name="metricsLogName" value="metrics" />
+  <property name="auditLogName" value="audit" />
+  <property name="debugLogName" value="debug" />
+  <property name="defaultPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" />
+  <!-- <property name="applicationLoggerPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %msg%n" /> -->
+  <property name="applicationLoggerPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5level %X{keyspace} - %msg%n" />
+  <property name="auditLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+  <property name="metricsLoggerPattern" value="%X{BeginTimestamp}|%X{EndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{ElapsedTime}|%X{ServerFQDN}|%X{RemoteHost}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVirtualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" />
+  <!-- <property name="errorLoggerPattern" value= "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %msg%n    " /> -->
+  <property name="errorLoggerPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5level %X{keyspace} - %msg%n" />
+  <property name="debugLoggerPattern" value="%date{ISO8601,UTC}|%X{RequestId}| %msg%n" ></property>
+  <property name="logDirectory" value="${logDir}/${componentName}" />
+  <property name="debugLogDirectory" value="${debugDir}/${componentName}" />
+  <!-- Example evaluator filter applied against console appender -->
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <!-- <encoder>
+      <pattern>${defaultPattern}</pattern>
+    </encoder> -->
+    <layout class="">
+        <pattern>
+                    %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n    
+        </pattern>
+    </layout>
+  </appender>
+
+  <!-- ============================================================================ -->
+  <!-- EELF Appenders -->
+  <!-- ============================================================================ -->
+<!--   <appender name="EELF"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${generalLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${generalLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>100MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${applicationLoggerPattern}</pattern>
+    </encoder>
+  </appender> -->
+  
+  <!-- <appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDirectory}/${generalLogName}.log</file>
+       <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">        
+             daily rollover
+             <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+             <maxFileSize>1GB</maxFileSize>    
+             <maxHistory>5</maxHistory>
+             <totalSizeCap>5GB</totalSizeCap>
+       </rollingPolicy>
+       <encoder>
+             <pattern>${applicationLoggerPattern}</pattern>
+       </encoder>
+     </appender> -->
+     
+     
+     <appender name="EELF" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${logDirectory}/${generalLogName}.log</file>
+           <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">        
+             <!-- daily rollover -->
+             <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
+             <maxFileSize>1GB</maxFileSize>    
+             <maxHistory>5</maxHistory>
+             <totalSizeCap>5GB</totalSizeCap>
+           </rollingPolicy>
+           <encoder>
+             <pattern>${applicationLoggerPattern}</pattern>
+           </encoder>
+     </appender>
+  
+  <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <includeCallerData>true</includeCallerData>
+    <appender-ref ref="EELF" />
+  </appender>
+
+  <!-- EELF Security Appender. This appender is used to record security events 
+    to the security log file. Security events are separate from other loggers 
+    in EELF so that security log records can be captured and managed in a secure 
+    way separate from the other logs. This appender is set to never discard any 
+    events. -->
+  <appender name="EELFSecurity"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${securityLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n    </pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <discardingThreshold>0</discardingThreshold>
+    <appender-ref ref="EELFSecurity" />
+  </appender>
+
+
+  
+  
+  <!-- EELF Audit Appender. This appender is used to record audit engine 
+    related logging events. The audit logger and appender are specializations 
+    of the EELF application root logger and appender. This can be used to segregate 
+    Policy engine events from other components, or it can be eliminated to record 
+    these events as part of the application root log. -->
+    
+  <appender name="EELFAudit"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${auditLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${auditLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+         <pattern>${auditLoggerPattern}</pattern>
+    </encoder>
+  </appender>
+  <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFAudit" />
+  </appender>
+
+<appender name="EELFMetrics"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${metricsLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${metricsLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <!-- <pattern>"%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - 
+        %msg%n"</pattern> -->
+      <pattern>${metricsLoggerPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  
+  <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFMetrics"/>
+  </appender>
+   
+  <appender name="EELFError"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${logDirectory}/${errorLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${logDirectory}/${errorLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${errorLoggerPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFError"/>
+  </appender>
+  
+   <appender name="EELFDebug"
+    class="ch.qos.logback.core.rolling.RollingFileAppender">
+    <file>${debugLogDirectory}/${debugLogName}.log</file>
+    <rollingPolicy
+      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
+      <fileNamePattern>${debugLogDirectory}/${debugLogName}.%i.log.zip
+      </fileNamePattern>
+      <minIndex>1</minIndex>
+      <maxIndex>9</maxIndex>
+    </rollingPolicy>
+    <triggeringPolicy
+      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
+      <maxFileSize>5MB</maxFileSize>
+    </triggeringPolicy>
+    <encoder>
+      <pattern>${debugLoggerPattern}</pattern>
+    </encoder>
+  </appender>
+  
+  <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>256</queueSize>
+    <appender-ref ref="EELFDebug" />
+    <includeCallerData>true</includeCallerData>
+  </appender>
+  
+  <!-- ============================================================================ -->
+  <!--  EELF loggers -->
+  <!-- ============================================================================ -->
+  <logger name="com.att.eelf" level="info" additivity="false">
+    <appender-ref ref="asyncEELF" />
+    
+  </logger>
+  <logger name="com.att.eelf.security" level="info" additivity="false">
+    <appender-ref ref="asyncEELFSecurity" />
+   
+  </logger>
+
+
+  <logger name="com.att.eelf.audit" level="info" additivity="false">
+    <appender-ref ref="asyncEELFAudit" />
+    
+  </logger>
+  
+  <logger name="com.att.eelf.metrics" level="info" additivity="false">
+        <appender-ref ref="asyncEELFMetrics" />
+        
+  </logger>
+   <logger name="com.att.eelf.error" level="error" additivity="false">
+  <appender-ref ref="asyncEELFError" />
+  
+  </logger>
+  
+   <logger name="com.att.eelf.debug" level="debug" additivity="false">
+        <appender-ref ref="asyncEELFDebug" />
+       
+  </logger>
+  
+  <root level="INFO">
+    <appender-ref ref="asyncEELF" />
+    <!-- <appender-ref ref="STDOUT" /> -->
+  </root>
+
+  <!-- Conductor Specific additions to squash WARNING and INFO -->
+  <logger name="com.datastax.driver.core.Cluster" level="ERROR"/> 
+  <logger name="org.onap.music.main.MusicCore" level="ERROR"/> 
+
+</configuration>
diff --git a/pom.xml b/pom.xml
index 8864c0b..c3895ad 100755 (executable)
--- a/pom.xml
+++ b/pom.xml
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.onap.music</groupId>
     <artifactId>MUSIC</artifactId>
-    <packaging>jar</packaging>
-    <version>3.2.36-SNAPSHOT</version>
+    <packaging>pom</packaging>
+    <version>3.2.37-SNAPSHOT</version>
     <description>
-            This is the MUSIC REST interface, packaged as a Springboot jar file.
+            This is the MUSIC project.
     </description>
 
     <parent>
         <relativePath/>
     </parent>
 
-    <dependencyManagement>
-        <dependencies>
-            <!-- <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-starter-data-jpa</artifactId>
-                <version>2.0.3.RELEASE</version>
-            </dependency> -->
-            <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-dependencies</artifactId>
-                <version>2.1.1.RELEASE</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
     <properties>
-        <start-class>org.onap.music.MusicApplication</start-class>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <java.version>1.8</java.version>
-        <jersey1.version>1.19</jersey1.version>
-        <jersey2.version>2.25.1</jersey2.version>
-        <jaxrs.version>2.0.1</jaxrs.version>
-        <cassandra.version>3.6.0</cassandra.version>
-
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <!--nexus -->
         <nexusproxy>https://nexus.onap.org</nexusproxy>
         <onap.nexus.url>https://nexus.onap.org</onap.nexus.url>
         </repository>
     </repositories>
 
-    <build>
-        <finalName>${project.artifactId}</finalName>
-        <sourceDirectory>src/main/java</sourceDirectory>
-        <outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory>
-        <testSourceDirectory>src/test/java</testSourceDirectory>
-        <testOutputDirectory>target/test-classes</testOutputDirectory>
-        <defaultGoal>validate</defaultGoal>
-        <resources>
-            <resource>
-                <directory>src/main/resources</directory>
-                <filtering>true</filtering>
-                <includes>
-                <include>**/*.properties</include>
-                <include>**/*.xml</include>
-                <include>**/*.ccf</include>
-                </includes>
-            </resource>
-        </resources>
-        <testResources>
-            <testResource>
-                <directory>${project.basedir}/src/test/resources</directory>
-            </testResource>
-            <!-- <testResource>
-                <directory>${project.basedir}/src/main/resources</directory>
-            </testResource> -->
-        </testResources>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>2.1.1.RELEASE</version>
-                <configuration>
-                    <mainClass>org.onap.music.MusicApplication</mainClass>
-                    <outputDirectory>./distribution/music/</outputDirectory>
-                    <addResources>true</addResources>
-                    <finalName>${project.artifactId}-SB</finalName>
-                </configuration>
-                <executions>
-                    <execution>
-                        <phase>install</phase>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-<!--
-            <plugin>
-                <artifactId>maven-war-plugin</artifactId>
-                <version>2.4</version>
-                <configuration>
-                    <warSourceDirectory>WebContent</warSourceDirectory>
-                    <failOnMissingWebXml>false</failOnMissingWebXml>
-                </configuration>
-            </plugin>
--->
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-                <configuration>
-                    <skip>${maven.check.skip}</skip>
-                </configuration>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <version>2.4</version>
-                <executions>
-                    <execution>
-                        <id>make-a-jar</id>
-                        <phase>compile</phase>
-                        <goals>
-                            <goal>jar</goal>
-                        </goals>
-                        <configuration>
-                            <excludes>
-                                <!--<exclude>**/*.xml</exclude>
-                                <exclude>**/*.properties</exclude>-->
-                                <exclude>**/Sample*</exclude>
-                            </excludes>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-install-plugin</artifactId>
-                <version>2.4</version>
-                <executions>
-                    <execution>
-                        <id>base</id>
-                        <phase>install</phase>
-                        <goals>
-                            <goal>install-file</goal>
-                        </goals>
-                        <configuration>
-                            <packaging>jar</packaging>
-                            <artifactId>${project.artifactId}</artifactId>
-                            <groupId>${project.groupId}</groupId>
-                            <version>${project.version}</version>
-                            <file>${project.build.directory}/${project.artifactId}.jar</file>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <id>spring</id>
-                        <phase>install</phase>
-                        <goals>
-                            <goal>install-file</goal>
-                        </goals>
-                        <configuration>
-                            <packaging>jar</packaging>
-                            <artifactId>${project.artifactId}-SB</artifactId>
-                            <groupId>${project.groupId}</groupId>
-                            <version>${project.version}</version>
-                            <file>${project.basedir}/distribution/music/${project.artifactId}-SB.jar</file>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-    <dependencies>
-        <!-- Springboot -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.data</groupId>
-            <artifactId>spring-data-cassandra</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-jersey</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-tomcat</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-aop</artifactId>
-            <scope>compile</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-autoconfigure</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.aspectj</groupId>
-            <artifactId>aspectjweaver</artifactId>
-            <scope>compile</scope>
-        </dependency>
-        <!-- Springboot -->
-        <!-- Development -->
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.4</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
-            <version>3.0.1</version>
-            <scope>provided</scope>
-        </dependency>
-        <!-- /Development -->
-        <!-- Logging -->
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-core</artifactId>
-            <version>1.2.3</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-            <version>1.2.3</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.att.eelf</groupId>
-            <artifactId>eelf-core</artifactId>
-            <version>1.0.1-oss</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.powermock</groupId>
-                    <artifactId>powermock-api-mockito</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.powermock</groupId>
-                    <artifactId>powermock-module-junit4</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <!-- End Logging -->
-        <!-- Cassandra -->
-        <dependency>
-            <groupId>io.dropwizard.metrics</groupId>
-            <artifactId>metrics-core</artifactId>
-            <version>4.1.0-rc3</version>
-        </dependency>
-        <dependency>
-            <groupId>com.datastax.cassandra</groupId>
-            <artifactId>cassandra-driver-core</artifactId>
-            <version>${cassandra.version}</version>
-        </dependency>
-        <dependency>
-          <groupId>com.datastax.cassandra</groupId>
-          <artifactId>cassandra-driver-extras</artifactId>
-          <version>${cassandra.version}</version>
-        </dependency>
-        <!-- /Cassandra -->
-        <!-- Jersey -->
-        <dependency>
-            <groupId>com.sun.jersey</groupId>
-            <artifactId>jersey-client</artifactId>
-            <version>${jersey1.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.jersey</groupId>
-            <artifactId>jersey-server</artifactId>
-            <version>${jersey1.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.jersey</groupId>
-            <artifactId>jersey-json</artifactId>
-            <version>${jersey1.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.jersey</groupId>
-            <artifactId>jersey-servlet</artifactId>
-            <version>${jersey1.version}</version>
-        </dependency>
-        <!-- /Jersey -->
-
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-jcs-core</artifactId>
-            <version>2.2</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-            <version>1.11</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-            <version>3.8</version>
-        </dependency>
-
-        <!-- Testing -->
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit-spring</artifactId>
-            <version>3.5.0.1</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-log4j12</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>ch.qos.logback</groupId>
-                    <artifactId>logback-core</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>ch.qos.logback</groupId>
-                    <artifactId>logback-classic</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.cassandraunit</groupId>
-                    <artifactId>cassandra-unit</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>io.dropwizard.metrics</groupId>
-                    <artifactId>metrics-core</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.addthis.metrics</groupId>
-                    <artifactId>reporter-config-base</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit-shaded</artifactId>
-            <version>3.5.0.1</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
-            <version>2.23.4</version>
-            <scope>test</scope>
-        </dependency>
-        <!--  /Testing -->
-
-        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.datatype/jackson-datatype-jsr310 -->
-        <dependency>
-            <groupId>com.fasterxml.jackson.datatype</groupId>
-            <artifactId>jackson-datatype-jsr310</artifactId>
-            <version>2.9.9</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-            <version>2.9.9.2</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-            <version>2.9.9</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-annotations</artifactId>
-            <version>2.9.9</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.httpcomponents</groupId>
-            <artifactId>httpclient</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-jersey-jaxrs</artifactId>
-            <version>1.5.22</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>de.svenkubiak</groupId>
-            <artifactId>jBCrypt</artifactId>
-            <version>0.4.1</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-handler</artifactId>
-            <version>4.1.33.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-buffer</artifactId>
-            <version>4.1.33.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-codec</artifactId>
-            <version>4.1.33.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-common</artifactId>
-            <version>4.1.33.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-resolver</artifactId>
-            <version>4.1.33.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-transport</artifactId>
-            <version>4.1.33.Final</version>
-        </dependency>
-        <dependency>
-            <groupId>org.onap.aaf.authz</groupId>
-            <artifactId>aaf-cadi-aaf</artifactId>
-            <version>2.1.7</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>log4j</groupId>
-                    <artifactId>log4j</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.onap.aaf.authz</groupId>
-            <artifactId>aaf-cadi-client</artifactId>
-            <version>2.1.7</version>
-        </dependency>
-        <dependency>
-            <groupId>org.onap.aaf.authz</groupId>
-            <artifactId>aaf-cadi-core</artifactId>
-            <version>2.1.7</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.code.gson</groupId>
-            <artifactId>gson</artifactId>
-            <version>2.8.5</version>
-        </dependency>
-    </dependencies>
-
     <reporting>
         <plugins>
             <plugin>
             <url>dav:${nexusproxy}${sitePath}</url>
         </site>
     </distributionManagement>
+    <modules>
+        <module>music-core</module>
+        <module>music-rest</module>
+    </modules>
 </project>