private boolean isSerializationMethod(ASTMethodDeclaration node) { ASTMethodDeclarator declarator = node.getFirstDescendantOfType(ASTMethodDeclarator.class); List<ASTFormalParameter> parameters = declarator.findDescendantsOfType(ASTFormalParameter.class); if (node.isPrivate() && "readObject".equals(node.getMethodName()) && parameters.size() == 1 && throwsOneException(node, InvalidObjectException.class)) { ASTType type = parameters.get(0).getTypeNode(); if (type.getType() == ObjectInputStream.class || ObjectInputStream.class.getSimpleName().equals(type.getTypeImage()) || ObjectInputStream.class.getName().equals(type.getTypeImage())) { return true; } } return false; }
private boolean isPrimitiveType(ASTName name) { ASTType type = getTypeNode(name); return type != null && !type.findChildrenOfType(ASTPrimitiveType.class).isEmpty(); }
private boolean isStringType(ASTName name) { ASTType type = getTypeNode(name); if (type != null) { List<ASTClassOrInterfaceType> types = type.findDescendantsOfType(ASTClassOrInterfaceType.class); if (!types.isEmpty()) { ASTClassOrInterfaceType typeDeclaration = types.get(0); if (String.class == typeDeclaration.getType() || "String".equals(typeDeclaration.getImage())) { return true; } } } return false; }
if (typeNode.jjtGetChild(0) instanceof ASTReferenceType) { return ((TypeNode) typeNode.jjtGetChild(0)).getTypeDefinition(); } else { // primitive type return JavaTypeDefinition.forClass(typeNode.getType());
private String getCaughtExceptionsAsString(ASTCatchStatement stmt) { StringBuilder sb = new StringBuilder(); final String delim = " | "; for (ASTType type : stmt.getCaughtExceptionTypeNodes()) { sb.append(type.getTypeImage()).append(delim); } // remove the last delimiter sb.replace(sb.length() - 3, sb.length(), ""); return sb.toString(); }
final public void Type() throws ParseException { ASTType jjtn000 = new ASTType(this, JJTTYPE); boolean jjtc000 = true; jjtree.openNodeScope(jjtn000); jjtn000.jjtSetFirstToken(getToken(1));Token t; try { if (jj_2_21(2)) { if (jjtc000) { jjtree.closeNodeScope(jjtn000, true); jjtn000.jjtSetLastToken(getToken(0));
variableDeclaratorId.jjtSetParent(formalParameter); ASTType type = new ASTType(JavaParserTreeConstants.JJTTYPE); formalParameter.jjtAddChild(type, 0); type.jjtSetParent(formalParameter); type.jjtAddChild(primitiveType, 0); primitiveType.jjtSetParent(type); } else { ASTReferenceType referenceType = new ASTReferenceType(JavaParserTreeConstants.JJTREFERENCETYPE); type.jjtAddChild(referenceType, 0); referenceType.jjtSetParent(type);
/** * Returns the list of exception types caught by this catch block. * Any of these can be null, if they couldn't be resolved. This can * happen if the auxclasspath is not correctly set. */ @SuppressWarnings("unchecked") public List<Class<? extends Exception>> getCaughtExceptionTypes() { List<Class<? extends Exception>> result = new ArrayList<>(); for (ASTType type : getCaughtExceptionTypeNodes()) { result.add((Class<? extends Exception>) type.getType()); } return result; }
/** * Returns true if this type is an array type. * */ public boolean isArrayType() { return getArrayDepth() > 0; } }
public String getTypeImage() { ASTClassOrInterfaceType refType = getFirstDescendantOfType(ASTClassOrInterfaceType.class); if (refType != null) { return refType.getImage(); } return getFirstDescendantOfType(ASTPrimitiveType.class).getImage(); }
/** * * @deprecated Use {@link #isArrayType()} */ @Deprecated public boolean isArray() { return isArrayType(); }
public boolean returnsArray() { return !isVoid() && ((ASTType) jjtGetChild(0)).isArray(); }
@Override public Object visit(ASTVariableDeclaratorId node, Object data) { if (node == null || node.isTypeInferred()) { return super.visit(node, data); } // Type common to all declarations in the same statement JavaTypeDefinition baseType = node.getTypeNode().getTypeDefinition(); if (baseType != null) { // add the dimensions specific to the declarator id node.setTypeDefinition(baseType.withDimensions(node.getArrayDepth())); } return super.visit(node, data); }
private boolean isBooleanType(ASTType node) { return "boolean".equalsIgnoreCase(node.getTypeImage()) || TypeHelper.isA(node, "java.util.concurrent.atomic.AtomicBoolean"); }
final public void Type() throws ParseException { ASTType jjtn000 = new ASTType(this, JJTTYPE); boolean jjtc000 = true; jjtree.openNodeScope(jjtn000); jjtn000.jjtSetFirstToken(getToken(1));Token t; try { if (jj_2_21(2)) { if (jjtc000) { jjtree.closeNodeScope(jjtn000, true); jjtn000.jjtSetLastToken(getToken(0));
if (typeNode.jjtGetChild(0) instanceof ASTReferenceType) { return ((TypeNode) typeNode.jjtGetChild(0)).getTypeDefinition(); } else { // primitive type return JavaTypeDefinition.forClass(typeNode.getType());
variableDeclaratorId.jjtSetParent(formalParameter); ASTType type = new ASTType(JavaParserTreeConstants.JJTTYPE); formalParameter.jjtAddChild(type, 0); type.jjtSetParent(formalParameter); type.jjtAddChild(primitiveType, 0); primitiveType.jjtSetParent(type); } else { ASTReferenceType referenceType = new ASTReferenceType(JavaParserTreeConstants.JJTREFERENCETYPE); type.jjtAddChild(referenceType, 0); referenceType.jjtSetParent(type);
/** * Returns the list of exception types caught by this catch block. * Any of these can be null, if they couldn't be resolved. This can * happen if the auxclasspath is not correctly set. */ @SuppressWarnings("unchecked") public List<Class<? extends Exception>> getCaughtExceptionTypes() { List<Class<? extends Exception>> result = new ArrayList<>(); for (ASTType type : getCaughtExceptionTypeNodes()) { result.add((Class<? extends Exception>) type.getType()); } return result; }
private int getArrayDimensionOnType() { ASTType typeNode = getTypeNode(); if (typeNode != null) { return typeNode.getArrayDepth(); } return 0; }
@Override public Object visit(ASTCatchStatement node, Object data) { ASTType type = node.getFirstDescendantOfType(ASTType.class); ASTClassOrInterfaceType name = type.getFirstDescendantOfType(ASTClassOrInterfaceType.class); if (name.hasImageEqualTo("Throwable")) { addViolation(data, name); } return super.visit(node, data); } }