Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
DefaultFileMarkerHandler |
|
| 1.8181818181818181;1.818 |
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 | import java.io.IOException; | |
24 | ||
25 | import org.apache.maven.artifact.Artifact; | |
26 | import org.apache.maven.plugin.MojoExecutionException; | |
27 | ||
28 | /** | |
29 | * @author <a href="mailto:brianf@apache.org">Brian Fox</a> | |
30 | * @version $Id: DefaultFileMarkerHandler.java 1368122 2012-08-01 16:54:53Z olamy $ | |
31 | */ | |
32 | public class DefaultFileMarkerHandler | |
33 | implements MarkerHandler | |
34 | { | |
35 | protected Artifact artifact; | |
36 | ||
37 | protected File markerFilesDirectory; | |
38 | ||
39 | public DefaultFileMarkerHandler( File theMarkerFilesDirectory ) | |
40 | 157 | { |
41 | 157 | this.markerFilesDirectory = theMarkerFilesDirectory; |
42 | 157 | } |
43 | ||
44 | public DefaultFileMarkerHandler( Artifact theArtifact, File theMarkerFilesDirectory ) | |
45 | 338 | { |
46 | 338 | this.artifact = theArtifact; |
47 | 338 | this.markerFilesDirectory = theMarkerFilesDirectory; |
48 | 338 | } |
49 | ||
50 | /** | |
51 | * Returns properly formatted File | |
52 | * | |
53 | * @return File object for marker. The file is not guaranteed to exist. | |
54 | */ | |
55 | protected File getMarkerFile() | |
56 | { | |
57 | 629 | return new File( this.markerFilesDirectory, this.artifact.getId().replace( ':', '-' ) + ".marker" ); |
58 | } | |
59 | ||
60 | /** | |
61 | * Tests whether the file or directory denoted by this abstract pathname | |
62 | * exists. | |
63 | * | |
64 | * @return <code>true</code> if and only if the file or directory denoted | |
65 | * by this abstract pathname exists; <code>false</code> otherwise | |
66 | * | |
67 | * @throws SecurityException | |
68 | * If a security manager exists and its <code>{@link | |
69 | * java.lang.SecurityManager#checkRead(java.lang.String)}</code> | |
70 | * method denies read access to the file or directory | |
71 | */ | |
72 | public boolean isMarkerSet() | |
73 | throws MojoExecutionException | |
74 | { | |
75 | 438 | File marker = getMarkerFile(); |
76 | 438 | return marker.exists(); |
77 | } | |
78 | ||
79 | public boolean isMarkerOlder( Artifact artifact1 ) | |
80 | throws MojoExecutionException | |
81 | { | |
82 | 11 | File marker = getMarkerFile(); |
83 | 11 | if ( marker.exists() ) |
84 | { | |
85 | 9 | return artifact1.getFile().lastModified() > marker.lastModified(); |
86 | } | |
87 | else | |
88 | { | |
89 | // if the marker doesn't exist, we want to copy so assume it is | |
90 | // infinitely older | |
91 | 2 | return true; |
92 | } | |
93 | } | |
94 | ||
95 | public void setMarker() | |
96 | throws MojoExecutionException | |
97 | { | |
98 | 204 | File marker = getMarkerFile(); |
99 | // create marker file | |
100 | try | |
101 | { | |
102 | 204 | marker.getParentFile().mkdirs(); |
103 | } | |
104 | 2 | catch ( NullPointerException e ) |
105 | { | |
106 | // parent is null, ignore it. | |
107 | 202 | } |
108 | try | |
109 | { | |
110 | 204 | marker.createNewFile(); |
111 | } | |
112 | 2 | catch ( IOException e ) |
113 | { | |
114 | 2 | throw new MojoExecutionException( "Unable to create Marker: " + marker.getAbsolutePath(), e ); |
115 | 202 | } |
116 | ||
117 | // update marker file timestamp | |
118 | try | |
119 | { | |
120 | long ts; | |
121 | 202 | if ( this.artifact != null && this.artifact.getFile() != null ) |
122 | { | |
123 | 187 | ts = this.artifact.getFile().lastModified(); |
124 | } | |
125 | else | |
126 | { | |
127 | 15 | ts = System.currentTimeMillis(); |
128 | } | |
129 | 202 | marker.setLastModified( ts ); |
130 | } | |
131 | 0 | catch ( Exception e ) |
132 | { | |
133 | 0 | throw new MojoExecutionException( "Unable to update Marker timestamp: " + marker.getAbsolutePath(), e ); |
134 | 202 | } |
135 | 202 | } |
136 | ||
137 | /** | |
138 | * Deletes the file or directory denoted by this abstract pathname. If this | |
139 | * pathname denotes a directory, then the directory must be empty in order | |
140 | * to be deleted. | |
141 | * | |
142 | * @return <code>true</code> if and only if the file or directory is | |
143 | * successfully deleted; <code>false</code> otherwise | |
144 | * | |
145 | * @throws SecurityException | |
146 | * If a security manager exists and its <code>{@link | |
147 | * java.lang.SecurityManager#checkDelete}</code> | |
148 | * method denies delete access to the file | |
149 | */ | |
150 | public boolean clearMarker() | |
151 | throws MojoExecutionException | |
152 | { | |
153 | 18 | File marker = getMarkerFile(); |
154 | 18 | return marker.delete(); |
155 | } | |
156 | ||
157 | /** | |
158 | * @return Returns the artifact. | |
159 | */ | |
160 | public Artifact getArtifact() | |
161 | { | |
162 | 4 | return this.artifact; |
163 | } | |
164 | ||
165 | /** | |
166 | * @param artifact | |
167 | * The artifact to set. | |
168 | */ | |
169 | public void setArtifact( Artifact artifact ) | |
170 | { | |
171 | 341 | this.artifact = artifact; |
172 | 341 | } |
173 | ||
174 | /** | |
175 | * @return Returns the markerFilesDirectory. | |
176 | */ | |
177 | public File getMarkerFilesDirectory() | |
178 | { | |
179 | 4 | return this.markerFilesDirectory; |
180 | } | |
181 | ||
182 | /** | |
183 | * @param markerFilesDirectory | |
184 | * The markerFilesDirectory to set. | |
185 | */ | |
186 | public void setMarkerFilesDirectory( File markerFilesDirectory ) | |
187 | { | |
188 | 2 | this.markerFilesDirectory = markerFilesDirectory; |
189 | 2 | } |
190 | } |