You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/11/13 23:23:43 UTC
[10/18] incubator-brooklyn git commit: Catalog versioning - when no
explicit version use the highest version (preferring non-snapshot)
Catalog versioning - when no explicit version use the highest version (preferring non-snapshot)
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/1a9d0e30
Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/1a9d0e30
Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/1a9d0e30
Branch: refs/heads/master
Commit: 1a9d0e30972c717d30d9bae94613bf8197ab82ba
Parents: 415619a
Author: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Authored: Mon Nov 10 19:39:35 2014 +0200
Committer: Svetoslav Neykov <sv...@cloudsoftcorp.com>
Committed: Thu Nov 13 11:49:52 2014 +0200
----------------------------------------------------------------------
.../catalog/internal/BasicBrooklynCatalog.java | 2 +-
.../catalog/internal/CatalogItemComparator.java | 33 ++++++++++++++++++++
.../internal/CatalogItemVersionComparator.java | 16 ----------
.../src/main/webapp/assets/js/view/catalog.js | 6 ++--
.../rest/resources/CatalogResource.java | 13 +++++---
5 files changed, 44 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1a9d0e30/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
index f74e24c..ed85e76 100644
--- a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
@@ -193,7 +193,7 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
private String getDefaultVersion(String symbolicName) {
Iterable<CatalogItem<Object, Object>> versions = getCatalogItems(CatalogPredicates.symbolicName(Predicates.equalTo(symbolicName)));
- ImmutableSortedSet<CatalogItem<?, ?>> orderedVersions = ImmutableSortedSet.orderedBy(new CatalogItemVersionComparator()).addAll(versions).build();
+ ImmutableSortedSet<CatalogItem<?, ?>> orderedVersions = ImmutableSortedSet.orderedBy(new CatalogItemComparator()).addAll(versions).build();
if (!orderedVersions.isEmpty()) {
return orderedVersions.iterator().next().getVersion();
} else {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1a9d0e30/core/src/main/java/brooklyn/catalog/internal/CatalogItemComparator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogItemComparator.java b/core/src/main/java/brooklyn/catalog/internal/CatalogItemComparator.java
new file mode 100644
index 0000000..f5523e2
--- /dev/null
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogItemComparator.java
@@ -0,0 +1,33 @@
+package brooklyn.catalog.internal;
+
+import java.util.Comparator;
+
+import brooklyn.catalog.CatalogItem;
+import brooklyn.util.text.NaturalOrderComparator;
+
+public class CatalogItemComparator implements Comparator<CatalogItem<?, ?>> {
+ private static final String SNAPSHOT = "SNAPSHOT";
+ private static final Comparator<String> COMPARATOR = new NaturalOrderComparator();
+
+ public static final CatalogItemComparator INSTANCE = new CatalogItemComparator();
+
+ @Override
+ public int compare(CatalogItem<?, ?> o1, CatalogItem<?, ?> o2) {
+ int symbolicNameComparison = o1.getSymbolicName().compareTo(o2.getSymbolicName());
+ if (symbolicNameComparison != 0) {
+ return symbolicNameComparison;
+ } else {
+ String v1 = o1.getVersion().toUpperCase();
+ String v2 = o2.getVersion().toUpperCase();
+ boolean isV1Snapshot = v1.contains(SNAPSHOT);
+ boolean isV2Snapshot = v2.contains(SNAPSHOT);
+ if (isV1Snapshot == isV2Snapshot) {
+ return -COMPARATOR.compare(v1, v2);
+ } else if (isV1Snapshot) {
+ return 1;
+ } else {
+ return -1;
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1a9d0e30/core/src/main/java/brooklyn/catalog/internal/CatalogItemVersionComparator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogItemVersionComparator.java b/core/src/main/java/brooklyn/catalog/internal/CatalogItemVersionComparator.java
deleted file mode 100644
index 3e279a4..0000000
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogItemVersionComparator.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package brooklyn.catalog.internal;
-
-import java.util.Comparator;
-
-import brooklyn.catalog.CatalogItem;
-
-public class CatalogItemVersionComparator implements Comparator<CatalogItem<?, ?>> {
-
- protected CatalogItemVersionComparator() {}
-
- @Override
- public int compare(CatalogItem<?, ?> o1, CatalogItem<?, ?> o2) {
- return -o1.getVersion().compareTo(o2.getVersion());
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1a9d0e30/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
----------------------------------------------------------------------
diff --git a/usage/jsgui/src/main/webapp/assets/js/view/catalog.js b/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
index cf14684..2d6aa8b 100644
--- a/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
+++ b/usage/jsgui/src/main/webapp/assets/js/view/catalog.js
@@ -319,7 +319,6 @@ define([
isChild: isChild,
extraClasses: (activeDetailsView == this.name && model.cid == this.activeCid) ? "active" : ""
}, this.entryTemplateArgs(model));
- console.log(args);
return this.template(args);
},
@@ -376,9 +375,8 @@ define([
var orderedIds = _.uniq(this.collection.map(symbolicNameFn), true);
function getLatestStableVersion(items) {
- //TODO implement more sophisticated "default" version selection
- //Could let the server choose it
- return items[items.length-1];
+ //the server sorts items by descending version, snapshots at the back
+ return items[0];
}
var catalogTree = orderedIds.map(function(symbolicName) {
http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/1a9d0e30/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java
----------------------------------------------------------------------
diff --git a/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java b/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java
index 188825f..ad1324d 100644
--- a/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java
+++ b/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java
@@ -39,6 +39,7 @@ import brooklyn.catalog.CatalogItem;
import brooklyn.catalog.CatalogPredicates;
import brooklyn.catalog.internal.BasicBrooklynCatalog;
import brooklyn.catalog.internal.CatalogDto;
+import brooklyn.catalog.internal.CatalogItemComparator;
import brooklyn.catalog.internal.CatalogUtils;
import brooklyn.entity.Entity;
import brooklyn.entity.proxying.EntitySpec;
@@ -48,7 +49,6 @@ import brooklyn.rest.api.CatalogApi;
import brooklyn.rest.domain.ApiError;
import brooklyn.rest.domain.CatalogEntitySummary;
import brooklyn.rest.domain.CatalogItemSummary;
-import brooklyn.rest.domain.SummaryComparators;
import brooklyn.rest.transform.CatalogTransformer;
import brooklyn.rest.util.WebResourceUtils;
import brooklyn.util.ResourceUtils;
@@ -62,6 +62,8 @@ import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Lists;
import com.google.common.io.Files;
import com.sun.jersey.core.header.FormDataContentDisposition;
@@ -236,10 +238,11 @@ public class CatalogResource extends AbstractBrooklynRestResource implements Cat
if (Strings.isNonEmpty(fragment))
filters.add(CatalogPredicates.xml(StringPredicates.containsLiteralIgnoreCase(fragment)));
- return FluentIterable.from(brooklyn().getCatalog().getCatalogItems())
- .filter(Predicates.and(filters))
- .transform(TO_CATALOG_ITEM_SUMMARY)
- .toSortedList(SummaryComparators.displayNameComparator());
+ ImmutableList<CatalogItem<Object, Object>> sortedItems =
+ FluentIterable.from(brooklyn().getCatalog().getCatalogItems())
+ .filter(Predicates.and(filters))
+ .toSortedList(CatalogItemComparator.INSTANCE);
+ return Lists.transform(sortedItems, TO_CATALOG_ITEM_SUMMARY);
}
@Override