All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.googlecode.t7mp.steps.deployment.ResolveTomeeStep Maven / Gradle / Ivy

The newest version!
package com.googlecode.t7mp.steps.deployment;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.logging.Log;
import org.sonatype.aether.util.StringUtils;

import com.googlecode.t7mp.AbstractTomeeMojo;
import com.googlecode.t7mp.TomcatSetupException;
import com.googlecode.t7mp.steps.Context;
import com.googlecode.t7mp.steps.Step;
import com.googlecode.t7mp.util.ZipUtil;

/**
 * Comment.
 * 
 * @author jbellmann
 *
 */
public class ResolveTomeeStep implements Step {

    public static final String TOMEE_GROUPID = "org.apache.openejb";
    public static final String TOMEE_ARTIFACTID = "apache-tomee";
    //    public static final String TOMEE_CLASSIFIER = "webprofile";
    public static final String TOMEE_TYPE = "zip";

    protected AbstractTomeeMojo mojo;
    protected MyArtifactResolver myArtifactResolver;
    protected Log logger;

    @Override
    public void execute(Context context) {
        this.mojo = (AbstractTomeeMojo) context.getMojo();
        this.myArtifactResolver = new MyArtifactResolver(mojo);
        this.logger = mojo.getLog();
        String version = mojo.getTomeeVersion();
        if (StringUtils.isEmpty(version)) {
            throw new TomcatSetupException("Version should not be null or empty.");
        }

        File unpackDirectory = null;
        try {
            Artifact artifact = resolveTomcatArtifact(version, mojo.getTomeeDistribution());
            unpackDirectory = getUnpackDirectory();
            ZipUtil.unzip(artifact.getFile(), unpackDirectory);
            copyToTomcatDirectory(unpackDirectory);
        } catch (MojoExecutionException e) {
            logger.error(e.getMessage(), e);
            throw new TomcatSetupException(e.getMessage(), e);
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
            throw new TomcatSetupException(e.getMessage(), e);
        } finally {
            if (unpackDirectory != null) {
                try {
                    FileUtils.deleteDirectory(unpackDirectory);
                } catch (IOException e) {
                    logger.error("Could not delete tomcat upack directory : " + unpackDirectory.getAbsolutePath());
                    logger.error(e.getMessage(), e);
                }
            }
        }
    }

    private void copyToTomcatDirectory(File unpackDirectory) throws IOException {
        File[] files = unpackDirectory.listFiles(new FileFilter() {
            @Override
            public boolean accept(File file) {
                return file.isDirectory();
            }
        });
        // should only be one
        FileUtils.copyDirectory(files[0], this.mojo.getCatalinaBase());
    }

    protected Artifact resolveTomcatArtifact(String tomcatVersion, String distribution) throws MojoExecutionException {
        Artifact artifact = myArtifactResolver.resolve(TOMEE_GROUPID, TOMEE_ARTIFACTID, tomcatVersion, distribution,
                TOMEE_TYPE, Artifact.SCOPE_COMPILE);
        return artifact;
    }

    protected File getUnpackDirectory() {
        File tempDir = new File(System.getProperty("java.io.tmpdir"));
        File upackDirectory = new File(tempDir, UUID.randomUUID().toString());
        upackDirectory.mkdirs();
        return upackDirectory;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy