All pastes #250391 Raw Edit

Stuff

public text v1 · immutable
#250391 ·published 2006-11-16 22:32 UTC
rendered paste body
/**
 * Copyright 2006 Aldrin Leal, aldrin at leal dot eng dot bee ar
 * 
 * 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.modafocas.pocketserver.core.packager.impl;

import java.net.URL;

import org.apache.commons.vfs.AllFileSelector;
import org.apache.commons.vfs.FileObject;
import org.apache.commons.vfs.FileSystemManager;
import org.apache.commons.vfs.VFS;
import org.codehaus.plexus.logging.Logger;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.modafocas.pocketserver.core.packager.Packager;
import org.modafocas.pocketserver.core.packager.PackagingException;

/**
 * Packager simples, que cria uma instância tomcat
 * 
 * @plexus.component
 *   role="org.modafocas.pocketserver.core.packager.Packager"
 *   role-hint="SimpleTomcatPackager"
 *   lifecycle-handler="plexus-configurable"
 *   instantiation-strategy="singleton"
 * @author Aldrin Leal
 */
public class SimpleTomcatPackager implements Packager {
	/**
	 * FileSystemManager em usl
	 */
	private FileSystemManager fileSystemManager;
	
	/**
	 * Path para o arquivo .zip do Tomcat
	 * 
	 * @plexus.configuration
	 *   default-value="http://www.apache.org/dist/tomcat/tomcat-5/v5.5.20/bin/apache-tomcat-5.5.20.zip"
	 */
	private String pathToTomcatZip;
	
	/**
	 * Construtor
	 */
	public SimpleTomcatPackager() {
		this.fileSystemManager = null;
		this.pathToTomcatZip = null;
	}
	
	/**
	 * Getter do Path para o Zip do Tomcat
	 * 
	 * @return the pathToTomcatZip
	 */
	public String getPathToTomcatZip() {
		return pathToTomcatZip;
	}

	/**
	 * Setter do Path para o Zip do Tomcat
	 * 
	 * @param pathToTomcatZip the pathToTomcatZip to set
	 */
	public void setPathToTomcatZip(String pathToTomcatZip) {
		this.pathToTomcatZip = pathToTomcatZip;
	}

	/**
	 * Init and Setup
	 */
	public void initialize() throws InitializationException {
		try {
			this.fileSystemManager = VFS.getManager();
		} catch (Exception exc) {
			throw new InitializationException("initialize()", exc);
		}
	}

	/**
	 * Entry-Point de Execução
	 * 
	 * @see org.modafocas.pocketserver.core.packager.Packager#perform(URL, URL, Logger)
	 */
	public void perform(URL sourceURL, URL targetURL, Logger logger) throws PackagingException {
		try {
			FileObject tomcatDistFileObject = this.fileSystemManager.resolveFile(pathToTomcatZip);
			
			if (! tomcatDistFileObject.getName().getURI().startsWith("file:")) {
				FileObject tmpFileObject = this.fileSystemManager.resolveFile("tmp://packaging-temp/" + tomcatDistFileObject.getName().getBaseName());
				
				if (!tmpFileObject.getParent().exists())
					tmpFileObject.getParent().createFolder();
				
				if (tmpFileObject.exists())
					tmpFileObject.delete();
				
				tmpFileObject.createFile();
				
				tmpFileObject.copyFrom(tomcatDistFileObject, new AllFileSelector());
			}
			
		} catch (Exception exc) {
			if (exc instanceof PackagingException)
				throw (PackagingException) exc;

			if (logger.isWarnEnabled())
				logger.warn("perform()", exc);
			
			throw new PackagingException("perform()", exc);
		}
	}
}