blob: 343f5a3fefd1dd585af4ea949684f4cc1a66826b [file] [log] [blame]
package org.apache.maven.plugins.dependency.utils.markers;
/*
* 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.
*/
import org.apache.maven.plugins.dependency.fromConfiguration.ArtifactItem;
import org.codehaus.plexus.util.StringUtils;
import java.io.File;
/**
* @author <a href="mailto:dbradicich@comcast.net">Damian Bradicich</a>
* @version $Id$
*/
public class UnpackFileMarkerHandler
extends DefaultFileMarkerHandler
{
protected ArtifactItem artifactItem;
public UnpackFileMarkerHandler( File markerFilesDirectory )
{
super( markerFilesDirectory );
}
public UnpackFileMarkerHandler( ArtifactItem artifactItem, File markerFilesDirectory )
{
this( markerFilesDirectory );
setArtifactItem( artifactItem );
}
@Override
protected File getMarkerFile()
{
/**
* Build a hash of all include/exclude strings, to determine if an artifactItem has been unpacked using the
* include/exclude parameters, this will allow an artifact to be included multiple times with different
* include/exclude parameters
*/
File markerFile;
if ( this.artifactItem == null || ( StringUtils.isEmpty( this.artifactItem.getIncludes() )
&& StringUtils.isEmpty( this.artifactItem.getExcludes() ) ) )
{
markerFile = super.getMarkerFile();
}
else
{
int includeExcludeHash = 0;
if ( StringUtils.isNotEmpty( this.artifactItem.getIncludes() ) )
{
includeExcludeHash += this.artifactItem.getIncludes().hashCode();
}
if ( StringUtils.isNotEmpty( this.artifactItem.getExcludes() ) )
{
includeExcludeHash += this.artifactItem.getExcludes().hashCode();
}
markerFile =
new File( this.markerFilesDirectory, this.artifact.getId().replace( ':', '-' ) + includeExcludeHash );
}
return markerFile;
}
public void setArtifactItem( ArtifactItem artifactItem )
{
this.artifactItem = artifactItem;
if ( this.artifactItem != null )
{
setArtifact( this.artifactItem.getArtifact() );
}
}
public ArtifactItem getArtifactItem()
{
return this.artifactItem;
}
}