View Javadoc

1   package org.apache.maven.plugin.dependency.utils.markers;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   * http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.    
20   */
21  
22  import java.io.File;
23  
24  import org.apache.maven.plugin.dependency.fromConfiguration.ArtifactItem;
25  import org.codehaus.plexus.util.StringUtils;
26  
27  /**
28   * @author <a href="mailto:dbradicich@comcast.net">Damian Bradicich</a>
29   * @version $Id: UnpackFileMarkerHandler.java 728546 2008-12-21 22:56:51Z bentmann $
30   */
31  public class UnpackFileMarkerHandler extends DefaultFileMarkerHandler 
32  {
33  	protected ArtifactItem artifactItem;
34  	
35  	public UnpackFileMarkerHandler( File markerFilesDirectory )
36      {
37          super( markerFilesDirectory );
38      }
39  	
40  	public UnpackFileMarkerHandler( ArtifactItem artifactItem, File markerFilesDirectory )
41  	{
42  		this( markerFilesDirectory );
43  		setArtifactItem( artifactItem );
44  	}
45  	
46  	protected File getMarkerFile() 
47  	{
48  		/**
49  		 * Build a hash of all include/exclude strings, to determine
50  		 * if an artifactItem has been unpacked using the include/exclude
51  		 * parameters, this will allow an artifact to be included multiple
52  		 * times with different include/exclude parameters
53  		 */
54  		File markerFile = null;
55  		if ( this.artifactItem == null 
56  			|| ( StringUtils.isEmpty( this.artifactItem.getIncludes() )
57  			&&	StringUtils.isEmpty( this.artifactItem.getExcludes() ) ) )
58  		{
59  			markerFile = super.getMarkerFile();
60  		}
61  		else
62  		{
63  			int includeExcludeHash = 0;
64  			
65  			if ( StringUtils.isNotEmpty( this.artifactItem.getIncludes() ) )
66  			{
67  				includeExcludeHash += this.artifactItem.getIncludes().hashCode();
68  			}
69  			
70  			if ( StringUtils.isNotEmpty( this.artifactItem.getExcludes() ) )
71  			{
72  				includeExcludeHash += this.artifactItem.getExcludes().hashCode();
73  			}
74  			
75  			markerFile = new File( this.markerFilesDirectory, this.artifact.getId().replace( ':', '-' ) + includeExcludeHash );
76  		}
77  		
78  		return markerFile;
79  	}
80  	
81  	public void setArtifactItem( ArtifactItem artifactItem )
82  	{
83  		this.artifactItem = artifactItem;
84  		
85  		if (this.artifactItem != null)
86  		{
87  			setArtifact( this.artifactItem.getArtifact() );
88  		}
89  	}
90  	
91  	public ArtifactItem getArtifactItem( )
92  	{
93  		return this.artifactItem;
94  	}
95  }