View Javadoc
1   package org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc.location;
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 org.codehaus.mojo.jaxb2.shared.Validate;
23  
24  /**
25   * Comparable path structure to locate a particular class within compilation unit.
26   *
27   * @author <a href="mailto:lj@jguru.se">Lennart J&ouml;relid</a>, jGuru Europe AB
28   * @since 2.0
29   */
30  public class ClassLocation extends PackageLocation {
31  
32      // Internal state
33      private String className;
34  
35      /**
36       * Creates a new ClassLocation with the supplied package and class names.
37       *
38       * @param packageName The name of the package for a class potentially holding JavaDoc. Cannot be {@code null}.
39       * @param className   The (simple) name of a class. Cannot be null or empty.
40       */
41      public ClassLocation(final String packageName,
42                           final String className) {
43  
44          super(packageName);
45  
46          // Check sanity
47          Validate.notEmpty(className, "className");
48  
49          // Assign internal state
50          this.className = className;
51      }
52  
53      /**
54       * Retrieves the simple class name for the class potentially holding JavaDoc. Never {@code null} or empty.
55       *
56       * @return The simple class name for the class potentially holding JavaDoc. Never {@code null} or empty.
57       */
58      public String getClassName() {
59          return className;
60      }
61  
62      /**
63       * {@inheritDoc}
64       */
65      @Override
66      public int hashCode() {
67          return this.toString().hashCode();
68      }
69  
70      /**
71       * {@inheritDoc}
72       */
73      @Override
74      public String toString() {
75          return super.toString() + "." + className;
76      }
77  }