blob: 92bd218831a19c6c706b4a1b6e2b45b96301f768 [file] [log] [blame]
/*
* Copyright 2004 The Apache Software Foundation
*
* 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 org.apache.pluto.util.deploy.file;
import org.apache.pluto.util.deploy.Deployer;
import org.apache.pluto.util.deploy.DeploymentConfig;
import org.apache.pluto.util.deploy.DeploymentException;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* @author <a href="mailto:ddewolf@apache.org">David H. DeWolf</a>
* @version 1.0
* @since Oct 15, 2004
*/
public abstract class FileSystemDeployer implements Deployer {
// Constructor -------------------------------------------------------------
/**
* Protected no-arg constructor.
*/
protected FileSystemDeployer() {
// Do nothing.
}
// Deployer Impl -----------------------------------------------------------
public void deploy(DeploymentConfig config, File webappFile)
throws IOException, DeploymentException {
File dir = getWebApplicationDirectory(config);
File file = new File(dir, config.getDeploymentName() + ".war");
FileOutputStream out = null;
FileInputStream webappInputStream = null;
try {
out = new FileOutputStream(file);
webappInputStream = new FileInputStream(webappFile);
int read = -1;
byte[] bits = new byte[256];
while ((read = webappInputStream.read(bits)) != -1) {
out.write(bits, 0, read);
}
} finally {
if (out != null) {
out.flush();
out.close();
}
if (webappInputStream != null) {
webappInputStream.close();
}
}
if (!config.isConfigured()) {
configure(config);
}
}
// Protected Abstract Methods ----------------------------------------------
/**
* Retrieves the directory to which the portlet app should be deployed.
* @return
*/
protected abstract File getWebApplicationDirectory(DeploymentConfig config)
throws DeploymentException;
/**
* Configures the deployment.
* @param config
*/
protected abstract void configure(DeploymentConfig config)
throws DeploymentException, IOException;
}