Java tutorial
/* * Copyright 2006-2014 smartics, Kronseder & Reiner GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.redhat.rcm.maven.plugin.buildmetadata.util; import java.io.File; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolver; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.doxia.site.decoration.Skin; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.project.MavenProject; /** * Utilities for Maven for generating reports. * * @author <a href="mailto:robert.reiner@smartics.de">Robert Reiner</a> * @version $Revision:591 $ */ public final class ReportUtils { // ********************************* Fields ********************************* // --- constants ------------------------------------------------------------ // --- members -------------------------------------------------------------- // ****************************** Initializer ******************************* // ****************************** Constructors ****************************** /** * Utility class pattern. */ private ReportUtils() { } // ****************************** Inner Classes ***************************** // ********************************* Methods ******************************** // --- init ----------------------------------------------------------------- // --- get&set -------------------------------------------------------------- // --- business ------------------------------------------------------------- /** * Returns a file reference to the default skin useful for rendering * standalone run reports. * <p> * Stolen from the changes plugin. * </p> * * @param project the project of the plugin that calls this method. * @param localRepository a reference to the local repository to reference to. * @param resolver to resolve the skin artifact. * @param factory to resolve dependencies. * @return a file reference to the default skin. * @throws MojoExecutionException if the skin artifact cannot be resolved. */ public static File getSkinArtifactFile(final MavenProject project, final ArtifactRepository localRepository, final ArtifactResolver resolver, final ArtifactFactory factory) throws MojoExecutionException { final Skin skin = Skin.getDefaultSkin(); final String version = determineVersion(skin); try { final VersionRange versionSpec = VersionRange.createFromVersionSpec(version); final Artifact artifact = factory.createDependencyArtifact(skin.getGroupId(), skin.getArtifactId(), versionSpec, "jar", null, null); resolver.resolve(artifact, project.getRemoteArtifactRepositories(), localRepository); return artifact.getFile(); } catch (final InvalidVersionSpecificationException e) { throw new MojoExecutionException("The skin version '" + version + "' is not valid: " + e.getMessage(), e); } catch (final ArtifactResolutionException e) { throw new MojoExecutionException("Unable to find skin", e); } catch (final ArtifactNotFoundException e) { throw new MojoExecutionException("The skin does not exist: " + e.getMessage(), e); } } /** * Determines the version of the given skin. If the version is not set in the * skin, the {@link Artifact#RELEASE_VERSION} is returned. * * @param skin the skin whose version is requested. * @return the version of the skin or {@link Artifact#RELEASE_VERSION} as * default. */ private static String determineVersion(final Skin skin) { String version = skin.getVersion(); if (version == null) { version = Artifact.RELEASE_VERSION; } return version; } // --- object basics -------------------------------------------------------- }