List of usage examples for org.eclipse.jdt.core.dom.rewrite ListRewrite getOriginalList
public List getOriginalList()
From source file:edu.illinois.compositerefactorings.refactorings.NewClassCreator.java
License:Open Source License
public List<ResourceChange> createTopLevelParameterObject() throws CoreException { List<ResourceChange> changes = new ArrayList<ResourceChange>(); ICompilationUnit unit = getPackageFragment() .getCompilationUnit(getClassName() + JavaModelUtil.DEFAULT_CU_SUFFIX); Assert.isTrue(!unit.exists());/* w ww . j a v a 2 s . co m*/ IJavaProject javaProject = unit.getJavaProject(); ICompilationUnit workingCopy = unit.getWorkingCopy(null); try { // create stub with comments and dummy type String lineDelimiter = StubUtility.getLineDelimiterUsed(javaProject); String fileComment = getFileComment(workingCopy, lineDelimiter); String typeComment = getTypeComment(workingCopy, lineDelimiter); String content = CodeGeneration.getCompilationUnitContent(workingCopy, fileComment, typeComment, "class " + getClassName() + "{}", lineDelimiter); //$NON-NLS-1$ //$NON-NLS-2$ workingCopy.getBuffer().setContents(content); CompilationUnitRewrite cuRewrite = new CompilationUnitRewrite(workingCopy); ASTRewrite rewriter = cuRewrite.getASTRewrite(); CompilationUnit root = cuRewrite.getRoot(); AST ast = cuRewrite.getAST(); ImportRewrite importRewrite = cuRewrite.getImportRewrite(); if (fSuperclassType != null) { importRewrite.addImport(fSuperclassType.resolveBinding()); } // retrieve&replace dummy type with real class ListRewrite types = rewriter.getListRewrite(root, CompilationUnit.TYPES_PROPERTY); ASTNode dummyType = (ASTNode) types.getOriginalList().get(0); TypeDeclaration classDeclaration = createClassDeclaration(getClassName(), cuRewrite); classDeclaration.modifiers().add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD)); Javadoc javadoc = (Javadoc) dummyType.getStructuralProperty(TypeDeclaration.JAVADOC_PROPERTY); rewriter.set(classDeclaration, TypeDeclaration.JAVADOC_PROPERTY, javadoc, null); types.replace(dummyType, classDeclaration, null); // Apply rewrites and discard workingcopy // Using CompilationUnitRewrite.createChange() leads to strange // results String charset = ResourceUtil.getFile(unit).getCharset(false); Document document = new Document(content); try { rewriter.rewriteAST().apply(document); TextEdit rewriteImports = importRewrite.rewriteImports(null); rewriteImports.apply(document); } catch (BadLocationException e) { throw new CoreException(new Status(IStatus.ERROR, JavaPlugin.getPluginId(), RefactoringCoreMessages.IntroduceParameterObjectRefactoring_parameter_object_creation_error, e)); } String docContent = document.get(); CreateCompilationUnitChange compilationUnitChange = new CreateCompilationUnitChange(unit, docContent, charset); changes.add(compilationUnitChange); } finally { workingCopy.discardWorkingCopy(); } return changes; }
From source file:lang.java.jdt.internal.UnqualifyTypeNames.java
License:Open Source License
private void visitCompilationUnit() { ICompilationUnit icu = JavaCore.createCompilationUnitFrom(file); ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setResolveBindings(true);/*from w ww.j a v a2 s .c o m*/ parser.setSource(icu); CompilationUnit cu = (CompilationUnit) parser.createAST(null); IProblem[] problems = cu.getProblems(); for (int i = 0; i < problems.length; i++) { if (problems[i].isError()) { int offset = problems[i].getSourceStart(); int length = problems[i].getSourceEnd() - offset; int sl = problems[i].getSourceLineNumber(); ISourceLocation pos = VF.sourceLocation(loc.getURI(), offset, length, sl, sl, 0, 0); throw new Throw(VF.string("Error(s) in compilation unit: " + problems[i].getMessage()), pos, null); } } // Figure out which imports we need to keep and/or need to add cu.accept(new GatherUsedPackages()); calculateImportsToAdd(); // Now, start the rewrite process, first with the imports, then with the various // types found in the code in the file rewriter = ASTRewrite.create(cu.getAST()); ListRewrite lrw = rewriter.getListRewrite(cu, CompilationUnit.IMPORTS_PROPERTY); // Throw away the current imports List<?> imps = lrw.getOriginalList(); for (int i = 0; i < imps.size(); ++i) { lrw.remove((ASTNode) imps.get(i), null); } // Add the statically imported types back in for (String s : importedFullNames) { ImportDeclaration id = cu.getAST().newImportDeclaration(); id.setName(cu.getAST().newName(s)); id.setStatic(true); lrw.insertLast(id, null); } // Add the new imports back in String[] whatever = { "A" }; String[] sortedImports = importsToAdd.toArray(whatever); Arrays.sort(sortedImports); for (String s : sortedImports) { ImportDeclaration id = cu.getAST().newImportDeclaration(); id.setName(cu.getAST().newName(s)); id.setStatic(false); lrw.insertLast(id, null); } cu.accept(this); try { IPath path = file.getFullPath(); ITextFileBufferManager bufferManager = FileBuffers.getTextFileBufferManager(); bufferManager.connect(path, LocationKind.IFILE, new NullProgressMonitor()); ITextFileBuffer textFileBuffer = bufferManager.getTextFileBuffer(path, LocationKind.IFILE); IDocument doc = textFileBuffer.getDocument(); TextEdit te = rewriter.rewriteAST(doc, null); te.apply(doc); textFileBuffer.commit(new NullProgressMonitor(), true); bufferManager.disconnect(path, LocationKind.IFILE, new NullProgressMonitor()); } catch (CoreException e) { throw new Throw(VF.string("Error(s) in rewrite of compilation unit: " + e.getMessage()), loc, null); } catch (MalformedTreeException e) { throw new Throw(VF.string("Error(s) in rewrite of compilation unit: " + e.getMessage()), loc, null); } catch (BadLocationException e) { throw new Throw(VF.string("Error(s) in rewrite of compilation unit: " + e.getMessage()), loc, null); } }
From source file:nz.ac.massey.cs.care.refactoring.executers.IntroduceFactoryRefactoring.java
License:Open Source License
/** * Updates the constructor call./* ww w .ja v a2 s .c o m*/ * * @param ctorCall the ClassInstanceCreation to be marked as replaced * @param unitRewriter the AST rewriter * @param gd the edit group to use */ private void rewriteFactoryMethodCall(ClassInstanceCreation ctorCall, ASTRewrite unitRewriter, TextEditGroup gd) { AST ast = unitRewriter.getAST(); MethodInvocation factoryMethodCall = ast.newMethodInvocation(); ASTNode ctorCallParent = ctorCall.getParent(); StructuralPropertyDescriptor ctorCallLocation = ctorCall.getLocationInParent(); if (ctorCallLocation instanceof ChildListPropertyDescriptor) { ListRewrite ctorCallParentListRewrite = unitRewriter.getListRewrite(ctorCallParent, (ChildListPropertyDescriptor) ctorCallLocation); int index = ctorCallParentListRewrite.getOriginalList().indexOf(ctorCall); ctorCall = (ClassInstanceCreation) ctorCallParentListRewrite.getRewrittenList().get(index); } else { ctorCall = (ClassInstanceCreation) unitRewriter.get(ctorCallParent, ctorCallLocation); } ListRewrite actualFactoryArgs = unitRewriter.getListRewrite(factoryMethodCall, MethodInvocation.ARGUMENTS_PROPERTY); ListRewrite actualCtorArgs = unitRewriter.getListRewrite(ctorCall, ClassInstanceCreation.ARGUMENTS_PROPERTY); // Need to use a qualified name for the factory method if we're not // in the context of the class holding the factory. AbstractTypeDeclaration callOwner = (AbstractTypeDeclaration) ASTNodes.getParent(ctorCall, AbstractTypeDeclaration.class); ITypeBinding callOwnerBinding = callOwner.resolveBinding(); if (callOwnerBinding == null || !Bindings.equals(callOwner.resolveBinding(), fFactoryOwningClass.resolveBinding())) { String qualifier = fImportRewriter.addImport(fFactoryOwningClass.resolveBinding()); factoryMethodCall.setExpression(ASTNodeFactory.newName(ast, qualifier)); } factoryMethodCall.setName(ast.newSimpleName(fNewMethodName)); List<Expression> actualCtorArgsList = actualCtorArgs.getRewrittenList(); for (int i = 0; i < actualCtorArgsList.size(); i++) { Expression actualCtorArg = actualCtorArgsList.get(i); ASTNode movedArg; if (ASTNodes.isExistingNode(actualCtorArg)) { movedArg = unitRewriter.createMoveTarget(actualCtorArg); } else { unitRewriter.remove(actualCtorArg, null); movedArg = actualCtorArg; } actualFactoryArgs.insertLast(movedArg, gd); } unitRewriter.replace(ctorCall, factoryMethodCall, gd); }
From source file:org.eclipseguru.gwt.core.internal.codegen.AsyncServiceCodeGenerator.java
License:Open Source License
private void updateJavadoc(final IType createdType, final IProgressMonitor monitor) throws JavaModelException, CoreException, ValidateEditException { final CompilationUnit cu = createdType.getCompilationUnit().reconcile(AST.JLS3, true, null, null); final ASTRewrite cuRewrite = ASTRewrite.create(cu.getAST()); final TextEditGroup textEditGroup = new TextEditGroup( "Updating JavaDoc of interface " + createdType.getElementName()); // find remote service type and rewrite it final ListRewrite typeRewrite = cuRewrite.getListRewrite(cu, CompilationUnit.TYPES_PROPERTY); for (final Iterator stream = typeRewrite.getOriginalList().iterator(); stream.hasNext();) { final TypeDeclaration td = (TypeDeclaration) stream.next(); if (td.getName().getIdentifier().equals(getTypeNameWithoutParameters())) { updateTypeJavaDoc(cuRewrite, td, textEditGroup); }// w w w. j av a 2 s .c o m } // apply edit final TextEdit edit = cuRewrite.rewriteAST(); JavaModelUtil.applyEdit(createdType.getCompilationUnit(), edit, false, ProgressUtil.subProgressMonitor(monitor, 1)); }
From source file:org.eclipseguru.gwt.core.internal.codegen.AsyncServiceCodeGenerator.java
License:Open Source License
private void updateMethodJavadoc(final ASTRewrite cuRewrite, final MethodDeclaration md, final TextEditGroup textEditGroup) { // create javadoc final Javadoc javadoc = createJavadocIfNecessary(cuRewrite, md, textEditGroup); final ListRewrite javadocRewrite = cuRewrite.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY); // find last @param tag and remove @throws tags and @gwt.typeArgs tags ASTNode lastParamPos = null;/*from ww w . jav a 2 s. c om*/ boolean hasReturnTag = false; for (final Iterator stream = javadocRewrite.getOriginalList().iterator(); stream.hasNext();) { final TagElement element = (TagElement) stream.next(); if (null != element.getTagName()) { final String tagName = element.getTagName(); if (tagName.equals(TAG_PARAM)) { lastParamPos = element; } else if (tagName.equals(TAG_RETURN) && !element.fragments().isEmpty()) { hasReturnTag = true; cuRewrite.set(element, TagElement.TAG_NAME_PROPERTY, TAG_GWT_CALLBACK_RETURN, textEditGroup); } else if (tagName.equals(TAG_THROWS) || tagName.equals(TAG_GWT_TYPE_ARGS)) { javadocRewrite.remove(element, textEditGroup); } } } // create @param callback final TagElement callbackParamTag = cuRewrite.getAST().newTagElement(); if (null != lastParamPos) { javadocRewrite.insertAfter(callbackParamTag, lastParamPos, textEditGroup); } else { javadocRewrite.insertLast(callbackParamTag, textEditGroup); } cuRewrite.set(callbackParamTag, TagElement.TAG_NAME_PROPERTY, TAG_PARAM, textEditGroup); final ListRewrite tagRewrite = cuRewrite.getListRewrite(callbackParamTag, TagElement.FRAGMENTS_PROPERTY); final TextElement space = cuRewrite.getAST().newTextElement(); tagRewrite.insertFirst(space, textEditGroup); final SimpleName callbackName = cuRewrite.getAST().newSimpleName(CALLBACK); tagRewrite.insertAfter(callbackName, space, textEditGroup); final TextElement callbackDescription = cuRewrite.getAST().newTextElement(); callbackDescription.setText("the callback that will be called to receive the return value"); tagRewrite.insertAfter(callbackDescription, callbackName, textEditGroup); if (hasReturnTag) { final TextElement text = cuRewrite.getAST().newTextElement(); text.setText(NLS.bind("(see <code>{0}</code> tag)", TAG_GWT_CALLBACK_RETURN)); tagRewrite.insertAfter(text, callbackDescription, textEditGroup); } // add @generated tag javadocRewrite.insertLast(createGeneratedTagForMethod(cuRewrite), textEditGroup); }
From source file:org.eclipseguru.gwt.core.internal.codegen.AsyncServiceCodeGenerator.java
License:Open Source License
private void updateTypeJavaDoc(final ASTRewrite cuRewrite, final TypeDeclaration td, final TextEditGroup textEditGroup) { // add @generated tag to JavaDoc final Javadoc javadoc = createJavadocIfNecessary(cuRewrite, td, textEditGroup); final ListRewrite javadocRewrite = cuRewrite.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY); javadocRewrite.insertLast(createGeneratedTagForType(cuRewrite), textEditGroup); // rewrite methods final ListRewrite bodyRewrite = cuRewrite.getListRewrite(td, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); for (final Iterator stream = bodyRewrite.getOriginalList().iterator(); stream.hasNext();) { final ASTNode node = (ASTNode) stream.next(); switch (node.getNodeType()) { case ASTNode.METHOD_DECLARATION: // rewrite method updateMethodJavadoc(cuRewrite, (MethodDeclaration) node, textEditGroup); break; }/*from w ww . ja va 2 s . c o m*/ } }
From source file:org.evosuite.eclipse.quickfixes.ResolutionMarkerThrowsException.java
License:Open Source License
@Override public void run(IMarker marker) { // TODO Auto-generated method stub IResource res = marker.getResource(); try {//ww w.ja v a2s . c om String markerMessage = (String) marker.getAttribute(IMarker.MESSAGE); String exception = markerMessage.split(" ")[0]; String[] exceptionPackageArray = exception.split("\\."); String exceptionPackage = ""; for (int i = 0; i < exceptionPackageArray.length - 1; i++) { exceptionPackage += exceptionPackageArray[i] + "."; } exception = exception.substring(exceptionPackage.length()); System.out.println("Package: " + exceptionPackage + ", Exception: " + exception); ICompilationUnit icomp = CompilationUnitManager.getICompilationUnit(res); CompilationUnit compunit = CompilationUnitManager.getCompilationUnit(res); int position = marker.getAttribute(IMarker.CHAR_START, 0) + 1; if (position == 1) { int line = marker.getAttribute(IMarker.LINE_NUMBER, 0); position = compunit.getPosition(line, 0); } AST ast = compunit.getAST(); ASTRewrite rewriter = ASTRewrite.create(ast); IJavaElement element = icomp.getElementAt(position); IJavaElement method = getMethod(element); // TypeDeclaration td = (TypeDeclaration) compunit.types().get(0); TypeDeclaration td = (TypeDeclaration) compunit.types().get(0); MethodDeclaration md = td.getMethods()[0]; int counter = 1; while (!md.getName().getFullyQualifiedName().equals(method.getElementName()) && counter < td.getMethods().length) { md = td.getMethods()[counter]; System.out.println(md.getName().getFullyQualifiedName() + " " + method.getElementName()); counter++; } ListRewrite lr = rewriter.getListRewrite(md, MethodDeclaration.THROWN_EXCEPTIONS_PROPERTY); ImportDeclaration id = ast.newImportDeclaration(); id.setName(ast.newName(exceptionPackage + exception)); ListRewrite lrClass = rewriter.getListRewrite(compunit, CompilationUnit.TYPES_PROPERTY); lrClass.insertAt(id, 0, null); Statement s = (Statement) rewriter.createStringPlaceholder(exception, ASTNode.EMPTY_STATEMENT); lr.insertAt(s, 0, null); System.out.println("MD: " + md.getName() + "\nList: " + lr.getOriginalList()); ITextFileBufferManager bm = FileBuffers.getTextFileBufferManager(); IPath path = compunit.getJavaElement().getPath(); try { bm.connect(path, null, null); ITextFileBuffer textFileBuffer = bm.getTextFileBuffer(path, null); IDocument document = textFileBuffer.getDocument(); TextEdit edits = rewriter.rewriteAST(document, null); edits.apply(document); textFileBuffer.commit(null, false); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MalformedTreeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (BadLocationException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { bm.disconnect(path, null, null); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } // (4) } System.out .println(lr.getRewrittenList() + "\nPosition: " + position + "\nEdits: " + rewriter.toString()); } catch (JavaModelException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CoreException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }
From source file:org.evosuite.eclipse.quickfixes.ResolutionMarkerTryBlock.java
License:Open Source License
@Override public void run(IMarker marker) { // TODO Auto-generated method stub IResource res = marker.getResource(); try {//from w w w . j a va 2s .c om String markerMessage = (String) marker.getAttribute(IMarker.MESSAGE); String exception = markerMessage.split(" ")[0]; String[] exceptionPackageArray = exception.split("\\."); String exceptionPackage = ""; for (int i = 0; i < exceptionPackageArray.length - 1; i++) { exceptionPackage += exceptionPackageArray[i] + "."; } exception = exception.substring(exceptionPackage.length()); System.out.println("Package: " + exceptionPackage + ", Exception: " + exception); ICompilationUnit icomp = CompilationUnitManager.getICompilationUnit(res); CompilationUnit compunit = CompilationUnitManager.getCompilationUnit(res); int position = marker.getAttribute(IMarker.CHAR_START, 0) + 1; int line = marker.getAttribute(IMarker.LINE_NUMBER, 0); if (position == 1) { position = compunit.getPosition(line, 0); } AST ast = compunit.getAST(); ASTRewrite rewriter = ASTRewrite.create(ast); IJavaElement element = icomp.getElementAt(position); IJavaElement method = getMethod(element); // TypeDeclaration td = (TypeDeclaration) compunit.types().get(0); TypeDeclaration td = (TypeDeclaration) compunit.types().get(0); MethodDeclaration md = td.getMethods()[0]; int counter = 1; while (!md.getName().getFullyQualifiedName().equals(method.getElementName()) && counter < td.getMethods().length) { md = td.getMethods()[counter]; System.out.println(md.getName().getFullyQualifiedName() + " " + method.getElementName()); counter++; } Block block = md.getBody(); ListRewrite lr = rewriter.getListRewrite(block, Block.STATEMENTS_PROPERTY); ImportDeclaration id = ast.newImportDeclaration(); id.setName(ast.newName(exceptionPackage + exception)); ListRewrite lrClass = rewriter.getListRewrite(compunit, CompilationUnit.TYPES_PROPERTY); lrClass.insertAt(id, 0, null); ASTNode currentNode = null; List<ASTNode> list = new ArrayList<ASTNode>(); for (Object o : lr.getOriginalList()) { if (o instanceof ASTNode) { list.add((ASTNode) o); } } for (int i = 0; i < list.size(); i++) { ASTNode node = list.get(i); int nodeLine = compunit.getLineNumber(node.getStartPosition()); System.out.println(line + " " + nodeLine); if (line == nodeLine) { currentNode = node; break; } List childrenList = node.structuralPropertiesForType(); for (int j = 0; j < childrenList.size(); j++) { StructuralPropertyDescriptor curr = (StructuralPropertyDescriptor) childrenList.get(j); Object child = node.getStructuralProperty(curr); if (child instanceof List) { for (Object ob : (List) child) { if (ob instanceof ASTNode) { list.add((ASTNode) ob); } } } else if (child instanceof ASTNode) { list.add((ASTNode) child); } } } TryStatement ts = ast.newTryStatement(); Statement emptyStatement = (Statement) rewriter.createStringPlaceholder("\n", ASTNode.EMPTY_STATEMENT); Statement emptyStatement2 = (Statement) rewriter.createStringPlaceholder("\n\t", ASTNode.EMPTY_STATEMENT); Block b2 = ast.newBlock(); b2.statements().add(0, ASTNode.copySubtree(b2.getAST(), currentNode)); b2.statements().add(1, emptyStatement); b2.statements().add(0, emptyStatement2); ts.setBody(b2); CatchClause cc = ast.newCatchClause(); SingleVariableDeclaration svd = ast.newSingleVariableDeclaration(); svd.setName(ast.newSimpleName("e")); Type type = ast.newSimpleType(ast.newName(exception)); svd.setType(type); cc.setException(svd); Block b3 = ast.newBlock(); Statement printStatement = (Statement) rewriter.createStringPlaceholder("e.printStackTrace();", ASTNode.EMPTY_STATEMENT); b3.statements().add(0, printStatement); cc.setBody(b3); ListRewrite parentList = rewriter.getListRewrite(currentNode.getParent(), Block.STATEMENTS_PROPERTY); parentList.replace(currentNode, ts, null); parentList.insertAfter(cc, ts, null); ITextFileBufferManager bm = FileBuffers.getTextFileBufferManager(); IPath path = compunit.getJavaElement().getPath(); try { bm.connect(path, null, null); ITextFileBuffer textFileBuffer = bm.getTextFileBuffer(path, null); IDocument document = textFileBuffer.getDocument(); TextEdit edits = rewriter.rewriteAST(document, null); edits.apply(document); textFileBuffer.commit(null, false); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MalformedTreeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (BadLocationException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { bm.disconnect(path, null, null); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } // (4) } marker.delete(); } catch (JavaModelException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (CoreException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }
From source file:org.hibernate.eclipse.jdt.ui.internal.jpa.process.ProcessEntityInfo.java
License:Open Source License
@SuppressWarnings("unchecked") public boolean visit(TypeDeclaration node) { ITypeBinding typeBinding = node.resolveBinding(); String nodeName = typeBinding == null ? null : typeBinding.getBinaryName(); if (nodeName == null) { return false; }//w w w . j av a 2 s . c o m entityInfo = entityInfos.getEntityInfo(nodeName); if (entityInfo == null) { return false; } if (entityInfo.isAddMappedSuperclassFlag()) { MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation(); matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_MAPPEDSUPERCLASS)); ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.MODIFIERS2_PROPERTY); lrw.insertFirst(matd, null); } if (entityInfo.isAddEntityFlag()) { MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation(); matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_ENTITY)); ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.MODIFIERS2_PROPERTY); lrw.insertFirst(matd, null); } /** / if (!entityInfo.isImplicitConstructorFlag() && !entityInfo.isDefaultConstructorFlag() && entityInfo.isAddSerializableInterfaceFlag()) { // add serializable interface SimpleName sn = null; //if (!entityInfo.isAddSerializableInterfaceImportFlag()) { sn = rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_SERIALIZABLE); //} //else { // sn = rewriter.getAST().newSimpleName(JPAConst.IMPORT_SERIALIZABLE); //} SimpleType st = rewriter.getAST().newSimpleType(sn); ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY); lrw.insertFirst(st, null); // add "private static final long serialVersionUID = 1L;" // ... } /**/ if (!entityInfo.isImplicitConstructorFlag() && !entityInfo.isDefaultConstructorFlag() && entityInfo.isAddSerializableInterfaceFlag()) { MethodDeclaration md = rewriter.getAST().newMethodDeclaration(); md.setConstructor(true); Modifier modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PROTECTED_KEYWORD); md.modifiers().add(modifier); Block body = rewriter.getAST().newBlock(); md.setBody(body); SimpleName sn = rewriter.getAST().newSimpleName(entityInfo.getName()); md.setName(sn); ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); List<?> list = lrw.getOriginalList(); MethodDeclaration insertBeforeNode = null; Iterator<?> it = list.iterator(); while (it.hasNext()) { Object obj = it.next(); if (obj instanceof MethodDeclaration) { insertBeforeNode = (MethodDeclaration) obj; break; } } if (insertBeforeNode == null) { lrw.insertLast(md, null); } else { lrw.insertBefore(md, insertBeforeNode, null); } } if (enableOptLock && entityInfo.isAddVersionFlag() && !entityInfo.hasVersionAnnotation()) { // add property "version", add getter/setter getVersion/setVersion, // add annotation for the property or for the getter // final String version = "version"; //$NON-NLS-1$ final String versionType = "Integer"; //$NON-NLS-1$ // VariableDeclarationFragment vdFragment = rewriter.getAST().newVariableDeclarationFragment(); SimpleName variableName = rewriter.getAST().newSimpleName(version); vdFragment.setName(variableName); FieldDeclaration fieldVersion = rewriter.getAST().newFieldDeclaration(vdFragment); Modifier modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PROTECTED_KEYWORD); fieldVersion.modifiers().add(modifier); Name typeName = rewriter.getAST().newName(versionType); SimpleType type = rewriter.getAST().newSimpleType(typeName); fieldVersion.setType(type); // MethodDeclaration mdGetter = rewriter.getAST().newMethodDeclaration(); modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD); mdGetter.modifiers().add(modifier); Block body = rewriter.getAST().newBlock(); ReturnStatement returnVersion = rewriter.getAST().newReturnStatement(); variableName = rewriter.getAST().newSimpleName(version); returnVersion.setExpression(variableName); body.statements().add(returnVersion); mdGetter.setBody(body); SimpleName sn = rewriter.getAST().newSimpleName("getVersion"); //$NON-NLS-1$ mdGetter.setName(sn); typeName = rewriter.getAST().newName(versionType); type = rewriter.getAST().newSimpleType(typeName); mdGetter.setReturnType2(type); // MethodDeclaration mdSetter = rewriter.getAST().newMethodDeclaration(); modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD); mdSetter.modifiers().add(modifier); body = rewriter.getAST().newBlock(); Assignment assignment = rewriter.getAST().newAssignment(); FieldAccess fieldAccess = rewriter.getAST().newFieldAccess(); ThisExpression thisExpression = rewriter.getAST().newThisExpression(); fieldAccess.setExpression(thisExpression); variableName = rewriter.getAST().newSimpleName(version); fieldAccess.setName(variableName); assignment.setLeftHandSide(fieldAccess); variableName = rewriter.getAST().newSimpleName(version); assignment.setRightHandSide(variableName); ExpressionStatement expressionStatement = rewriter.getAST().newExpressionStatement(assignment); body.statements().add(expressionStatement); mdSetter.setBody(body); sn = rewriter.getAST().newSimpleName("setVersion"); //$NON-NLS-1$ mdSetter.setName(sn); SingleVariableDeclaration svd = rewriter.getAST().newSingleVariableDeclaration(); variableName = rewriter.getAST().newSimpleName(version); svd.setName(variableName); typeName = rewriter.getAST().newName(versionType); type = rewriter.getAST().newSimpleType(typeName); svd.setType(type); mdSetter.parameters().add(svd); // ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.BODY_DECLARATIONS_PROPERTY); if (entityInfo.getVersionFieldGetter() != FieldGetterType.FIELD && entityInfo.getVersionFieldGetter() != FieldGetterType.FIELD_GETTER) { lrw.insertLast(fieldVersion, null); } if (entityInfo.getVersionFieldGetter() != FieldGetterType.GETTER && entityInfo.getVersionFieldGetter() != FieldGetterType.FIELD_GETTER) { lrw.insertLast(mdGetter, null); lrw.insertLast(mdSetter, null); } if (annotationStyle == AnnotStyle.FIELDS) { MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation(); matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_VERSION)); lrw = rewriter.getListRewrite(fieldVersion, FieldDeclaration.MODIFIERS2_PROPERTY); lrw.insertFirst(matd, null); } else if (annotationStyle == AnnotStyle.GETTERS) { MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation(); matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_VERSION)); lrw = rewriter.getListRewrite(mdGetter, MethodDeclaration.MODIFIERS2_PROPERTY); lrw.insertFirst(matd, null); } } return true; }