From: Steve L. <st...@us...> - 2005-04-15 14:40:24
|
Update of /cvsroot/smartfrog/core/smartfrog/src/org/smartfrog/services/os/download In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31340/smartfrog/src/org/smartfrog/services/os/download Modified Files: components.sf Download.java DownloadImpl.java Log Message: Test for download failure; a test that works even behind the firewall. Fix for DownloadImpl to throw exceptions on download failures of any kind. Also some extensions to download. -it's a FileUsingComponent; absolutePath and URI are set to the path and URI of the localFile -deleteOnExit triggers delete on termination. -shouldTerminate triggers auto-termination after download Index: DownloadImpl.java =================================================================== RCS file: /cvsroot/smartfrog/core/smartfrog/src/org/smartfrog/services/os/download/DownloadImpl.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** DownloadImpl.java 14 Apr 2005 20:39:12 -0000 1.4 --- DownloadImpl.java 15 Apr 2005 14:39:43 -0000 1.5 *************** *** 26,29 **** --- 26,30 ---- import java.io.File; import java.rmi.RemoteException; + import java.net.URL; import org.smartfrog.sfcore.common.SmartFrogException; *************** *** 36,47 **** import org.smartfrog.sfcore.logging.LogSF; import org.smartfrog.sfcore.logging.LogFactory; import org.smartfrog.sfcore.utils.ComponentHelper; import org.smartfrog.services.filesystem.FileImpl; import org.smartfrog.services.filesystem.FileSystem; /** * Defines the Downloader class. It downloads the data from a given url. */ ! public class DownloadImpl extends PrimImpl implements Download { /** --- 37,53 ---- import org.smartfrog.sfcore.logging.LogSF; import org.smartfrog.sfcore.logging.LogFactory; + import org.smartfrog.sfcore.logging.Log; import org.smartfrog.sfcore.utils.ComponentHelper; import org.smartfrog.services.filesystem.FileImpl; import org.smartfrog.services.filesystem.FileSystem; + import org.smartfrog.services.filesystem.FileUsingComponentImpl; /** * Defines the Downloader class. It downloads the data from a given url. */ ! public class DownloadImpl extends FileUsingComponentImpl implements Download { ! public static final String ERROR_IN_DOWNLOAD = "error in downloading of url "; ! ! Log log; /** *************** *** 62,71 **** RemoteException { super.sfStart(); ! LogSF log = LogFactory.getLog(this); String url = "NOT YET SET"; String localFile = "NOT YET SET"; try { ! url = (String) sfResolve("url"); localFile = FileSystem.lookupAbsolutePath(this, --- 68,78 ---- RemoteException { super.sfStart(); ! log = sfGetApplicationLog(); String url = "NOT YET SET"; String localFile = "NOT YET SET"; + boolean terminate = false; try { ! url = (String) sfResolve(ATTR_URL); localFile = FileSystem.lookupAbsolutePath(this, *************** *** 77,88 **** int blocksize = ((Integer) sfResolve(ATTR_BLOCKSIZE)).intValue(); ! download(url, new File(localFile), blocksize); - //spawn the thread to terminate normally - ComponentHelper helper = new ComponentHelper(this); - helper.targetForTermination(); } catch (IOException e) { ! String errStr = "error in downloading of url " + url + " to " + --- 84,101 ---- int blocksize = ((Integer) sfResolve(ATTR_BLOCKSIZE)).intValue(); + terminate = sfResolve(ATTR_TERMINATE, terminate, true); + File file = new File(localFile); + bind(file); ! download(url, file, blocksize); ! ! if (terminate) { ! //spawn the thread to terminate normally ! ComponentHelper helper = new ComponentHelper(this); ! helper.targetForTermination(); ! } } catch (IOException e) { ! String errStr = ERROR_IN_DOWNLOAD + url + " to " + *************** *** 91,99 **** log.error(errStr); } ! //TODO : Need to be revisited ! throw new SmartFrogLifecycleException(e, this); } } /** * Simple Download --- 104,123 ---- log.error(errStr); } ! throw SmartFrogLifecycleException.forward(errStr,e, this); } } + + /** + * delete the file if needed + * + * @param status termination status + */ + public synchronized void sfTerminateWith(TerminationRecord status) { + super.sfTerminateWith(status); + deleteFileIfNeeded(); + } + + /** * Simple Download *************** *** 117,121 **** try { // open the URL, ! is = SFClassLoader.getResourceAsStream(url); // open the file, --- 141,146 ---- try { // open the URL, ! URL endpoint=new URL(url); ! is = endpoint.openStream(); // open the file, Index: Download.java =================================================================== RCS file: /cvsroot/smartfrog/core/smartfrog/src/org/smartfrog/services/os/download/Download.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Download.java 5 Apr 2005 13:24:07 -0000 1.5 --- Download.java 15 Apr 2005 14:39:43 -0000 1.6 *************** *** 23,27 **** /** ! * created 05-Apr-2005 11:04:23 */ --- 23,27 ---- /** ! * Download interface */ *************** *** 30,32 **** --- 30,35 ---- String ATTR_LOCALFILE = "toLocalFile"; String ATTR_BLOCKSIZE = "blocksize"; + String ATTR_URL = "url"; + String ATTR_TERMINATE = "shouldTerminate"; + } Index: components.sf =================================================================== RCS file: /cvsroot/smartfrog/core/smartfrog/src/org/smartfrog/services/os/download/components.sf,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** components.sf 7 Apr 2005 10:31:10 -0000 1.4 --- components.sf 15 Apr 2005 14:39:43 -0000 1.5 *************** *** 21,33 **** #include "org/smartfrog/components.sf" #include "org/smartfrog/functions.sf" #include "org/smartfrog/sfcore/workflow/components.sf" #include "org/smartfrog/services/os/runshell/components.sf" ! Downloader extends Prim { sfClass "org.smartfrog.services.os.download.DownloadImpl"; sfExport false; url "system.tar"; // set this to the URL to download - blocksize 1024; toLocalFile "/tmp/download"; // set this to the name of the file to create } --- 21,71 ---- #include "org/smartfrog/components.sf" #include "org/smartfrog/functions.sf" + #include "org/smartfrog/predicates.sf" #include "org/smartfrog/sfcore/workflow/components.sf" + #include "org/smartfrog/services/filesystem/components.sf" #include "org/smartfrog/services/os/runshell/components.sf" ! ! DownloadComponent extends Prim { ! ! downloadSchema extends DeletableFileSchema { ! ! /** ! * URL is a string ! */ ! url extends String; ! ! /** ! * local file is a string or a file reference ! */ ! toLocalFile extends Compulsory; ! ! /** ! * block size to use ! */ ! blocksize extends Integer; ! ! /** ! * terminate after downloading ! */ ! shouldTerminate extends Boolean; ! ! ! } sfClass "org.smartfrog.services.os.download.DownloadImpl"; + blocksize 1024; + shouldTerminate false; + deleteOnExit false; + } + + /** + * this was the original download component; DownloadComponent has been + * added as a predecessor with different defaults and a schema + */ + Downloader extends DownloadComponent { sfExport false; url "system.tar"; // set this to the URL to download toLocalFile "/tmp/download"; // set this to the name of the file to create + shouldTerminate "true"; } |