import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;
+import java.util.Map;
import net.sourceforge.phpdt.internal.debug.core.breakpoints.PHPLineBreakpoint;
import net.sourceforge.phpdt.internal.debug.core.logview.LogView;
private boolean remote;
+ private boolean pathtranslation;
+
+ private Map pathmap;
+
private IPath remoteSourcePath;
public PHPDBGProxy() {
thisProxy = this;
}
- public PHPDBGProxy(boolean remote, String remoteSourcePath) {
+ public PHPDBGProxy(boolean remote, String remoteSourcePath,boolean pathTranslate,Map paths) {
thisProxy = this;
this.remote = remote;
this.remoteSourcePath = new Path(remoteSourcePath);
+ this.pathmap=paths;
+ this.pathtranslation=pathTranslate;
}
public void start() {
}
protected void createServerSocket() {
- // port = SocketUtil.findUnusedLocalPort("localhost", 10001, 10101);
- port = 10001;
+ port = SocketUtil.findUnusedLocalPort("localhost", 10001, 10101);
+// port = 10001;
if (port == -1) {
PHPDebugCorePlugin.log(5, "Cannot find free port!!!!");
return;
}
}
+ private String MapPath(PHPLineBreakpoint phpLBP)
+ {
+ IPath filename;
+ if (remote)
+ {
+ filename = phpLBP.getMarker().getResource().getProjectRelativePath();
+ filename = remoteSourcePath.append(filename);
+ }
+ else
+ filename = phpLBP.getMarker().getResource().getLocation();
+ String path=filename.toOSString();
+ if(pathmap!=null&&remote)
+ {
+ java.util.Iterator i=pathmap.keySet().iterator();
+ while(i.hasNext())
+ {
+ String k=(String)i.next();
+ if(path.substring(0,k.length()).equals(k))
+ {
+ path=pathmap.get(k)+path.substring(k.length());
+ break;
+ }
+ }
+ }
+ if(pathtranslation&&remote)
+ {
+ if(path.substring(0,1).equals("/"))
+ path=path.replace('\\','/');
+ else
+ path=path.replace('/','\\');
+ }
+ return path;
+ }
+
public void addBreakpoint(IBreakpoint breakpoint) {
if (DBGInt == null)
return;
try {
PHPLineBreakpoint phpLBP;
if (breakpoint.getModelIdentifier() == PHPDebugCorePlugin.getUniqueIdentifier()) {
- IPath filename;
phpLBP = (PHPLineBreakpoint) breakpoint;
// bpNo= DBGInt.addBreakpoint(phpLBP.getMarker().getResource().getLocation().toOSString(), phpLBP.getLineNumber());
- if (remote)
- filename = remoteSourcePath.append(phpLBP.getMarker().getResource().getProjectRelativePath());
- else
- filename = phpLBP.getMarker().getResource().getLocation();
- bpNo = DBGInt.addBreakpoint(filename.toOSString(), phpLBP.getLineNumber());
+
+ bpNo = DBGInt.addBreakpoint(MapPath(phpLBP), phpLBP.getLineNumber());
phpLBP.setDBGBpNo(bpNo);
}
} catch (IOException e) {
PHPLineBreakpoint phpLBP;
if (breakpoint.getModelIdentifier() == PHPDebugCorePlugin.getUniqueIdentifier()) {
phpLBP = (PHPLineBreakpoint) breakpoint;
- IPath filename;
- if (remote)
- filename = remoteSourcePath.append(phpLBP.getMarker().getResource().getProjectRelativePath());
- else
- filename = phpLBP.getMarker().getResource().getLocation();
+
// bpNo= DBGInt.addBreakpoint(filename.toOSString(), phpLBP.getLineNumber());
- DBGInt.removeBreakpoint(filename.toOSString(), phpLBP.getLineNumber(), phpLBP.getDBGBpNo());
+ DBGInt.removeBreakpoint(MapPath(phpLBP), phpLBP.getLineNumber(), phpLBP.getDBGBpNo());
}
} catch (IOException e) {
PHPDebugCorePlugin.log(e);