public static boolean isInlineable(JavaMethod method) { if (method.getArguments().length == 0 || method.getArguments().length > 5) { return false; } for (JavaProperty argument : method.getArguments()) { if (StringUtils.isNullOrEmpty(argument.getType().getPackageName())) { continue; } else if (argument.getType().getPackageName().startsWith("java.lang")) { continue; } else { return false; } } return true; }
/** * Convert a {@link Collection} of {@link javax.lang.model.element.ExecutableElement}s to a {@link java.util.Set} of {@link io.sundr.codegen.model.JavaClazz}es. * * @param context The context of the operation. * @param elements The target elements. * @return A set of {@link io.sundr.codegen.model.JavaClazz} that describes the interfaces. */ public static Set<JavaClazz> executablesToInterfaces(DslProcessorContext context, Collection<ExecutableElement> elements) { Map<String, JavaClazz> byName = new LinkedHashMap<String, JavaClazz>(); for (ExecutableElement current : elements) { JavaClazz clazz = executableToInterface(context, current); InterfaceName interfaceName = current.getAnnotation(InterfaceName.class); String name = interfaceName != null ? clazz.getType().getPackageName() + "." + interfaceName.value() : clazz.getType().getFullyQualifiedName(); if (byName.containsKey(name)) { JavaClazz other = byName.remove(name); byName.put(name, Merge.CLASSES.apply(new JavaClazz[]{other, clazz})); } else { byName.put(name, clazz); } } return new LinkedHashSet<JavaClazz>(byName.values()); }
.withKind(JavaKind.INTERFACE) .withClassName(className) .withPackageName(interfaces.iterator().next().getPackageName()) .withInterfaces(interfaces) .withGenericTypes(genericTypes.toArray(new JavaType[genericTypes.size()]))
@Override public JavaType apply(JavaType item) { BuilderContext ctx = BuilderContextManager.getContext(); JavaType fluent = SHALLOW_FLUENT.apply(item); List<JavaType> generics = new ArrayList<JavaType>(); for (JavaType generic : item.getGenericTypes()) { generics.add(generic); } JavaType generic = typeExtends(Constants.T, fluent); generics.add(generic); JavaType superClass = isBuildable(item.getSuperClass()) ? SHALLOW_FLUENT.apply(item.getSuperClass()) : ctx.getBaseFluentClass().getType(); return new JavaTypeBuilder(item) .withClassName(item.getClassName() + "Fluent") .withPackageName(item.getPackageName()) .withGenericTypes(generics.toArray(new JavaType[generics.size()])) .withSuperClass(superClass) .withInterfaces(new HashSet(Arrays.asList(ctx.getFluentInterface().getType()))) .build(); }