Support spring loaded for remote process.

This commit is contained in:
Sergey Evdokimov
2013-01-22 18:41:34 +04:00
parent 332725cabd
commit b75c72b4d9
@@ -3,9 +3,6 @@ package org.jetbrains.plugins.groovy.springloaded;
import com.intellij.debugger.PositionManager;
import com.intellij.debugger.PositionManagerFactory;
import com.intellij.debugger.engine.DebugProcess;
import com.intellij.openapi.application.AccessToken;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.psi.JavaPsiFacade;
/**
* Factory for position manager to debug classes reloaded by com.springsource.springloaded
@@ -15,16 +12,16 @@ public class SpringLoadedPositionManagerFactory extends PositionManagerFactory {
@Override
public PositionManager createPositionManager(final DebugProcess process) {
AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock();
try {
JavaPsiFacade facade = JavaPsiFacade.getInstance(process.getProject());
if (facade.findPackage("com.springsource.loaded") != null || facade.findPackage("org.springsource.loaded") != null) {
if (process.getVirtualMachineProxy().classesByName("com.springsource.loaded.agent.SpringLoadedAgent").size() > 0
|| process.getVirtualMachineProxy().classesByName("org.springsource.loaded.agent.SpringLoadedAgent").size() > 0) {
return new SpringLoadedPositionManager(process);
}
return null;
}
finally {
accessToken.finish();
catch (Exception ignored) {
// Some problem with virtual machine.
}
return null;
}
}