44import com .microsoft .model .ExceptionItem ;
55import com .microsoft .model .MethodParameter ;
66import com .microsoft .model .Return ;
7+ import com .microsoft .util .Utils ;
78import com .sun .source .doctree .DocTree .Kind ;
89import com .sun .source .doctree .ParamTree ;
910import com .sun .source .doctree .ReturnTree ;
1011import com .sun .source .doctree .ThrowsTree ;
12+
1113import java .util .List ;
1214import java .util .stream .Collectors ;
13- import javax .lang .model .element .Element ;
14- import javax .lang .model .element .ExecutableElement ;
15- import javax .lang .model .element .TypeElement ;
16- import javax .lang .model .element .VariableElement ;
15+ import javax .lang .model .element .*;
1716import javax .lang .model .type .TypeKind ;
17+
1818import jdk .javadoc .doclet .DocletEnvironment ;
1919
2020public class ClassItemsLookup extends BaseLookup <Element > {
21+ private Utils utils ;
2122
2223 public ClassItemsLookup (DocletEnvironment environment ) {
2324 super (environment );
25+ utils = new Utils (environment );
2426 }
2527
2628 @ Override
@@ -48,18 +50,21 @@ protected ExtendedMetadataFileItem buildMetadataFileItem(Element element) {
4850 ExecutableElement exeElement = (ExecutableElement ) element ;
4951 List <MethodParameter > parameters = extractParameters (exeElement );
5052 String paramsString = parameters .stream ()
51- .map (parameter -> String .format ("%s %s" , makeTypeShort (parameter .getType ()), parameter .getId ()))
52- .collect (Collectors .joining (", " ));
53+ .map (parameter -> String .format ("%s %s" , makeTypeShort (parameter .getType ()), parameter .getId ()))
54+ .collect (Collectors .joining (", " ));
5355 String nameWithoutBrackets = elementQName .replaceAll ("\\ (.*\\ )" , "" );
5456 String methodName = String .format ("%s(%s)" , nameWithoutBrackets , paramsString );
5557
5658 result .setName (methodName );
5759 result .setMethodContent (String .format ("%s %s %s" , modifiers ,
58- makeTypeShort (String .valueOf (exeElement .getReturnType ())), result .getName ()));
60+ makeTypeShort (String .valueOf (exeElement .getReturnType ())), result .getName ()));
5961 result .setConstructorContent (String .format ("%s %s" , modifiers , result .getName ()));
6062 result .setParameters (parameters );
6163 result .setExceptions (extractExceptions (exeElement ));
6264 result .setReturn (extractReturn (exeElement ));
65+ if (exeElement .getKind () == ElementKind .METHOD ) {
66+ result .setOverridden (extractOverriddenUid (utils .overriddenMethod (exeElement )));
67+ }
6368 }
6469 result .setNameWithType (String .format ("%s.%s" , classSNameWithGenericsSupport , result .getName ()));
6570 result .setFullName (String .format ("%s.%s" , classQNameWithGenericsSupport , result .getName ()));
@@ -83,11 +88,11 @@ List<MethodParameter> extractParameters(ExecutableElement element) {
8388
8489 String extractParameterDescription (ExecutableElement method , String paramName ) {
8590 return getDocCommentTree (method ).map (docTree -> docTree .getBlockTags ().stream ()
86- .filter (o -> o .getKind () == Kind .PARAM )
87- .map (o -> (ParamTree ) o )
88- .filter (o -> paramName .equals (String .valueOf (o .getName ())))
89- .map (o -> replaceLinksAndCodes (o .getDescription ()))
90- .findFirst ().orElse (null )
91+ .filter (o -> o .getKind () == Kind .PARAM )
92+ .map (o -> (ParamTree ) o )
93+ .filter (o -> paramName .equals (String .valueOf (o .getName ())))
94+ .map (o -> replaceLinksAndCodes (o .getDescription ()))
95+ .findFirst ().orElse (null )
9196 ).orElse (null );
9297 }
9398
@@ -100,10 +105,10 @@ List<ExceptionItem> extractExceptions(ExecutableElement methodElement) {
100105
101106 String extractExceptionDescription (ExecutableElement methodElement ) {
102107 return getDocCommentTree (methodElement ).map (docTree -> docTree .getBlockTags ().stream ()
103- .filter (o -> o .getKind () == Kind .THROWS )
104- .map (o -> (ThrowsTree ) o )
105- .map (o -> replaceLinksAndCodes (o .getDescription ()))
106- .findFirst ().orElse (null )
108+ .filter (o -> o .getKind () == Kind .THROWS )
109+ .map (o -> (ThrowsTree ) o )
110+ .map (o -> replaceLinksAndCodes (o .getDescription ()))
111+ .findFirst ().orElse (null )
107112 ).orElse (null );
108113 }
109114
@@ -116,10 +121,10 @@ Return extractReturn(ExecutableElement methodElement) {
116121
117122 String extractReturnDescription (ExecutableElement methodElement ) {
118123 return getDocCommentTree (methodElement ).map (docTree -> docTree .getBlockTags ().stream ()
119- .filter (o -> o .getKind () == Kind .RETURN )
120- .map (o -> (ReturnTree )o )
121- .map (o -> replaceLinksAndCodes (o .getDescription ()))
122- .findFirst ().orElse (null )
124+ .filter (o -> o .getKind () == Kind .RETURN )
125+ .map (o -> (ReturnTree ) o )
126+ .map (o -> replaceLinksAndCodes (o .getDescription ()))
127+ .findFirst ().orElse (null )
123128 ).orElse (null );
124129 }
125130
@@ -130,4 +135,14 @@ Return extractReturn(VariableElement fieldElement) {
130135 String convertFullNameToOverload (String fullName ) {
131136 return fullName .replaceAll ("\\ (.*\\ )" , "*" );
132137 }
138+
139+ String extractOverriddenUid (ExecutableElement ovr ) {
140+ if (ovr != null ) {
141+ TypeElement te = utils .getEnclosingTypeElement (ovr );
142+ String uid = te .getQualifiedName ().toString ().concat ("." ) + String .valueOf (ovr );
143+ return uid ;
144+ }
145+
146+ return "" ;
147+ }
133148}
0 commit comments