public byte[] call() { resolver.forget(currentTarget.className); final ResourceTransformer transformer = resourceTransformationFactory.createTransformer(resolver); return transformer.transform(classfileBuffer); } },
public byte[] transform(byte[] image) { for (int i = 0; i < transformers.length; i++) { byte[] result = transformers[i].transform(image); if (null != result) { image = result; } } return image; } }
@Override public ClassMatcher create(String className) { return ClassMatchers.byClassName(className, false); } });
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { isInterface = (access & Opcodes.ACC_INTERFACE) != 0; className = name; classInfo = cciResolver.resolve(name, originalBytes); if (null == classInfo || classInfo.isClassProcessed() || StopException.__dirtyCheckSkipContinuationsOnClass(version, access, name, signature, superName, interfaces)) { skipEnchancing = true; // Must exit by throwing exception, otherwise NPE is possible in nested visitor throw StopException.INSTANCE; } cv.visit(version, access, name, signature, superName, interfaces); }
@Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { className = name; classInfo = cciResolver.resolve(name, originalBytes); if (null == classInfo || classInfo.isClassProcessed() || cciResolver.veto().matches(name, signature, superName, interfaces)) { skipEnchancing = true; // Must exit by throwing exception, otherwise NPE is possible in nested visitor throw StopException.INSTANCE; } cv.visit(version, access, name, signature, superName, interfaces); }
public static void runWithInMemoryResources(final Runnable block, Map<String, byte[]> inMemoryResources) { runWithInMemoryResources(new Callable<Void>() { public Void call() { block.run(); return null; } }, inMemoryResources); }
@Override public boolean matches(String name, String signature, String superName, String[] interfaces) { for (ClassMatcher m : matchers) { if (!m.matches(name, signature, superName, interfaces)) { return false; } } return true; } };
private boolean checkContinuableAnnotation(Collection<String> annotationDescriptors) { for (String annotationDescriptor : annotationDescriptors) { if (cciResolver.isContinuableAnnotation(annotationDescriptor)) { return true; } } return false; }
@Override public ClassMatcher create(String interfaceName) { return ClassMatchers.byInterfaceName(interfaceName, true); } });
@Override public ClassMatcher create(String classNamePattern) { return ClassMatchers.byClassNamePattern(classNamePattern); } });
public void write(int b) { ensureCapacity(count + 1); buf[count] = (byte) b; count += 1; }
@Override public ClassMatcher create(String superClassNamePattern) { return ClassMatchers.bySuperClassNamePattern(superClassNamePattern); } });
public static ClassMatcher byClassName(String className, final boolean namePart) { final String cn = className(className); return new ClassMatcher() { @Override public boolean matches(String name, String signature, String superName, String[] interfaces) { return namePart && name.equals(cn) || name.contains(cn); } }; }
private void ensureCapacity(int minCapacity) { // overflow-conscious code if (minCapacity - buf.length > 0) grow(minCapacity); }
public byte[] transform(byte[] original) { byte[] transformed = transformerDelegate.transform(original); return null != transformed ? transformed : original; } };
@Override public boolean matches(String name, String signature, String superName, String[] interfaces) { return !matcher.matches(name, signature, superName, interfaces); } };
@Override public ClassMatcher create(String className) { return ClassMatchers.byClassName(className, true); } });
@Override public ClassMatcher create(String interfaceName) { return ClassMatchers.byInterfaceName(interfaceName, false); } });
@Override public boolean matches(String name, String signature, String superName, String[] interfaces) { return nested.matches(superName, null, null, null); } };
@Override public boolean matches(String name, String signature, String superName, String[] interfaces) { for (ClassMatcher m : matchers) { if (m.matches(name, signature, superName, interfaces)) { return true; } } return false; } };