public String toHtmlString(final ClassNode<?> n, final String pack) { final String fullName = stripPrefix(n.getFullName(), pack); final String type; try { if (ch.classForName(n.getFullName()).isInterface()) { type = "interface"; } else { type = "class"; } } catch (final ClassNotFoundException e) { throw new RuntimeException(e); } final StringBuffer sb = new StringBuffer(); sb.append("<div class='decl-margin' id='" + n.getFullName() + "'>"); sb.append("<div class='decl'>"); sb.append(cell(type, "simpleName") + cell(fullName, FULLNAME)); final String instance; if (n.getDefaultImplementation() != null) { instance = " = " + stripPrefix(n.getDefaultImplementation(), pack); } else { instance = ""; } sb.append(cell(instance, "simpleName")); sb.append(cell("", "fullName")); // TODO[REEF-1118]: Support documentation string final StringBuffer uses = new StringBuffer(); for (final String u : getUsesOf(n)) { uses.append("<a href='#" + u + "'>" + stripPrefix(u, pack) + "</a> "); } sb.append(cell(uses, USES)); final StringBuffer settersStr = new StringBuffer(); for (final String f : getSettersOf(n)) { settersStr.append("<a href='#" + f + "'>" + stripPrefix(f, pack) + "</a> "); } sb.append(cell(settersStr, SETTERS)); sb.append("</div>"); sb.append("</div>"); return row(sb); }
@Override public ClassHierarchy merge(ClassHierarchy ch) { if (this == ch) { return this; } if (!(ch instanceof ProtocolBufferClassHierarchy)) { throw new UnsupportedOperationException( "Cannot merge with class hierarchies of type: " + ch.getClass().getName()); } final ProtocolBufferClassHierarchy pch = (ProtocolBufferClassHierarchy) ch; for (final String key : pch.lookupTable.keySet()) { if (!this.lookupTable.containsKey(key)) { this.lookupTable.put(key, pch.lookupTable.get(key)); } for (final Node n : ch.getNamespace().getChildren()) { if (!this.namespace.contains(n.getFullName())) { if (n instanceof NamedParameter) { final NamedParameterNode np = (NamedParameterNode) n; new NamedParameterNodeImpl<>( this.namespace, np.getName(), np.getFullName(), np.getFullArgName(), np.getSimpleArgName(), np.isSet(), np.isList(), np.getDocumentation(), np.getShortName(), np.getDefaultInstanceAsStrings()); } else if (n instanceof ClassNode) { final ClassNode cn = (ClassNode) n; new ClassNodeImpl( namespace, cn.getName(), cn.getFullName(), cn.isUnit(), cn.isInjectionCandidate(), cn.isExternalConstructor(), cn.getInjectableConstructors(), cn.getAllConstructors(), cn.getDefaultImplementation()); } } } } return this; }