private Class build(ClassBuilder builder, ClassDefinition classDef) throws Exception { classLoader = new PackageClassLoader(data, ProjectClassLoader.createProjectClassLoader()); byte[] d = builder.buildClass( classDef, classLoader); data.write( convertClassToResourcePath(classDef.getClassName()), d ); this.store = new ClassFieldAccessorStore(); store.setClassFieldAccessorCache( new ClassFieldAccessorCache( classLoader ) ); store.setEagerWire( true ); Class clazz = classLoader.loadClass( classDef.getClassName() ); classDef.setDefinedClass( clazz ); return clazz; }
private Class build(ClassBuilder builder, ClassDefinition classDef) throws Exception { ProjectClassLoader prjClassLoader = ProjectClassLoader.createProjectClassLoader(); byte[] d = builder.buildClass( classDef, prjClassLoader ); JavaDialectRuntimeData data = new JavaDialectRuntimeData(); data.write( convertClassToResourcePath(classDef.getClassName()), d ); ClassLoader classLoader = new PackageClassLoader(data, prjClassLoader); ClassFieldAccessorStore store = new ClassFieldAccessorStore(); store.setClassFieldAccessorCache( new ClassFieldAccessorCache( classLoader ) ); store.setEagerWire( true ); Class clazz = classLoader.loadClass( classDef.getClassName() ); classDef.setDefinedClass( clazz ); return clazz; }
private boolean isPackage( final String pClazzName ) { InputStream is = null; try { is = pClassLoader.getResourceAsStream(ClassUtils.convertClassToResourcePath(pClazzName));
private NameEnvironmentAnswer findType( final String pClazzName ) { final String resourceName = ClassUtils.convertClassToResourcePath(pClazzName);
public Class<?> fastFindClass(final String name) { Class<?> cls = findLoadedClass(name); if (cls == null) { final byte[] clazzBytes = this.store.read(convertClassToResourcePath(name)); if (clazzBytes != null) { String pkgName = name.substring(0, name.lastIndexOf('.')); if (!existingPackages.contains(pkgName)) { synchronized (this) { if (getPackage(pkgName) == null) { definePackage(pkgName, "", "", "", "", "", "", null); } existingPackages.add(pkgName); } } cls = super.defineClass(name, clazzBytes); } if (cls != null) { resolveClass(cls); } } return cls; }