Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Unified Diff: plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/ResourceManager.java

Issue 7089017: Change source look-up design (Closed) Base URL: https://chromedevtools.googlecode.com/svn/trunk
Patch Set: fcr Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/ResourceManager.java
diff --git a/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/ResourceManager.java b/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/ResourceManager.java
index abc10147077cdc5ab74ddd4951006fcb0681ae29..c18fb07cda270f320ac734a0978ce38101aa2a0e 100755
--- a/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/ResourceManager.java
+++ b/plugins/org.chromium.debug.core/src/org/chromium/debug/core/model/ResourceManager.java
@@ -4,6 +4,9 @@
package org.chromium.debug.core.model;
+import static org.chromium.debug.core.util.ChromiumDebugPluginUtil.getSafe;
+import static org.chromium.debug.core.util.ChromiumDebugPluginUtil.removeSafe;
+
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@ -26,8 +29,11 @@ import org.eclipse.core.runtime.NullProgressMonitor;
public class ResourceManager {
private final IProject debugProject;
- private final Map<VmResourceId, VmResourceInfo> vmResourceId2Info =
- new HashMap<VmResourceId, VmResourceInfo>();
+ private final Map<String, VmResourceInfo> scriptName2Info =
+ new HashMap<String, VmResourceInfo>();
+ private final Map<Long, VmResourceInfo> scriptId2Info =
+ new HashMap<Long, VmResourceInfo>();
+
private final Map<IFile, VmResourceInfo> file2Info = new HashMap<IFile, VmResourceInfo>();
public ResourceManager(IProject debugProject) {
@@ -35,28 +41,31 @@ public class ResourceManager {
}
public synchronized VmResource getVmResource(VmResourceId id) {
- VmResourceInfo info = vmResourceId2Info.get(id);
+ VmResourceInfo info = getVmResourceInfo(id);
if (info == null) {
return null;
}
return info.vmResourceImpl;
}
- /**
- * @param eclipseSourceName eclipse source file name
- * (what {@link VmResourceId#getEclipseSourceName()} returns)
- */
- public IFile getFile(String eclipseSourceName) {
- VmResourceId id = VmResourceId.parseString(eclipseSourceName);
- VmResourceInfo info = vmResourceId2Info.get(id);
- if (info == null) {
- return null;
+ private VmResourceInfo getVmResourceInfo(VmResourceId id) {
+ if (id.getId() != null) {
+ VmResourceInfo info = getSafe(scriptId2Info, id.getId());
+ if (info != null) {
+ return info;
+ }
}
- return info.file;
+ if (id.getName() != null) {
+ VmResourceInfo info = getSafe(scriptName2Info, id.getName());
+ if (info != null) {
+ return info;
+ }
+ }
+ return null;
}
public synchronized VmResourceId getResourceId(IFile resource) {
- VmResourceInfo info = file2Info.get(resource);
+ VmResourceInfo info = getSafe(file2Info, resource);
if (info == null) {
return null;
}
@@ -65,7 +74,7 @@ public class ResourceManager {
public synchronized void addScript(Script newScript) {
VmResourceId id = VmResourceId.forScript(newScript);
- VmResourceInfo info = vmResourceId2Info.get(id);
+ VmResourceInfo info = getVmResourceInfo(id);
ScriptSet scriptSet;
if (info == null) {
scriptSet = new ScriptSet();
@@ -85,11 +94,12 @@ public class ResourceManager {
UniqueKeyGenerator.Factory<VmResourceInfo> factory =
new UniqueKeyGenerator.Factory<VmResourceInfo>() {
public VmResourceInfo tryCreate(String uniqueName) {
- VmResourceId id = VmResourceId.forName(uniqueName);
- VmResourceInfo info = vmResourceId2Info.get(id);
+ VmResourceInfo info = getSafe(scriptName2Info, uniqueName);
if (info != null) {
return null;
}
+ // Temporary file has no script id.
+ VmResourceId id = new VmResourceId(uniqueName, null);
return createAndRegisterResourceFile(id, metadata);
}
};
@@ -106,9 +116,17 @@ public class ResourceManager {
IFile scriptFile = ChromiumDebugPluginUtil.createFile(debugProject, fileNameTemplate);
VmResourceInfo info = new VmResourceInfo(scriptFile, id, metadata);
Object conflict;
- conflict = vmResourceId2Info.put(id, info);
- if (conflict != null) {
- throw new RuntimeException();
+ if (id.getName() != null) {
+ conflict = scriptName2Info.put(id.getName(), info);
+ if (conflict != null) {
+ throw new RuntimeException();
+ }
+ }
+ if (id.getId() != null) {
+ conflict = scriptId2Info.put(id.getId(), info);
+ if (conflict != null) {
+ throw new RuntimeException();
+ }
}
conflict = file2Info.put(scriptFile, info);
if (conflict != null) {
@@ -124,7 +142,7 @@ public class ResourceManager {
public synchronized void reloadScript(Script script) {
VmResourceId id = VmResourceId.forScript(script);
- VmResourceInfo info = vmResourceId2Info.get(id);
+ VmResourceInfo info = getVmResourceInfo(id);
if (info == null) {
throw new RuntimeException("Script file not found"); //$NON-NLS-1$
}
@@ -136,7 +154,8 @@ public class ResourceManager {
public synchronized void clear() {
deleteAllScriptFiles();
- vmResourceId2Info.clear();
+ scriptName2Info.clear();
+ scriptId2Info.clear();
file2Info.clear();
}
@@ -150,7 +169,15 @@ public class ResourceManager {
}
private String createFileNameTemplate(VmResourceId id) {
- return id.createFileNameTemplate(true);
+ if (id.getName() != null) {
+ return id.getName();
+ } else {
+ if (true) {
+ return "<eval #" + id.getId() + ">"; //$NON-NLS-1$ //$NON-NLS-2$
+ } else {
+ return "<no name #" + id.getId() + ">"; //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
}
private static void writeScriptSource(Collection<Script> scripts, IFile file) {
@@ -184,8 +211,13 @@ public class ResourceManager {
return file;
}
public void deleteResourceAndFile() {
- ChromiumDebugPluginUtil.removeSafe(vmResourceId2Info, id);
- ChromiumDebugPluginUtil.removeSafe(file2Info, file);
+ if (id.getName() != null) {
+ removeSafe(scriptName2Info, id.getName());
+ }
+ if (id.getId() != null) {
+ removeSafe(scriptId2Info, id.getId());
+ }
+ removeSafe(file2Info, file);
try {
file.delete(false, new NullProgressMonitor());

Powered by Google App Engine
This is Rietveld 408576698