1 /* 2 * $Id$ 3 */ 4 5 package org.apache.maven.model; 6 7 //---------------------------------/ 8 //- Imported classes and packages -/ 9 //---------------------------------/ 10 11 import java.util.Date; 12 13 /** 14 * This element describes all of the classpath resources associated 15 * with a project 16 * or unit tests. 17 * 18 * @version $Revision$ $Date$ 19 */ 20 public class Resource extends FileSet 21 implements java.io.Serializable 22 { 23 24 25 //--------------------------/ 26 //- Class/Member Variables -/ 27 //--------------------------/ 28 29 /** 30 * 31 * 32 * Describe the resource target path. The path is 33 * relative to the target/classes 34 * directory (i.e. 35 * <code>${project.build.outputDirectory}</code>). 36 * For example, if you want that resource to appear 37 * in a specific package 38 * (<code>org.apache.maven.messages</code>), you 39 * must specify this 40 * element with this value: 41 * <code>org/apache/maven/messages</code>. 42 * This is not required if you simply put the 43 * resources in that directory 44 * structure at the source, however. 45 * 46 * 47 */ 48 private String targetPath; 49 50 /** 51 * 52 * 53 * Whether resources are filtered to replace tokens 54 * with parameterised values or not. 55 * The values are taken from the 56 * <code>properties</code> element and from the 57 * properties in the files listed in the 58 * <code>filters</code> element. 59 * 60 * 61 */ 62 private boolean filtering = false; 63 64 /** 65 * 66 * 67 * FOR INTERNAL USE ONLY. This is a unique 68 * identifier assigned to each 69 * resource to allow Maven to merge changes to this 70 * resource that take 71 * place during the execution of a plugin. This 72 * field must be managed 73 * by the generated parser and formatter classes in 74 * order to allow it 75 * to survive model interpolation. 76 * 77 * 78 */ 79 private String mergeId; 80 81 82 //-----------/ 83 //- Methods -/ 84 //-----------/ 85 86 /** 87 * Get 88 * 89 * FOR INTERNAL USE ONLY. This is a unique 90 * identifier assigned to each 91 * resource to allow Maven to merge changes to this 92 * resource that take 93 * place during the execution of a plugin. This 94 * field must be managed 95 * by the generated parser and formatter classes in 96 * order to allow it 97 * to survive model interpolation. 98 * 99 * 100 * 101 * @return String 102 */ 103 public String getMergeId() 104 { 105 return this.mergeId; 106 } //-- String getMergeId() 107 108 /** 109 * Get 110 * 111 * Describe the resource target path. The path is 112 * relative to the target/classes 113 * directory (i.e. 114 * <code>${project.build.outputDirectory}</code>). 115 * For example, if you want that resource to appear 116 * in a specific package 117 * (<code>org.apache.maven.messages</code>), you 118 * must specify this 119 * element with this value: 120 * <code>org/apache/maven/messages</code>. 121 * This is not required if you simply put the 122 * resources in that directory 123 * structure at the source, however. 124 * 125 * 126 * 127 * @return String 128 */ 129 public String getTargetPath() 130 { 131 return this.targetPath; 132 } //-- String getTargetPath() 133 134 /** 135 * Get 136 * 137 * Whether resources are filtered to replace tokens 138 * with parameterised values or not. 139 * The values are taken from the 140 * <code>properties</code> element and from the 141 * properties in the files listed in the 142 * <code>filters</code> element. 143 * 144 * 145 * 146 * @return boolean 147 */ 148 public boolean isFiltering() 149 { 150 return this.filtering; 151 } //-- boolean isFiltering() 152 153 /** 154 * Set 155 * 156 * Whether resources are filtered to replace tokens 157 * with parameterised values or not. 158 * The values are taken from the 159 * <code>properties</code> element and from the 160 * properties in the files listed in the 161 * <code>filters</code> element. 162 * 163 * 164 * 165 * @param filtering 166 */ 167 public void setFiltering( boolean filtering ) 168 { 169 this.filtering = filtering; 170 } //-- void setFiltering( boolean ) 171 172 /** 173 * Set 174 * 175 * FOR INTERNAL USE ONLY. This is a unique 176 * identifier assigned to each 177 * resource to allow Maven to merge changes to this 178 * resource that take 179 * place during the execution of a plugin. This 180 * field must be managed 181 * by the generated parser and formatter classes in 182 * order to allow it 183 * to survive model interpolation. 184 * 185 * 186 * 187 * @param mergeId 188 */ 189 public void setMergeId( String mergeId ) 190 { 191 this.mergeId = mergeId; 192 } //-- void setMergeId( String ) 193 194 /** 195 * Set 196 * 197 * Describe the resource target path. The path is 198 * relative to the target/classes 199 * directory (i.e. 200 * <code>${project.build.outputDirectory}</code>). 201 * For example, if you want that resource to appear 202 * in a specific package 203 * (<code>org.apache.maven.messages</code>), you 204 * must specify this 205 * element with this value: 206 * <code>org/apache/maven/messages</code>. 207 * This is not required if you simply put the 208 * resources in that directory 209 * structure at the source, however. 210 * 211 * 212 * 213 * @param targetPath 214 */ 215 public void setTargetPath( String targetPath ) 216 { 217 this.targetPath = targetPath; 218 } //-- void setTargetPath( String ) 219 220 221 222 private static int mergeIdCounter = 0; 223 224 public void initMergeId() 225 { 226 if ( getMergeId() == null ) 227 { 228 setMergeId( "resource-" + (mergeIdCounter++) ); 229 } 230 } 231 232 /** 233 * @see java.lang.Object#toString() 234 */ 235 public String toString() 236 { 237 return "Resource {targetPath: " + getTargetPath() + ", filtering: " + isFiltering() + ", " + super.toString() + "}"; 238 } 239 240 241 private String modelEncoding = "UTF-8"; 242 243 /** 244 * Set an encoding used for reading/writing the model. 245 * 246 * @param modelEncoding the encoding used when reading/writing the model. 247 */ 248 public void setModelEncoding( String modelEncoding ) 249 { 250 this.modelEncoding = modelEncoding; 251 } 252 253 /** 254 * @return the current encoding used when reading/writing this model. 255 */ 256 public String getModelEncoding() 257 { 258 return modelEncoding; 259 } 260 }