<?xml version="1.0" encoding="UTF-8"?>
<!-- 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. -->
<assembly>
	<id>solr-plugin</id>
	<formats>
		<format>tar.gz</format>
		<format>zip</format>
	</formats>
	<baseDirectory>${project.name}-${project.version}-solr-plugin
	</baseDirectory>
	<includeBaseDirectory>true</includeBaseDirectory>
	<moduleSets>
		<moduleSet>
	     <binaries>
	        <includeDependencies>false</includeDependencies>
	        <unpack>false</unpack>
		    <directoryMode>755</directoryMode>
		    <fileMode>644</fileMode>
	  	    <outputDirectory>/lib</outputDirectory>
	     </binaries>
	     <includes>
		  <include>org.apache.ranger:ranger-solr-plugin-shim</include>
		  <include>org.apache.ranger:ranger-plugin-classloader</include>
	      </includes>
	    </moduleSet>
		<moduleSet>
			<binaries>
				<includeDependencies>false</includeDependencies>
				<unpack>false</unpack>
				<directoryMode>755</directoryMode>
				<fileMode>644</fileMode>
				<dependencySets>
					<dependencySet>
						<outputDirectory>/lib/ranger-solr-plugin-impl</outputDirectory>
						<unpack>false</unpack>
						<includes>
							<include>com.google.code.gson:gson</include>
							<include>org.eclipse.persistence:eclipselink</include>
							<include>org.eclipse.persistence:javax.persistence</include>
							<include>com.sun.jersey:jersey-bundle</include>
							<include>com.google.guava:guava:jar:${guava.version}</include>
							<include>org.codehaus.jackson:jackson-core-asl</include>
							<include>org.codehaus.jackson:jackson-jaxrs</include>
							<include>org.codehaus.jackson:jackson-mapper-asl</include>
							<include>org.codehaus.jackson:jackson-xc</include>
						</includes>
					</dependencySet>
					<dependencySet>
						<outputDirectory>/install/lib</outputDirectory>
						<unpack>false</unpack>
						<directoryMode>755</directoryMode>
						<fileMode>644</fileMode>
						<includes>
							<include>commons-cli:commons-cli</include>
							<include>commons-collections:commons-collections</include>
							<include>commons-configuration:commons-configuration:jar:${commons.configuration.version}
							</include>
							<include>commons-io:commons-io:jar:${commons.io.version}
							</include>
							<include>commons-lang:commons-lang:jar:${commons.lang.version}
							</include>
							<include>commons-logging:commons-logging</include>
							<include>com.google.guava:guava:jar:${guava.version}</include>
							<include>org.slf4j:slf4j-api:jar:${slf4j-api.version}</include>
							<include>org.apache.hadoop:hadoop-common:jar:${hadoop.version}
							</include>
							<include>org.apache.hadoop:hadoop-auth:jar:${hadoop.version}
							</include>
							<include>org.apache.ranger:ranger-plugins-cred
							</include>
							<include>org.apache.ranger:credentialbuilder</include>
							<include>org.apache.ranger:ranger-solr-plugin
							</include>

						</includes>
					</dependencySet>
				</dependencySets>
				<outputDirectory>/lib/ranger-solr-plugin-impl</outputDirectory>
			</binaries>
			<includes>
				<include>org.apache.ranger:ranger-plugins-audit
				</include>
				<include>org.apache.ranger:ranger-plugins-cred
				</include>
				<include>org.apache.ranger:ranger-plugins-common
				</include>
				<include>org.apache.ranger:ranger-solr-plugin
				</include>
			</includes>
		</moduleSet>
		<moduleSet>
			<binaries>
				<includeDependencies>false</includeDependencies>
				<outputDirectory>/install/lib</outputDirectory>
				<unpack>false</unpack>
			</binaries>
			<includes>
				<include>org.apache.ranger:ranger-plugins-installer
				</include>
				<include>org.apache.ranger:credentialbuilder</include>
			</includes>
		</moduleSet>
	</moduleSets>
	<fileSets>
		<!-- conf.templates for enable -->
		<fileSet>
			<outputDirectory>/install/conf.templates/enable</outputDirectory>
			<directory>plugin-solr/conf</directory>
			<excludes>
				<exclude>*.sh</exclude>
			</excludes>
			<fileMode>700</fileMode>
		</fileSet>
		<fileSet>
			<outputDirectory>/install/conf.templates/disable</outputDirectory>
			<directory>plugin-solr/disable-conf</directory>
			<fileMode>700</fileMode>
		</fileSet>
		<fileSet>
			<outputDirectory>/install/conf.templates/default</outputDirectory>
			<directory>plugin-solr/template</directory>
			<fileMode>700</fileMode>
		</fileSet>
		<!-- version file -->
		<fileSet>
			<outputDirectory>/</outputDirectory>
			<directory>${project.build.outputDirectory}</directory>
			<includes>
				<include>version</include>
			</includes>
			<fileMode>444</fileMode>
		</fileSet>
	</fileSets>
	<!-- enable/disable script for Plugin -->
	<files>
		<file>
			<source>agents-common/scripts/enable-agent.sh</source>
			<outputDirectory>/</outputDirectory>
			<destName>enable-solr-plugin.sh</destName>
			<fileMode>755</fileMode>
		</file>
		<file>
			<source>agents-common/scripts/enable-agent.sh</source>
			<outputDirectory>/</outputDirectory>
			<destName>disable-solr-plugin.sh</destName>
			<fileMode>755</fileMode>
		</file>
		<file>
			<source>plugin-solr/scripts/install.properties</source>
			<outputDirectory>/</outputDirectory>
			<destName>install.properties</destName>
			<fileMode>755</fileMode>
		</file>
		<file>
			<source>plugin-solr/scripts/solr-plugin-install.properties</source>
			<outputDirectory>/</outputDirectory>
			<destName>solr-plugin-install.properties</destName>
			<fileMode>755</fileMode>
		</file>
	</files>
</assembly>
