<?xml version="1.0"?>
<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>

	<!-- This is the Maven project object model (POM) file for the open-source 
		SDK web app. This is NOT the Portal - but it is developed and supported by 
		the Portal team. -->

	<parent>
		<groupId>org.onap.portal.sdk</groupId>
		<artifactId>epsdk-project</artifactId>
		<version>3.3.0-SNAPSHOT</version>
	</parent>

	<!-- GroupId is inherited from parent -->
	<artifactId>epsdk-app-os</artifactId>
	<!-- Version is inherited from parent -->
	<packaging>war</packaging>
	<name>ONAP Portal SDK Webapp for OpenSource</name>
	<description>ONAP Portal SDK Web Application for public release</description>

	<properties>
		<!-- This determines the EPSDK library versions, helpful for testing -->
		<epsdk.version>${project.version}</epsdk.version>
		<!-- Skip assembling the zip; assemble via mvn -Dskipassembly=false .. -->
		<skipassembly>true</skipassembly>
		<!-- Tests usually require some setup that maven cannot do, so skip. -->
		<skiptests>false</skiptests>
		<angularTestPhase>compile</angularTestPhase>
		<jacoco.version>0.7.9</jacoco.version>
		<!-- Version number gets stored only here -->
		<tomcat.download.path>http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.37/bin</tomcat.download.path>
		<tomcat.download.name>apache-tomcat-8.0.37</tomcat.download.name> 

	<sonar.typescript.lcov.reportPaths>ngapp/coverage/lcov.info</sonar.typescript.lcov.reportPaths>
       	<sonar.sources>ngapp/src</sonar.sources>
	<sonar.projectKey>portal-sdk</sonar.projectKey>
	<sonar.projectName>portal-sdk</sonar.projectName> 
	<sonar.exclusions>**/node_modules/**,**/*.spec.ts,**/*.module.ts,**/environment.prod.ts,**/*.js,**/main.ts,**/header-interceptor.ts,**/dynamic-widget.component.ts</sonar.exclusions>
	<sonar.test.inclusions>**/*.spec.ts</sonar.test.inclusions>
	<sonar.tests>ngapp/src</sonar.tests>
	<sonar.sourceEncoding>UTF-8</sonar.sourceEncoding> 
        <sonar.nodejs.executable>node</sonar.nodejs.executable>
	</properties>

	<!-- repositories are inherited from parent -->

	<!-- profiles are inherited from parent -->

	<build>
		<!-- The war file name carries no version number -->
		<finalName>${project.artifactId}</finalName>

		<plugins>
			<plugin>
				<artifactId>maven-clean-plugin</artifactId>
				<version>3.0.0</version>
				<configuration>
					<filesets>
						<fileset>
							<directory>${basedir}/ngapp/app/dist</directory>
						</fileset>
					</filesets>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<!-- parent specifies the <version>2.19.1</version> -->
				<configuration>
					<skipTests>${skiptests}</skipTests>
					<includes>
						<include>**/Test*.java</include>
						<include>**/*Test.java</include>
						<include>**/*TestCase.java</include>
					</includes>
					<additionalClasspathElements>
						<additionalClasspathElement>${basedir}/war</additionalClasspathElement>
					</additionalClasspathElements>
					<systemPropertyVariables>
						<container.classpath>classpath:</container.classpath>
					</systemPropertyVariables>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<!-- version managed by oparent ${jacocoVersion}</version> -->
				<executions>
					<!-- disable jacoco executions from oparent -->
					<execution>
						<id>pre-unit-test</id>
						<phase>none</phase>
					</execution>
					<execution>
						<id>post-unit-test</id>
						<phase>none</phase>
					</execution>
					<execution>
						<id>pre-integration-test</id>
						<phase>none</phase>
					</execution>
					<execution>
						<id>post-integration-test</id>
						<phase>none</phase>
					</execution>
					<!-- Order matters -->
					<execution>
						<id>portal-prepare-agent</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<destFile>${sonar.jacoco.reportPath}</destFile>
						</configuration>
					</execution>
					<!-- offline instrumentation for PowerMock -->
					<execution>
						<id>portal-offline-instrument</id>
						<goals>
							<goal>instrument</goal>
						</goals>
					</execution>
					<execution>
						<id>portal-restore-instrumented-classes</id>
						<phase>test</phase>
						<goals>
							<goal>restore-instrumented-classes</goal>
						</goals>
					</execution>
					<execution>
						<id>portal-post-unit-test</id>
						<phase>test</phase>
						<goals>
							<goal>report</goal>
						</goals>
						<configuration>
							<dataFile>${sonar.jacoco.reportPath}</dataFile>
							<outputDirectory>${project.basedir}/target/site/jacoco</outputDirectory>
						</configuration>
					</execution>

				</executions>
			</plugin>
					
			<plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <version>1.6</version>

                <configuration>
				    <nodeVersion>v10.13.0</nodeVersion>
					<workingDirectory>${basedir}/ngapp</workingDirectory>
                                        <installDirectory>${basedir}/ngapp</installDirectory>
                </configuration>

                <executions>
                    <execution>
                        <id>install node and npm</id>
						<phase>compile</phase>
                        <goals>
                            <goal>install-node-and-npm</goal>
                        </goals>
                    </execution>

                    <execution>
                        <id>npm install</id>
						<phase>compile</phase>
                        <goals>
                            <goal>npm</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>npm run test</id>
			    <goals>
				<goal>npm</goal>
			    </goals>

						<phase>${angularTestPhase}</phase>

						<configuration>
							<arguments>run-script test</arguments>
						</configuration>
					</execution>

                    
                    <execution>

                        <id>npm run build</id>
						<phase>compile</phase>
                        <goals>
                            <goal>npm</goal>
                        </goals>

                        <configuration>
                            <arguments>run build</arguments>
                        </configuration>
                    </execution>

                </executions>

            </plugin>	
            
             <plugin>
				<groupId>org.apache.maven.plugins</groupId>
        		<artifactId>maven-dependency-plugin</artifactId>
        			<executions>
						<execution>
							<id>unpack</id>
							<phase>process-resources</phase>
							<goals>
							<goal>unpack</goal>
							</goals>
						</execution>
						</executions>
						<configuration>
						<artifactItems>
							<artifactItem>
							<groupId>org.onap.portal.sdk</groupId>
							<artifactId>epsdk-app-overlay</artifactId>
							<version>${project.version}</version>
							<type>war</type>
							<overWrite>false</overWrite>
						</artifactItem>
						</artifactItems>
						<includes>ngapp/**</includes>
						<outputDirectory>${basedir}/ngappoverlay</outputDirectory>
						<overWriteReleases>true</overWriteReleases>
						<overWriteSnapshots>true</overWriteSnapshots>
						</configuration>
        			
    		</plugin>			 
            

			<plugin>
				<artifactId>maven-resources-plugin</artifactId>
				<version>2.5</version>
				<executions>

					<execution>
						<id>copy-angular-final-step1</id>
						<phase>process-resources</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<configuration>
							<outputDirectory>${basedir}/ngapp</outputDirectory>
							<overwrite>true</overwrite>
							<resources>
								<resource>
									<directory>${basedir}/ngappoverlay/ngapp</directory>
								</resource>
							</resources>
						</configuration>
					</execution>
				
					<execution>
						<id>copy-angular-final-step2</id>
						<phase>process-resources</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<configuration>
							<outputDirectory>${basedir}/ngapp</outputDirectory>
							<overwrite>true</overwrite>
							<resources>
								<resource>
									<directory>${basedir}/ngappsrc</directory>
								</resource>
							</resources>
						</configuration>
					</execution>

				    <!--  This is for Deployment purposes -->
					<execution>
						<id>copy-angular-final-step3</id>
						<phase>prepare-package</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<configuration>
							<outputDirectory>${basedir}/target/epsdk-app-os</outputDirectory>
							<resources>
								<resource>
									<directory>${basedir}/ngapp/dist</directory>
								</resource>
							</resources>
						</configuration>
					</execution>
					<!--  This is for Development purposes -->
					<execution>
						<id>copy-angular-final-step4</id>
						<phase>prepare-package</phase>
						<goals>
							<goal>copy-resources</goal>
						</goals>
						<configuration>
							<outputDirectory>${basedir}/src/main/webapp</outputDirectory>
							<resources>
								<resource>
									<directory>${basedir}/ngapp/dist</directory>
								</resource>
							</resources>
						</configuration>
					</execution>				
				
				</executions>
			</plugin>
			
			<!--			
			<plugin>
				<artifactId>maven-clean-plugin</artifactId>
				<version>2.5</version>
				<executions>
				  <execution>
					<id>auto-clean-ng</id>
					<phase>prepare-package</phase>
					<goals>
					  <goal>clean</goal>
					</goals>
					<configuration>
					 <filesets>
						<fileset>
						  <directory>${basedir}/target/epsdk-app-os/ngapp</directory>
						</fileset>
					  </filesets>
					</configuration>
				  </execution>
				</executions>
			</plugin>
			-->		

			
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>3.2.2</version>
				<configuration>
					<archive>
						<manifest>
							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
						</manifest>
						<manifestEntries>
							<Build-Number>${project.version}</Build-Number>
							<Build-Time>${maven.build.timestamp}</Build-Time>
						</manifestEntries>
					</archive>
					<overlays>
						<overlay>
							<groupId>org.onap.portal.sdk</groupId>
							<artifactId>epsdk-app-overlay</artifactId>
						</overlay>
					</overlays>
					<packagingExcludes>**/ngapp</packagingExcludes>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>3.0.0</version>
				<configuration>
					<skipAssembly>${skipassembly}</skipAssembly>
					<descriptors>
						<descriptor>${basedir}/distribution.xml</descriptor>
					</descriptors>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id>
						<phase>package</phase>
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<!-- parent specifies the<version>2.8</version> -->
				<configuration>
					<skip>true</skip>
				</configuration>
			</plugin>

			<plugin>
				<groupId>io.fabric8</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>0.22.0</version>
				<configuration>
					<verbose>true</verbose>
					<images>
						<image>
							<name>onap/portal-sdk:${project.version}</name>
							<build>
								<from>frolvlad/alpine-oraclejdk8:slim</from>
								<assembly>
									<descriptorRef>artifact</descriptorRef>
								</assembly>
								<runCmds>
									<!-- must be all on one line; use CDATA to turn off the Eclipse formatter -->
									<run><![CDATA[wget -q ${tomcat.download.path}/${tomcat.download.name}.tar.gz]]></run>
									<run>tar -xzf ${tomcat.download.name}.tar.gz</run>
									<run>rm -f ${tomcat.download.name}.tar.gz</run>
									<run>rm -fr ${tomcat.download.name}/webapps/[a-z]*</run>
									<run>mkdir -p /opt</run>
									<run>mv ${tomcat.download.name} /opt</run>
									<run><![CDATA[mv /maven/*.war /opt/${tomcat.download.name}/webapps/ONAPPORTALSDK.war]]></run>
								</runCmds>
								<cmd>
									<shell>/opt/${tomcat.download.name}/bin/catalina.sh run</shell>
								</cmd>
							</build>
						</image>
					</images>
				</configuration>
			</plugin>

		</plugins>
	</build>

	<dependencies>
		<!-- SDK overlay war -->
		<dependency>
			<groupId>org.onap.portal.sdk</groupId>
			<artifactId>epsdk-app-overlay</artifactId>
			<version>${epsdk.version}</version>
			<type>war</type>
		</dependency>
		<dependency>
			<groupId>org.onap.portal.sdk</groupId>
			<artifactId>epsdk-app-common</artifactId>
			<version>${epsdk.version}</version>
			<type>jar</type>
		</dependency>
		<dependency>
			<groupId>org.onap.portal.sdk</groupId>
			<artifactId>epsdk-logger</artifactId>
			<version>${epsdk.version}</version>
		</dependency>
		<!-- SDK components -->
		<dependency>
			<groupId>org.onap.portal.sdk</groupId>
			<artifactId>epsdk-core</artifactId>
			<version>${epsdk.version}</version>
		</dependency>
		<dependency>
			<groupId>org.onap.portal.sdk</groupId>
			<artifactId>epsdk-analytics</artifactId>
			<version>${epsdk.version}</version>
		</dependency>
		<dependency>
			<groupId>org.onap.portal.sdk</groupId>
			<artifactId>epsdk-workflow</artifactId>
			<version>${epsdk.version}</version>
		</dependency>
		<dependency>
			<groupId>org.onap.portal.sdk</groupId>
			<artifactId>epsdk-music</artifactId>
			<version>${epsdk.version}</version>
		</dependency>
		<dependency>
			<groupId>com.att.eelf</groupId>
			<artifactId>eelf-core</artifactId>
			<version>1.0.0</version>
		</dependency>
		<!-- Mapper -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>2.9.8</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.9.8</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.9.8</version>
		</dependency>
		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.5.4</version>
		</dependency>
		<dependency>
			<groupId>io.searchbox</groupId>
			<artifactId>jest</artifactId>
			<version>5.3.2</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>
		<!-- Elastic Search -->
		<dependency>
			<groupId>org.elasticsearch</groupId>
			<artifactId>elasticsearch</artifactId>
			<version>7.1.1</version>
			<exclusions>
				<exclusion>
					<groupId>org.apache.lucene</groupId>
					<artifactId>lucene-queryparser</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.json</groupId>
			<artifactId>json</artifactId>
			<version>20160212</version>
		</dependency>
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>2.3.2</version>
			<exclusions>
				<!-- exclude 0.9.1.1 to avoid dupe of com.mchange:c3p0:0.9.2.1 -->
				<exclusion>
					<groupId>c3p0</groupId>
					<artifactId>c3p0</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- bridge to implement commons-logging using slf4j -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>1.7.12</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${springframework.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${springframework.version}</version>
			<exclusions>
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${springframework.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${springframework.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${springframework.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${springframework.version}</version>
		</dependency>
		<!-- Jacoco for offline instrumentation -->
		<dependency>
			<groupId>org.jacoco</groupId>
			<artifactId>org.jacoco.agent</artifactId>
			<version>${jacoco.version}</version>
			<classifier>runtime</classifier>
		</dependency>
		
		<dependency>
			 <groupId>com.google.guava</groupId>
 			 <artifactId>guava</artifactId>
			<version>20.0</version>
		</dependency>

	</dependencies>
</project>