public static ClassMetadata scan(ClassReader source) { ClassMetadata info = new ClassMetadata(); source.accept(new MetaScanner(info), 0); info.type = Type.getObjectType(source.getClassName()); for (FieldDescriptor fd : info.fields) { if ((fd.access & ACC_PUBLIC) == ACC_PUBLIC) { info.directFieldAccess = true; } } return info; }
private static void processClass( ExecutorService threadPool, String file, List<ClassMetadata> processed) { ClassReader cr = classReaderFor(file); ClassMetadata meta = scan(cr); if (meta.annotation == WeaverType.NONE) return; if (meta.annotation == WeaverType.POOLED && !GlobalConfiguration.enabledPooledWeaving) { if (!meta.forcePooledWeaving) return; } meta.weaverTask = threadPool.submit(new ComponentTypeTransmuter(file, cr, meta)); processed.add(meta); }