Update project structure to org.onap.aaf

Update project structure of authz module in aaf from
com.att to org.onap.aaf and add distribution management
and repositories.

Issue-id: AAF-21
Change-Id: Ia2486954e99f2bd60f18122ed60d32d5590781e9
Signed-off-by: sg481n <sg481n@att.com>
diff --git a/authz-fs/pom.xml b/authz-fs/pom.xml
new file mode 100644
index 0000000..bef8442
--- /dev/null
+++ b/authz-fs/pom.xml
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<!--

+  ============LICENSE_START====================================================

+  * org.onap.aaf

+  * ===========================================================================

+  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.

+  * ===========================================================================

+  * 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====================================================

+  *

+  * ECOMP is a trademark and service mark of AT&T Intellectual Property.

+  *

+-->

+<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/maven-v4_0_0.xsd">

+	<modelVersion>4.0.0</modelVersion>

+	<parent>

+		<groupId>org.onap.aaf.authz</groupId>

+		<artifactId>parent</artifactId>

+		<version>1.0.0-SNAPSHOT</version>

+		<relativePath>../pom.xml</relativePath>

+	</parent>

+		

+	<artifactId>authz-fs</artifactId>

+	<name>Authz File Server</name>

+	<description>Independent FileServer via HTTP (not S) for Public Files (i.e. CRLs)</description>

+		<url>https://github.com/att/AAF</url>

+	<licenses>

+		<license>

+		<name>BSD License</name>

+		<url> </url>

+		</license>

+	</licenses>

+	<developers>

+		<developer>

+		<name>Jonathan Gathman</name>

+		<email></email>

+	<organization>ATT</organization>

+	<organizationUrl></organizationUrl>

+		</developer>

+	</developers>

+

+	<properties>

+		<maven.test.failure.ignore>true</maven.test.failure.ignore>

+		<project.swmVersion>9</project.swmVersion>

+			<project.cadiVersion>1.0.0-SNAPSHOT</project.cadiVersion>

+        <nexusproxy>https://nexus.onap.org</nexusproxy>

+		<snapshotNexusPath>/content/repositories/snapshots/</snapshotNexusPath>

+		<releaseNexusPath>/content/repositories/releases/</releaseNexusPath>

+		<stagingNexusPath>/content/repositories/staging/</stagingNexusPath>

+		<sitePath>/content/sites/site/${project.groupId}/${project.artifactId}/${project.version}</sitePath>

+	</properties>

+	

+		

+	<dependencies>

+        <dependency>

+            <groupId>org.onap.aaf.authz</groupId>

+            <artifactId>authz-core</artifactId>

+        </dependency>

+        <dependency> 

+			<groupId>org.onap.aaf.cadi</groupId>

+			<artifactId>cadi-core</artifactId>

+		</dependency>

+		<dependency>

+		    <groupId>com.att.aft</groupId>

+  			<artifactId>dme2</artifactId>

+  		</dependency>

+	</dependencies>

+	

+	<build>

+		<plugins>

+            <plugin>

+				<groupId>org.apache.maven.plugins</groupId>

+				<artifactId>maven-jar-plugin</artifactId>

+					<configuration>

+	                	<includes>

