From 4628803752657d43a0e904668ce5aae721c4f678 Mon Sep 17 00:00:00 2001 From: Svetoslav Neykov Date: Thu, 2 Jun 2016 18:30:23 +0300 Subject: [PATCH] Allow snapshot catalog items to be updated --- .../brooklyn/catalog/CatalogYamlVersioningTest.java | 12 ++++++++++++ .../core/catalog/internal/BasicBrooklynCatalog.java | 2 ++ 2 files changed, 14 insertions(+) diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlVersioningTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlVersioningTest.java index 36d3739d4b..e740383c0a 100644 --- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlVersioningTest.java +++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogYamlVersioningTest.java @@ -79,6 +79,18 @@ public void testAddSameVersionFailsWhenIconIsDifferent() { } } + @Test + public void testAddSameSnapshotVersionSucceedsWhenIconIsDifferent() { + String symbolicName = "sampleId"; + String version = "0.1.0-SNAPSHOT"; + addCatalogEntity(symbolicName, version); + String icon = "classpath:/another/icon.png"; + addCatalogEntity(symbolicName, version, BasicEntity.class.getName(), icon); + assertSingleCatalogItem(symbolicName, version); + RegisteredType item = types.get(symbolicName, version); + assertTrue(item.getIconUrl().equals(icon), "Unexpected iconUrl: " + item.getIconUrl()); + } + @Test public void testAddSameVersionForce() { String symbolicName = "sampleId"; diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java index 35879763bc..c4a2a5035d 100644 --- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java +++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java @@ -965,6 +965,8 @@ private CatalogItem addItemDto(CatalogItemDtoAbstract itemDto, boolea * throwing if item cannot be added */ private CatalogItem checkItemAllowedAndIfSoReturnAnyDuplicate(CatalogItem itemDto, boolean allowDuplicates, boolean forceUpdate) { if (forceUpdate) return null; + // Can update same snapshot version - very useful while developing blueprints + if (itemDto.getVersion().contains("SNAPSHOT")) return null; CatalogItemDo existingItem = getCatalogItemDo(itemDto.getSymbolicName(), itemDto.getVersion()); if (existingItem == null) return null; // check if they are equal