Skip to content

Commit

Permalink
PoC
Browse files Browse the repository at this point in the history
  • Loading branch information
kindlich authored and jaredlll08 committed Feb 10, 2021
1 parent 78175d5 commit b0221d8
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@ public DocumentationComment convertForType(TypeElement typeElement) {
}

public DocumentationComment convertForConstructor(ExecutableElement constructor, DocumentationPageInfo pageInfo) {
final DocumentationComment comment = convertElement(constructor);
final DocumentationComment comment = convertElement(constructor, pageInfo.getClassComment());
fillExampleForThisParameterFromPageInfo(comment, pageInfo);
return comment;
}

public DocumentationComment convertForMethod(ExecutableElement method, DocumentationPageInfo pageInfo) {
final DocumentationComment comment = convertElement(method);
final DocumentationComment comment = convertElement(method, pageInfo.getClassComment());
return fillExampleForThisParameterFromPageInfo(comment, pageInfo);
}

Expand All @@ -59,7 +59,13 @@ public DocumentationComment convertForTypeParameter(TypeParameterElement typePar
}

private DocumentationComment convertElement(Element element) {
final DocumentationComment comment = getCommentForElement(element);
return convertElement(element, DocumentationComment.empty());
}

private DocumentationComment convertElement(Element element, DocumentationComment parent) {
DocumentationComment comment = getCommentForElement(element);
comment = mergeComments(comment, parent);

final DocumentationComment enclosingElementComment = getCommentFromEnclosingElement(element);
return mergeComments(comment, enclosingElementComment);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.Modifier;
import javax.lang.model.util.Elements;

public class ExpansionVirtualMemberConverter extends MemberConverter<DocumentedVirtualMembers> {

public ExpansionVirtualMemberConverter(DependencyContainer dependencyContainer) {
public ExpansionVirtualMemberConverter(DependencyContainer dependencyContainer, Elements elements) {
super(elements);
//TODO: Add converters
addElementConverter(ElementKind.METHOD, dependencyContainer.getInstanceOfClass(ExpansionMethodConverter.class));
addElementConverter(ElementKind.METHOD, dependencyContainer.getInstanceOfClass(ExpansionCasterConverter.class));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.TypeElement;
import javax.lang.model.util.ElementFilter;
import javax.lang.model.util.Elements;
import java.util.ArrayList;
import java.util.Collections;
import java.util.EnumMap;
Expand All @@ -13,21 +15,30 @@
public abstract class MemberConverter<T> {

private final EnumMap<ElementKind, List<AbstractEnclosedElementConverter<T>>> elementConverters = new EnumMap<>(ElementKind.class);
private final Elements elementUtils;

protected MemberConverter(Elements elementUtils) {this.elementUtils = elementUtils;}

protected abstract boolean isCandidate(Element enclosedElement);

protected abstract T createResultObject(DocumentationPageInfo pageInfo);

public T convertFor(TypeElement typeElement, DocumentationPageInfo pageInfo) {
final T result = createResultObject(pageInfo);
for(Element enclosedElement : typeElement.getEnclosedElements()) {

final List<Element> enclosedElements = new ArrayList<>(this.elementUtils.getAllMembers(typeElement));
enclosedElements.removeAll(ElementFilter.typesIn(enclosedElements));
enclosedElements.removeAll(ElementFilter.packagesIn(enclosedElements));

for(Element enclosedElement : enclosedElements) {
convertMemberFor(enclosedElement, result, pageInfo);
}

return result;
}

private void convertMemberFor(Element enclosedElement, T result, DocumentationPageInfo pageInfo) {

if(!isCandidate(enclosedElement)) {
return;
}
Expand All @@ -42,11 +53,13 @@ private void convertMemberFor(Element enclosedElement, T result, DocumentationPa
}

private List<AbstractEnclosedElementConverter<T>> getConvertersFor(ElementKind kind) {

return elementConverters.getOrDefault(kind, Collections.emptyList());
}

protected void addElementConverter(ElementKind kind, AbstractEnclosedElementConverter<T> expansionMethodConverter) {
elementConverters.computeIfAbsent(kind, ignored -> new ArrayList<>())
.add(expansionMethodConverter);

elementConverters.computeIfAbsent(kind, ignored -> new ArrayList<>()).add(expansionMethodConverter);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,15 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.Modifier;
import javax.lang.model.util.Elements;

public class StaticMemberConverter extends MemberConverter<DocumentedStaticMembers> implements IHasPostCreationCall {

private final DependencyContainer dependencyContainer;

public StaticMemberConverter(DependencyContainer dependencyContainer) {
public StaticMemberConverter(DependencyContainer dependencyContainer, Elements elements) {

super(elements);
this.dependencyContainer = dependencyContainer;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,13 @@
import javax.lang.model.element.Element;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.Modifier;
import javax.lang.model.util.Elements;

public class NamedTypeVirtualMemberConverter extends MemberConverter<DocumentedTypeVirtualMembers> {

public NamedTypeVirtualMemberConverter(DependencyContainer dependencyContainer) {
public NamedTypeVirtualMemberConverter(DependencyContainer dependencyContainer, Elements elements) {

super(elements);
addConverters(dependencyContainer);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import javax.annotation.Nonnull;
import javax.lang.model.element.TypeElement;
import javax.lang.model.type.TypeMirror;
import javax.lang.model.util.Elements;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
Expand All @@ -32,8 +33,8 @@ public class NativeTypeVirtualMemberConverter extends ExpansionVirtualMemberConv
private final TypeConverter typeConverter;
private final ClassTypeConverter classTypeConverter;

public NativeTypeVirtualMemberConverter(DependencyContainer dependencyContainer, TypeConverter typeConverter, ClassTypeConverter classTypeConverter) {
super(dependencyContainer);
public NativeTypeVirtualMemberConverter(DependencyContainer dependencyContainer, TypeConverter typeConverter, ClassTypeConverter classTypeConverter, Elements elements) {
super(dependencyContainer, elements);
this.typeConverter = typeConverter;
this.classTypeConverter = classTypeConverter;
}
Expand Down

0 comments on commit b0221d8

Please sign in to comment.