+	                		<include>**/*.class</include>

+	                	</includes>

+					</configuration>

+					<version>2.3.1</version>

+				</plugin>

+

+			    <plugin>

+					<groupId>org.apache.maven.plugins</groupId>

+					<artifactId>maven-deploy-plugin</artifactId>

+					<configuration>

+						<skip>true</skip>

+					</configuration>

+			    </plugin>

+				

+				

+									<plugin>

+			<groupId>org.apache.maven.plugins</groupId>

+			<artifactId>maven-javadoc-plugin</artifactId>

+			<configuration>

+			<failOnError>false</failOnError>

+			</configuration>

+			<executions>

+				<execution>

+					<id>attach-javadocs</id>

+					<goals>

+						<goal>jar</goal>

+					</goals>

+				</execution>

+			</executions>

+		</plugin> 

+	   

+	   

+	       <plugin>

+		      <groupId>org.apache.maven.plugins</groupId>

+		      <artifactId>maven-source-plugin</artifactId>

+		      <version>2.2.1</version>

+		      <executions>

+			<execution>

+			  <id>attach-sources</id>

+			  <goals>

+			    <goal>jar-no-fork</goal>

+			  </goals>

+			</execution>

+		      </executions>

+		    </plugin>

+			 <plugin>

+				<groupId>org.sonatype.plugins</groupId>

+				<artifactId>nexus-staging-maven-plugin</artifactId>

+				<version>1.6.7</version>

+				<extensions>true</extensions>

+				<configuration>

+					<nexusUrl>${nexusproxy}</nexusUrl>

+					<stagingProfileId>176c31dfe190a</stagingProfileId>

+					<serverId>ecomp-staging</serverId>

+				</configuration>

+			</plugin>

+			</plugins>

+

+	</build>

+<distributionManagement>

+		<repository>

+			<id>ecomp-releases</id>

+			<name>AAF Release Repository</name>

+			<url>${nexusproxy}${releaseNexusPath}</url>

+		</repository>

+		<snapshotRepository>

+			<id>ecomp-snapshots</id>

+			<name>AAF Snapshot Repository</name>

+			<url>${nexusproxy}${snapshotNexusPath}</url>

+		</snapshotRepository>

+		<site>

+			<id>ecomp-site</id>

+			<url>dav:${nexusproxy}${sitePath}</url>

+		</site>

+	</distributionManagement>

+<pluginRepositories>

+        <pluginRepository>

+            <id>onap-plugin-snapshots</id>

+            <url>https://nexus.onap.org/content/repositories/snapshots/</url>

+        </pluginRepository>

+    </pluginRepositories>

+	

+	<repositories>

+		<repository>

+			<id>central</id>

+			<name>Maven 2 repository 2</name>

+			<url>http://repo2.maven.org/maven2/</url>

+		</repository>

+		<repository>

+            <id>onap-jar-snapshots</id>

+            <url>https://nexus.onap.org/content/repositories/snapshots</url>

+        </repository>

+		<repository>

+			<id>spring-repo</id>

+			<name>Spring repo</name>

+			<url>https://artifacts.alfresco.com/nexus/content/repositories/public/</url>

+		</repository>

+		<repository>

+			<id>repository.jboss.org-public</id>

+			<name>JBoss.org Maven repository</name>

+			<url>https://repository.jboss.org/nexus/content/groups/public</url>

+		</repository>

+	</repositories>

+</project>

diff --git a/authz-fs/src/main/config/FileServer.props b/authz-fs/src/main/config/FileServer.props
new file mode 100644
index 0000000..ed1506e
--- /dev/null
+++ b/authz-fs/src/main/config/FileServer.props
@@ -0,0 +1,20 @@
+##
+## AUTHZ API (authz-service) Properties
+##
+
+hostname=_HOSTNAME_
+
+## DISCOVERY (DME2) Parameters on the Command Line
+AFT_LATITUDE=_AFT_LATITUDE_
+AFT_LONGITUDE=_AFT_LONGITUDE_
+AFT_ENVIRONMENT=_AFT_ENVIRONMENT_
+DEPLOYED_VERSION=_ARTIFACT_VERSION_
+
+DMEServiceName=service=com.att.authz.authz-fs/version=_MAJOR_VER_._MINOR_VER_._PATCH_VER_/envContext=_ENV_CONTEXT_/routeOffer=_ROUTE_OFFER_
+AFT_DME2_PORT_RANGE=_AUTHZ_FS_PORT_RANGE_
+AFT_DME2_SSL_ENABLE=false
+AFT_DME2_DISABLE_PERSISTENT_CACHE=true
+
+CFA_WebPath=_ROOT_DIR_/data
+CFA_ClearCommand=FmzYPpMY918MwE1hyacoiFSt
+CFA_MaxSize=2000000
\ No newline at end of file
diff --git a/authz-fs/src/main/config/log4j.properties b/authz-fs/src/main/config/log4j.properties
new file mode 100644
index 0000000..65a4ca7
--- /dev/null
+++ b/authz-fs/src/main/config/log4j.properties
@@ -0,0 +1,90 @@
+#-------------------------------------------------------------------------------

+# ============LICENSE_START====================================================

+# * org.onap.aaf

+# * ===========================================================================

+# * Copyright © 2017 AT&T Intellectual Property. All rights reserved.

+# * ===========================================================================

+# * 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====================================================

+# *

+# * ECOMP is a trademark and service mark of AT&T Intellectual Property.

+# *

+#-------------------------------------------------------------------------------

+###############################################################################

+# Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.

+###############################################################################

+#

+# Licensed to the Apache Software Foundation (ASF) under one

+# or more contributor license agreements.  See the NOTICE file

+# distributed with this work for additional information

+# regarding copyright ownership.  The ASF licenses this file

+# to you under the Apache License, Version 2.0 (the

+# "License"); you may not use this file except in compliance

+# with the License.  You may obtain a copy of the License at

+#

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

+#

+# Unless required by applicable law or agreed to in writing,

+# software distributed under the License is distributed on an

+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

+# KIND, either express or implied.  See the License for the

+# specific language governing permissions and limitations

+# under the License.

+#

+log4j.appender.INIT=org.apache.log4j.DailyRollingFileAppender 

+log4j.appender.INIT.File=_LOG_DIR_/${LOG4J_FILENAME_init}

+log4j.appender.INIT.DatePattern='.'yyyy-MM-dd

+#log4j.appender.INIT.MaxFileSize=_MAX_LOG_FILE_SIZE_

+#log4j.appender.INIT.MaxBackupIndex=_MAX_LOG_FILE_BACKUP_COUNT_

+log4j.appender.INIT.layout=org.apache.log4j.PatternLayout 

+log4j.appender.INIT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSSZ} %m %n

+

+

+log4j.appender.FS=org.apache.log4j.DailyRollingFileAppender 

+log4j.appender.FS.File=logs/${LOG4J_FILENAME_authz}

+log4j.appender.FS.DatePattern='.'yyyy-MM-dd

+#log4j.appender.FS.MaxFileSize=_MAX_LOG_FILE_SIZE_

+#log4j.appender.FS.MaxBackupIndex=_MAX_LOG_FILE_BACKUP_COUNT_

+log4j.appender.FS.layout=org.apache.log4j.PatternLayout 

+log4j.appender.FS.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSSZ} %p [%c] %m %n

+

+log4j.appender.AUDIT=org.apache.log4j.DailyRollingFileAppender

+log4j.appender.AUDIT.File=_LOG_DIR_/${LOG4J_FILENAME_audit}

+log4j.appender.AUDIT.DatePattern='.'yyyy-MM-dd

+#log4j.appender.AUDIT.MaxFileSize=_MAX_LOG_FILE_SIZE_

+#log4j.appender.AUDIT.MaxBackupIndex=_MAX_LOG_FILE_BACKUP_COUNT_

+log4j.appender.AUDIT.layout=org.apache.log4j.PatternLayout 

+log4j.appender.AUDIT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSSZ} %m %n

+

+log4j.appender.TRACE=org.apache.log4j.DailyRollingFileAppender

+log4j.appender.TRACE.File=logs/${LOG4J_FILENAME_trace}

+log4j.appender.TRACE.DatePattern='.'yyyy-MM-dd

+#log4j.appender.TRACE.MaxFileSize=_MAX_LOG_FILE_SIZE_

+#log4j.appender.TRACE.MaxBackupIndex=_MAX_LOG_FILE_BACKUP_COUNT_

+log4j.appender.TRACE.layout=org.apache.log4j.PatternLayout 

+log4j.appender.TRACE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSSZ} %m %n

+

+log4j.appender.stdout=org.apache.log4j.ConsoleAppender

+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

+log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] %m %n

+

+# General Apache libraries

+log4j.rootLogger=WARN

+log4j.logger.org.apache=WARN,INIT

+log4j.logger.dme2=WARN,INIT

+log4j.logger.init=INFO,INIT

+log4j.logger.authz=_LOG4J_LEVEL_,FS

+log4j.logger.audit=INFO,AUDIT

+log4j.logger.trace=TRACE,TRACE

+

+

diff --git a/authz-fs/src/main/config/lrm-authz-fs.xml b/authz-fs/src/main/config/lrm-authz-fs.xml
new file mode 100644
index 0000000..b5d1ffd
--- /dev/null
+++ b/authz-fs/src/main/config/lrm-authz-fs.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

+<!--

+  ============LICENSE_START====================================================

+  * org.onap.aaf

+  * ===========================================================================

+  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.

+  * ===========================================================================

+  * 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====================================================

+  *

+  * ECOMP is a trademark and service mark of AT&T Intellectual Property.

+  *

+-->

+<ns2:ManagedResourceList xmlns:ns2="http://scld.att.com/lrm/util" xmlns="http://scld.att.com/lrm/commontypes" xmlns:ns3="http://scld.att.com/lrm/types">

+    <ns2:ManagedResource>

+        <ResourceDescriptor>

+            <ResourceName>com.att.authz._ARTIFACT_ID_</ResourceName>

+            <ResourceVersion>

+                <Major>_MAJOR_VER_</Major>

+                <Minor>_MINOR_VER_</Minor>

+                <Patch>_PATCH_VER_</Patch>                

+            </ResourceVersion>

+            <RouteOffer>_ROUTE_OFFER_</RouteOffer>

+        </ResourceDescriptor>

+        <ResourceType>Java</ResourceType>

+        <ResourcePath>com.att.authz.fs.FileServer</ResourcePath>

+        <ResourceProps>

+            <Tag>process.workdir</Tag>

+            <Value>_ROOT_DIR_</Value>

+        </ResourceProps>    	       

+        <ResourceProps>

+            <Tag>jvm.version</Tag>

+            <Value>1.8</Value>

+        </ResourceProps>

+        <ResourceProps>

+            <Tag>jvm.args</Tag>

+            <Value>-DAFT_LATITUDE=_AFT_LATITUDE_ -DAFT_LONGITUDE=_AFT_LONGITUDE_ -DAFT_ENVIRONMENT=_AFT_ENVIRONMENT_ -Dplatform=_SCLD_PLATFORM_ -Dcom.sun.jndi.ldap.connect.pool.maxsize=20  -Dcom.sun.jndi.ldap.connect.pool.prefsize=10 -Dcom.sun.jndi.ldap.connect.pool.timeout=3000 </Value>

+        </ResourceProps>

+        <ResourceProps>

+            <Tag>jvm.classpath</Tag>

+            <Value>_ROOT_DIR_/etc:_ROOT_DIR_/lib/*:</Value>

+        </ResourceProps>

+        <ResourceProps>

+            <Tag>jvm.heap.min</Tag>

+            <Value>1024m</Value>

+        </ResourceProps>

+        <ResourceProps>

+            <Tag>jvm.heap.max</Tag>

+            <Value>2048m</Value>

+        </ResourceProps>

+        <ResourceProps>

+            <Tag>start.class</Tag>

+            <Value>com.att.authz.fs.FileServer</Value>

+        </ResourceProps>

+        <ResourceProps>

+            <Tag>stdout.redirect</Tag>

+            <Value>_ROOT_DIR_/logs/SystemOut.log</Value>

+        </ResourceProps>

+        <ResourceProps>

+            <Tag>stderr.redirect</Tag>

+            <Value>_ROOT_DIR_/logs/SystemErr.log</Value>

+        </ResourceProps>

+        <ResourceOSID>aft</ResourceOSID>

+        <ResourceStartType>AUTO</ResourceStartType>

+        <ResourceStartPriority>2</ResourceStartPriority>

+		<ResourceMinCount>_RESOURCE_MIN_COUNT_</ResourceMinCount>

+		<ResourceMaxCount>_RESOURCE_MAX_COUNT_</ResourceMaxCount>        

+		<ResourceRegistration>_RESOURCE_REGISTRATION_</ResourceRegistration>

+        <ResourceSWMComponent>com.att.authz:_ARTIFACT_ID_</ResourceSWMComponent>

+        <ResourceSWMComponentVersion>_ARTIFACT_VERSION_</ResourceSWMComponentVersion>

+    </ns2:ManagedResource>

+</ns2:ManagedResourceList>

diff --git a/authz-fs/src/main/data/test.html b/authz-fs/src/main/data/test.html
new file mode 100644
index 0000000..7ea7302
--- /dev/null
+++ b/authz-fs/src/main/data/test.html
@@ -0,0 +1,42 @@
+#-------------------------------------------------------------------------------

+# ============LICENSE_START====================================================

+# * org.onap.aaf

+# * ===========================================================================

+# * Copyright © 2017 AT&T Intellectual Property. All rights reserved.

+# * ===========================================================================

+# * 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====================================================

+# *

+# * ECOMP is a trademark and service mark of AT&T Intellectual Property.

+# *

+#-------------------------------------------------------------------------------

+<html>

+  <head>                                 <!-- begin head -->

+    <meta charset="utf-8">

+    <title>AT&amp;T Authentication/Authorization Tool</title>

+    <!-- 

+    <link rel="stylesheet" href="_AUTHZ_GUI_URL_/theme/aaf5.css">

+    <script type="text/javascript" src="_AUTHZ_GUI_URL_/theme/comm.js"></script>

+    <script type="text/javascript" src="_AUTHZ_GUI_URL_/theme/console.js"></script>

+    <script type="text/javascript" src="_AUTHZ_GUI_URL_/theme/common.js"></script>

+    <link rel="stylesheet" href="_AUTHZ_GUI_URL_/theme/aaf5Desktop.css">

+     -->

+  </head>                                <!-- end head -->

+  <body>                                 <!-- begin body -->

+    <header>                             <!-- begin header -->

+            <h1>AT&amp;T Auth Tool on _ENV_CONTEXT_</h1>

+      <p id="version">AAF Version: _ARTIFACT_VERSION_</p>

+    </header>

+  <h1>Success for File Server Access</h1>

+  </body>

+</html>

diff --git a/authz-fs/src/main/java/org/onap/aaf/authz/fs/FileServer.java b/authz-fs/src/main/java/org/onap/aaf/authz/fs/FileServer.java
new file mode 100644
index 0000000..0a8547f
--- /dev/null
+++ b/authz-fs/src/main/java/org/onap/aaf/authz/fs/FileServer.java
@@ -0,0 +1,156 @@
+/*******************************************************************************

+ * ============LICENSE_START====================================================

+ * * org.onap.aaf

+ * * ===========================================================================

+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.

+ * * ===========================================================================

+ * * 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====================================================

+ * *

+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.

+ * *

+ ******************************************************************************/

