1 15 package org.apache.hivemind.service.impl; 16 17 import javassist.CtClass; 18 19 import org.apache.hivemind.ApplicationRuntimeException; 20 import org.apache.hivemind.service.ClassFab; 21 import org.apache.hivemind.service.ClassFactory; 22 import org.apache.hivemind.service.InterfaceFab; 23 24 29 public class ClassFactoryImpl implements ClassFactory 30 { 31 34 private HiveMindClassPool _pool = new HiveMindClassPool(); 35 36 private CtClassSource _classSource = new CtClassSource(_pool); 37 38 public ClassFab newClass(String name, Class superClass) 39 { 40 try 41 { 42 CtClass ctNewClass = _classSource.newClass(name, superClass); 43 44 return new ClassFabImpl(_classSource, ctNewClass); 45 } 46 catch (Exception ex) 47 { 48 throw new ApplicationRuntimeException(ServiceMessages.unableToCreateClass( 49 name, 50 superClass, 51 ex), ex); 52 } 53 } 54 55 56 57 public InterfaceFab newInterface(String name) 58 { 59 try 60 { 61 CtClass ctNewClass = _classSource.newInterface(name); 62 63 return new InterfaceFabImpl(_classSource, ctNewClass); 64 } 65 catch (Exception ex) 66 { 67 throw new ApplicationRuntimeException( 68 ServiceMessages.unableToCreateInterface(name, ex), ex); 69 } 70 71 } 72 73 public int getCreatedClassCount() 74 { 75 return _classSource.getCreatedClassCount(); 76 } 77 78 } | Popular Tags |