1.1 --- a/autoproject.java/src/org/netbeans/modules/autoproject/java/actions/ActionProviderImpl.java Tue Mar 27 14:59:40 2012 -0400
1.2 +++ b/autoproject.java/src/org/netbeans/modules/autoproject/java/actions/ActionProviderImpl.java Wed Mar 28 09:52:54 2012 +0200
1.3 @@ -94,6 +94,9 @@
1.4 ActionProvider.COMMAND_DEBUG_TEST_SINGLE,
1.5 SingleMethod.COMMAND_RUN_SINGLE_METHOD,
1.6 SingleMethod.COMMAND_DEBUG_SINGLE_METHOD,
1.7 + ActionProvider.COMMAND_PROFILE,
1.8 + ActionProvider.COMMAND_PROFILE_SINGLE,
1.9 + ActionProvider.COMMAND_PROFILE_TEST_SINGLE,
1.10 // You provide the impl:
1.11 ActionProvider.COMMAND_BUILD,
1.12 ActionProvider.COMMAND_CLEAN,
1.13 @@ -108,7 +111,8 @@
1.14 public boolean isActionEnabled(String command, Lookup context) throws IllegalArgumentException {
1.15 if (command.equals(ActionProvider.COMMAND_RUN_SINGLE) || command.equals(ActionProvider.COMMAND_TEST_SINGLE) ||
1.16 command.equals(ActionProvider.COMMAND_DEBUG_SINGLE) || command.equals(ActionProvider.COMMAND_DEBUG_TEST_SINGLE) ||
1.17 - command.equals(SingleMethod.COMMAND_RUN_SINGLE_METHOD) || command.equals(SingleMethod.COMMAND_DEBUG_SINGLE_METHOD)) {
1.18 + command.equals(SingleMethod.COMMAND_RUN_SINGLE_METHOD) || command.equals(SingleMethod.COMMAND_DEBUG_SINGLE_METHOD) ||
1.19 + command.equals(ActionProvider.COMMAND_PROFILE_SINGLE) || command.equals(ActionProvider.COMMAND_PROFILE_TEST_SINGLE)) {
1.20 return runSetup(context, command) != null;
1.21 } else {
1.22 return true;
1.23 @@ -118,7 +122,8 @@
1.24 public void invokeAction(final String command, final Lookup context) throws IllegalArgumentException {
1.25 if (command.equals(ActionProvider.COMMAND_RUN_SINGLE) || command.equals(ActionProvider.COMMAND_TEST_SINGLE) ||
1.26 command.equals(ActionProvider.COMMAND_DEBUG_SINGLE) || command.equals(ActionProvider.COMMAND_DEBUG_TEST_SINGLE) ||
1.27 - command.equals(SingleMethod.COMMAND_RUN_SINGLE_METHOD) || command.equals(SingleMethod.COMMAND_DEBUG_SINGLE_METHOD)) {
1.28 + command.equals(SingleMethod.COMMAND_RUN_SINGLE_METHOD) || command.equals(SingleMethod.COMMAND_DEBUG_SINGLE_METHOD) ||
1.29 + command.equals(ActionProvider.COMMAND_PROFILE_SINGLE) || command.equals(ActionProvider.COMMAND_PROFILE_TEST_SINGLE)) {
1.30 RequestProcessor.getDefault().post(new Runnable() {
1.31 public void run() {
1.32 RunSetup setup = runSetup(context, command);
1.33 @@ -255,7 +260,7 @@
1.34 return null;
1.35 }
1.36 properties.put("methodname", methodname); // NOI18N
1.37 - } else if (command.equals(ActionProvider.COMMAND_TEST_SINGLE) || command.equals(ActionProvider.COMMAND_DEBUG_TEST_SINGLE)) {
1.38 + } else if (command.equals(ActionProvider.COMMAND_TEST_SINGLE) || command.equals(ActionProvider.COMMAND_DEBUG_TEST_SINGLE) || command.equals(ActionProvider.COMMAND_PROFILE_TEST_SINGLE)) {
1.39 test = true;
1.40 // Check for a matching unit test.
1.41 String testResource = sourcepath.getResourceName(fo, '/', false) + "Test.java";
1.42 @@ -271,7 +276,7 @@
1.43 }
1.44 }
1.45 } else {
1.46 - assert command.equals(ActionProvider.COMMAND_RUN_SINGLE) || command.equals(ActionProvider.COMMAND_DEBUG_SINGLE) : command;
1.47 + assert command.equals(ActionProvider.COMMAND_RUN_SINGLE) || command.equals(ActionProvider.COMMAND_DEBUG_SINGLE) || command.equals(ActionProvider.COMMAND_PROFILE_SINGLE) : command;
1.48 test = false;
1.49 }
1.50 List<String> vmargs = new ArrayList<String>();
1.51 @@ -291,9 +296,12 @@
1.52 boolean debug = command.equals(ActionProvider.COMMAND_DEBUG_SINGLE) ||
1.53 command.equals(ActionProvider.COMMAND_DEBUG_TEST_SINGLE) ||
1.54 command.equals(SingleMethod.COMMAND_DEBUG_SINGLE_METHOD);
1.55 + boolean profile = command.equals(ActionProvider.COMMAND_PROFILE_SINGLE) ||
1.56 + command.equals(ActionProvider.COMMAND_PROFILE_TEST_SINGLE);
1.57 return new RunSetup(debug ?
1.58 (test ? JavaRunner.QUICK_TEST_DEBUG : JavaRunner.QUICK_DEBUG) :
1.59 - (test ? JavaRunner.QUICK_TEST : JavaRunner.QUICK_RUN),
1.60 + (profile ? (test ? JavaRunner.QUICK_TEST_PROFILE : JavaRunner.QUICK_PROFILE) :
1.61 + (test ? JavaRunner.QUICK_TEST : JavaRunner.QUICK_RUN)),
1.62 properties);
1.63 }
1.64
2.1 --- a/autoproject.profiler/src/org/netbeans/modules/autoproject/profiler/AutomaticProjectProfilingSupportProvider.java Tue Mar 27 14:59:40 2012 -0400
2.2 +++ b/autoproject.profiler/src/org/netbeans/modules/autoproject/profiler/AutomaticProjectProfilingSupportProvider.java Wed Mar 28 09:52:54 2012 +0200
2.3 @@ -57,6 +57,7 @@
2.4 import org.netbeans.modules.profiler.spi.project.ProjectProfilingSupportProvider;
2.5 import org.netbeans.spi.project.ProjectServiceProvider;
2.6 import org.openide.filesystems.FileObject;
2.7 +import java.util.Map;
2.8
2.9 /**
2.10 *
2.11 @@ -70,56 +71,27 @@
2.12 return fo.hasExt("java"); // NOI18N
2.13 }
2.14
2.15 - @Override
2.16 - public JavaPlatform getProjectJavaPlatform() {
2.17 + protected JavaPlatform resolveProjectJavaPlatform() {
2.18 return null;
2.19 }
2.20 -
2.21 +
2.22 @Override
2.23 public boolean checkProjectCanBeProfiled(FileObject profiledClassFile) {
2.24 return profiledClassFile != null &&
2.25 ClassPath.getClassPath(profiledClassFile, ClassPath.SOURCE) != null &&
2.26 ClassPath.getClassPath(profiledClassFile, ClassPath.EXECUTE) != null;
2.27 }
2.28 -
2.29 - @Override
2.30 - public void configurePropertiesForProfiling(Properties props, FileObject profiledClassFile) {
2.31 - ClassPath sourcepath = ClassPath.getClassPath(profiledClassFile, ClassPath.SOURCE);
2.32 - String classname = sourcepath.getResourceName(profiledClassFile, '.', false); // NOI18N
2.33 - // XXX #159643: AntActions.doProfileProject is not smart enough yet...
2.34 - if (isTest(profiledClassFile, sourcepath)) {
2.35 - props.setProperty("classname", "junit.textui.TestRunner"); // NOI18N
2.36 - props.setProperty("args", classname); // NOI18N
2.37 - } else {
2.38 - props.setProperty("classname", classname); // NOI18N
2.39 - props.setProperty("args", ""); // NOI18N
2.40 - }
2.41 - props.setProperty("classpath", ClassPath.getClassPath(profiledClassFile, ClassPath.EXECUTE).toString(ClassPath.PathConversionMode.FAIL)); // NOI18N
2.42 +
2.43 + public void configurePropertiesForProfiling(Properties props, FileObject profilerClassFile) {
2.44 + // transitional placeholder for API change
2.45 }
2.46
2.47 - private static boolean isTest(final FileObject fo, final ClassPath sourcepath) {
2.48 - final AtomicBoolean isActuallyTest = new AtomicBoolean();
2.49 - try {
2.50 - JavaSource.create(ClasspathInfo.create(fo)).runWhenScanFinished(new Task<CompilationController>() {
2.51 - public void run(CompilationController cc) throws Exception {
2.52 - String name = sourcepath.getResourceName(fo, '.', false);
2.53 - assert name != null : fo;
2.54 - TypeElement runType = cc.getElements().getTypeElement(name);
2.55 - assert runType != null : name;
2.56 - TypeElement testCase = cc.getElements().getTypeElement("junit.framework.TestCase"); // NOI18N
2.57 - if (testCase != null && cc.getTypes().isAssignable(runType.asType(), testCase.asType())) {
2.58 - isActuallyTest.set(true);
2.59 - }
2.60 - }
2.61 - }, true).get();
2.62 - } catch (Exception x) {
2.63 - Logger.getLogger(AutomaticProjectProfilingSupportProvider.class.getName()).log(Level.INFO, null, x);
2.64 - }
2.65 - return isActuallyTest.get();
2.66 + public void configurePropertiesForProfiling(Map<String, String> props, FileObject profiledClassFile) {
2.67 + ClassPath sourcepath = ClassPath.getClassPath(profiledClassFile, ClassPath.SOURCE);
2.68 + props.put("classpath", ClassPath.getClassPath(profiledClassFile, ClassPath.EXECUTE).toString(ClassPath.PathConversionMode.FAIL)); // NOI18N
2.69 }
2.70
2.71 public AutomaticProjectProfilingSupportProvider(Project project) {
2.72 super(project);
2.73 }
2.74 -
2.75 }