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

org.fcrepo.utilities.install.container.Tomcat Maven / Gradle / Ivy

There is a newer version: 3.8.1
Show newest version
/* The contents of this file are subject to the license and copyright terms
 * detailed in the license directory at the root of the source tree (also
 * available online at http://fedora-commons.org/license/).
 */
package org.fcrepo.utilities.install.container;

import java.io.File;
import java.io.FileOutputStream;

import org.apache.commons.io.IOUtils;

import org.fcrepo.utilities.FileUtils;
import org.fcrepo.utilities.install.Distribution;
import org.fcrepo.utilities.install.InstallOptions;
import org.fcrepo.utilities.install.InstallationFailedException;


public abstract class Tomcat
        extends Container {

    public static final String CONF = "conf";

    public static final String KEYSTORE = "keystore";

    private final File tomcatHome;

    private final File webapps;

    private final File conf;

    /**
     * Target location of the included keystore file.
     */
    private final File includedKeystore;

    Tomcat(Distribution dist, InstallOptions options) {
        super(dist, options);
        tomcatHome =
                new File(getOptions().getValue(InstallOptions.TOMCAT_HOME));
        webapps = new File(tomcatHome, "webapps" + File.separator);
        conf = new File(tomcatHome, CONF + File.separator);
        setCommonLib();
        includedKeystore = new File(conf, KEYSTORE);
    }

    @Override
    public void deploy(File war) throws InstallationFailedException {
        System.out.println("Deploying " + war.getName() + "...");
        File dest = new File(webapps, war.getName());
        if (!FileUtils.copy(war, dest)) {
            throw new InstallationFailedException("Deploy failed: unable to copy "
                    + war.getAbsolutePath() + " to " + dest.getAbsolutePath());
        }
    }

    @Override
    public void install() throws InstallationFailedException {
        installTomcat();
        installServerXML();
        installFedoraContext();
        installIncludedKeystore();
    }

    /**
     * Creates a Tomcat context for Fedora in
     * $CATALINA_HOME/conf/Catalina/localhost which sets the fedora.home system
     * property to the installer-provided value.
     */
    protected void installFedoraContext() throws InstallationFailedException {
        File contextDir =
            new File(getConf().getPath() + File.separator + "Catalina"
                    + File.separator + "localhost");
        contextDir.mkdirs();

        try {
            File fhome = new File(getOptions()
                                             .getValue(InstallOptions.FEDORA_HOME));
            String content =
                    IOUtils.toString(this.getClass()
                            .getResourceAsStream("/resources/context.xml"))
                            .replace("_FEDORA_HOME_",
                                     getOptions().getValue(InstallOptions.FEDORA_HOME));

            String name =
                    getOptions()
                            .getValue(InstallOptions.FEDORA_APP_SERVER_CONTEXT)
                            + ".xml";

            FileOutputStream out =
                    new FileOutputStream(new File(contextDir, name));

            out.write(content.getBytes());
            out.close();
        } catch (Exception e) {
            throw new InstallationFailedException(e.getMessage(), e);
        }

    }

    protected abstract void installTomcat() throws InstallationFailedException;

    protected abstract void installServerXML()
            throws InstallationFailedException;

    protected abstract void installIncludedKeystore()
            throws InstallationFailedException;

    protected abstract void setCommonLib();

    protected abstract File getCommonLib();

    protected final File getTomcatHome() {
        return tomcatHome;
    }

    protected final File getWebapps() {
        return webapps;
    }

    protected final File getConf() {
        return conf;
    }

    protected final File getIncludedKeystore() {
        return includedKeystore;
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy