1 19 20 package org.netbeans.modules.j2ee.jpa.verification.fixes; 21 22 import com.sun.source.tree.ClassTree; 23 import com.sun.source.tree.ExpressionTree; 24 import java.io.IOException ; 25 import java.util.logging.Level ; 26 import javax.lang.model.element.TypeElement; 27 import org.netbeans.api.java.source.CancellableTask; 28 import org.netbeans.api.java.source.ElementHandle; 29 import org.netbeans.api.java.source.JavaSource; 30 import org.netbeans.api.java.source.TreeMaker; 31 import org.netbeans.api.java.source.WorkingCopy; 32 import org.netbeans.modules.j2ee.jpa.verification.JPAProblemFinder; 33 import org.netbeans.spi.editor.hints.ChangeInfo; 34 import org.netbeans.spi.editor.hints.Fix; 35 import org.openide.filesystems.FileObject; 36 import org.openide.util.NbBundle; 37 38 42 public class ImplementSerializable implements Fix { 43 private FileObject fileObject; 44 private ElementHandle<TypeElement> classHandle; 45 46 47 public ImplementSerializable(FileObject fileObject, ElementHandle<TypeElement> classHandle) { 48 this.classHandle = classHandle; 49 this.fileObject = fileObject; 50 } 51 52 public ChangeInfo implement(){ 53 CancellableTask<WorkingCopy> task = new CancellableTask<WorkingCopy>(){ 54 public void cancel() {} 55 56 public void run(WorkingCopy workingCopy) throws Exception { 57 workingCopy.toPhase(JavaSource.Phase.RESOLVED); 58 TypeElement clazz = classHandle.resolve(workingCopy); 59 60 if (clazz != null){ 61 ClassTree clazzTree = workingCopy.getTrees().getTree(clazz); 62 TreeMaker make = workingCopy.getTreeMaker(); 63 ExpressionTree implementsClause = make.Identifier("java.io.Serializable"); ClassTree modifiedClazz = make.addClassImplementsClause(clazzTree, implementsClause); 65 workingCopy.rewrite(clazzTree, modifiedClazz); 66 } 67 } 68 }; 69 70 JavaSource javaSource = JavaSource.forFileObject(fileObject); 71 72 try{ 73 javaSource.runModificationTask(task).commit(); 74 } catch (IOException e){ 75 JPAProblemFinder.LOG.log(Level.SEVERE, e.getMessage(), e); 76 } 77 return null; 78 } 79 80 public int hashCode(){ 81 return 1; 82 } 83 84 public boolean equals(Object o){ 85 return super.equals(o); 87 } 88 89 public String getText(){ 90 return NbBundle.getMessage(CreatePersistenceUnit.class, "LBL_ImplementSerializable"); 91 } 92 } 93 | Popular Tags |