#203519: Adjusting autoproject.profiler to the new profiler actions
authorJaroslav Bachorik <yardus@netbeans.org>
Tue, 27 Mar 2012 12:06:59 +0200
changeset 1780870fa8bdceec3
parent 17805 06b3b107c655
child 17809 02a69fe8328a
#203519: Adjusting autoproject.profiler to the new profiler actions
autoproject.java/src/org/netbeans/modules/autoproject/java/actions/ActionProviderImpl.java
autoproject.profiler/src/org/netbeans/modules/autoproject/profiler/AutomaticProjectProfilingSupportProvider.java
     1.1 --- a/autoproject.java/src/org/netbeans/modules/autoproject/java/actions/ActionProviderImpl.java	Mon Mar 26 11:04:08 2012 -0400
     1.2 +++ b/autoproject.java/src/org/netbeans/modules/autoproject/java/actions/ActionProviderImpl.java	Tue Mar 27 12:06:59 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	Mon Mar 26 11:04:08 2012 -0400
     2.2 +++ b/autoproject.profiler/src/org/netbeans/modules/autoproject/profiler/AutomaticProjectProfilingSupportProvider.java	Tue Mar 27 12:06:59 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  }