001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. 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 import org.apache.geronimo.kernel.repository.MissingDependencyException;
021
022 /**
023 * An interface for callers who want to monitor the progress of an installation.
024 * These are all callbacks sent by the server.
025 *
026 * @see PluginInstaller
027 *
028 * @version $Rev: 706640 $ $Date: 2008-10-21 14:44:05 +0000 (Tue, 21 Oct 2008) $
029 */
030 public interface DownloadPoller {
031 /**
032 * Notes a configuration that was removed because it was obsoleted by a
033 * newly-installed configuration.
034 */
035 void addRemovedConfigID(Artifact obsolete);
036
037 /**
038 * Notes that a configuration passed as an argument to the install
039 * operation was successfully installed. This will only be called on
040 * the original arguments to the install command, not on anything
041 * installed because it was a dependency.
042 */
043 void addInstalledConfigID(Artifact target);
044
045 /**
046 * Notes that a configuration was restarted as a result of the
047 * current operation. This usually means that it depended on a
048 * configuration that was obsoleted (removed), so it shut down when
049 * the remove happened, and was started up again after the replacement
050 * was installed.
051 */
052 void addRestartedConfigID(Artifact target);
053
054 /**
055 * Provides details on why a plugin was not installed.
056 * @param e MissingDependencyException containing info on
057 */
058 void addSkippedConfigID(MissingDependencyException e);
059
060 /**
061 * Notes that the current install operation found a dependency, and that
062 * dependency was satisfied by an artifact already available in the
063 * current server environment.
064 */
065 void addDependencyPresent(Artifact dep);
066
067 /**
068 * Notes that the current install operation found a dependency, and that
069 * dependency was downloaded from a remote repository and installed into
070 * the local server environment.
071 */
072 void addDependencyInstalled(Artifact dep);
073
074 /**
075 * Indicates which file the configuration installer is working on at the
076 * moment. Mainly for purposes of user feedback during asynchronous
077 * requests.
078 */
079 void setCurrentFile(String currentFile);
080
081 /**
082 * Describes the current operation status as a text message. Mainly for
083 * purposes of user feedback during asynchronous requests.
084 */
085 void setCurrentMessage(String currentMessage);
086
087 /**
088 * Gives the percent complete for a file currently being downloaded.
089 * Mainly for purposes of user feedback during asynchronous requests.
090 * This may be -1 if the download server does not supply the file size in
091 * advance.
092 */
093 void setCurrentFilePercent(int currentFileProgress);
094
095 /**
096 * Called at the end of a file download with the number of bytes downloaded
097 * in the current operation. This can be used to calculate a rough
098 * transfer rate (the time between setCurrentFile and setDownloadBytes) as
099 * well as if the caller wants to total the size of all downloads for the
100 * current installation.
101 */
102 void addDownloadBytes(long bytes);
103
104 /**
105 * Indicates that a failure was encountered during the installation
106 * operation. Any failure is currently treated as fatal -- the installer
107 * will not attempt to complete additional tasks after a failure.
108 */
109 void setFailure(Exception failure);
110
111 /**
112 * Always called when the operation is complete, regardless of whether
113 * there was a failure or not.
114 */
115 void setFinished();
116 }