| Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
| SiteTool |
|
| 0.0;0 |
| 1 | package org.apache.maven.doxia.tools; | |
| 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.util.List; | |
| 24 | import java.util.Locale; | |
| 25 | import java.util.Map; | |
| 26 | ||
| 27 | import org.apache.maven.artifact.Artifact; | |
| 28 | import org.apache.maven.artifact.repository.ArtifactRepository; | |
| 29 | import org.apache.maven.doxia.site.decoration.DecorationModel; | |
| 30 | import org.apache.maven.project.MavenProject; | |
| 31 | import org.apache.maven.reporting.MavenReport; | |
| 32 | ||
| 33 | /** | |
| 34 | * Tool to play with <a href="http://maven.apache.org/doxia/">Doxia</a> objects | |
| 35 | * like <code>DecorationModel</code>. | |
| 36 | * | |
| 37 | * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a> | |
| 38 | * @version $Id: SiteTool.java 1098159 2011-04-30 21:07:49Z dennisl $ | |
| 39 | */ | |
| 40 | public interface SiteTool | |
| 41 | { | |
| 42 | /** Plexus Role */ | |
| 43 | String ROLE = SiteTool.class.getName(); | |
| 44 | ||
| 45 | /** | |
| 46 | * The locale by default for all default bundles | |
| 47 | * @see Locale#ENGLISH | |
| 48 | */ | |
| 49 | Locale DEFAULT_LOCALE = Locale.ENGLISH; | |
| 50 | ||
| 51 | /** | |
| 52 | * Get a skin artifact from one of the repositories. | |
| 53 | * | |
| 54 | * @param localRepository the Maven local repository, not null. | |
| 55 | * @param remoteArtifactRepositories the Maven remote repositories, not null. | |
| 56 | * @param decoration the Doxia site descriptor model, not null. | |
| 57 | * @return the <code>Skin</code> artifact defined in a <code>DecorationModel</code> from a given project and a | |
| 58 | * local repository | |
| 59 | * @throws SiteToolException if any | |
| 60 | */ | |
| 61 | Artifact getSkinArtifactFromRepository( ArtifactRepository localRepository, | |
| 62 | List<ArtifactRepository> remoteArtifactRepositories, | |
| 63 | DecorationModel decoration ) | |
| 64 | throws SiteToolException; | |
| 65 | ||
| 66 | /** | |
| 67 | * Get the default skin artifact for a project from one of the repositories. | |
| 68 | * | |
| 69 | * @param localRepository the Maven local repository, not null. | |
| 70 | * @param remoteArtifactRepositories the Maven remote repositories, not null. | |
| 71 | * @return the default <code>Skin</code> artifact from a given project and a local repository | |
| 72 | * @throws SiteToolException if any | |
| 73 | * @see org.apache.maven.doxia.site.decoration.Skin#getDefaultSkin() | |
| 74 | * @see #getSkinArtifactFromRepository(ArtifactRepository, List, DecorationModel) | |
| 75 | */ | |
| 76 | Artifact getDefaultSkinArtifact( ArtifactRepository localRepository, | |
| 77 | List<ArtifactRepository> remoteArtifactRepositories ) | |
| 78 | throws SiteToolException; | |
| 79 | ||
| 80 | /** | |
| 81 | * Calculate the relative path between two URLs or between two files. | |
| 82 | * | |
| 83 | * For example: | |
| 84 | * <dl> | |
| 85 | * <dt>to = "http://maven.apache.org" and from = "http://maven.apache.org"</dt> | |
| 86 | * <dd>return ""</dd> | |
| 87 | * <dt>to = "http://maven.apache.org" and from = "http://maven.apache.org/plugins/maven-site-plugin/"</dt> | |
| 88 | * <dd>return "../.."</dd> | |
| 89 | * <dt>to = "http://maven.apache.org/plugins/maven-site-plugin/" and from = "http://maven.apache.org"</dt> | |
| 90 | * <dd>return "plugins/maven-site-plugin"</dd> | |
| 91 | * <dt>to = "/myproject/myproject-module1" and from = "/myproject/myproject"</dt> | |
| 92 | * <dd>return "../myproject-module1"</dd> | |
| 93 | * </dl> | |
| 94 | * <b>Note</b>: The file separator depends on the system. | |
| 95 | * | |
| 96 | * @param to the <code>to</code> url of file as string | |
| 97 | * @param from the <code>from</code> url of file as string | |
| 98 | * @return a relative path from <code>from</code> to <code>to</code>. | |
| 99 | */ | |
| 100 | String getRelativePath( String to, String from ); | |
| 101 | ||
| 102 | /** | |
| 103 | * Get a site descriptor from the project's base directory. | |
| 104 | * | |
| 105 | * @param siteDirectory The path to the directory containing the <code>site.xml</code> file, relative to the | |
| 106 | * project base directory. If null, using by default "src/site". | |
| 107 | * @param basedir not null. | |
| 108 | * @param locale the locale wanted for the site descriptor. If not null, searching for | |
| 109 | * <code>site_<i>localeLanguage</i>.xml</code>, otherwise searching for <code>site.xml</code>. | |
| 110 | * @return the site descriptor relative file, i.e. <code>src/site/site.xml</code>, depending on parameter values. | |
| 111 | */ | |
| 112 | File getSiteDescriptorFromBasedir( String siteDirectory, File basedir, Locale locale ); | |
| 113 | ||
| 114 | /** | |
| 115 | * Get a site descriptor from one of the repositories. | |
| 116 | * | |
| 117 | * @param project the Maven project, not null. | |
| 118 | * @param localRepository the Maven local repository, not null. | |
| 119 | * @param repositories the Maven remote repositories, not null. | |
| 120 | * @param locale the locale wanted for the site descriptor. If not null, searching for | |
| 121 | * <code>site_<i>localeLanguage</i>.xml</code>, otherwise searching for <code>site.xml</code>. | |
| 122 | * @return the site descriptor into the local repository after download of it from repositories or null if not | |
| 123 | * found in repositories. | |
| 124 | * @throws SiteToolException if any | |
| 125 | */ | |
| 126 | File getSiteDescriptorFromRepository( MavenProject project, ArtifactRepository localRepository, | |
| 127 | List<ArtifactRepository> repositories, Locale locale ) | |
| 128 | throws SiteToolException; | |
| 129 | ||
| 130 | /** | |
| 131 | * Get a decoration model for a project. | |
| 132 | * | |
| 133 | * @param project the Maven project, not null. | |
| 134 | * @param reactorProjects the Maven reactor projects, not null. | |
| 135 | * @param localRepository the Maven local repository, not null. | |
| 136 | * @param repositories the Maven remote repositories, not null. | |
| 137 | * @param siteDirectory The path to the directory containing the <code>site.xml</code> file, relative to the | |
| 138 | * project base directory. If null, using by default "src/site". | |
| 139 | * @param locale the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm. | |
| 140 | * @param inputEncoding the input encoding of the site descriptor, not null. | |
| 141 | * @param outputEncoding the output encoding wanted, not null. | |
| 142 | * @return the <code>DecorationModel</code> object corresponding to the <code>site.xml</code> file with some | |
| 143 | * interpolations. | |
| 144 | * @throws SiteToolException if any | |
| 145 | */ | |
| 146 | DecorationModel getDecorationModel( MavenProject project, List<MavenProject> reactorProjects, | |
| 147 | ArtifactRepository localRepository, List<ArtifactRepository> repositories, | |
| 148 | String siteDirectory, Locale locale, String inputEncoding, | |
| 149 | String outputEncoding ) | |
| 150 | throws SiteToolException; | |
| 151 | ||
| 152 | /** | |
| 153 | * Populate the reports menu part of the decoration model. | |
| 154 | * | |
| 155 | * @param decorationModel the Doxia DecorationModel, not null. | |
| 156 | * @param locale the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm. | |
| 157 | * @param categories a map to put on the decoration model, not null. | |
| 158 | */ | |
| 159 | void populateReportsMenu( DecorationModel decorationModel, Locale locale, | |
| 160 | Map<String, List<MavenReport>> categories ); | |
| 161 | ||
| 162 | /** | |
| 163 | * Interpolating several expressions in the site descriptor content. Actually, the expressions can be in | |
| 164 | * the project, the environment variables and the specific properties like <code>encoding</code>. | |
| 165 | * <p/> | |
| 166 | * For instance: | |
| 167 | * <dl> | |
| 168 | * <dt>${project.name}</dt> | |
| 169 | * <dd>The value from the POM of: | |
| 170 | * <p> | |
| 171 | * <project><br> | |
| 172 | * <name>myProjectName</name><br> | |
| 173 | * </project> | |
| 174 | * </p></dd> | |
| 175 | * <dt>${my.value}</dt> | |
| 176 | * <dd>The value from the POM of: | |
| 177 | * <p> | |
| 178 | * <properties><br> | |
| 179 | * <my.value>hello</my.value><br> | |
| 180 | * </properties> | |
| 181 | * </p></dd> | |
| 182 | * <dt>${JAVA_HOME}</dt> | |
| 183 | * <dd>The value of JAVA_HOME in the environment variables</dd> | |
| 184 | * </dl> | |
| 185 | * | |
| 186 | * @param props a map used for interpolation, not null. | |
| 187 | * @param aProject a Maven project, not null. | |
| 188 | * @param inputEncoding the input encoding of the site descriptor, not null. | |
| 189 | * @param outputEncoding the output encoding wanted, not null. | |
| 190 | * @param siteDescriptorContent the site descriptor file, not null. | |
| 191 | * @return the site descriptor content based on the <code>site.xml</code> file with interpolated strings. | |
| 192 | * @throws SiteToolException if errors happened during the interpolation. | |
| 193 | */ | |
| 194 | String getInterpolatedSiteDescriptorContent( Map<String, String> props, MavenProject aProject, | |
| 195 | String siteDescriptorContent, String inputEncoding, | |
| 196 | String outputEncoding ) | |
| 197 | throws SiteToolException; | |
| 198 | ||
| 199 | /** | |
| 200 | * Returns the parent POM with interpolated URLs. Attempts to source this value from the | |
| 201 | * <code>reactorProjects</code> parameters if available (reactor env model attributes | |
| 202 | * are interpolated), or if the reactor is unavailable (-N) resorts to the | |
| 203 | * <code>project.getParent().getUrl()</code> value which will NOT have been interpolated. | |
| 204 | * <p/> | |
| 205 | * TODO: once bug is fixed in Maven proper, remove this. | |
| 206 | * | |
| 207 | * @param aProject a Maven project, not null. | |
| 208 | * @param reactorProjects the Maven reactor projects, not null. | |
| 209 | * @param localRepository the Maven local repository, not null. | |
| 210 | * @return the parent project with interpolated URLs. | |
| 211 | */ | |
| 212 | MavenProject getParentProject( MavenProject aProject, List<MavenProject> reactorProjects, | |
| 213 | ArtifactRepository localRepository ); | |
| 214 | ||
| 215 | /** | |
| 216 | * Populate the parent menu part of the decoration model. | |
| 217 | * | |
| 218 | * @param decorationModel the Doxia DecorationModel, not null. | |
| 219 | * @param locale the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm. | |
| 220 | * @param project a Maven project, not null. | |
| 221 | * @param parentProject a Maven parent project, not null. | |
| 222 | * @param keepInheritedRefs used for inherited references. | |
| 223 | */ | |
| 224 | void populateParentMenu( DecorationModel decorationModel, Locale locale, MavenProject project, | |
| 225 | MavenProject parentProject, boolean keepInheritedRefs ); | |
| 226 | ||
| 227 | /** | |
| 228 | * Populate the parent menu part of the decoration model. | |
| 229 | * | |
| 230 | * @param decorationModel the Doxia DecorationModel, not null. | |
| 231 | * @param locale the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm. | |
| 232 | * @param project a Maven project, not null. | |
| 233 | * @param parentProject a Maven parent project, not null. | |
| 234 | * @param keepInheritedRefs used for inherited references. | |
| 235 | * @deprecated Please use | |
| 236 | * {@link #populateParentMenu(DecorationModel, Locale, MavenProject, MavenProject, boolean)} instead | |
| 237 | */ | |
| 238 | void populateProjectParentMenu( DecorationModel decorationModel, Locale locale, MavenProject project, | |
| 239 | MavenProject parentProject, boolean keepInheritedRefs ); | |
| 240 | ||
| 241 | /** | |
| 242 | * Populate the modules menu part of the decoration model. | |
| 243 | * | |
| 244 | * @param project a Maven project, not null. | |
| 245 | * @param reactorProjects the Maven reactor projects, not null. | |
| 246 | * @param localRepository the Maven local repository, not null. | |
| 247 | * @param decorationModel the Doxia site descriptor model, not null. | |
| 248 | * @param locale the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm. | |
| 249 | * @param keepInheritedRefs used for inherited references. | |
| 250 | * @throws SiteToolException if any | |
| 251 | * @deprecated Please use | |
| 252 | * {@link #populateModulesMenu(MavenProject, List, ArtifactRepository, DecorationModel, Locale, boolean)} | |
| 253 | * instead | |
| 254 | */ | |
| 255 | void populateModules( MavenProject project, List<MavenProject> reactorProjects, ArtifactRepository localRepository, | |
| 256 | DecorationModel decorationModel, Locale locale, boolean keepInheritedRefs ) | |
| 257 | throws SiteToolException; | |
| 258 | ||
| 259 | /** | |
| 260 | * Populate the modules menu part of the decoration model. | |
| 261 | * | |
| 262 | * @param project a Maven project, not null. | |
| 263 | * @param reactorProjects the Maven reactor projects, not null. | |
| 264 | * @param localRepository the Maven local repository, not null. | |
| 265 | * @param decorationModel the Doxia site descriptor model, not null. | |
| 266 | * @param locale the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm. | |
| 267 | * @param keepInheritedRefs used for inherited references. | |
| 268 | * @throws SiteToolException if any | |
| 269 | */ | |
| 270 | void populateModulesMenu( MavenProject project, List<MavenProject> reactorProjects, | |
| 271 | ArtifactRepository localRepository, DecorationModel decorationModel, Locale locale, | |
| 272 | boolean keepInheritedRefs ) | |
| 273 | throws SiteToolException; | |
| 274 | ||
| 275 | /** | |
| 276 | * Init the <code>localesList</code> variable. | |
| 277 | * <p>If the <code>locales</code> variable is available, the first valid token will be the | |
| 278 | * <code>defaultLocale</code> for this instance of the Java Virtual Machine.</p> | |
| 279 | * | |
| 280 | * @param locales A comma separated list of locales supported by Maven. The first valid token will be the | |
| 281 | * default Locale for this instance of the Java Virtual Machine. | |
| 282 | * @return a list of <code>Locale</code> | |
| 283 | */ | |
| 284 | List<Locale> getAvailableLocales( String locales ); | |
| 285 | ||
| 286 | /** | |
| 287 | * Converts a locale code like "en", "en_US" or "en_US_win" to a <code>java.util.Locale</code> | |
| 288 | * object. | |
| 289 | * <p>If localeCode = <code>default</code>, return the current value of the default locale for this instance | |
| 290 | * of the Java Virtual Machine.</p> | |
| 291 | * | |
| 292 | * @param localeCode the locale code string. | |
| 293 | * @return a java.util.Locale object instanced or null if errors occurred | |
| 294 | * @see <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Locale.html">java.util.Locale#getDefault()</a> | |
| 295 | */ | |
| 296 | Locale codeToLocale( String localeCode ); | |
| 297 | } |