@SuppressWarnings("unchecked") public static Consumer<TypeDeclaration> make(final ModifierKeyword... keywords) { return td -> { final AST ast = td.getAST(); for (final ModifierKeyword keyword : keywords) { td.modifiers().add(ast.newModifier(keyword)); } }; }
@SuppressWarnings("unchecked") public static Consumer<TypeDeclaration> superInterfaces(final List<String> types) { return td -> { final AST ast = td.getAST(); for (final String name : types) { final org.eclipse.jdt.core.dom.Type type = ast.newSimpleType(ast.newName(name)); td.superInterfaceTypes().add(type); } }; }
public static Consumer<TypeDeclaration> superClass(final String name) { return td -> { final AST ast = td.getAST(); final org.eclipse.jdt.core.dom.Type type = ast.newSimpleType(ast.newName(name)); td.setSuperclassType(type); }; }
/** * @param type to convert to enum */ public TypeToEnumConverter(ASTJType type) { this.type = type; ast = type.getASTNode().getAST(); typeChildren = type.getChildren(); // create map of field names to fields for (JNode child : typeChildren) { if (child instanceof ASTJField) { fieldNamesMap.put(child.getName(), (ASTJField)child); } } }
/** * @param type to convert to enum */ public TypeToEnumConverter(ASTJType type) { this.type = type; ast = type.getASTNode().getAST(); typeChildren = type.getChildren(); // create map of field names to fields for (JNode child : typeChildren) { if (child instanceof ASTJField) { fieldNamesMap.put(child.getName(), (ASTJField)child); } } }
private void addEnclosingInstanceTypeParameters(final ITypeBinding[] parameters, final AbstractTypeDeclaration declaration, final ASTRewrite rewrite) { Assert.isNotNull(parameters); Assert.isNotNull(declaration); Assert.isNotNull(rewrite); if (declaration instanceof TypeDeclaration) { final TypeDeclaration type= (TypeDeclaration) declaration; final List<TypeParameter> existing= type.typeParameters(); final Set<String> names= new HashSet<>(); TypeParameter parameter= null; for (final Iterator<TypeParameter> iterator= existing.iterator(); iterator.hasNext();) { parameter= iterator.next(); names.add(parameter.getName().getIdentifier()); } final ListRewrite rewriter= rewrite.getListRewrite(type, TypeDeclaration.TYPE_PARAMETERS_PROPERTY); String name= null; for (int index= 0; index < parameters.length; index++) { name= parameters[index].getName(); if (!names.contains(name)) { parameter= type.getAST().newTypeParameter(); parameter.setName(type.getAST().newSimpleName(name)); rewriter.insertLast(parameter, null); } } } }
private void addEnclosingInstanceTypeParameters(final ITypeBinding[] parameters, final AbstractTypeDeclaration declaration, final ASTRewrite rewrite) { Assert.isNotNull(parameters); Assert.isNotNull(declaration); Assert.isNotNull(rewrite); if (declaration instanceof TypeDeclaration) { final TypeDeclaration type= (TypeDeclaration) declaration; final List existing= type.typeParameters(); final Set names= new HashSet(); TypeParameter parameter= null; for (final Iterator iterator= existing.iterator(); iterator.hasNext();) { parameter= (TypeParameter) iterator.next(); names.add(parameter.getName().getIdentifier()); } final ListRewrite rewriter= rewrite.getListRewrite(type, TypeDeclaration.TYPE_PARAMETERS_PROPERTY); String name= null; for (int index= 0; index < parameters.length; index++) { name= parameters[index].getName(); if (!names.contains(name)) { parameter= type.getAST().newTypeParameter(); parameter.setName(type.getAST().newSimpleName(name)); rewriter.insertLast(parameter, null); } } } }
private void addEnclosingInstanceTypeParameters(final ITypeBinding[] parameters, final AbstractTypeDeclaration declaration, final ASTRewrite rewrite) { Assert.isNotNull(parameters); Assert.isNotNull(declaration); Assert.isNotNull(rewrite); if (declaration instanceof TypeDeclaration) { final TypeDeclaration type= (TypeDeclaration) declaration; final List<TypeParameter> existing= type.typeParameters(); final Set<String> names= new HashSet<>(); TypeParameter parameter= null; for (final Iterator<TypeParameter> iterator= existing.iterator(); iterator.hasNext();) { parameter= iterator.next(); names.add(parameter.getName().getIdentifier()); } final ListRewrite rewriter= rewrite.getListRewrite(type, TypeDeclaration.TYPE_PARAMETERS_PROPERTY); String name= null; for (int index= 0; index < parameters.length; index++) { name= parameters[index].getName(); if (!names.contains(name)) { parameter= type.getAST().newTypeParameter(); parameter.setName(type.getAST().newSimpleName(name)); rewriter.insertLast(parameter, null); } } } }
@Override public boolean visit(TypeDeclaration node) { int apiLevel= node.getAST().apiLevel();
@SuppressWarnings("unchecked") private static Type wrapParameterizedIfRequired(TypeDeclaration template, Type type) { AST ast = template.getAST(); SimpleName sn = ast.newSimpleName(template.getName().getIdentifier()); if (type == null) { type = ast.newSimpleType(sn); } else { type = ast.newQualifiedType(type, sn); } if (template.typeParameters().isEmpty()) { return type; } ParameterizedType parameterizedType = ast.newParameterizedType(type); for (int i = 0; i < template.typeParameters().size(); i++) { parameterizedType.typeArguments().add(ast.newWildcardType()); } return parameterizedType; }
@SuppressWarnings("unchecked") public static Consumer<TypeDeclaration> defaultTypeCustomizer(final boolean iface, final boolean serializable, final boolean makeStatic) { Consumer<TypeDeclaration> typeCustomizer = TypeBuilder.asInterface(iface); typeCustomizer = typeCustomizer.andThen(TypeBuilder.superInterfaces(serializable ? Collections.singletonList("java.io.Serializable") : Collections.emptyList())); if (makeStatic) { typeCustomizer = typeCustomizer.andThen(JDTHelper::makeStatic); } if (serializable && !iface) { typeCustomizer = typeCustomizer.andThen(td -> { final AST ast = td.getAST(); final org.eclipse.jdt.core.dom.Type longType = ast.newPrimitiveType(PrimitiveType.LONG); final NumberLiteral initializer = ast.newNumberLiteral(); initializer.setToken("1L"); final FieldDeclaration sf = JDTHelper.createField(ast, longType, "serialVersionUID", initializer, ModifierKeyword.PRIVATE_KEYWORD, ModifierKeyword.STATIC_KEYWORD, ModifierKeyword.FINAL_KEYWORD); td.bodyDeclarations().add(sf); }); } return typeCustomizer; }
private void insertAllMissingTypeTags(ASTRewrite rewriter, TypeDeclaration typeDecl) { AST ast= typeDecl.getAST(); Javadoc javadoc= typeDecl.getJavadoc(); ListRewrite tagsRewriter= rewriter.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY); List<TypeParameter> typeParams= typeDecl.typeParameters(); for (int i= typeParams.size() - 1; i >= 0; i--) { TypeParameter decl= typeParams.get(i); String name= '<' + decl.getName().getIdentifier() + '>'; if (findTag(javadoc, TagElement.TAG_PARAM, name) == null) { TagElement newTag= ast.newTagElement(); newTag.setTagName(TagElement.TAG_PARAM); TextElement text= ast.newTextElement(); text.setText(name); newTag.fragments().add(text); insertTabStop(rewriter, newTag.fragments(), "typeParam" + i); //$NON-NLS-1$ insertTag(tagsRewriter, newTag, getPreviousTypeParamNames(typeParams, decl)); } } }
private void insertAllMissingTypeTags(ASTRewrite rewriter, TypeDeclaration typeDecl) { AST ast= typeDecl.getAST(); Javadoc javadoc= typeDecl.getJavadoc(); ListRewrite tagsRewriter= rewriter.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY); List<TypeParameter> typeParams= typeDecl.typeParameters(); for (int i= typeParams.size() - 1; i >= 0; i--) { TypeParameter decl= typeParams.get(i); String name= '<' + decl.getName().getIdentifier() + '>'; if (findTag(javadoc, TagElement.TAG_PARAM, name) == null) { TagElement newTag= ast.newTagElement(); newTag.setTagName(TagElement.TAG_PARAM); TextElement text= ast.newTextElement(); text.setText(name); newTag.fragments().add(text); insertTabStop(rewriter, newTag.fragments(), "typeParam" + i); //$NON-NLS-1$ insertTag(tagsRewriter, newTag, getPreviousTypeParamNames(typeParams, decl)); } } }
private void insertAllMissingTypeTags(ASTRewrite rewriter, TypeDeclaration typeDecl) { AST ast= typeDecl.getAST(); Javadoc javadoc= typeDecl.getJavadoc(); ListRewrite tagsRewriter= rewriter.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY); List typeParams= typeDecl.typeParameters(); for (int i= typeParams.size() - 1; i >= 0; i--) { TypeParameter decl= (TypeParameter) typeParams.get(i); String name= '<' + decl.getName().getIdentifier() + '>'; if (findTag(javadoc, TagElement.TAG_PARAM, name) == null) { TagElement newTag= ast.newTagElement(); newTag.setTagName(TagElement.TAG_PARAM); TextElement text= ast.newTextElement(); text.setText(name); newTag.fragments().add(text); insertTabStop(rewriter, newTag.fragments(), "typeParam" + i); //$NON-NLS-1$ insertTag(tagsRewriter, newTag, getPreviousTypeParamNames(typeParams, decl)); } } }
private void insertAllMissingTypeTags(ASTRewrite rewriter, TypeDeclaration typeDecl) { AST ast= typeDecl.getAST(); Javadoc javadoc= typeDecl.getJavadoc(); ListRewrite tagsRewriter= rewriter.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY); List<TypeParameter> typeParams= typeDecl.typeParameters(); for (int i= typeParams.size() - 1; i >= 0; i--) { TypeParameter decl= typeParams.get(i); String name= '<' + decl.getName().getIdentifier() + '>'; if (findTag(javadoc, TagElement.TAG_PARAM, name) == null) { TagElement newTag= ast.newTagElement(); newTag.setTagName(TagElement.TAG_PARAM); TextElement text= ast.newTextElement(); text.setText(name); newTag.fragments().add(text); insertTabStop(rewriter, newTag.fragments(), "typeParam" + i); //$NON-NLS-1$ insertTag(tagsRewriter, newTag, getPreviousTypeParamNames(typeParams, decl)); } } }
private void generateMessage(final TypeBuilder builder, final Message message) { final TypeInformation ti = new TypeInformation(asTypeName(message.getName()), message.getSummary(), message.getDescription()); // final String payloadTypeName = PackageTypeBuilder.asTypeName(message.getPayload().getName()); @SuppressWarnings("unchecked") final Consumer<TypeDeclaration> typeCustomizer = td -> { final AST ast = td.getAST(); final ParameterizedType type = ast.newParameterizedType(ast.newSimpleType(ast.newName(TYPE_NAME_MESSAGE_INTERFACE))); type.typeArguments().add(ast.newSimpleType(ast.newName(ti.getName() + ".Payload"))); td.superInterfaceTypes().add(type); }; final TypeReference payloadType = message.getPayload(); builder.createType(ti, typeCustomizer, b -> { if (payloadType instanceof ObjectType) { generateType(b, (Type) payloadType); b.createProperty(new PropertyInformation((Type) payloadType, "payload", "Message payload", null)); } else if (payloadType instanceof CoreType) { b.createProperty(new PropertyInformation((CoreType) message.getPayload(), "payload", "Message payload", null)); } else if (payloadType.getClass().equals(TypeReference.class)) { b.createProperty(new PropertyInformation(lookupType(payloadType), "payload", "Message payload", null)); } else { throw new IllegalStateException("Unsupported payload type: " + message.getPayload().getClass().getName()); } }); }
protected ASTRewrite getRewrite() throws CoreException { AST ast= fTypeNode.getAST(); ASTRewrite rewrite= ASTRewrite.create(ast); createImportRewrite((CompilationUnit) fTypeNode.getRoot()); CodeGenerationSettings settings= JavaPreferencesSettings.getCodeGenerationSettings(getCompilationUnit().getJavaProject()); if (!settings.createComments) { settings= null; } MethodDeclaration newMethodDecl= createNewMethodDeclaration(ast, fSuperConstructor, rewrite, settings); rewrite.getListRewrite(fTypeNode, TypeDeclaration.BODY_DECLARATIONS_PROPERTY).insertFirst(newMethodDecl, null); addLinkedRanges(rewrite, newMethodDecl); return rewrite; }
public static ASTRewriteCorrectionProposal getMakeTypeAbstractProposal(ICompilationUnit cu, TypeDeclaration typeDeclaration, int relevance) { AST ast= typeDeclaration.getAST(); ASTRewrite rewrite= ASTRewrite.create(ast); Modifier newModifier= ast.newModifier(Modifier.ModifierKeyword.ABSTRACT_KEYWORD); rewrite.getListRewrite(typeDeclaration, TypeDeclaration.MODIFIERS2_PROPERTY).insertLast(newModifier, null); String label= Messages.format(CorrectionMessages.ModifierCorrectionSubProcessor_addabstract_description, typeDeclaration.getName().getIdentifier()); Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE); LinkedCorrectionProposal proposal= new LinkedCorrectionProposal(label, cu, rewrite, relevance, image); proposal.addLinkedPosition(rewrite.track(newModifier), true, "modifier"); //$NON-NLS-1$ return proposal; }
@Override protected ASTRewrite getRewrite() throws CoreException { AST ast= fTypeNode.getAST(); ASTRewrite rewrite= ASTRewrite.create(ast); createImportRewrite((CompilationUnit) fTypeNode.getRoot()); CodeGenerationSettings settings= JavaPreferencesSettings.getCodeGenerationSettings(getCompilationUnit().getJavaProject()); if (!settings.createComments) { settings= null; } ImportRewriteContext importRewriteContext= new ContextSensitiveImportRewriteContext(fTypeNode, getImportRewrite()); MethodDeclaration newMethodDecl= createNewMethodDeclaration(ast, fSuperConstructor, rewrite, importRewriteContext, settings); rewrite.getListRewrite(fTypeNode, TypeDeclaration.BODY_DECLARATIONS_PROPERTY).insertFirst(newMethodDecl, null); addLinkedRanges(rewrite, newMethodDecl); return rewrite; }
@Override protected ASTRewrite getRewrite() throws CoreException { AST ast= fTypeNode.getAST(); ASTRewrite rewrite= ASTRewrite.create(ast); createImportRewrite((CompilationUnit) fTypeNode.getRoot()); CodeGenerationSettings settings= JavaPreferencesSettings.getCodeGenerationSettings(getCompilationUnit().getJavaProject()); if (!settings.createComments) { settings= null; } ImportRewriteContext importRewriteContext= new ContextSensitiveImportRewriteContext(fTypeNode, getImportRewrite()); MethodDeclaration newMethodDecl= createNewMethodDeclaration(ast, fSuperConstructor, rewrite, importRewriteContext, settings); rewrite.getListRewrite(fTypeNode, TypeDeclaration.BODY_DECLARATIONS_PROPERTY).insertFirst(newMethodDecl, null); addLinkedRanges(rewrite, newMethodDecl); return rewrite; }