001 /** 002 * 003 * Copyright 2005 The Apache Software Foundation 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.geronimo.system.plugin; 018 019 import org.apache.geronimo.kernel.repository.Artifact; 020 021 /** 022 * An interface for callers who want to monitor the progress of an installation. 023 * These are all callbacks sent by the server. 024 * 025 * @see PluginInstaller 026 * 027 * @version $Rev: 410741 $ $Date: 2006-05-31 21:35:48 -0700 (Wed, 31 May 2006) $ 028 */ 029 public interface DownloadPoller { 030 /** 031 * Notes a configuration that was removed because it was obsoleted by a 032 * newly-installed configuration. 033 */ 034 void addRemovedConfigID(Artifact obsolete); 035 036 /** 037 * Notes that a configuration passed as an argument to the install 038 * operation was successfully installed. This will only be called on 039 * the original arguments to the install command, not on anything 040 * installed because it was a dependency. 041 */ 042 void addInstalledConfigID(Artifact target); 043 044 /** 045 * Notes that a configuration was restarted as a result of the 046 * current operation. This usually means that it depended on a 047 * configuration that was obsoleted (removed), so it shut down when 048 * the remove happened, and was started up again after the replacement 049 * was installed. 050 */ 051 void addRestartedConfigID(Artifact target); 052 053 /** 054 * Notes that the current install operation found a dependency, and that 055 * dependency was satisfied by an artifact already available in the 056 * current server environment. 057 */ 058 void addDependencyPresent(Artifact dep); 059 060 /** 061 * Notes that the current install operation found a dependency, and that 062 * dependency was downloaded from a remote repository and installed into 063 * the local server environment. 064 */ 065 void addDependencyInstalled(Artifact dep); 066 067 /** 068 * Indicates which file the configuration installer is working on at the 069 * moment. Mainly for purposes of user feedback during asynchronous 070 * requests. 071 */ 072 void setCurrentFile(String currentFile); 073 074 /** 075 * Describes the current operation status as a text message. Mainly for 076 * purposes of user feedback during asynchronous requests. 077 */ 078 void setCurrentMessage(String currentMessage); 079 080 /** 081 * Gives the percent complete for a file currently being downloaded. 082 * Mainly for purposes of user feedback during asynchronous requests. 083 * This may be -1 if the download server does not supply the file size in 084 * advance. 085 */ 086 void setCurrentFilePercent(int currentFileProgress); 087 088 /** 089 * Called at the end of a file download with the number of bytes downloaded 090 * in the current operation. This can be used to calculate a rough 091 * transfer rate (the time between setCurrentFile and setDownloadBytes) as 092 * well as if the caller wants to total the size of all downloads for the 093 * current installation. 094 */ 095 void addDownloadBytes(long bytes); 096 097 /** 098 * Indicates that a failure was encountered during the installation 099 * operation. Any failure is currently treated as fatal -- the installer 100 * will not attempt to complete additional tasks after a failure. 101 */ 102 void setFailure(Exception failure); 103 104 /** 105 * Always called when the operation is complete, regardless of whether 106 * there was a failure or not. 107 */ 108 void setFinished(); 109 }