1 // Copyright 2004, 2005 The Apache Software Foundation 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package org.apache.hivemind; 16 17 import org.apache.hivemind.internal.Module; 18 19 /** 20 * Interface defining an interceptor factory, an object that can create 21 * an interceptor. Interceptors are objects that implement a particular 22 * interface, adding logic before or after invoking methods on a wrapped 23 * object (implementing the same instance). 24 * 25 * <p> 26 * Implementations must be stateless and multi-threaded. 27 * An interceptor may only be applied once to any single service. 28 * The factory will only be invoked once for any single service (even in the case 29 * of non-standard service models such as threaded and pooled). 30 * 31 * @author Howard Lewis Ship 32 */ 33 public interface ServiceInterceptorFactory 34 { 35 /** 36 * Creates an interceptor and pushes it onto the interceptor stack. 37 * @param parameters factory specific parameters. The implementatation class 38 * should document which type is expected here. 39 */ 40 public void createInterceptor(InterceptorStack stack, Module invokingModule, Object parameters); 41 } 42