1 /* 2 * Copyright the original author or authors. 3 * 4 * Licensed under the MOZILLA PUBLIC LICENSE, Version 1.1 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.mozilla.org/MPL/MPL-1.1.html 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 import org.as2lib.core.BasicInterface; 18 import org.as2lib.env.reflect.InvocationHandler; 19 20 /** 21 * {@code ProxyFactory} declares methods to create dynamic proxies, that means at 22 * run-time, of specific types, that are classes or interfaces. 23 * 24 * <p>Methods that get invoked on the returned proxy are forwared to an invocation 25 * handler that is responsible to respond appropriately to the method invocation. 26 * 27 * @author Simon Wacker 28 */ 29 interface org.as2lib.env.reflect.ProxyFactory extends BasicInterface { 30 31 /** 32 * Creates a proxy for the given {@code type} and delegates method invocations on 33 * this proxy to the {@link InvocationHandler#invoke} method. 34 * 35 * <p>Types are classes and interfaces. 36 * 37 * <p>The returned proxy can be casted to the passed-in {@code type}. 38 * 39 * @param type the type to create a proxy for 40 * @param handler the handler to invoke the {@code invoke} method on method 41 * invocations on the returned proxy 42 * @return the proxy for the given {@code type} 43 */ 44 public function createProxy(type:Function, handler:InvocationHandler); 45 46 }