<?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>
				<dependencySets>
					<dependencySet>
						<outputDirectory>/lib</outputDirectory>
						<unpack>false</unpack>
						<includes>
							<include>org.apache.hadoop:hadoop-common:jar:${hadoop-common.version}</include>
							<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.hamcrest:hamcrest-all</include>
							<include>junit:junit</include>
							<include>org.slf4j:slf4j-api:jar:${slf4j-api.version}</include>
							<include>org.apache.hadoop:hadoop-common:jar:${hadoop-common.version}
							</include>
							<include>org.apache.hadoop:hadoop-auth:jar:${hadoop-common.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</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>
