1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $RCSfile$ 3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Revision$ 4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * $Date$ 5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Copyright 2008 Jive Software. 7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); 9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * you may not use this file except in compliance with the License. 10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * You may obtain a copy of the License at 11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * http://www.apache.org/licenses/LICENSE-2.0 13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Unless required by applicable law or agreed to in writing, software 15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS, 16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * See the License for the specific language governing permissions and 18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * limitations under the License. 19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jivesoftware.smackx.commands; 21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/** 23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * A factory for creating local commands. It's useful in cases where instantiation 24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * of a command is more complicated than just using the default constructor. For example, 25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * when arguments must be passed into the constructor or when using a dependency injection 26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * framework. When a LocalCommandFactory isn't used, you can provide the AdHocCommandManager 27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * a Class object instead. For more details, see 28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * {@link AdHocCommandManager#registerCommand(String, String, LocalCommandFactory)}. 29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @author Matt Tucker 31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic interface LocalCommandFactory { 33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen /** 35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Returns an instance of a LocalCommand. 36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * 37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @return a LocalCommand instance. 38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @throws InstantiationException if creating an instance failed. 39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * @throws IllegalAccessException if creating an instance is not allowed. 40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */ 41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen public LocalCommand getInstance() throws InstantiationException, IllegalAccessException; 42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}