@Override public String resolveLabel(Element elt, String defaultLabel) { if (elt.getKind().equals(ElementKind.METHOD)) { TypeInfo type = factory.create(elt.getEnclosingElement().asType()); if (type.getKind().equals(ClassKind.DATA_OBJECT)) { String name = elt.getSimpleName().toString(); if (name.startsWith("set") && name.length() > 3 && Character.isUpperCase(name.charAt(3))) name = java.beans.Introspector.decapitalize(name.substring(3)); return name; } } return defaultLabel; } }
/** * Useful for testing the type class kind, allows to do type.kind == CLASS_API instead of type.kind.name() == "API" */ public static Map<String, ClassKind> vars() { HashMap<String, ClassKind> vars = new HashMap<>(); for (ClassKind classKind : ClassKind.values()) { vars.put("CLASS_" + classKind.name(), classKind); } return vars; }
private List<SimpleType> convertToLangParamTypes(SimpleMethod meth, Map<String, Set<String>> typeMapping) { List<SimpleType> langParamTypes = new ArrayList<>(); for (SimpleParam param: meth.params) { Set<String> langType = typeMapping.get(param.classKind.toString()); if (langType == null) { // Try with type name appended String lhs = param.classKind.toString() + "." + param.typeName; langType = typeMapping.get(lhs); if (langType == null) { throw new IllegalStateException("No type mapping found for param type " + lhs); } } langParamTypes.add(new SimpleType(langType, param.nullable)); } return langParamTypes; }
@Override public String filename(Model model) { Map<String, Object> vars = new HashMap<>(); vars.put("helper", new Helper()); vars.put("options", env.getOptions()); vars.put("fileSeparator", File.separator); vars.put("fqn", model.getFqn()); vars.put("module", model.getModule()); vars.put("model", model); vars.putAll(model.getVars()); vars.putAll(ClassKind.vars()); vars.putAll(MethodKind.vars()); vars.putAll(Case.vars()); vars.putAll(TypeNameTranslator.vars(name)); return (String) MVEL.executeExpression(filenameExpr, vars); }
); } else { ClassKind kind = ClassKind.getKind(fqcn, classType.getAnnotation(DataObject.class) != null, classType.getAnnotation(VertxGen.class) != null); List<TypeParamInfo.Class> typeParams = new ArrayList<>(); int index = 0;
vars.put("skipFile", false); vars.putAll(model.getVars()); vars.putAll(ClassKind.vars()); vars.putAll(MethodKind.vars()); vars.putAll(Case.vars());
return new EnumTypeInfo(fqcn, gen, values, module, nullable); } else { ClassKind kind = ClassKind.getKind(fqcn, elt.getAnnotation(DataObject.class) != null, elt.getAnnotation(VertxGen.class) != null); ClassTypeInfo raw; if (kind == ClassKind.BOXED_PRIMITIVE) {
@Override public String render(Model model, int index, int size, Map<String, Object> session) { Map<String, Object> vars = new HashMap<>(); ClassTypeInfo type = ((ClassTypeInfo)model.getVars().get("type")); Set<TypeInfo> importedTypes = (Set<TypeInfo>)model.getVars().get("importedTypes"); Set<TypeInfo> superTypes = (Set<TypeInfo>)model.getVars().get("superTypes"); vars.putAll(TypeNameTranslator.vars(name)); vars.putAll(model.getVars()); vars.put("typeHelper", new TypeHelper()); vars.put("className", Helper.getSimpleName(type.getName())); vars.put("packageName", type.getRaw().translatePackageName("scala")); vars.put("imps", adjustedImports(type, importedTypes, superTypes)); vars.put("isAllSuperTypesAbstract",isAllSuperTypesAbstract(superTypes)); vars.putAll(ClassKind.vars()); vars.putAll(MethodKind.vars()); vars.putAll(Case.vars()); Writer writer = new StringWriter(); try { template.process(vars, writer); return writer.toString(); } catch (TemplateException e) { e.printStackTrace(); throw new RuntimeException(e); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } }
@Override public String resolveTypeLink(TypeElement elt, Coordinate coordinate) { TypeInfo type = null; try { type = factory.create(elt.asType()); } catch (Exception e) { System.out.println("Could not resolve doc link for type " + elt.getQualifiedName()); return null; } if (type.getKind().equals(ClassKind.ENUM) && ((EnumTypeInfo)type).isGen()) { String baselink = null; if (coordinate == null) baselink = "../"; else baselink = "../../" + coordinate.getArtifactId() + "/"; return baselink + "enums.html#" + elt.getSimpleName().toString(); } if (type.getKind().equals(ClassKind.DATA_OBJECT)) { String baselink = null; if (coordinate == null) baselink = "../"; else baselink = "../../" + coordinate.getArtifactId() + "/"; return baselink + "dataobjects.html#" + elt.getSimpleName().toString(); } if (type.getKind().equals(ClassKind.API)) { ApiTypeInfo api = (ApiTypeInfo)type.getRaw(); return "../../scaladocs/" + api.translateName("scala").replace('.', '/') + ".html"; } return null; }
vars.put("packageName", type.getRaw().translatePackageName("scala")); vars.put("imps", adjustedImports(type, importedTypes)); vars.putAll(ClassKind.vars()); vars.putAll(MethodKind.vars()); vars.putAll(Case.vars());