public ConstructorInfoConstructorWriter addParameterList() { List<ParameterSpec> thatParameterSpecList = constructorInfo .parameterInfoStream() .map(ParameterInfo::parameterSpec) .collect(Collectors.toList()); parameterSpecLIst.addAll(thatParameterSpecList); return this; }
@Override public ConstructorInfo[] getDeclaredConstructors() { Iterable<? extends Method> implConstructors = classDef.getMethods(); List<ConstructorInfo> result = new ArrayList<>(); for (Method constructor : implConstructors) { if (isConstructor(constructor)) { ConstructorInfo ci = new ConstructorInfo(); ci.parameterTypes = convertParameters(constructor.getParameters()); ci.annotations = convertAnnotations(constructor.getAnnotations()); ci.modifiers = constructor.getAccessFlags(); result.add(ci); } } ConstructorInfo[] array = new ConstructorInfo[result.size()]; return result.toArray(array); }
public void accept(ClassVisitor classVisitor) { String factoryName = Util.classNameToInternalName(info.getFactoryDelegateInterfaceName()); // TODO: the reactor currently has an issue with interfaces classVisitor.visit( Opcodes.V1_5, Opcodes.ACC_PUBLIC | Opcodes.ACC_ABSTRACT | Opcodes.ACC_INTERFACE, factoryName, null, "java/lang/Object", new String[0]); for (ConstructorInfo constructor : info.getConstructors()) { MethodVisitor mv = classVisitor.visitMethod( Opcodes.ACC_PUBLIC | Opcodes.ACC_ABSTRACT, "create", constructor.getFactoryDelegateMethodDescriptor(), constructor.getSignature(), constructor.getExceptions()); if (mv != null) { mv.visitEnd(); } } classVisitor.visitEnd(); }
static ConstructorInfoConstructorWriter get(ConstructorInfo constructorInfo) { AccessInfo accessInfo = constructorInfo.accessInfo(); return new ConstructorInfoConstructorWriter(constructorInfo, accessInfo); }