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

Unified Diff: editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/pub/PubCacheManager.java

Issue 24235011: add a view for users to explore pub packages (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 3 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: editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/pub/PubCacheManager.java
===================================================================
--- editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/pub/PubCacheManager.java (revision 27769)
+++ editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/pub/PubCacheManager.java (working copy)
@@ -48,23 +48,14 @@
this.packages = packages;
}
- @SuppressWarnings("unchecked")
@Override
public IStatus run(IProgressMonitor monitor) {
- String message = getPubCacheList();
- // no errors
- if (message.startsWith("{\"packages")) {
- Map<String, Object> object = null;
- try {
- object = PubYamlUtils.parsePubspecYamlToMap(message);
- synchronized (pubUsedPackages) {
- pubCachePackages = (HashMap<String, Object>) object.get(PubspecConstants.PACKAGES);
- }
- } catch (Exception e) {
- DartCore.logError("Error while parsing pub cache list", e);
+ HashMap<String, Object> object = readPackageInfo();
+ if (object != null) {
+ synchronized (pubUsedPackages) {
+ pubCachePackages = object;
}
-
if (packages == null) {
initializeList();
if (!pubUsedPackages.isEmpty()) {
@@ -76,9 +67,8 @@
PubManager.getInstance().notifyListeners(added);
}
}
- } else {
- DartCore.logError(message);
}
+
return Status.OK_STATUS;
}
@@ -88,6 +78,10 @@
* A map to store the list of the installed packages and their locations, synchronize on
* pubUsedPackages
*/
+ // {action_consolidator=
+ // {0.1.3=
+ // {location=/Users/keertip/.pub-cache/hosted/pub.dartlang.org/action_consolidator-0.1.3}},..
+ // }
protected HashMap<String, Object> pubCachePackages = new HashMap<String, Object>();
/**
@@ -105,6 +99,38 @@
// keeps track of packages last updated
private Map<String, String> currentPackages;
+ /**
+ * Return information about all the cached packages
+ */
+ public HashMap<String, Object> getAllCachePackages() {
+ synchronized (pubUsedPackages) {
+ HashMap<String, Object> copy = new HashMap<String, Object>(pubCachePackages);
+ return copy;
+ }
+ }
+
+ /**
+ * Look in the pub cache list and return the location of package-version or {@code null} if not
+ * found
+ *
+ * @param packageName
+ * @param version
+ */
+ @SuppressWarnings("unchecked")
+ public String getCacheLocation(String packageName, String version) {
+ HashMap<String, Object> map;
+ synchronized (pubUsedPackages) {
+ map = (HashMap<String, Object>) pubCachePackages.get(packageName);
+ }
+ if (map != null && map.keySet().contains(version)) {
+ return ((Map<String, String>) map.get(version)).get(PubspecConstants.LOCATION);
+ }
+ return null;
+ }
+
+ /**
+ * Return information about all the packages currently being used in all open folders
+ */
public HashMap<String, Object> getLocalPackages() {
synchronized (pubUsedPackages) {
HashMap<String, Object> copy = new HashMap<String, Object>(pubUsedPackages);
@@ -112,6 +138,19 @@
}
}
+ /**
+ * Run pub cache list and get the latest information about all cached packages.
+ */
+ public HashMap<String, Object> updateAndGetAllCachePackages() {
+ HashMap<String, Object> map = readPackageInfo();
+ if (map != null) {
+ synchronized (pubUsedPackages) {
+ pubCachePackages = map;
+ }
+ }
+ return getAllCachePackages();
+ }
+
public void updatePackagesList(int delay) {
updatePackagesList(delay, null);
}
@@ -179,7 +218,10 @@
*/
@SuppressWarnings("unchecked")
private Map<String, String> getVersionInfo(String packageName, String version) {
- Map<String, Map<String, String>> object = (Map<String, Map<String, String>>) pubCachePackages.get(packageName);
+ Map<String, Map<String, String>> object;
+ synchronized (pubUsedPackages) {
+ object = (Map<String, Map<String, String>>) pubCachePackages.get(packageName);
+ }
if (object != null) {
Map<String, String> versionInfo = object.get(version);
return versionInfo;
@@ -211,4 +253,22 @@
}
}
+
+ @SuppressWarnings("unchecked")
+ private HashMap<String, Object> readPackageInfo() {
+ String message = getPubCacheList();
+ // no errors
+ if (message.startsWith("{\"packages")) {
+ Map<String, Object> object = null;
+ try {
+ object = PubYamlUtils.parsePubspecYamlToMap(message);
+ } catch (Exception e) {
+ DartCore.logError("Error while parsing pub cache list", e);
+ }
+ return (HashMap<String, Object>) object.get(PubspecConstants.PACKAGES);
+ } else {
+ DartCore.logError(message);
+ }
+ return null;
+ }
}

Powered by Google App Engine
This is Rietveld 408576698