+package org.onap.aaf.authz.fs;

+

+import static org.onap.aaf.cssa.rserv.HttpMethods.GET;

+

+import java.io.IOException;

+import java.io.InputStream;

+import java.net.URL;

+import java.util.ArrayList;

+import java.util.EnumSet;

+import java.util.List;

+import java.util.Properties;

+

+import org.onap.aaf.authz.env.AuthzEnv;

+import org.onap.aaf.authz.env.AuthzTrans;

+import org.onap.aaf.authz.env.AuthzTransOnlyFilter;

+import org.onap.aaf.cssa.rserv.CachingFileAccess;

+import org.onap.aaf.cssa.rserv.RServlet;

+

+import com.att.aft.dme2.api.DME2Manager;

+import com.att.aft.dme2.api.DME2Server;

+import com.att.aft.dme2.api.DME2ServerProperties;

+import com.att.aft.dme2.api.DME2ServiceHolder;

+import com.att.aft.dme2.api.util.DME2FilterHolder;

+import com.att.aft.dme2.api.util.DME2FilterHolder.RequestDispatcherType;

+import com.att.aft.dme2.api.util.DME2ServletHolder;

+import org.onap.aaf.inno.env.APIException;

+

+

+public class FileServer extends RServlet<AuthzTrans>  {

+	public FileServer(final AuthzEnv env) throws APIException, IOException {

+		try {

+			///////////////////////  

+			// File Server 

+			///////////////////////

+			

+			CachingFileAccess<AuthzTrans> cfa = new CachingFileAccess<AuthzTrans>(env);

+			route(env,GET,"/:key", cfa); 

+			route(env,GET,"/:key/:cmd", cfa); 

+			///////////////////////

+	

+	

+		} catch (Exception e) {

+			e.printStackTrace();

+		}

+	}

+	

+	public static void main(String[] args) {

+		try {

+			// Load Properties from authFramework.properties.  Needed for DME2 and AuthzEnv

+			Properties props = new Properties();

+			URL rsrc = ClassLoader.getSystemResource("FileServer.props");

+			if(rsrc==null) {

+				System.err.println("Folder containing FileServer.props must be on Classpath");

+				System.exit(1);

+			}

+			InputStream is = rsrc.openStream();

+			try {

+				props.load(is);

+			} finally {

+				is.close();

+			}

+			

+			// Load Properties into AuthzEnv

+			AuthzEnv env = new AuthzEnv(props); 

+			env.setLog4JNames("log4j.properties","authz","fs","audit","init",null);

+			

+			// AFT Discovery Libraries only read System Props

+			env.loadToSystemPropsStartsWith("AFT_","DME2_");

+			env.init().log("DME2 using " + env.getProperty("DMEServiceName","unknown") + " URI");

+			

+			// Start DME2 (DME2 needs Properties form of props)

+		    DME2Manager dme2 = new DME2Manager("RServDME2Manager",props);

+		    

+		    DME2ServiceHolder svcHolder;

+		    List<DME2ServletHolder> slist = new ArrayList<DME2ServletHolder>();

+		    svcHolder = new DME2ServiceHolder();

+		    String serviceName = env.getProperty("DMEServiceName",null);

+			if(serviceName!=null) {

+		    	svcHolder.setServiceURI(serviceName);

+		        svcHolder.setManager(dme2);

+		        svcHolder.setContext("/");

+		        

+		        FileServer fs = new FileServer(env);

+		        DME2ServletHolder srvHolder = new DME2ServletHolder(fs);

+		        srvHolder.setContextPath("/*");

+		        slist.add(srvHolder);

+		        

+		        EnumSet<RequestDispatcherType> edlist = EnumSet.of(

+		        		RequestDispatcherType.REQUEST,

+		        		RequestDispatcherType.FORWARD,

+		        		RequestDispatcherType.ASYNC

+		        		);

+

+		        ///////////////////////

+		        // Apply Filters

+		        ///////////////////////

+		        List<DME2FilterHolder> flist = new ArrayList<DME2FilterHolder>();

+		        

+		    	// Need TransFilter

+		    	flist.add(new DME2FilterHolder(new AuthzTransOnlyFilter(env),"/*",edlist));

+		        svcHolder.setFilters(flist);

+		        svcHolder.setServletHolders(slist);

+		        

+		        DME2Server dme2svr = dme2.getServer();

+		        DME2ServerProperties dsprops = dme2svr.getServerProperties();

+		        dsprops.setGracefulShutdownTimeMs(1000);

+

+		        env.init().log("Starting AAF FileServer with Jetty/DME2 server...");

+		        dme2svr.start();

+		        try {

+//		        	if(env.getProperty("NO_REGISTER",null)!=null)

+		        	dme2.bindService(svcHolder);

+		        	env.init().log("DME2 is available as HTTP"+(dsprops.isSslEnable()?"/S":""),"on port:",dsprops.getPort());

+

+		            while(true) { // Per DME2 Examples...

+		            	Thread.sleep(5000);

+		            }

+		        } catch(InterruptedException e) {

+		            env.init().log("AAF Jetty Server interrupted!");

+		        } catch(Exception e) { // Error binding service doesn't seem to stop DME2 or Process

+		            env.init().log(e,"DME2 Initialization Error");

+		        	dme2svr.stop();

+		        	System.exit(1);

+		        }

+			} else {

+				env.init().log("Properties must contain DMEServiceName");

+			}

+

+		} catch (Exception e) {

+			e.printStackTrace(System.err);

+			System.exit(1);

+		}

+	}

+}

