1 /** 2 * 3 * Copyright 2003-2004 The Apache Software Foundation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 package org.apache.geronimo.kernel.repository; 18 19 import java.net.URI; 20 import java.io.File; 21 import java.io.IOException; 22 import java.io.InputStream; 23 24 /** 25 * A repository that accepts new entries. 26 * 27 * @version $Rev: 396287 $ $Date: 2006-04-23 08:45:52 -0700 (Sun, 23 Apr 2006) $ 28 */ 29 public interface WriteableRepository extends Repository { 30 /** 31 * Copies a file from the server's filesystem into the repository. 32 * Obviously to use this remotely, you must have some other way 33 * to upload the file to the server's filesystem, even if the 34 * the server is just going to turn around and upload it to some 35 * other remote location. 36 * 37 * @param source A file representing the data for the new repository 38 * entry 39 * @param destination A fully-resolved artifact that tells the repository 40 * where it should save the data to 41 * @param monitor Tracks the progress of the installation 42 */ 43 public void copyToRepository(File source, Artifact destination, FileWriteMonitor monitor) throws IOException; 44 45 /** 46 * Copies the contents of an arbitrary stream into the repository. 47 * Obviously to use this remotely, you must have some other way 48 * to upload the content to the server's JVM, even if the the server 49 * is just going to turn around and upload it to some other remote 50 * location. The source will be closed when the write completes. 51 * 52 * @param source A stream representing the data for the new 53 * repository entry 54 * @param destination A fully-resolved artifact that tells the repository 55 * where it should save the data to 56 * @param monitor Tracks the progress of the installation 57 */ 58 public void copyToRepository(InputStream source, int size, Artifact destination, FileWriteMonitor monitor) throws IOException; 59 }