1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. 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 18 package org.apache.commons.net.ftp.parser; 19 import org.apache.commons.net.ftp.FTPClientConfig; 20 import org.apache.commons.net.ftp.FTPFileEntryParser; 21 22 /** 23 * The interface describes a factory for creating FTPFileEntryParsers. 24 * @since 1.2 25 */ 26 public interface FTPFileEntryParserFactory 27 { 28 /** 29 * Implementation should be a method that decodes the 30 * supplied key and creates an object implementing the 31 * interface FTPFileEntryParser. 32 * 33 * @param key A string that somehow identifies an 34 * FTPFileEntryParser to be created. 35 * 36 * @return the FTPFileEntryParser created. 37 * @exception ParserInitializationException 38 * Thrown on any exception in instantiation 39 */ 40 public FTPFileEntryParser createFileEntryParser(String key) 41 throws ParserInitializationException; 42 43 /** 44 *<p> 45 * Implementation should be a method that extracts 46 * a key from the supplied {@link FTPClientConfig FTPClientConfig} 47 * parameter and creates an object implementing the 48 * interface FTPFileEntryParser and uses the supplied configuration 49 * to configure it. 50 * </p><p> 51 * Note that this method will generally not be called in scenarios 52 * that call for autodetection of parser type but rather, for situations 53 * where the user knows that the server uses a non-default configuration 54 * and knows what that configuration is. 55 * </p> 56 * 57 * @param config A {@link FTPClientConfig FTPClientConfig} 58 * used to configure the parser created 59 * 60 * @return the @link FTPFileEntryParser FTPFileEntryParser} so created. 61 * @exception ParserInitializationException 62 * Thrown on any exception in instantiation 63 * @since 1.4 64 */ 65 public FTPFileEntryParser createFileEntryParser(FTPClientConfig config) 66 throws ParserInitializationException; 67 68 }