diff --git a/authz-fs/src/test/java/org/onap/aaf/authz/fs/JU_FileServer.java b/authz-fs/src/test/java/org/onap/aaf/authz/fs/JU_FileServer.java
new file mode 100644
index 0000000..88858e7
--- /dev/null
+++ b/authz-fs/src/test/java/org/onap/aaf/authz/fs/JU_FileServer.java
@@ -0,0 +1,83 @@
+/*******************************************************************************

+ * ============LICENSE_START====================================================

+ * * org.onap.aaf

+ * * ===========================================================================

+ * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.

+ * * ===========================================================================

+ * * 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====================================================

+ * *

+ * * ECOMP is a trademark and service mark of AT&T Intellectual Property.

+ * *

+ ******************************************************************************/

+package org.onap.aaf.authz.fs;

+

+import static org.junit.Assert.*;

+import static org.onap.aaf.cssa.rserv.HttpMethods.GET;

+

+import java.io.File;

+import java.io.IOException;

+import java.net.URL;

+import java.util.Properties;

+

+import org.junit.Before;

+import org.junit.Test;

+import org.junit.runner.RunWith;

+import org.mockito.InjectMocks;

+import org.mockito.Matchers;

+import org.mockito.Mock;

+import org.mockito.Mockito;

+import org.mockito.runners.MockitoJUnitRunner;

