net.israfil.mojo.flex2.AbstractFlexModule.java Source code

Java tutorial

Introduction

Here is the source code for net.israfil.mojo.flex2.AbstractFlexModule.java

Source

/*
 * Copyright (c) 2006 Israfil Consulting Services Corporation
 * Copyright (c) 2006 Christian Edward Gruber
 * All Rights Reserved
 * 
 * This software is licensed under the Berkeley Standard Distribution license,
 * (BSD license), as defined below:
 * 
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice, this 
 *    list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright notice, 
 *    this list of conditions and the following disclaimer in the documentation 
 *    and/or other materials provided with the distribution.
 * 3. Neither the name of Israfil Consulting Services nor the names of its contributors 
 *    may be used to endorse or promote products derived from this software without 
 *    specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
 * IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
 * OF SUCH DAMAGE.
 * 
 * $Id$
 */
package net.israfil.mojo.flex2;

import java.util.Iterator;
import java.util.Set;

import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;

/**
 * A base implementation of an {@link FlexModule}.
 *
 * @author <a href="snicoll@apache.org">Stephane Nicoll</a>
 * @author <a href="cgruber@israfil.net">Christian Edward Gruber</a>
 * @version $Id$
 */
public abstract class AbstractFlexModule implements FlexModule {

    /**
     * The artifact this module wraps.
     */
    private Artifact artifact = null;

    // Those are set by the configuration

    /**
     * The groupId for this artifact
     */
    private String groupId = null;

    /**
     * The artifactId for this artifact
     */
    private String artifactId = null;

    /**
    * The classifier for this artifact
    */
    private String classifier = null;

    /**
     * The target folder into which this module's artifact will be deployed
     */
    protected String targetPath = null;

    /**
     * The name by which this module will be deployed
     */
    protected String targetFilename = null;

    public AbstractFlexModule() {
    }

    public AbstractFlexModule(Artifact artifact) {
        this.artifact = artifact;
        this.artifactId = artifact.getArtifactId();
        this.groupId = artifact.getGroupId();
        this.classifier = artifact.getClassifier();
    }

    public void resolveArtifact(MavenProject project, Set artifacts) throws MojoFailureException {

        if (artifact != null)
            return; // succeed fast.
        if (groupId == null)
            groupId = project.getGroupId();
        if (artifactId == null)
            throw new MojoFailureException("No artifact specified");
        Iterator i = artifacts.iterator();
        while (i.hasNext()) {
            Artifact a = (Artifact) i.next();
            if (a.getGroupId().equals(groupId) && a.getArtifactId().equals(artifactId))
                this.artifact = a;
        }
        if (artifact == null)
            throw new MojoFailureException(
                    "Could not find artifact: " + groupId + ":" + artifactId + " from declared dependencies");
        if (targetFilename == null)
            targetFilename = artifact.getFile().getName();
    }

    public Artifact getArtifact() {
        return this.artifact;
    }

    /**
     * Returns the groupId of the artifact wrapped by this module.
     */
    public String getGroupId() {
        return groupId;
    }

    /**
     * Returns the artifactId of the artifact wrapped by this module.
     */
    public String getArtifactId() {
        return artifactId;
    }

    /**
     * Returns the classifier (if any) of the artifact wrapped by this module.
     */
    public String getClassifier() {
        return classifier;
    }

    /**
     * Returns the directory into which this artifact should be deployed.
     */
    public String getTargetPath() {
        return targetPath;
    }

    /**
     * Returns the filename by which this artifact should be deployed
     */
    public String getTargetFilename() {
        return targetFilename;
    }

    public String toString() {
        return "FlexModule[" + groupId + ":" + artifactId + ((classifier != null) ? (":" + classifier) : "")
                + ((artifact != null) ? (":" + artifact.getVersion()) : "") + ":" + this.getType() + "]";
    }

}