View Javadoc

1   package org.springframework.roo.model;
2   
3   import org.springframework.roo.support.util.Assert;
4   
5   /**
6    * Immutable representation of a Java package.
7    * 
8    * <p>
9    * This class is used whenever a formal reference to a Java package is required.
10   * 
11   * @author Ben Alex
12   * @since 1.0
13   *
14   */
15  public final class JavaPackage implements Comparable<JavaPackage> {
16  	private String fullyQualifiedPackageName;
17  
18  	/**
19  	 * Construct a JavaPackage.
20  	 * 
21  	 * <p>
22  	 * The fully qualified package name will be enforced as follows:
23  	 * 
24  	 * <ul>
25  	 * <li>The rules listed in {link {@link JavaTypeUtils#assertJavaNameLegal(String)}}
26  	 * <li>The entire package name must be lowercase</li>
27  	 * </ul>
28  	 * 
29  	 * @param fullyQualifiedPackageName the name (as per the above rules; mandatory)
30  	 */
31  	public JavaPackage(String fullyQualifiedPackageName) {
32  		Assert.notNull(fullyQualifiedPackageName, "Fully qualified package name required");
33  		JavaSymbolName.assertJavaNameLegal(fullyQualifiedPackageName);
34  		Assert.isTrue(fullyQualifiedPackageName.toLowerCase().equals(fullyQualifiedPackageName), "The entire package name must be lowercase");
35  		this.fullyQualifiedPackageName = fullyQualifiedPackageName;
36  	}
37  	
38  	/**
39  	 * @return the fully qualified package name (complies with the rules specified in the constructor)
40  	 */
41  	public String getFullyQualifiedPackageName() {
42  		return fullyQualifiedPackageName;
43  	}
44  
45  	public final int hashCode() {
46  		return this.fullyQualifiedPackageName.hashCode();
47  	}
48  
49  	public final boolean equals(Object obj) {
50  		return obj != null && obj instanceof JavaPackage && this.compareTo((JavaPackage)obj) == 0;
51  	}
52  
53  	public final int compareTo(JavaPackage o) {
54  		if (o == null) return -1;
55  		return this.fullyQualifiedPackageName.compareTo(o.fullyQualifiedPackageName);
56  	}
57  	
58  	public final String toString() {
59  		return fullyQualifiedPackageName;
60  	}
61  }