+import org.onap.aaf.authz.env.AuthzEnv;

+import org.onap.aaf.authz.env.AuthzTrans;

+import org.onap.aaf.authz.fs.*;

+import org.onap.aaf.cssa.rserv.CachingFileAccess;

+import org.powermock.api.mockito.PowerMockito;

+import org.powermock.modules.junit4.PowerMockRunner;

+

+import org.onap.aaf.inno.env.APIException;

+

+@RunWith(MockitoJUnitRunner.class)

+public class JU_FileServer {	

+	@Mock

+	AuthzEnv authzEnvMock;

+	AuthzEnv authzEnv = new AuthzEnv();

+	

+	@Before

+	public void setUp() throws APIException, IOException{

+

+	}

+	

+	@SuppressWarnings("static-access")

+	@Test

+	public void testMain() throws Exception{

+		

+		String[] args = null;

+		Properties props = new Properties();

+		ClassLoader classLoader = getClass().getClassLoader();

+		File file = new File(classLoader.getResource("FileServer.props").getFile());

+

+//PowerMockito.whenNew(Something.class).withArguments(argument).thenReturn(mockSomething);

+		//			env.setLog4JNames("log4j.properties","authz","fs","audit","init",null);

+    // PowerMockito.whenNew(AuthzEnv.class).withArguments(props).thenReturn(authzEnvMock);

+   //  PowerMockito.doNothing().when(authzEnvMock.setLog4JNames(Matchers.anyString(), Matchers.anyString(), Matchers.anyString(), Matchers.anyString(), Matchers.anyString(), Matchers.anyString()));

+  // PowerMockito.when(new AuthzEnv(props)).thenReturn(authzEnvMock);

+		//PowerMockito.doNothing().when(authzEnv).setLog4JNames(Matchers.anyString(), Matchers.anyString(), Matchers.anyString(), Matchers.anyString(), Matchers.anyString(), Matchers.anyString());

+	//PowerMockito.doNothing().when(authzEnvMock).setLog4JNames(" "," "," "," "," "," ");

+

+		FileServer.main(args);

+		//assertTrue(true);

+		

+	}

+	

+}