KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > examples > impl > ProxyLoggingInterceptorFactory


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.examples.impl;
16
17 import java.lang.reflect.InvocationHandler JavaDoc;
18 import java.lang.reflect.Proxy JavaDoc;
19
20 import org.apache.commons.logging.Log;
21 import org.apache.hivemind.InterceptorStack;
22 import org.apache.hivemind.ServiceInterceptorFactory;
23 import org.apache.hivemind.internal.Module;
24
25 /**
26  * Creates a simple, proxy-based interceptor that mimics most (but not all) of the behavior
27  * of {@link org.apache.hivemind.service.impl.LoggingInterceptorClassFactory}.
28  *
29  * @author Howard Lewis Ship
30  */

31 public class ProxyLoggingInterceptorFactory implements ServiceInterceptorFactory
32 {
33
34     public void createInterceptor(InterceptorStack stack, Module invokingModule, Object JavaDoc parameters)
35     {
36         Log log = stack.getServiceLog();
37
38         InvocationHandler JavaDoc handler = new ProxyLoggingInvocationHandler(log, stack.peek());
39
40         Object JavaDoc interceptor =
41             Proxy.newProxyInstance(
42                 invokingModule.getClassResolver().getClassLoader(),
43                 new Class JavaDoc[] { stack.getServiceInterface()},
44                 handler);
45
46         stack.push(interceptor);
47     }
48 }
49
Popular Tags