private String getTypeOrDefault(GroovySourceAST t) { GroovySourceAST typeNode = t.childOfType(TYPE); return getTypeNodeAsText(typeNode, "def"); }
private void getTypeArguments(GroovySourceAST child, StringBuilder result, String defaultText) { if (child != null && child.getType() == TYPE_ARGUMENTS && child.getNumberOfChildren() > 0) { result.append("<"); GroovySourceAST typeArgumentsNext = (GroovySourceAST) child.getFirstChild(); List<String> typeArgumentParts = new ArrayList<String>(); while (typeArgumentsNext != null) { if (typeArgumentsNext.getType() == TYPE_ARGUMENT && typeArgumentsNext.getNumberOfChildren() > 0) { typeArgumentParts.add(getTypeNodeAsText((GroovySourceAST) typeArgumentsNext.getFirstChild(), defaultText)); } typeArgumentsNext = (GroovySourceAST) typeArgumentsNext.getNextSibling(); } result.append(DefaultGroovyMethods.join(typeArgumentParts, ", ")); result.append(">"); } }
private void getTypeParameters(GroovySourceAST child, StringBuilder result, String defaultText) { if (child != null && child.getType() == TYPE_PARAMETERS && child.getNumberOfChildren() > 0) { result.append("<"); GroovySourceAST typeParametersNext = (GroovySourceAST) child.getFirstChild(); List<String> typeParameterParts = new ArrayList<String>(); while (typeParametersNext != null) { if (typeParametersNext.getType() == TYPE_PARAMETER && typeParametersNext.getNumberOfChildren() > 0) { typeParameterParts.add(getTypeNodeAsText((GroovySourceAST) typeParametersNext.getFirstChild(), defaultText)); } typeParametersNext = (GroovySourceAST) typeParametersNext.getNextSibling(); } result.append(DefaultGroovyMethods.join(typeParameterParts, ", ")); result.append(">"); } }
private String getTypeNodeAsText(GroovySourceAST typeNode, String defaultText) { // TODO refactor to retain richer type information rather than converting to String if (typeNode == null) { return defaultText; } if (typeNode.getType() == TYPE) { return getAsText(typeNode, defaultText); } else if (typeNode.getType() == TYPE_ARGUMENT) { return getTypeNodeAsText((GroovySourceAST) typeNode.getFirstChild(), defaultText); } else if (typeNode.getType() == WILDCARD_TYPE) { AST next = typeNode.getNextSibling(); if (next == null && typeNode.getFirstChild() != null) { // Java2Groovy produces a slightly different tree structure (TODO fix converter or java.g instead?) next = typeNode.getFirstChild(); } if (next == null) return "?"; String boundType = getTypeNodeAsText((GroovySourceAST) next.getFirstChild(), defaultText); if (next.getType() == TYPE_UPPER_BOUNDS) return "? extends " + boundType; if (next.getType() == TYPE_LOWER_BOUNDS) return "? super " + boundType; } else if (typeNode.getType() == IDENT) { return getAsTextCurrent(typeNode, defaultText); } return defaultText; }
@Override public void visitEnumConstantDef(GroovySourceAST t, int visit) { if (visit == OPENING_VISIT) { SimpleGroovyClassDoc currentClassDoc = getCurrentClassDoc(); insideEnum = true; String enumConstantName = getIdentFor(t); SimpleGroovyFieldDoc currentEnumConstantDoc = new SimpleGroovyFieldDoc(enumConstantName, currentClassDoc); currentEnumConstantDoc.setRawCommentText(getJavaDocCommentsBeforeNode(t)); processModifiers(t, currentEnumConstantDoc); String typeName = getTypeNodeAsText(t.childOfType(TYPE), currentClassDoc.getTypeDescription()); currentEnumConstantDoc.setType(new SimpleGroovyType(typeName)); currentClassDoc.addEnumConstant(currentEnumConstantDoc); } else if (visit == CLOSING_VISIT) { insideEnum = false; } }
private String getTypeOrDefault(GroovySourceAST t) { GroovySourceAST typeNode = t.childOfType(TYPE); return getTypeNodeAsText(typeNode, "def"); }
private String getTypeOrDefault(GroovySourceAST t) { GroovySourceAST typeNode = t.childOfType(TYPE); return getTypeNodeAsText(typeNode, "def"); }
private String getTypeOrDefault(GroovySourceAST t) { GroovySourceAST typeNode = t.childOfType(TYPE); return getTypeNodeAsText(typeNode, "def"); }
private String getTypeOrDefault(GroovySourceAST t) { GroovySourceAST typeNode = t.childOfType(TYPE); return getTypeNodeAsText(typeNode, "def"); }
private void getTypeArguments(GroovySourceAST child, StringBuilder result, String defaultText) { if (child != null && child.getType() == TYPE_ARGUMENTS && child.getNumberOfChildren() > 0) { result.append("<"); GroovySourceAST typeArgumentsNext = (GroovySourceAST) child.getFirstChild(); List<String> typeArgumentParts = new ArrayList<String>(); while (typeArgumentsNext != null) { if (typeArgumentsNext.getType() == TYPE_ARGUMENT && typeArgumentsNext.getNumberOfChildren() > 0) { typeArgumentParts.add(getTypeNodeAsText((GroovySourceAST) typeArgumentsNext.getFirstChild(), defaultText)); } typeArgumentsNext = (GroovySourceAST) typeArgumentsNext.getNextSibling(); } result.append(DefaultGroovyMethods.join((Iterable)typeArgumentParts, ", ")); result.append(">"); } }
private void getTypeParameters(GroovySourceAST child, StringBuilder result, String defaultText) { if (child != null && child.getType() == TYPE_PARAMETERS && child.getNumberOfChildren() > 0) { result.append("<"); GroovySourceAST typeParametersNext = (GroovySourceAST) child.getFirstChild(); List<String> typeParameterParts = new ArrayList<String>(); while (typeParametersNext != null) { if (typeParametersNext.getType() == TYPE_PARAMETER && typeParametersNext.getNumberOfChildren() > 0) { typeParameterParts.add(getTypeNodeAsText((GroovySourceAST) typeParametersNext.getFirstChild(), defaultText)); } typeParametersNext = (GroovySourceAST) typeParametersNext.getNextSibling(); } result.append(DefaultGroovyMethods.join((Iterable)typeParameterParts, ", ")); result.append(">"); } }
return getAsText(typeNode, defaultText); } else if (typeNode.getType() == TYPE_ARGUMENT) { return getTypeNodeAsText((GroovySourceAST) typeNode.getFirstChild(), defaultText); } else if (typeNode.getType() == WILDCARD_TYPE) { AST next = typeNode.getNextSibling(); String boundType = getTypeNodeAsText((GroovySourceAST) next.getFirstChild(), defaultText); if (next.getType() == TYPE_UPPER_BOUNDS) return "? extends " + boundType; if (next.getType() == TYPE_LOWER_BOUNDS) return "? super " + boundType; String boundType = getTypeNodeAsText((GroovySourceAST) next.getFirstChild(), defaultText); if (next.getType() == TYPE_UPPER_BOUNDS) return ident + " extends " + boundType; if (next.getType() == TYPE_LOWER_BOUNDS) return ident + " super " + boundType;
private void addParametersTo(SimpleGroovyExecutableMemberDoc executableMemberDoc, GroovySourceAST t,int visit) { // parameters GroovySourceAST parametersNode = t.childOfType(GroovyTokenTypes.PARAMETERS); if (parametersNode != null && parametersNode.getNumberOfChildren() > 0) { GroovySourceAST currentNode = (GroovySourceAST) parametersNode.getFirstChild(); while (currentNode != null) { String parameterTypeName = getTypeNodeAsText(currentNode.childOfType(GroovyTokenTypes.TYPE),"def"); String parameterName = getText(currentNode.childOfType(GroovyTokenTypes.IDENT)); SimpleGroovyParameter parameter = new SimpleGroovyParameter(parameterName); parameter.setTypeName(parameterTypeName); executableMemberDoc.add(parameter); currentNode = (GroovySourceAST)currentNode.getNextSibling(); } } }
@Override public void visitEnumConstantDef(GroovySourceAST t, int visit) { if (visit == OPENING_VISIT) { SimpleGroovyClassDoc currentClassDoc = getCurrentClassDoc(); insideEnum = true; String enumConstantName = getIdentFor(t); SimpleGroovyFieldDoc currentEnumConstantDoc = new SimpleGroovyFieldDoc(enumConstantName, currentClassDoc); currentEnumConstantDoc.setRawCommentText(getJavaDocCommentsBeforeNode(t)); processModifiers(t, currentEnumConstantDoc); String typeName = getTypeNodeAsText(t.childOfType(TYPE), currentClassDoc.getTypeDescription()); currentEnumConstantDoc.setType(new SimpleGroovyType(typeName)); currentClassDoc.addEnumConstant(currentEnumConstantDoc); } else if (visit == CLOSING_VISIT) { insideEnum = false; } }
@Override public void visitEnumConstantDef(GroovySourceAST t, int visit) { if (visit == OPENING_VISIT) { SimpleGroovyClassDoc currentClassDoc = getCurrentClassDoc(); insideEnum = true; String enumConstantName = getIdentFor(t); SimpleGroovyFieldDoc currentEnumConstantDoc = new SimpleGroovyFieldDoc(enumConstantName, currentClassDoc); currentEnumConstantDoc.setRawCommentText(getJavaDocCommentsBeforeNode(t)); processModifiers(t, currentEnumConstantDoc); String typeName = getTypeNodeAsText(t.childOfType(TYPE), currentClassDoc.getTypeDescription()); currentEnumConstantDoc.setType(new SimpleGroovyType(typeName)); currentClassDoc.addEnumConstant(currentEnumConstantDoc); } else if (visit == CLOSING_VISIT) { insideEnum = false; } }
@Override public void visitEnumConstantDef(GroovySourceAST t, int visit) { if (visit == OPENING_VISIT) { SimpleGroovyClassDoc currentClassDoc = getCurrentClassDoc(); insideEnum = true; String enumConstantName = getIdentFor(t); SimpleGroovyFieldDoc currentEnumConstantDoc = new SimpleGroovyFieldDoc(enumConstantName, currentClassDoc); currentEnumConstantDoc.setRawCommentText(getJavaDocCommentsBeforeNode(t)); processModifiers(t, currentEnumConstantDoc); String typeName = getTypeNodeAsText(t.childOfType(TYPE), currentClassDoc.getTypeDescription()); currentEnumConstantDoc.setType(new SimpleGroovyType(typeName)); currentClassDoc.addEnumConstant(currentEnumConstantDoc); } else if (visit == CLOSING_VISIT) { insideEnum = false; } }
@Override public void visitEnumConstantDef(GroovySourceAST t, int visit) { if (visit == OPENING_VISIT) { SimpleGroovyClassDoc currentClassDoc = getCurrentClassDoc(); insideEnum = true; String enumConstantName = getIdentFor(t); SimpleGroovyFieldDoc currentEnumConstantDoc = new SimpleGroovyFieldDoc(enumConstantName, currentClassDoc); currentEnumConstantDoc.setRawCommentText(getJavaDocCommentsBeforeNode(t)); processModifiers(t, currentEnumConstantDoc); String typeName = getTypeNodeAsText(t.childOfType(TYPE), currentClassDoc.getTypeDescription()); currentEnumConstantDoc.setType(new SimpleGroovyType(typeName)); currentClassDoc.addEnumConstant(currentEnumConstantDoc); } else if (visit == CLOSING_VISIT) { insideEnum = false; } }
public void visitMethodDef(GroovySourceAST t, int visit) { if (visit == OPENING_VISIT) { if (!insideAnonymousInnerClass()) { // init // now... get relevant values from the AST // method name String methodName = t.childOfType(GroovyTokenTypes.IDENT).getText(); currentMethodDoc = new SimpleGroovyMethodDoc(methodName, links); // comments String commentText = getJavaDocCommentsBeforeNode(t); currentMethodDoc.setRawCommentText(commentText); // modifiers processModifiers(t, currentMethodDoc); // return type String returnTypeName = getTypeNodeAsText(t.childOfType(GroovyTokenTypes.TYPE),"def"); SimpleGroovyType returnType = new SimpleGroovyType(returnTypeName); // todo !!! currentMethodDoc.setReturnType(returnType); addParametersTo(currentMethodDoc, t, visit); // don't forget to tell the class about this method so carefully constructed. currentClassDoc.add(currentMethodDoc); } } }
public void visitVariableDef(GroovySourceAST t, int visit) { if (visit == OPENING_VISIT) { if (!insideAnonymousInnerClass()) { GroovySourceAST parentNode = getParentNode(); // todo - what about fields in interfaces/enums etc if (parentNode != null && parentNode.getType() == GroovyTokenTypes.OBJBLOCK) { // this should restrict us to just field definitions, and not local variable definitions // field name String fieldName = t.childOfType(GroovyTokenTypes.IDENT).getText(); SimpleGroovyFieldDoc currentFieldDoc = new SimpleGroovyFieldDoc(fieldName); // comments - todo check this is doing the right thing for fields... String commentText = getJavaDocCommentsBeforeNode(t); currentFieldDoc.setRawCommentText(commentText); // modifiers processModifiers(t, currentFieldDoc); // type String typeName = getTypeNodeAsText(t.childOfType(GroovyTokenTypes.TYPE),"def"); SimpleGroovyType type = new SimpleGroovyType(typeName); // todo !!! currentFieldDoc.setType(type); // don't forget to tell the class about this field so carefully constructed. currentClassDoc.add(currentFieldDoc); } } } }