Updating after Retouch infrastructure merge.
1.1 --- a/jemmysupport/nbproject/project.properties Wed Nov 01 10:29:46 2006 +0000
1.2 +++ b/jemmysupport/nbproject/project.properties Wed Nov 01 11:38:15 2006 +0000
1.3 @@ -15,7 +15,8 @@
1.4 # Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
1.5 # Microsystems, Inc. All Rights Reserved.
1.6
1.7 -spec.version.base=1.33.0
1.8 +javac.source=1.5
1.9 +spec.version.base=1.34.0
1.10 cp.extra=../jemmy/dist/jemmy.jar
1.11 antsrc.cp=\
1.12 ${ant.home}/lib/ant.jar:\
2.1 --- a/jemmysupport/nbproject/project.xml Wed Nov 01 10:29:46 2006 +0000
2.2 +++ b/jemmysupport/nbproject/project.xml Wed Nov 01 11:38:15 2006 +0000
2.3 @@ -24,15 +24,6 @@
2.4 <code-name-base>org.netbeans.modules.jemmysupport</code-name-base>
2.5 <module-dependencies>
2.6 <dependency>
2.7 - <code-name-base>javax.jmi.reflect</code-name-base>
2.8 - <build-prerequisite/>
2.9 - <compile-dependency/>
2.10 - <run-dependency>
2.11 - <release-version>1</release-version>
2.12 - <specification-version>1.6</specification-version>
2.13 - </run-dependency>
2.14 - </dependency>
2.15 - <dependency>
2.16 <code-name-base>org.apache.tools.ant.module</code-name-base>
2.17 <build-prerequisite/>
2.18 <compile-dependency/>
2.19 @@ -49,20 +40,11 @@
2.20 </run-dependency>
2.21 </dependency>
2.22 <dependency>
2.23 - <code-name-base>org.netbeans.api.mdr</code-name-base>
2.24 + <code-name-base>org.netbeans.libs.javacapi</code-name-base>
2.25 <build-prerequisite/>
2.26 <compile-dependency/>
2.27 <run-dependency>
2.28 - <release-version>1</release-version>
2.29 - <specification-version>1.3</specification-version>
2.30 - </run-dependency>
2.31 - </dependency>
2.32 - <dependency>
2.33 - <code-name-base>org.netbeans.jmi.javamodel</code-name-base>
2.34 - <build-prerequisite/>
2.35 - <compile-dependency/>
2.36 - <run-dependency>
2.37 - <release-version>2</release-version>
2.38 + <specification-version>0.5</specification-version>
2.39 </run-dependency>
2.40 </dependency>
2.41 <dependency>
2.42 @@ -82,11 +64,11 @@
2.43 </run-dependency>
2.44 </dependency>
2.45 <dependency>
2.46 - <code-name-base>org.netbeans.modules.javacore</code-name-base>
2.47 + <code-name-base>org.netbeans.modules.java.source</code-name-base>
2.48 <build-prerequisite/>
2.49 <compile-dependency/>
2.50 <run-dependency>
2.51 - <release-version>1</release-version>
2.52 + <specification-version>0.1</specification-version>
2.53 </run-dependency>
2.54 </dependency>
2.55 <dependency>
3.1 --- a/jemmysupport/src/org/netbeans/modules/jemmysupport/Utils.java Wed Nov 01 10:29:46 2006 +0000
3.2 +++ b/jemmysupport/src/org/netbeans/modules/jemmysupport/Utils.java Wed Nov 01 11:38:15 2006 +0000
3.3 @@ -19,13 +19,32 @@
3.4
3.5 package org.netbeans.modules.jemmysupport;
3.6
3.7 +import com.sun.source.tree.ClassTree;
3.8 +import com.sun.source.util.TreePathScanner;
3.9 +import java.io.IOException;
3.10 import java.net.URL;
3.11 import java.net.URLClassLoader;
3.12 import java.security.AllPermission;
3.13 import java.security.CodeSource;
3.14 import java.security.PermissionCollection;
3.15 import java.security.Permissions;
3.16 +import java.util.List;
3.17 +import java.util.Set;
3.18 +import java.util.logging.Level;
3.19 +import java.util.logging.Logger;
3.20 +import javax.lang.model.element.Element;
3.21 +import javax.lang.model.element.ExecutableElement;
3.22 +import javax.lang.model.element.Modifier;
3.23 +import javax.lang.model.element.TypeElement;
3.24 +import javax.lang.model.type.TypeKind;
3.25 +import javax.lang.model.util.ElementFilter;
3.26 +import org.netbeans.api.java.source.CancellableTask;
3.27 +import org.netbeans.api.java.source.CompilationController;
3.28 +import org.netbeans.api.java.source.CompilationInfo;
3.29 +import org.netbeans.api.java.source.JavaSource;
3.30 +import org.netbeans.api.java.source.JavaSource.Phase;
3.31 import org.openide.ErrorManager;
3.32 +import org.openide.filesystems.FileObject;
3.33
3.34 /**
3.35 * Utilities methods.
3.36 @@ -85,4 +104,93 @@
3.37 return super.getPackages();
3.38 }
3.39 }
3.40 +
3.41 + /** Returns fully qualified class name if given file object is a java source
3.42 + * and it contains main method.
3.43 + * @param fo file object
3.44 + * @return fully qualified class name if file object has main method, null otherwise
3.45 + */
3.46 + public static String hasMainMethod(FileObject fo) {
3.47 + // Later revise in org.netbeans.modules.java.j2seproject.J2SEProjectUtil.hasMainMethod()
3.48 + JavaSource js = JavaSource.forFileObject(fo);
3.49 + if(js == null) {
3.50 + // not a java source
3.51 + return null;
3.52 + }
3.53 + MemberVisitor.hasMainMethod = false;
3.54 + try {
3.55 + js.runUserActionTask(new CancellableTask<CompilationController>() {
3.56 + public void cancel() {}
3.57 + public void run(CompilationController parameter) throws IOException {
3.58 + parameter.toPhase(Phase.ELEMENTS_RESOLVED);
3.59 + new MemberVisitor(parameter).scan(parameter.getCompilationUnit(), null);
3.60 + }
3.61 + }, true);
3.62 + } catch (IOException e) {
3.63 + Logger.getLogger("").log(Level.SEVERE, e.getMessage(), e);
3.64 + }
3.65 + if(MemberVisitor.hasMainMethod) {
3.66 + return MemberVisitor.qualifiedName;
3.67 + } else {
3.68 + return null;
3.69 + }
3.70 + }
3.71 +
3.72 + private static class MemberVisitor extends TreePathScanner<Void, Void> {
3.73 +
3.74 + public static boolean hasMainMethod = false;
3.75 + public static String qualifiedName = null;
3.76 + private CompilationInfo info;
3.77 +
3.78 + public MemberVisitor(CompilationInfo info) {
3.79 + this.info = info;
3.80 + }
3.81 +
3.82 + @Override
3.83 + public Void visitClass(ClassTree t, Void v) {
3.84 + hasMainMethod = false;
3.85 + Element el = info.getTrees().getElement(getCurrentPath());
3.86 + if (el != null) {
3.87 + TypeElement te = (TypeElement) el;
3.88 + qualifiedName = te.getQualifiedName().toString();
3.89 + List<ExecutableElement> methods = ElementFilter.methodsIn(te.getEnclosedElements());
3.90 + for (int i = 0; i < methods.size(); i++) {
3.91 + ExecutableElement method = methods.get(i);
3.92 + hasMainMethod = isMainMethod(method);
3.93 + if(hasMainMethod) {
3.94 + // find it -> return
3.95 + return null;
3.96 + }
3.97 + }
3.98 + }
3.99 + return null;
3.100 + }
3.101 +
3.102 + private static boolean isMainMethod(ExecutableElement method) {
3.103 + // name should be "main"
3.104 + if(!"main".equals(method.getSimpleName().toString())) { //NOI18N
3.105 + return false;
3.106 + }
3.107 + // return type should be void
3.108 + if(!method.getReturnType().getKind().equals(TypeKind.VOID)) {
3.109 + return false;
3.110 + }
3.111 + // check String[] parameter
3.112 + /* it seems not to work now.
3.113 + List<? extends TypeParameterElement> paramTypes = method.getTypeParameters();
3.114 + for (int j = 0; j < paramTypes.size(); j++) {
3.115 + Object object = paramTypes.get(j);
3.116 + }
3.117 + */
3.118 + // modifiers should be public static
3.119 + Set<Modifier> modifiers = method.getModifiers();
3.120 + if(!modifiers.contains(Modifier.PUBLIC)) {
3.121 + return false;
3.122 + }
3.123 + if(!modifiers.contains(Modifier.STATIC)) {
3.124 + return false;
3.125 + }
3.126 + return modifiers.size() == 2;
3.127 + }
3.128 + }
3.129 }
4.1 --- a/jemmysupport/src/org/netbeans/modules/jemmysupport/generator/DataFolderFilterNode.java Wed Nov 01 10:29:46 2006 +0000
4.2 +++ b/jemmysupport/src/org/netbeans/modules/jemmysupport/generator/DataFolderFilterNode.java Wed Nov 01 11:38:15 2006 +0000
4.3 @@ -20,7 +20,6 @@
4.4 package org.netbeans.modules.jemmysupport.generator;
4.5
4.6 import org.openide.loaders.DataObject;
4.7 -import org.openide.loaders.DataFolder;
4.8 import org.openide.nodes.FilterNode;
4.9 import org.openide.nodes.Node;
4.10
4.11 @@ -42,8 +41,7 @@
4.12 super(node);
4.13 }
4.14
4.15 - protected Node[] createNodes(Object key) {
4.16 - Node node = (Node)key;
4.17 + protected Node[] createNodes(Node node) {
4.18 // without filtering
4.19 // return new Node[] { copyNode(n) };
4.20
5.1 --- a/jemmysupport/src/org/netbeans/modules/jemmysupport/runinternally/RunInternallyAction.java Wed Nov 01 10:29:46 2006 +0000
5.2 +++ b/jemmysupport/src/org/netbeans/modules/jemmysupport/runinternally/RunInternallyAction.java Wed Nov 01 11:38:15 2006 +0000
5.3 @@ -40,10 +40,8 @@
5.4 import org.netbeans.api.project.Project;
5.5 import org.netbeans.api.project.ProjectUtils;
5.6 import org.netbeans.api.queries.FileBuiltQuery;
5.7 -import org.netbeans.jmi.javamodel.JavaClass;
5.8 -import org.netbeans.jmi.javamodel.Resource;
5.9 import org.netbeans.modules.apisupport.project.NbModuleProject;
5.10 -import org.netbeans.modules.javacore.api.JavaModel;
5.11 +import org.netbeans.modules.jemmysupport.Utils;
5.12 import org.netbeans.spi.project.ActionProvider;
5.13 import org.openide.ErrorManager;
5.14 import org.openide.awt.StatusDisplayer;
5.15 @@ -225,22 +223,7 @@
5.16 if(dObj == null) {
5.17 return null;
5.18 }
5.19 - FileObject fObj = dObj.getPrimaryFile();
5.20 - // following code taken from org.netbeans.modules.java.j2seproject.J2SEProjectUtil.hasMainMethod()
5.21 - JavaModel.getJavaRepository().beginTrans(false);
5.22 - try {
5.23 - JavaModel.setClassPath(fObj);
5.24 - Resource res = JavaModel.getResource(fObj);
5.25 - if(res == null) {
5.26 - return null;
5.27 - }
5.28 - if(!res.getMain().isEmpty()) {
5.29 - return ((JavaClass)res.getMain().get(0)).getName();
5.30 - }
5.31 - } finally {
5.32 - JavaModel.getJavaRepository().endTrans();
5.33 - }
5.34 - return null;
5.35 + return Utils.hasMainMethod(dObj.getPrimaryFile());
5.36 }
5.37
5.38 private Object compileLock = new Object();