1 package org.codehaus.mojo.jaxb2.schemageneration.postprocessing.javadoc; 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.util.SortedMap; 23 import java.util.SortedSet; 24 25 /** 26 * <p>Specification for a Map of SortableLocations correlated to their respective JavaDocData. 27 * To simplify searching and accessing within the JavaDocData, the paths of each SortableLocation 28 * is exposed for searching and listing.</p> 29 * 30 * @author <a href="mailto:lj@jguru.se">Lennart Jörelid</a>, jGuru Europe AB 31 * @since 2.0 32 */ 33 public interface SearchableDocumentation { 34 35 /** 36 * Retrieves all unique SortableLocation paths within this SearchableDocumentation. 37 * 38 * @return all unique SortableLocation paths within this SearchableDocumentation. 39 * The result may be empty, but will never be {@code null}. 40 */ 41 SortedSet<String> getPaths(); 42 43 /** 44 * Convenience method to acquire the JavaDocData for a SortableLocation with the supplied path. 45 * 46 * @param path A non-null path for which the harvested JavaDocData should be retrieved. 47 * @return The JavaDocData matching the SortableLocation with the supplied path, or {@code null} if no 48 * SortableLocation with the supplied path was found within this SearchableDocumentation. 49 */ 50 JavaDocData getJavaDoc(String path); 51 52 /** 53 * Convenience method to acquire the SortableLocation corresponding to the given path. 54 * 55 * @param path The path of a SortableLocation, which is retrieved by a call to its {@code toString()} method. 56 * @param <T> The SortableLocation subtype. 57 * @return the SortableLocation corresponding to the given path, or {@code null} if this SearchableDocumentation 58 * does not contain a SortableLocation with the provided path. 59 */ 60 <T extends SortableLocation> T getLocation(String path); 61 62 /** 63 * The full map relating each SortableLocation subclass to its corresponding JavaDocData. 64 * 65 * @return The full map relating each SortableLocation subclass to its corresponding JavaDocData. Never null. 66 */ 67 SortedMap<SortableLocation, JavaDocData> getAll(); 68 69 /** 70 * Convenience method which retrieves a SortedMap relating all SortableLocations of a particular type 71 * to their JavaDocData, respectively. 72 * 73 * @param type The exact type of SortableLocation which should be filtered from the result and returned in the 74 * form of a SortedMap, along with its respective JavaDocData. 75 * @param <T> The SortableLocation subtype for which all JavaDocData should be retrieved. 76 * @return a SortedMap relating all SortableLocations of a particular (exact) type (i.e. any subclass types will 77 * <strong>not</strong> be returned) to their JavaDocData, respectively. 78 * May return empty Maps, but never {@code null}. 79 */ 80 <T extends SortableLocation> SortedMap<T, JavaDocData> getAll(Class<T> type); 81 }