/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.itest.home; import java.io.File; import java.io.IOException; import java.net.URL; import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; import com.google.common.io.Files; import com.google.common.io.Resources; import com.enonic.cms.core.home.HomeDir; @Component @Profile("itest") public final class HomeDirFactory implements FactoryBean<HomeDir>, InitializingBean, DisposableBean { private HomeDir homeDir; @Override public void afterPropertiesSet() throws Exception { this.homeDir = new HomeDir( Files.createTempDir() ); copyFile( "config/cms.properties" ); copyFile( "config/vhost.properties" ); } @Override public void destroy() { FileUtils.deleteQuietly( this.homeDir.toFile() ); } private void copyFile( final String resource ) throws IOException { final String from = "/homeDir/" + resource; final File to = new File( this.homeDir.toFile(), resource ); final URL url = getClass().getResource( from ); if ( url == null ) { throw new IOException( "Resource [" + from + "] not found" ); } Files.createParentDirs( to ); Files.copy( Resources.newInputStreamSupplier( url ), to ); } public HomeDir getObject() { return this.homeDir; } public Class<?> getObjectType() { return HomeDir.class; } public boolean isSingleton() { return true; } }