/*
* Sonatype Application Build Lifecycle
* Copyright (C) 2009 Sonatype, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
*/
package com.redhat.tools.nexus.maven.plugin.bundle;
import org.apache.maven.archiver.MavenArchiveConfiguration;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.model.Assembly;
import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
import org.apache.maven.project.MavenProject;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* Supplemental configuration for plugin bundle assemblies, to allow users to customize the finalName, archive
* configuration (the {@link MavenArchiveConfiguration} instance), and tarLongFileMode. This class is similar to the
* plugin parameters available in the Assembly plugin itself.
*
* @see {@link http://maven.apache.org/plugins/maven-assembly-plugin/}
*
* @author jdcasey
*
*/
public class BundleConfiguration
implements AssemblerConfigurationSource
{
private MavenProject project;
private MavenSession session;
private List<String> filters;
private String finalName;
private MavenArchiveConfiguration archiveConfiguration;
private String tarLongFileMode = "gnu";
public BundleConfiguration()
{
}
public BundleConfiguration( final MavenProject project, final MavenSession session )
{
initDefaults( project, session );
}
public void initDefaults( final MavenProject project, final MavenSession session )
{
this.project = project;
this.session = session;
if ( finalName == null )
{
finalName = project.getBuild().getFinalName();
}
}
public File getArchiveBaseDirectory()
{
return null;
}
public String getArchiverConfig()
{
return null;
}
public File getBasedir()
{
return project.getBasedir();
}
public String getClassifier()
{
return null;
}
public String getDescriptor()
{
return null;
}
public String getDescriptorId()
{
return null;
}
public String[] getDescriptorReferences()
{
return null;
}
public File getDescriptorSourceDirectory()
{
return null;
}
public String[] getDescriptors()
{
return null;
}
@SuppressWarnings( "unchecked" )
public List getFilters()
{
return filters;
}
public void addFilter( final String filter )
{
if ( filters == null )
{
filters = new ArrayList<String>();
}
filters.add( filter );
}
public void setFilters( final List<String> filters )
{
this.filters = filters;
}
public String getFinalName()
{
return finalName;
}
public void setFinalName( final String finalName )
{
this.finalName = finalName;
}
public MavenArchiveConfiguration getJarArchiveConfiguration()
{
return archiveConfiguration;
}
public void setArchive( final MavenArchiveConfiguration archiveConfiguration )
{
this.archiveConfiguration = archiveConfiguration;
}
public ArtifactRepository getLocalRepository()
{
return session.getLocalRepository();
}
public MavenSession getMavenSession()
{
return session;
}
public File getOutputDirectory()
{
return new File( project.getBuild().getDirectory() );
}
public MavenProject getProject()
{
return project;
}
@SuppressWarnings( "unchecked" )
public List getReactorProjects()
{
return session.getSortedProjects();
}
@SuppressWarnings( "unchecked" )
public List getRemoteRepositories()
{
return project.getRemoteArtifactRepositories();
}
public File getSiteDirectory()
{
return new File( project.getReporting().getOutputDirectory() );
}
public String getTarLongFileMode()
{
return tarLongFileMode;
}
public void setTarLongFileMode( final String mode )
{
tarLongFileMode = mode;
}
public File getTemporaryRootDirectory()
{
return new File( project.getBuild().getDirectory(), "nexus-bundle-tmp" );
}
public File getWorkingDirectory()
{
return new File( project.getBuild().getDirectory(), "nexus-bundle/work" );
}
public boolean isAssemblyIdAppended()
{
return true;
}
public boolean isDryRun()
{
return false;
}
public boolean isIgnoreDirFormatExtensions()
{
return true;
}
public boolean isIgnoreMissingDescriptor()
{
return false;
}
public boolean isSiteIncluded()
{
return false;
}
public String getAssemblyFileName( final Assembly assembly )
{
return AssemblyFormatUtils.getDistributionName( assembly, this );
}
}