1 19 package org.netbeans.modules.web.wizards; 20 21 import com.sun.source.tree.ClassTree; 22 import com.sun.source.tree.CompilationUnitTree; 23 import com.sun.source.tree.Tree; 24 import java.io.IOException ; 25 import org.netbeans.api.java.source.JavaSource; 26 import org.netbeans.api.java.source.JavaSource.Phase; 27 import org.netbeans.api.java.source.ModificationResult; 28 import org.netbeans.api.java.source.TreeMaker; 29 import org.netbeans.api.java.source.WorkingCopy; 30 import org.netbeans.modules.j2ee.common.source.AbstractTask; 31 import org.netbeans.modules.j2ee.common.source.GenerationUtils; 32 33 39 public class ListenerGenerator { 40 boolean isContext,isContextAttr,isSession,isSessionAttr,isRequest,isRequestAttr; 41 42 private JavaSource clazz; 43 private GenerationUtils gu; 44 45 46 public ListenerGenerator(boolean isContext, boolean isContextAttr, boolean isSession, boolean isSessionAttr, 47 boolean isRequest, boolean isRequestAttr) { 48 this.isContext=isContext; 49 this.isContextAttr=isContextAttr; 50 this.isSession=isSession; 51 this.isSessionAttr=isSessionAttr; 52 this.isRequest=isRequest; 53 this.isRequestAttr=isRequestAttr; 54 } 55 56 public void generate(JavaSource clazz) throws IOException { 57 this.clazz=clazz; 58 59 AbstractTask task = new AbstractTask<WorkingCopy>() { 60 public void run(WorkingCopy workingCopy) throws Exception { 61 workingCopy.toPhase(Phase.RESOLVED); 62 CompilationUnitTree cut = workingCopy.getCompilationUnit(); 63 TreeMaker make = workingCopy.getTreeMaker(); 64 65 66 for (Tree typeDecl : cut.getTypeDecls()) { 67 if (Tree.Kind.CLASS == typeDecl.getKind()) { 68 gu = GenerationUtils.newInstance(workingCopy); 69 workingCopy.rewrite(gu.getClassTree(), generateInterfaces(gu)); 70 71 } 72 } 73 74 } 75 }; 76 ModificationResult result = clazz.runModificationTask(task); 77 result.commit(); 78 79 80 } 87 88 private ClassTree generateInterfaces(GenerationUtils gu) { 89 ClassTree newClassTree = gu.getClassTree(); 90 91 if (isContext) 92 newClassTree = gu.addImplementsClause(newClassTree, "javax.servlet.ServletContextListener"); 93 if (isContextAttr) 94 newClassTree = gu.addImplementsClause(newClassTree, "javax.servlet.ServletContextAttributeListener"); 95 if (isSession) 96 newClassTree = gu.addImplementsClause(newClassTree, "javax.servlet.http.HttpSessionListener"); 97 if (isSessionAttr) 98 newClassTree = gu.addImplementsClause(newClassTree, "javax.servlet.http.HttpSessionAttributeListener"); 99 if (isRequest) 100 newClassTree = gu.addImplementsClause(newClassTree, "javax.servlet.ServletRequestListener"); 101 if (isRequestAttr) 102 newClassTree = gu.addImplementsClause(newClassTree, "javax.servlet.ServletRequestAttributeListener"); 103 104 return newClassTree; 105 } 106 107 } | Popular Tags |