KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > terracotta > modules > cglib_2_1_3 > object > config > CGLibModuleSpec


1 /*
2  * All content copyright (c) 2003-2007 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

4 package org.terracotta.modules.cglib_2_1_3.object.config;
5
6 import org.terracotta.modules.cglib_2_1_3.object.dna.impl.CGLibBulkBeanInstance;
7 import org.terracotta.modules.cglib_2_1_3.object.dna.impl.CGLibFactoryInstance;
8
9 import com.tc.object.config.ChangeApplicatorSpec;
10 import com.tc.object.config.ModuleSpec;
11
12
13 public class CGLibModuleSpec implements ModuleSpec {
14   private final ChangeApplicatorSpec changeAppSpec;
15   
16   public CGLibModuleSpec(ChangeApplicatorSpec changeAppSpec) {
17     this.changeAppSpec = changeAppSpec;
18   }
19   
20   public ChangeApplicatorSpec getChangeApplicatorSpec() {
21     return this.changeAppSpec;
22   }
23
24   public Class JavaDoc getPeerClass(Class JavaDoc clazz) {
25     if (isImplementCglibFactory(clazz)) {
26       return CGLibFactoryInstance.class;
27     } else if (isCglibBulkBean(clazz)) {
28       return CGLibBulkBeanInstance.class;
29     }
30     return clazz;
31   }
32
33   public boolean isUseNonDefaultConstructor(Class JavaDoc clazz) {
34     return (isImplementCglibFactory(clazz) || isCglibBulkBean(clazz));
35   }
36   
37   public boolean isPortableClass(Class JavaDoc clazz) {
38     return (isImplementCglibFactory(clazz) || isCglibBulkBean(clazz));
39   }
40
41   private static boolean isImplementCglibFactory(Class JavaDoc clazz) {
42     if (CGLibFactoryInstance.class.getName().equals(clazz.getName())) { return true; }
43     
44     Class JavaDoc[] interfaces = clazz.getInterfaces();
45     for (int i = 0; i < interfaces.length; i++) {
46       if (interfaces[i].getName().equals("net.sf.cglib.proxy.Factory")) { return true; }
47     }
48     return false;
49   }
50
51   private static boolean isCglibBulkBean(Class JavaDoc clazz) {
52     if (CGLibBulkBeanInstance.class.getName().equals(clazz.getName())) { return true; }
53     
54     Class JavaDoc superClass = clazz.getSuperclass();
55     if (superClass == null) { return false; }
56     return "net.sf.cglib.beans.BulkBean".equals(superClass.getName());
57   }
58
59 }
60
Popular Tags