You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by dr...@apache.org on 2017/05/08 11:57:29 UTC

[1/3] brooklyn-server git commit: Delete catalog.xml support

Repository: brooklyn-server
Updated Branches:
  refs/heads/master 48933eb6b -> fc575d77b


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogScanTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogScanTest.java b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogScanTest.java
deleted file mode 100644
index f08b771..0000000
--- a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogScanTest.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.core.catalog.internal;
-
-import java.net.URLEncoder;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.api.catalog.BrooklynCatalog;
-import org.apache.brooklyn.api.catalog.CatalogItem;
-import org.apache.brooklyn.api.entity.Application;
-import org.apache.brooklyn.api.entity.EntitySpec;
-import org.apache.brooklyn.core.catalog.CatalogPredicates;
-import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
-import org.apache.brooklyn.core.catalog.internal.MyCatalogItems.MySillyAppTemplate;
-import org.apache.brooklyn.core.entity.Entities;
-import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.core.server.BrooklynServerConfig;
-import org.apache.brooklyn.util.core.ResourceUtils;
-import org.apache.brooklyn.util.net.Urls;
-import org.apache.brooklyn.util.text.Strings;
-
-import com.google.common.base.Predicates;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-
-public class CatalogScanTest {
-
-    private static final Logger log = LoggerFactory.getLogger(CatalogScanTest.class);
-
-    private BrooklynCatalog defaultCatalog, annotsCatalog, fullCatalog;
-    
-    private List<LocalManagementContext> managementContexts = Lists.newCopyOnWriteArrayList();
-
-    @AfterMethod(alwaysRun = true)
-    public void tearDown(){
-        for (LocalManagementContext managementContext : managementContexts) {
-            Entities.destroyAll(managementContext);
-        }
-        managementContexts.clear();
-    }
-    
-    private LocalManagementContext newManagementContext(BrooklynProperties props) {
-        LocalManagementContext result = new LocalManagementContext(props);
-        managementContexts.add(result);
-        return result;
-    }
-    
-    private synchronized void loadFullCatalog() {
-        if (fullCatalog!=null) return;
-        BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
-        props.put(BrooklynServerConfig.BROOKLYN_CATALOG_URL.getName(), 
-                "data:,"+Urls.encode("<catalog><classpath scan=\"types\"/></catalog>"));
-        fullCatalog = newManagementContext(props).getCatalog();        
-        log.info("ENTITIES loaded for FULL: "+fullCatalog.getCatalogItems(Predicates.alwaysTrue()));
-    }
-    
-    private synchronized void loadTheDefaultCatalog(boolean lookOnDiskForDefaultCatalog) {
-        if (defaultCatalog!=null) return;
-        BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
-        props.put(BrooklynServerConfig.BROOKLYN_CATALOG_URL.getName(),
-            // if default catalog is picked up from the system, we might get random stuff from ~/.brooklyn/ instead of the default;
-            // useful as an integration check that we default correctly, but irritating for people to use if they have such a catalog installed
-            (lookOnDiskForDefaultCatalog ? "" :
-                "data:,"+Urls.encode(new ResourceUtils(this).getResourceAsString("classpath:/brooklyn/default.catalog.bom"))));
-        LocalManagementContext managementContext = newManagementContext(props);
-        defaultCatalog = managementContext.getCatalog();        
-        log.info("ENTITIES loaded for DEFAULT: "+defaultCatalog.getCatalogItems(Predicates.alwaysTrue()));
-    }
-    
-    @SuppressWarnings("deprecation")
-    private synchronized void loadAnnotationsOnlyCatalog() {
-        if (annotsCatalog!=null) return;
-        BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
-        props.put(BrooklynServerConfig.BROOKLYN_CATALOG_URL.getName(),
-                "data:,"+URLEncoder.encode("<catalog><classpath scan=\"annotations\"/></catalog>"));
-        LocalManagementContext managementContext = newManagementContext(props);
-        annotsCatalog = managementContext.getCatalog();
-        log.info("ENTITIES loaded with annotation: "+annotsCatalog.getCatalogItems(Predicates.alwaysTrue()));
-    }
-    
-    @Test
-    public void testLoadAnnotations() {
-        loadAnnotationsOnlyCatalog();
-        BrooklynCatalog c = annotsCatalog;
-        
-        Iterable<CatalogItem<Object,Object>> bases = c.getCatalogItems(CatalogPredicates.displayName(Predicates.containsPattern("MyBaseEntity")));
-        Assert.assertEquals(Iterables.size(bases), 0, "should have been empty: "+bases);
-        
-        Iterable<CatalogItem<Object,Object>> asdfjkls = c.getCatalogItems(CatalogPredicates.displayName(Predicates.containsPattern("__asdfjkls__shouldnotbefound")));
-        Assert.assertEquals(Iterables.size(asdfjkls), 0);
-        
-        Iterable<CatalogItem<Object,Object>> silly1 = c.getCatalogItems(CatalogPredicates.displayName(Predicates.equalTo("MySillyAppTemplate")));
-        Iterable<CatalogItem<Object,Object>> silly2 = c.getCatalogItems(CatalogPredicates.javaType(Predicates.equalTo(MySillyAppTemplate.class.getName())));
-        CatalogItem<Object, Object> silly1El = Iterables.getOnlyElement(silly1);
-        Assert.assertEquals(silly1El, Iterables.getOnlyElement(silly2));
-        
-        CatalogItem<Application,EntitySpec<? extends Application>> s1 = c.getCatalogItem(Application.class, silly1El.getSymbolicName(), silly1El.getVersion());
-        Assert.assertEquals(s1, silly1El);
-        
-        Assert.assertEquals(s1.getDescription(), "Some silly app test");
-        
-        Class<?> app = c.peekSpec(s1).getType();
-        Assert.assertEquals(MySillyAppTemplate.class, app);
-        
-        String xml = ((BasicBrooklynCatalog)c).toXmlString();
-        log.info("Catalog is:\n"+xml);
-        Assert.assertTrue(xml.indexOf("Some silly app test") >= 0);
-    }
-
-    @Test
-    public void testAnnotationLoadsSomeApps() {
-        loadAnnotationsOnlyCatalog();
-        Iterable<CatalogItem<Object,Object>> silly1 = annotsCatalog.getCatalogItems(CatalogPredicates.displayName(Predicates.equalTo("MySillyAppTemplate")));
-        Assert.assertEquals(Iterables.getOnlyElement(silly1).getDescription(), "Some silly app test");
-    }
-    
-    @Test
-    public void testAnnotationLoadsSomeAppBuilders() {
-        loadAnnotationsOnlyCatalog();
-        Iterable<CatalogItem<Object,Object>> silly1 = annotsCatalog.getCatalogItems(CatalogPredicates.displayName(Predicates.equalTo("MySillyAppBuilderTemplate")));
-        Assert.assertEquals(Iterables.getOnlyElement(silly1).getDescription(), "Some silly app builder test");
-    }
-    
-    @Test
-    public void testMoreTypesThanAnnotations() {
-        loadAnnotationsOnlyCatalog();
-        loadFullCatalog();
-        
-        int numFromAnnots = Iterables.size(annotsCatalog.getCatalogItems(Predicates.alwaysTrue()));
-        int numFromTypes = Iterables.size(fullCatalog.getCatalogItems(Predicates.alwaysTrue()));
-        
-        Assert.assertTrue(numFromAnnots < numFromTypes, "full="+numFromTypes+" annots="+numFromAnnots);
-    }
-    
-    @Test
-    public void testMoreTypesThanAnnotationsForApps() {
-        loadAnnotationsOnlyCatalog();
-        loadFullCatalog();
-        
-        int numFromAnnots = Iterables.size(annotsCatalog.getCatalogItems(CatalogPredicates.IS_TEMPLATE));
-        int numFromTypes = Iterables.size(fullCatalog.getCatalogItems(CatalogPredicates.IS_TEMPLATE));
-        
-        Assert.assertTrue(numFromAnnots < numFromTypes, "full="+numFromTypes+" annots="+numFromAnnots);
-    }
-    
-    @Test
-    public void testAnnotationIsDefault() {
-        doTestAnnotationIsDefault(false);
-    }
-    
-    // see comment in load method; likely fails if a custom catalog is installed in ~/.brooklyn/
-    @Test(groups="Integration", enabled=false)
-    public void testAnnotationIsDefaultOnDisk() {
-        doTestAnnotationIsDefault(true);
-    }
-
-    private void doTestAnnotationIsDefault(boolean lookOnDiskForDefaultCatalog) {
-        loadTheDefaultCatalog(false);
-        int numInDefault = Iterables.size(defaultCatalog.getCatalogItems(Predicates.alwaysTrue()));
-        
-        loadAnnotationsOnlyCatalog();
-        int numFromAnnots = Iterables.size(annotsCatalog.getCatalogItems(Predicates.alwaysTrue()));
-        
-        Assert.assertEquals(numInDefault, numFromAnnots);
-        Assert.assertTrue(numInDefault>0, "Expected more than 0 entries");
-    }
-
-    // a simple test asserting no errors when listing the real catalog, and listing them for reference
-    // also useful to test variants in a stored catalog to assert they all load
-    // TODO integration tests which build up catalogs assuming other things are installed
-    @Test
-    public void testListCurrentCatalogItems() {
-        LocalManagementContext mgmt = newManagementContext(BrooklynProperties.Factory.newDefault());
-        log.info("ITEMS\n"+Strings.join(mgmt.getCatalog().getCatalogItems(), "\n"));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogItemTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogItemTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogItemTest.java
index 6fbffdd..292d0f4 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogItemTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogItemTest.java
@@ -19,6 +19,7 @@
 package org.apache.brooklyn.core.mgmt.rebind;
 
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
@@ -33,8 +34,8 @@ import org.apache.brooklyn.api.mgmt.ManagementContext;
 import org.apache.brooklyn.api.mgmt.ha.HighAvailabilityMode;
 import org.apache.brooklyn.api.typereg.RegisteredType;
 import org.apache.brooklyn.core.BrooklynFeatureEnablement;
+import org.apache.brooklyn.core.catalog.CatalogPredicates;
 import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
-import org.apache.brooklyn.core.catalog.internal.CatalogDto;
 import org.apache.brooklyn.core.catalog.internal.CatalogEntityItemDto;
 import org.apache.brooklyn.core.catalog.internal.CatalogItemBuilder;
 import org.apache.brooklyn.core.catalog.internal.CatalogLocationItemDto;
@@ -54,11 +55,20 @@ import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
 import com.google.common.base.Joiner;
+import com.google.common.base.Optional;
+import com.google.common.base.Predicates;
 import com.google.common.base.Throwables;
 import com.google.common.collect.Iterables;
 
 public class RebindCatalogItemTest extends RebindTestFixtureWithApp {
 
+    // FIXME Can we delete all of this?
+    // Is testing now sufficiently covered by brooklyn-camp module, such as o.a.b.camp.brooklyn.catalog.CatalogYamlRebindTest?
+    //
+    // This tests at a slightly different level (calling `mgmt.getCatalog().addItem(item)` directly, and
+    // asserting `mgmt.getCatalog().getCatalogItems()` is the same before and after rebind. Therefore
+    // keeping it for now.
+    
     private static final String TEST_VERSION = "0.0.1";
 
     private static final Logger LOG = LoggerFactory.getLogger(RebindCatalogItemTest.class);
@@ -84,7 +94,6 @@ public class RebindCatalogItemTest extends RebindTestFixtureWithApp {
     @Override
     protected LocalManagementContext createOrigManagementContext() {
         BrooklynProperties properties = BrooklynProperties.Factory.newDefault();
-        properties.put(BrooklynServerConfig.BROOKLYN_CATALOG_URL, "classpath://brooklyn/entity/rebind/rebind-catalog-item-test-catalog.xml");
         properties.put(BrooklynServerConfig.CATALOG_LOAD_MODE, org.apache.brooklyn.core.catalog.CatalogLoadMode.LOAD_BROOKLYN_CATALOG_URL);
         return RebindTestUtils.managementContextBuilder(mementoDir, classLoader)
                 .properties(properties)
@@ -96,7 +105,6 @@ public class RebindCatalogItemTest extends RebindTestFixtureWithApp {
     @Override
     protected LocalManagementContext createNewManagementContext(File mementoDir, HighAvailabilityMode haMode, Map<?, ?> additionalProperties) {
         BrooklynProperties properties = BrooklynProperties.Factory.newDefault();
-        properties.put(BrooklynServerConfig.BROOKLYN_CATALOG_URL, "classpath://brooklyn/entity/rebind/rebind-catalog-item-test-catalog.xml");
         return RebindTestUtils.managementContextBuilder(mementoDir, classLoader)
                 .properties(properties)
                 .forLive(useLiveManagementContext())
@@ -106,12 +114,6 @@ public class RebindCatalogItemTest extends RebindTestFixtureWithApp {
     }
 
     @Test
-    public void testPersistsEntityFromCatalogXml() {
-        assertEquals(Iterables.size(origManagementContext.getCatalog().getCatalogItems()), 1);
-        rebindAndAssertCatalogsAreEqual();
-    }
-
-    @Test
     public void testAddAndRebindEntity() throws Exception {
         String symbolicName = "rebind-yaml-catalog-item-test";
         String yaml = Joiner.on("\n").join(
@@ -237,31 +239,71 @@ public class RebindCatalogItemTest extends RebindTestFixtureWithApp {
 
     @Test(invocationCount = 3)
     public void testDeletedCatalogItemIsNotPersisted() {
-        assertEquals(Iterables.size(origManagementContext.getCatalog().getCatalogItems()), 1);
-        CatalogItem<Object, Object> toRemove = Iterables.getOnlyElement(origManagementContext.getCatalog().getCatalogItems());
+        String symbolicName = "rebind-yaml-catalog-item-test";
+        String yaml = Joiner.on("\n").join(
+                "brooklyn.catalog:",
+                "  items:",
+                "  - id: " + symbolicName,
+                "    version: " + TEST_VERSION,
+                "    itemType: entity",
+                "    item:",
+                "      type: io.camp.mock:AppServer");
+        CatalogEntityItemDto item =
+            CatalogItemBuilder.newEntity(symbolicName, TEST_VERSION)
+                .displayName(symbolicName)
+                .plan(yaml)
+                .build();
+        origManagementContext.getCatalog().addItem(item);
+        LOG.info("Added item to catalog: {}, id={}", item, item.getId());
+
         // Must make sure that the original catalogue item is not managed and unmanaged in the same
         // persistence window. Because BrooklynMementoPersisterToObjectStore applies writes/deletes
         // asynchronously the winner is down to a race and the test might pass or fail.
         origManagementContext.getRebindManager().forcePersistNow(false, null);
-        origManagementContext.getCatalog().deleteCatalogItem(toRemove.getSymbolicName(), toRemove.getVersion());
-        assertEquals(Iterables.size(origManagementContext.getCatalog().getCatalogItems()), 0);
+        
+        origManagementContext.getCatalog().deleteCatalogItem(symbolicName, TEST_VERSION);
+        
+        Iterable<CatalogItem<Object, Object>> items = origManagementContext.getCatalog().getCatalogItems();
+        Optional<CatalogItem<Object, Object>> itemPostDelete = Iterables.tryFind(items, CatalogPredicates.symbolicName(Predicates.equalTo(symbolicName)));
+        assertFalse(itemPostDelete.isPresent(), "item="+itemPostDelete);
+        
         rebindAndAssertCatalogsAreEqual();
-        assertEquals(Iterables.size(newManagementContext.getCatalog().getCatalogItems()), 0);
+        
+        Iterable<CatalogItem<Object, Object>> newItems = newManagementContext.getCatalog().getCatalogItems();
+        Optional<CatalogItem<Object, Object>> itemPostRebind = Iterables.tryFind(newItems, CatalogPredicates.symbolicName(Predicates.equalTo(symbolicName)));
+        assertFalse(itemPostRebind.isPresent(), "item="+itemPostRebind);
     }
 
     @Test(invocationCount = 3)
     public void testCanTagCatalogItemAfterRebind() {
+        String symbolicName = "rebind-yaml-catalog-item-test";
+        String yaml = Joiner.on("\n").join(
+                "brooklyn.catalog:",
+                "  items:",
+                "  - id: " + symbolicName,
+                "    version: " + TEST_VERSION,
+                "    itemType: entity",
+                "    item:",
+                "      type: io.camp.mock:AppServer");
+        CatalogEntityItemDto item =
+            CatalogItemBuilder.newEntity(symbolicName, TEST_VERSION)
+                .displayName(symbolicName)
+                .plan(yaml)
+                .build();
+        origManagementContext.getCatalog().addItem(item);
+        LOG.info("Added item to catalog: {}, id={}", item, item.getId());
+
         assertEquals(Iterables.size(origManagementContext.getCatalog().getCatalogItems()), 1);
-        CatalogItem<Object, Object> toTag = Iterables.getOnlyElement(origManagementContext.getCatalog().getCatalogItems());
+        CatalogItem<?,?> origItem = origManagementContext.getCatalog().getCatalogItem(symbolicName, TEST_VERSION);
         final String tag = "tag1";
-        toTag.tags().addTag(tag);
-        assertTrue(toTag.tags().containsTag(tag));
+        origItem.tags().addTag(tag);
+        assertTrue(origItem.tags().containsTag(tag));
 
         rebindAndAssertCatalogsAreEqual();
 
-        toTag = Iterables.getOnlyElement(newManagementContext.getCatalog().getCatalogItems());
-        assertTrue(toTag.tags().containsTag(tag));
-        toTag.tags().removeTag(tag);
+        CatalogItem<?, ?> newItem = newManagementContext.getCatalog().getCatalogItem(symbolicName, TEST_VERSION);
+        assertTrue(newItem.tags().containsTag(tag));
+        newItem.tags().removeTag(tag);
     }
 
     @Test
@@ -285,8 +327,6 @@ public class RebindCatalogItemTest extends RebindTestFixtureWithApp {
                     .plan(yaml)
                     .build();
         catalog.addItem(item);
-        String catalogXml = catalog.toXmlString();
-        catalog.reset(CatalogDto.newDtoFromXmlContents(catalogXml, "Test reset"));
         rebindAndAssertCatalogsAreEqual();
     }
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogWhenCatalogPersistenceDisabledTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogWhenCatalogPersistenceDisabledTest.java b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogWhenCatalogPersistenceDisabledTest.java
index 69940ab..425d520 100644
--- a/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogWhenCatalogPersistenceDisabledTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/mgmt/rebind/RebindCatalogWhenCatalogPersistenceDisabledTest.java
@@ -18,23 +18,26 @@
  */
 package org.apache.brooklyn.core.mgmt.rebind;
 
-import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
 
-import org.apache.brooklyn.api.catalog.CatalogItem;
 import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.core.BrooklynFeatureEnablement;
-import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.server.BrooklynServerConfig;
+import org.apache.brooklyn.core.catalog.internal.CatalogEntityItemDto;
+import org.apache.brooklyn.core.catalog.internal.CatalogItemBuilder;
 import org.apache.brooklyn.core.test.entity.TestEntity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import com.google.common.collect.Iterables;
+import com.google.common.base.Joiner;
 
 public class RebindCatalogWhenCatalogPersistenceDisabledTest extends RebindTestFixtureWithApp {
 
-    private static final String TEST_CATALOG = "classpath://brooklyn/entity/rebind/rebind-catalog-item-test-catalog.xml";
+    private static final Logger LOG = LoggerFactory.getLogger(RebindCatalogWhenCatalogPersistenceDisabledTest.class);
+
     private boolean catalogPersistenceWasPreviouslyEnabled;
 
     @BeforeMethod(alwaysRun = true)
@@ -53,24 +56,30 @@ public class RebindCatalogWhenCatalogPersistenceDisabledTest extends RebindTestF
         BrooklynFeatureEnablement.setEnablement(BrooklynFeatureEnablement.FEATURE_CATALOG_PERSISTENCE_PROPERTY, catalogPersistenceWasPreviouslyEnabled);
     }
 
-    @Override
-    protected BrooklynProperties createBrooklynProperties() {
-        BrooklynProperties properties = super.createBrooklynProperties();
-        properties.put(BrooklynServerConfig.BROOKLYN_CATALOG_URL, TEST_CATALOG);
-        return properties;
-    }
-
     @Test
     public void testModificationsToCatalogAreNotPersistedWhenCatalogPersistenceFeatureIsDisabled() throws Exception {
-        assertEquals(Iterables.size(origManagementContext.getCatalog().getCatalogItems()), 1);
-        CatalogItem<Object, Object> toRemove = Iterables.getOnlyElement(origManagementContext.getCatalog().getCatalogItems());
-        origManagementContext.getCatalog().deleteCatalogItem(toRemove.getSymbolicName(), toRemove.getVersion());
-        assertEquals(Iterables.size(origManagementContext.getCatalog().getCatalogItems()), 0);
+        String symbolicName = "rebind-yaml-catalog-item-test";
+        String version = "1.2.3";
+        String yaml = Joiner.on("\n").join(
+                "brooklyn.catalog:",
+                "  items:",
+                "  - id: " + symbolicName,
+                "    version: " + version,
+                "    itemType: entity",
+                "    item:",
+                "      type: io.camp.mock:AppServer");
+        CatalogEntityItemDto item =
+            CatalogItemBuilder.newEntity(symbolicName, version)
+                .displayName(symbolicName)
+                .plan(yaml)
+                .build();
+        origManagementContext.getCatalog().addItem(item);
+        LOG.info("Added item to catalog: {}, id={}", item, item.getId());
+
+        assertNotNull(origManagementContext.getCatalog().getCatalogItem(symbolicName, version));
 
         rebind();
 
-        assertEquals(Iterables.size(newManagementContext.getCatalog().getCatalogItems()), 1);
-        assertCatalogItemsEqual(Iterables.getOnlyElement(newManagementContext.getCatalog().getCatalogItems()), toRemove);
+        assertNull(newManagementContext.getCatalog().getCatalogItem(symbolicName, version));
     }
-
 }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/test/java/org/apache/brooklyn/core/test/BrooklynAppLiveTestSupport.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/test/BrooklynAppLiveTestSupport.java b/core/src/test/java/org/apache/brooklyn/core/test/BrooklynAppLiveTestSupport.java
index d48f1bf..2e9fb43 100644
--- a/core/src/test/java/org/apache/brooklyn/core/test/BrooklynAppLiveTestSupport.java
+++ b/core/src/test/java/org/apache/brooklyn/core/test/BrooklynAppLiveTestSupport.java
@@ -27,8 +27,7 @@ import org.testng.annotations.BeforeMethod;
 /**
  * To be extended by live tests.
  * <p>
- * Uses a management context that will not load {@code ~/.brooklyn/catalog.xml} but will
- * read from the default {@code ~/.brooklyn/brooklyn.properties}.
+ * Uses a management context that will read from the default {@code ~/.brooklyn/brooklyn.properties}.
  */
 public class BrooklynAppLiveTestSupport extends BrooklynMgmtUnitTestSupport {
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/test/resources/brooklyn/catalog/internal/osgi-catalog.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/brooklyn/catalog/internal/osgi-catalog.xml b/core/src/test/resources/brooklyn/catalog/internal/osgi-catalog.xml
deleted file mode 100644
index 651dfc5..0000000
--- a/core/src/test/resources/brooklyn/catalog/internal/osgi-catalog.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-    
-     http://www.apache.org/licenses/LICENSE-2.0
-    
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
-
-<catalog>
-    <name>OSGi catalogue</name>
-
-    <template name="Entity name" version="9.1.3" type="com.example.ExampleApp">
-        <description>An example application</description>
-        <libraries>
-            <bundle><url>file://path/to/bundle.jar</url></bundle>
-            <bundle><url>http://www.url.com/for/bundle.jar</url></bundle>
-        </libraries>
-    </template>
-</catalog>

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/test/resources/brooklyn/entity/rebind/rebind-catalog-item-test-catalog.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/brooklyn/entity/rebind/rebind-catalog-item-test-catalog.xml b/core/src/test/resources/brooklyn/entity/rebind/rebind-catalog-item-test-catalog.xml
deleted file mode 100644
index 6208f45..0000000
--- a/core/src/test/resources/brooklyn/entity/rebind/rebind-catalog-item-test-catalog.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
-<catalog>
-    <name>Rebind catalog item test</name>
-
-    <template name="Entity name" version="9.1.3" type="com.example.ExampleApp">
-        <description>An example application</description>
-        <iconUrl>http://www.example.com/icon.jpg</iconUrl>
-    </template>
-
-</catalog>

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/CatalogApi.java
----------------------------------------------------------------------
diff --git a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/CatalogApi.java b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/CatalogApi.java
index dbdc847..a891a18 100644
--- a/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/CatalogApi.java
+++ b/rest/rest-api/src/main/java/org/apache/brooklyn/rest/api/CatalogApi.java
@@ -129,17 +129,6 @@ public interface CatalogApi {
                     required = true)
                     byte[] item);
     
-    @POST
-    @Consumes(MediaType.APPLICATION_XML)
-    @Path("/reset")
-    @ApiOperation(value = "Resets the catalog to the given (XML) format")
-    public Response resetXml(
-            @ApiParam(name = "xml", value = "XML descriptor of the entire catalog to install", required = true)
-            @Valid String xml,
-            @ApiParam(name ="ignoreErrors", value ="Don't fail on invalid bundles, log the errors only")
-            @QueryParam("ignoreErrors")  @DefaultValue("false")
-            boolean ignoreErrors);
-
     @DELETE
     @Path("/applications/{symbolicName}/{version}")
     @ApiOperation(

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/CatalogResource.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/CatalogResource.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/CatalogResource.java
index e03bd41..0c487e8 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/CatalogResource.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/CatalogResource.java
@@ -49,7 +49,6 @@ import org.apache.brooklyn.api.policy.PolicySpec;
 import org.apache.brooklyn.api.typereg.RegisteredType;
 import org.apache.brooklyn.core.catalog.CatalogPredicates;
 import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
-import org.apache.brooklyn.core.catalog.internal.CatalogDto;
 import org.apache.brooklyn.core.catalog.internal.CatalogItemComparator;
 import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
 import org.apache.brooklyn.core.mgmt.entitlement.Entitlements;
@@ -58,14 +57,12 @@ import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
 import org.apache.brooklyn.core.typereg.BasicManagedBundle;
 import org.apache.brooklyn.core.typereg.RegisteredTypePredicates;
 import org.apache.brooklyn.rest.api.CatalogApi;
-import org.apache.brooklyn.rest.domain.ApiError;
 import org.apache.brooklyn.rest.domain.CatalogEntitySummary;
 import org.apache.brooklyn.rest.domain.CatalogItemSummary;
 import org.apache.brooklyn.rest.domain.CatalogLocationSummary;
 import org.apache.brooklyn.rest.domain.CatalogPolicySummary;
 import org.apache.brooklyn.rest.filter.HaHotStateRequired;
 import org.apache.brooklyn.rest.transform.CatalogTransformer;
-import org.apache.brooklyn.rest.util.DefaultExceptionMapper;
 import org.apache.brooklyn.rest.util.WebResourceUtils;
 import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.collections.MutableMap;
@@ -270,19 +267,6 @@ public class CatalogResource extends AbstractBrooklynRestResource implements Cat
         }
         return Response.status(Status.CREATED).entity(result).build();
     }
-    
-    @SuppressWarnings("deprecation")
-    @Override
-    public Response resetXml(String xml, boolean ignoreErrors) {
-        if (!Entitlements.isEntitled(mgmt().getEntitlementManager(), Entitlements.MODIFY_CATALOG_ITEM, null) ||
-            !Entitlements.isEntitled(mgmt().getEntitlementManager(), Entitlements.ADD_CATALOG_ITEM, null)) {
-            throw WebResourceUtils.forbidden("User '%s' is not authorized to modify catalog",
-                Entitlements.getEntitlementContext().user());
-        }
-
-        ((BasicBrooklynCatalog)mgmt().getCatalog()).reset(CatalogDto.newDtoFromXmlContents(xml, "REST reset"), !ignoreErrors);
-        return Response.ok().build();
-    }
 
     @Override
     public void deleteApplication(String symbolicName, String version) throws Exception {
@@ -459,9 +443,9 @@ public class CatalogResource extends AbstractBrooklynRestResource implements Cat
         List filters = new ArrayList();
         filters.add(type);
         if (Strings.isNonEmpty(regex))
-            filters.add(CatalogPredicates.xml(StringPredicates.containsRegex(regex)));
+            filters.add(CatalogPredicates.stringRepresentationMatches(StringPredicates.containsRegex(regex)));
         if (Strings.isNonEmpty(fragment))
-            filters.add(CatalogPredicates.xml(StringPredicates.containsLiteralIgnoreCase(fragment)));
+            filters.add(CatalogPredicates.stringRepresentationMatches(StringPredicates.containsLiteralIgnoreCase(fragment)));
         if (!allVersions)
             filters.add(CatalogPredicates.isBestVersion(mgmt()));
         
@@ -567,4 +551,4 @@ public class CatalogResource extends AbstractBrooklynRestResource implements Cat
         return result;
     }
 }
- 
\ No newline at end of file
+ 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java b/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java
deleted file mode 100644
index 55e536c..0000000
--- a/rest/rest-resources/src/test/java/org/apache/brooklyn/rest/resources/CatalogResetTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.rest.resources;
-
-import static org.testng.Assert.assertNotNull;
-
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.api.catalog.BrooklynCatalog;
-import org.apache.brooklyn.api.typereg.BrooklynTypeRegistry;
-import org.apache.brooklyn.test.http.TestHttpRequestHandler;
-import org.apache.brooklyn.test.http.TestHttpServer;
-import org.apache.brooklyn.rest.testing.BrooklynRestResourceTest;
-import org.apache.brooklyn.util.core.ResourceUtils;
-import org.apache.brooklyn.util.http.HttpTool;
-import static org.testng.Assert.assertEquals;
-
-@Test( // by using a different suite name we disallow interleaving other tests between the methods of this test class, which wrecks the test fixtures
-    suiteName = "CatalogResetTest")
-public class CatalogResetTest extends BrooklynRestResourceTest {
-
-    private TestHttpServer server;
-    private String serverUrl;
-
-    @BeforeClass(alwaysRun=true)
-    public void setUp() throws Exception {
-        server = new TestHttpServer()
-            .handler("/404", new TestHttpRequestHandler().code(Response.Status.NOT_FOUND.getStatusCode()).response("Not Found"))
-            .handler("/200", new TestHttpRequestHandler().response("OK"))
-            .start();
-        serverUrl = server.getUrl();
-    }
-
-    @Override
-    protected boolean useLocalScannedCatalog() {
-        return true;
-    }
-
-    @AfterClass(alwaysRun=true)
-    public void tearDown() throws Exception {
-        if (server != null)
-            server.stop();
-    }
-
-    @Test
-    public void testConnectionError() throws Exception {
-        Response response = reset("http://0.0.0.0/can-not-connect", false);
-        assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
-    }
-
-    @Test
-    public void testConnectionErrorIgnore() throws Exception {
-        reset("http://0.0.0.0/can-not-connect", true);
-    }
-
-    @Test
-    public void testResourceMissingError() throws Exception {
-        Response response = reset(serverUrl + "/404", false);
-        assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
-    }
-
-    @Test
-    public void testResourceMissingIgnore() throws Exception {
-        reset(serverUrl + "/404", true);
-    }
-
-    @Test
-    public void testResourceInvalidError() throws Exception {
-        Response response = reset(serverUrl + "/200", false);
-        assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatus());
-    }
-
-    @Test
-    public void testResourceInvalidIgnore() throws Exception {
-        reset(serverUrl + "/200", true);
-    }
-
-    private Response reset(String bundleLocation, boolean ignoreErrors) throws Exception {
-        String xml = ResourceUtils.create(this).getResourceAsString("classpath://reset-catalog.xml");
-        Response response = client().path("/catalog/reset")
-            .query("ignoreErrors", Boolean.toString(ignoreErrors))
-            .header("Content-type", MediaType.APPLICATION_XML)
-            .post(xml.replace("${bundle-location}", bundleLocation));
-
-        //if above succeeds assert catalog contents
-        if (HttpTool.isStatusCodeHealthy(response.getStatus()))
-            assertItems();
-        
-        return response;
-    }
-    
-    private void assertItems() {
-        BrooklynTypeRegistry types = getManagementContext().getTypeRegistry();
-        assertNotNull(types.get("org.apache.brooklyn.entity.stock.BasicApplication", BrooklynCatalog.DEFAULT_VERSION));
-        assertNotNull(types.get("org.apache.brooklyn.test.osgi.entities.SimpleApplication", BrooklynCatalog.DEFAULT_VERSION));
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/rest/rest-resources/src/test/resources/reset-catalog.xml
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/test/resources/reset-catalog.xml b/rest/rest-resources/src/test/resources/reset-catalog.xml
deleted file mode 100644
index adef40a..0000000
--- a/rest/rest-resources/src/test/resources/reset-catalog.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-    
-     http://www.apache.org/licenses/LICENSE-2.0
-    
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
-<catalog>
-    <name>Brooklyn Demos</name>
-
-    <template type="org.apache.brooklyn.entity.stock.BasicApplication" name="Basic application" />
-    <template type="org.apache.brooklyn.test.osgi.entities.SimpleApplication" name="Simple OSGi application">
-        <libraries>
-            <bundle>${bundle-location}</bundle>
-        </libraries>
-    </template>
-    <catalog>
-        <name>Nested catalog</name>
-        <template type="org.apache.brooklyn.test.osgi.entities.SimpleApplication" name="Simple OSGi application">
-            <libraries>
-                <bundle>${bundle-location}</bundle>
-            </libraries>
-        </template>
-    </catalog>
-</catalog>

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNode.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNode.java b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNode.java
index de251d4..3df2b26 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNode.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNode.java
@@ -169,25 +169,6 @@ public interface BrooklynNode extends SoftwareProcess, UsesJava {
     public static final ConfigKey<String> BROOKLYN_LOCAL_PROPERTIES_CONTENTS = ConfigKeys.newStringConfigKey(
             "brooklynnode.brooklynproperties.local.contents", "Contents for the launch-specific brooklyn properties file", null);
     
-    // For use in testing primarily
-    /** @deprecated since 0.7.0; instead set the catalog initial bom */
-    @Deprecated
-    @SetFromFlag("brooklynCatalogRemotePath")
-    public static final ConfigKey<String> BROOKLYN_CATALOG_REMOTE_PATH = ConfigKeys.newStringConfigKey(
-            "brooklynnode.brooklyncatalog.remotepath", "Remote path for the brooklyn catalog.xml file to be uploaded", "${HOME}/.brooklyn/catalog.xml");
-    
-    /** @deprecated since 0.7.0; instead use {@link #BROOKLYN_CATALOG_INITIAL_BOM_URI} */
-    @Deprecated
-    @SetFromFlag("brooklynCatalogUri")
-    public static final ConfigKey<String> BROOKLYN_CATALOG_URI = ConfigKeys.newStringConfigKey(
-            "brooklynnode.brooklyncatalog.uri", "URI for the brooklyn catalog.xml file (uploaded to ~/.brooklyn/catalog.xml)", null);
-
-    /** @deprecated since 0.7.0; instead use {@link #BROOKLYN_CATALOG_INITIAL_BOM_CONTENTS} */
-    @Deprecated
-    @SetFromFlag("brooklynCatalogContents")
-    public static final ConfigKey<String> BROOKLYN_CATALOG_CONTENTS = ConfigKeys.newStringConfigKey(
-            "brooklynnode.brooklyncatalog.contents", "Contents for the brooklyn catalog.xml file (uploaded to ~/.brooklyn/catalog.xml)", null);
-
     public static final ConfigKey<String> BROOKLYN_CATALOG_INITIAL_BOM_REMOTE_PATH = ConfigKeys.newStringConfigKey(
             "brooklynnode.catalog.initial.bom.remotepath", 
             "Remote path for the launch-specific initial catalog file to be uploaded", 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeSshDriver.java
----------------------------------------------------------------------
diff --git a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeSshDriver.java b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeSshDriver.java
index c112488..a0f92aa 100644
--- a/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeSshDriver.java
+++ b/software/base/src/main/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeSshDriver.java
@@ -191,10 +191,6 @@ public class BrooklynNodeSshDriver extends JavaSoftwareProcessSshDriver implemen
         String brooklynLocalPropertiesContents = entity.getConfig(BrooklynNode.BROOKLYN_LOCAL_PROPERTIES_CONTENTS);
         String brooklynLocalPropertiesUri = entity.getConfig(BrooklynNode.BROOKLYN_LOCAL_PROPERTIES_URI);
 
-        String brooklynCatalogRemotePath = entity.getConfig(BrooklynNode.BROOKLYN_CATALOG_REMOTE_PATH);
-        String brooklynCatalogContents = entity.getConfig(BrooklynNode.BROOKLYN_CATALOG_CONTENTS);
-        String brooklynCatalogUri = entity.getConfig(BrooklynNode.BROOKLYN_CATALOG_URI);
-
         String brooklynCatalogInitialBomRemotePath = processTemplateContents(entity.getConfig(BrooklynNode.BROOKLYN_CATALOG_INITIAL_BOM_REMOTE_PATH));
         String brooklynCatalogInitialBomUri = entity.getConfig(BrooklynNode.BROOKLYN_CATALOG_INITIAL_BOM_URI);
         String brooklynCatalogInitialBomContents = entity.getConfig(BrooklynNode.BROOKLYN_CATALOG_INITIAL_BOM_CONTENTS);
@@ -236,16 +232,6 @@ public class BrooklynNodeSshDriver extends JavaSoftwareProcessSshDriver implemen
             uploadFileContents(brooklynCatalogInitialBomContents, brooklynCatalogInitialBomUri, brooklynCatalogInitialBomRemotePath);
         }
 
-        // Override the ~/.brooklyn/catalog.xml if required
-        if (brooklynCatalogContents != null || brooklynCatalogUri != null) {
-            log.warn("Deprecated (since 0.7.0) use of config"
-                    + (brooklynCatalogContents != null ? " [" + BrooklynNode.BROOKLYN_CATALOG_CONTENTS.getName() + "]" : "")
-                    + (brooklynCatalogUri != null ? " [" + BrooklynNode.BROOKLYN_CATALOG_URI.getName() + "]" : "")
-                    + "; instead use "+BrooklynNode.BROOKLYN_CATALOG_INITIAL_BOM_URI.getName()
-                    + " or "+BrooklynNode.BROOKLYN_CATALOG_INITIAL_BOM_CONTENTS.getName());
-            uploadFileContents(brooklynCatalogContents, brooklynCatalogUri, brooklynCatalogRemotePath);
-        }
-
         // Copy additional resources to the server
         for (Map.Entry<String,String> entry : getEntity().getAttribute(BrooklynNode.COPY_TO_RUNDIR).entrySet()) {
             Map<String, String> substitutions = ImmutableMap.of("RUN", getRunDir());

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
----------------------------------------------------------------------
diff --git a/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java b/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
index 540981b..7f2e6ed 100644
--- a/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
+++ b/software/base/src/test/java/org/apache/brooklyn/entity/brooklynnode/BrooklynNodeIntegrationTest.java
@@ -220,30 +220,6 @@ services:
     }
 
     @Test(groups={"Integration", "Broken"})
-    public void testSetsBrooklynCatalogFromContents() throws Exception {
-        BrooklynNode brooklynNode = app.createAndManageChild(newBrooklynNodeSpecForTest()
-                .configure(BrooklynNode.BROOKLYN_CATALOG_REMOTE_PATH, pseudoBrooklynCatalogFile.getAbsolutePath())
-                .configure(BrooklynNode.BROOKLYN_CATALOG_CONTENTS, "<catalog/>"));
-        app.start(locs);
-        log.info("started "+app+" containing "+brooklynNode+" for "+JavaClassNames.niceClassAndMethod());
-
-        assertEquals(Files.readLines(pseudoBrooklynCatalogFile, Charsets.UTF_8), ImmutableList.of("<catalog/>"));
-    }
-
-    @Test(groups={"Integration", "Broken"})
-    public void testSetsBrooklynCatalogFromUri() throws Exception {
-        Files.write("abc=def", brooklynCatalogSourceFile, Charsets.UTF_8);
-
-        BrooklynNode brooklynNode = app.createAndManageChild(newBrooklynNodeSpecForTest()
-                .configure(BrooklynNode.BROOKLYN_CATALOG_REMOTE_PATH, pseudoBrooklynCatalogFile.getAbsolutePath())
-                .configure(BrooklynNode.BROOKLYN_CATALOG_URI, brooklynCatalogSourceFile.toURI().toString()));
-        app.start(locs);
-        log.info("started "+app+" containing "+brooklynNode+" for "+JavaClassNames.niceClassAndMethod());
-
-        assertEquals(Files.readLines(pseudoBrooklynCatalogFile, Charsets.UTF_8), ImmutableList.of("abc=def"));
-    }
-
-    @Test(groups={"Integration", "Broken"})
     public void testSetsBrooklynCatalogInitialBomFromContents() throws Exception {
         runBrooklynCatalogInitialBom(false);
     }


[2/3] brooklyn-server git commit: Delete catalog.xml support

Posted by dr...@apache.org.
Delete catalog.xml support


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/e0feddb7
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/e0feddb7
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/e0feddb7

Branch: refs/heads/master
Commit: e0feddb7f0aaa43baed6d6be29325be97ec24f16
Parents: a32cdd6
Author: Aled Sage <al...@gmail.com>
Authored: Mon Mar 20 13:15:22 2017 +0000
Committer: Aled Sage <al...@gmail.com>
Committed: Fri May 5 11:16:26 2017 +0100

----------------------------------------------------------------------
 .../brooklyn/api/catalog/CatalogItem.java       |   2 -
 .../catalog/AbstractCatalogXmlTest.java         | 108 ----------
 .../camp/brooklyn/catalog/CatalogScanTest.java  | 198 ++++++++++++++++++
 .../brooklyn/catalog/CatalogXmlOsgiTest.java    |  37 ----
 .../brooklyn/catalog/CatalogXmlVersionTest.java |  57 ------
 .../brooklyn/test/lite/CampYamlLiteTest.java    |  24 ---
 .../src/test/resources/osgi-catalog.xml         |  29 ---
 .../src/test/resources/simple-catalog.xml       |  47 -----
 .../core/catalog/CatalogPredicates.java         |  63 +++++-
 .../catalog/internal/BasicBrooklynCatalog.java  |  12 --
 .../internal/CatalogBundleConverter.java        |  63 ------
 .../catalog/internal/CatalogClasspathDo.java    |   5 +-
 .../core/catalog/internal/CatalogDo.java        |  14 --
 .../core/catalog/internal/CatalogDto.java       |  90 +--------
 .../core/catalog/internal/CatalogDtoUtils.java  |  66 ------
 .../catalog/internal/CatalogInitialization.java |  87 ++------
 .../core/catalog/internal/CatalogItemDo.java    |   5 -
 .../internal/CatalogItemDtoAbstract.java        |  18 --
 .../catalog/internal/CatalogXmlSerializer.java  |  77 -------
 .../internal/JavaCatalogToSpecTransformer.java  |   9 +-
 .../core/server/BrooklynServerConfig.java       |   2 +-
 .../main/resources/brooklyn-catalog-empty.xml   |  20 --
 .../core/catalog/internal/CatalogDtoTest.java   |  36 +---
 .../core/catalog/internal/CatalogLoadTest.java  |  79 --------
 .../core/catalog/internal/CatalogScanTest.java  | 199 -------------------
 .../core/mgmt/rebind/RebindCatalogItemTest.java |  84 ++++++--
 ...talogWhenCatalogPersistenceDisabledTest.java |  49 +++--
 .../core/test/BrooklynAppLiveTestSupport.java   |   3 +-
 .../brooklyn/catalog/internal/osgi-catalog.xml  |  31 ---
 .../rebind/rebind-catalog-item-test-catalog.xml |  28 ---
 .../apache/brooklyn/rest/api/CatalogApi.java    |  11 -
 .../rest/resources/CatalogResource.java         |  22 +-
 .../rest/resources/CatalogResetTest.java        | 118 -----------
 .../src/test/resources/reset-catalog.xml        |  37 ----
 .../entity/brooklynnode/BrooklynNode.java       |  19 --
 .../brooklynnode/BrooklynNodeSshDriver.java     |  14 --
 .../BrooklynNodeIntegrationTest.java            |  24 ---
 37 files changed, 389 insertions(+), 1398 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/api/src/main/java/org/apache/brooklyn/api/catalog/CatalogItem.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/brooklyn/api/catalog/CatalogItem.java b/api/src/main/java/org/apache/brooklyn/api/catalog/CatalogItem.java
index 6f27af7..83159ba 100644
--- a/api/src/main/java/org/apache/brooklyn/api/catalog/CatalogItem.java
+++ b/api/src/main/java/org/apache/brooklyn/api/catalog/CatalogItem.java
@@ -128,8 +128,6 @@ public interface CatalogItem<T,SpecT> extends BrooklynObject, Rebindable {
 
     public Collection<CatalogBundle> getLibraries();
 
-    public String toXmlString();
-
     /** @return The underlying YAML for this item, if known; 
      * currently including `services:` or `brooklyn.policies:` prefix (but this will likely be removed) */
     @Nullable public String getPlanYaml();

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/AbstractCatalogXmlTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/AbstractCatalogXmlTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/AbstractCatalogXmlTest.java
deleted file mode 100644
index f93a77d..0000000
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/AbstractCatalogXmlTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.camp.brooklyn.catalog;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.apache.brooklyn.camp.brooklyn.AbstractYamlTest;
-import org.apache.brooklyn.core.internal.BrooklynProperties;
-import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
-import org.apache.brooklyn.util.osgi.OsgiTestResources;
-import org.apache.brooklyn.core.server.BrooklynServerConfig;
-import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
-import org.apache.brooklyn.test.support.TestResourceUnavailableException;
-import org.apache.brooklyn.util.core.ResourceUtils;
-import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.apache.brooklyn.util.os.Os;
-import org.apache.brooklyn.util.stream.ReaderInputStream;
-import org.apache.brooklyn.util.stream.Streams;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.StringReader;
-
-import com.google.common.io.ByteStreams;
-
-public class AbstractCatalogXmlTest extends AbstractYamlTest {
-    
-    private String catalogUrl;
-    
-    public AbstractCatalogXmlTest(String catalogUrl) {
-        this.catalogUrl = catalogUrl;
-    }
-    
-    @Override
-    protected LocalManagementContext newTestManagementContext() {
-        ResourceUtils ru = new ResourceUtils(this);
-        File jar = createJar(ru);
-        File catalog = createCatalog(ru, jar);
-
-        BrooklynProperties properties = BrooklynProperties.Factory.newEmpty();
-        properties.put(BrooklynServerConfig.BROOKLYN_CATALOG_URL, catalog.toURI().toString());
-        return LocalManagementContextForTests.builder(true)
-                .useProperties(properties)
-                .enableOsgiReusable()
-                .build();
-    }
-
-    protected Entity startApp(String type) throws Exception {
-        String yaml = "name: simple-app-yaml\n" +
-                "location: localhost\n" +
-                "services: \n" +
-                "  - type: " + type;
-        return createAndStartApplication(yaml);
-    }
-
-    private File createCatalog(ResourceUtils ru, File tmpJar) {
-        String catalogTemplate = ru.getResourceAsString(catalogUrl);
-        String catalog = catalogTemplate.replace("${osgi-entities-path}", tmpJar.toURI().toString());
-        File catalogTmp = Os.newTempFile("simple-catalog-", ".xml");
-        copy(catalog, catalogTmp);
-        return catalogTmp;
-    }
-
-    private File createJar(ResourceUtils ru) {
-        TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_PATH);
-        File tmpJar = Os.newTempFile("osgi-entities-", ".jar");
-        InputStream in = ru.getResourceFromUrl("classpath://" + OsgiTestResources.BROOKLYN_TEST_OSGI_ENTITIES_PATH);
-        copy(in, tmpJar);
-        return tmpJar;
-    }
-
-    private void copy(String src, File dst) {
-        try {
-            copy(new ReaderInputStream(new StringReader(src), "UTF-8"), dst);
-        } catch (Exception e) {
-            throw Exceptions.propagate(e);
-        }
-    }
-
-    private void copy(InputStream in, File tmpJar) {
-        try {
-            OutputStream out = new FileOutputStream(tmpJar);
-            ByteStreams.copy(in, out);
-            Streams.closeQuietly(in);
-            Streams.closeQuietly(out);
-        } catch (Exception e) {
-            throw Exceptions.propagate(e);
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogScanTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogScanTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogScanTest.java
new file mode 100644
index 0000000..f7dd66b
--- /dev/null
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogScanTest.java
@@ -0,0 +1,198 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.brooklyn.camp.brooklyn.catalog;
+
+import java.net.URLEncoder;
+import java.util.List;
+
+import org.apache.brooklyn.api.catalog.BrooklynCatalog;
+import org.apache.brooklyn.api.catalog.CatalogItem;
+import org.apache.brooklyn.api.entity.Application;
+import org.apache.brooklyn.api.entity.EntitySpec;
+import org.apache.brooklyn.camp.brooklyn.BrooklynCampPlatformLauncherNoServer;
+import org.apache.brooklyn.core.catalog.CatalogPredicates;
+import org.apache.brooklyn.core.catalog.internal.MyCatalogItems.MySillyAppTemplate;
+import org.apache.brooklyn.core.entity.Entities;
+import org.apache.brooklyn.core.internal.BrooklynProperties;
+import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
+import org.apache.brooklyn.core.server.BrooklynServerConfig;
+import org.apache.brooklyn.core.test.entity.LocalManagementContextForTests;
+import org.apache.brooklyn.util.core.ResourceUtils;
+import org.apache.brooklyn.util.net.Urls;
+import org.apache.brooklyn.util.text.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.Test;
+
+import com.google.common.base.Predicates;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+
+public class CatalogScanTest {
+
+    // TODO setUp/tearDown copied from AbstractYamlTest
+    
+    // Moved from brooklyn-core. When we deleted support for catalog.xml, the scanned catalog
+    // was then only stored in camp format, which meant we needed the camp parser.
+
+    private static final Logger log = LoggerFactory.getLogger(CatalogScanTest.class);
+
+    private BrooklynCatalog defaultCatalog, annotsCatalog, fullCatalog;
+    
+    private List<LocalManagementContext> mgmts = Lists.newCopyOnWriteArrayList();
+    private List<BrooklynCampPlatformLauncherNoServer> launchers = Lists.newCopyOnWriteArrayList();
+
+    /** Override to enable OSGi in the management context for all tests in the class. */
+    protected boolean disableOsgi() {
+        return true;
+    }
+    
+    protected boolean useDefaultProperties() {
+        return false;
+    }
+    
+    @AfterMethod(alwaysRun = true)
+    public void tearDown() throws Exception {
+        for (LocalManagementContext mgmt : mgmts) {
+            Entities.destroyAll(mgmt);
+        }
+        mgmts.clear();
+        
+        for (BrooklynCampPlatformLauncherNoServer launcher : launchers) {
+            launcher.stopServers();
+        }
+        launchers.clear();
+    }
+
+    private LocalManagementContext newManagementContext(BrooklynProperties props) {
+        final LocalManagementContext localMgmt = LocalManagementContextForTests.builder(true)
+                .disableOsgi(disableOsgi())
+                .useProperties(props)
+                .build();
+        mgmts.add(localMgmt);
+        
+        BrooklynCampPlatformLauncherNoServer launcher = new BrooklynCampPlatformLauncherNoServer() {
+            @Override
+            protected LocalManagementContext newMgmtContext() {
+                return localMgmt;
+            }
+        };
+        launchers.add(launcher);
+        launcher.launch();
+        
+        return localMgmt;
+    }
+    
+    private synchronized void loadTheDefaultCatalog(boolean lookOnDiskForDefaultCatalog) {
+        if (defaultCatalog!=null) return;
+        BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
+        props.put(BrooklynServerConfig.BROOKLYN_CATALOG_URL.getName(),
+            // if default catalog is picked up from the system, we might get random stuff from ~/.brooklyn/ instead of the default;
+            // useful as an integration check that we default correctly, but irritating for people to use if they have such a catalog installed
+            (lookOnDiskForDefaultCatalog ? "" :
+                "data:,"+Urls.encode(new ResourceUtils(this).getResourceAsString("classpath:/brooklyn/default.catalog.bom"))));
+        LocalManagementContext mgmt = newManagementContext(props);
+        defaultCatalog = mgmt.getCatalog();
+        log.info("ENTITIES loaded for DEFAULT: "+defaultCatalog.getCatalogItems(Predicates.alwaysTrue()));
+    }
+    
+    @SuppressWarnings("deprecation")
+    private synchronized void loadAnnotationsOnlyCatalog() {
+        if (annotsCatalog!=null) return;
+        BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
+        props.put(BrooklynServerConfig.BROOKLYN_CATALOG_URL.getName(),
+                "data:,"+URLEncoder.encode("brooklyn.catalog: {scanJavaAnnotations: true}"));
+        LocalManagementContext mgmt = newManagementContext(props);
+        annotsCatalog = mgmt.getCatalog();
+        log.info("ENTITIES loaded with annotation: "+annotsCatalog.getCatalogItems(Predicates.alwaysTrue()));
+    }
+    
+    @Test
+    public void testLoadAnnotations() {
+        loadAnnotationsOnlyCatalog();
+        BrooklynCatalog c = annotsCatalog;
+        
+        Iterable<CatalogItem<Object,Object>> bases = c.getCatalogItems(CatalogPredicates.displayName(Predicates.containsPattern("MyBaseEntity")));
+        Assert.assertEquals(Iterables.size(bases), 0, "should have been empty: "+bases);
+        
+        Iterable<CatalogItem<Object,Object>> asdfjkls = c.getCatalogItems(CatalogPredicates.displayName(Predicates.containsPattern("__asdfjkls__shouldnotbefound")));
+        Assert.assertEquals(Iterables.size(asdfjkls), 0);
+        
+        Iterable<CatalogItem<Object,Object>> silly1 = c.getCatalogItems(CatalogPredicates.displayName(Predicates.equalTo("MySillyAppTemplate")));
+        CatalogItem<Object, Object> silly1El = Iterables.getOnlyElement(silly1);
+        
+        CatalogItem<Application,EntitySpec<? extends Application>> s1 = c.getCatalogItem(Application.class, silly1El.getSymbolicName(), silly1El.getVersion());
+        Assert.assertEquals(s1, silly1El);
+        
+        Assert.assertEquals(s1.getDescription(), "Some silly app test");
+        
+        Class<?> app = ((EntitySpec<?>)c.peekSpec(s1)).getImplementation();
+        Assert.assertEquals(app, MySillyAppTemplate.class);
+    }
+
+    @Test
+    public void testAnnotationLoadsSomeApps() {
+        loadAnnotationsOnlyCatalog();
+        Iterable<CatalogItem<Object,Object>> silly1 = annotsCatalog.getCatalogItems(CatalogPredicates.displayName(Predicates.equalTo("MySillyAppTemplate")));
+        Assert.assertEquals(Iterables.getOnlyElement(silly1).getDescription(), "Some silly app test");
+    }
+    
+    @Test
+    public void testAnnotationLoadsSomeAppBuilders() {
+        loadAnnotationsOnlyCatalog();
+        Iterable<CatalogItem<Object,Object>> silly1 = annotsCatalog.getCatalogItems(CatalogPredicates.displayName(Predicates.equalTo("MySillyAppBuilderTemplate")));
+        Assert.assertEquals(Iterables.getOnlyElement(silly1).getDescription(), "Some silly app builder test");
+    }
+    
+    @Test
+    public void testAnnotationIsDefault() {
+        doTestAnnotationIsDefault(false);
+    }
+
+    // see comment in load method; likely fails if a custom catalog is installed in ~/.brooklyn/
+    @Test(groups="Integration", enabled=false)
+    public void testAnnotationIsDefaultOnDisk() {
+        doTestAnnotationIsDefault(true);
+    }
+
+    private void doTestAnnotationIsDefault(boolean lookOnDiskForDefaultCatalog) {
+        loadTheDefaultCatalog(lookOnDiskForDefaultCatalog);
+        Iterable<CatalogItem<Object, Object>> defaults = defaultCatalog.getCatalogItems(Predicates.alwaysTrue());
+        int numInDefault = Iterables.size(defaults);
+        
+        loadAnnotationsOnlyCatalog();
+        Iterable<CatalogItem<Object, Object>> annotatedItems = annotsCatalog.getCatalogItems(Predicates.alwaysTrue());
+        int numFromAnnots = Iterables.size(annotatedItems);
+        
+        Assert.assertEquals(numInDefault, numFromAnnots, "defaults="+defaults+"; annotatedItems="+annotatedItems);
+        Assert.assertTrue(numInDefault>0, "Expected more than 0 entries");
+    }
+
+    // a simple test asserting no errors when listing the real catalog, and listing them for reference
+    // also useful to test variants in a stored catalog to assert they all load
+    // TODO integration tests which build up catalogs assuming other things are installed
+    @Test
+    public void testListCurrentCatalogItems() {
+        LocalManagementContext mgmt = newManagementContext(BrooklynProperties.Factory.newDefault());
+        log.info("ITEMS\n"+Strings.join(mgmt.getCatalog().getCatalogItems(), "\n"));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogXmlOsgiTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogXmlOsgiTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogXmlOsgiTest.java
deleted file mode 100644
index 2161fec..0000000
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogXmlOsgiTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.camp.brooklyn.catalog;
-
-import org.testng.annotations.Test;
-
-public class CatalogXmlOsgiTest extends AbstractCatalogXmlTest {
-
-    public CatalogXmlOsgiTest(String catalogUrl) {
-        super("classpath://osgi-catalog.xml");
-    }
-
-    @Test
-    public void testOsgiItem() throws Exception {
-        startApp("OsgiApp");
-        // previously OSGi libraries were not supported with old-style catalog items;
-        // now they are (2015-10), even though the XML is not supported,
-        // we may use the same type instantiator from CAMP and elsewhere
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogXmlVersionTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogXmlVersionTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogXmlVersionTest.java
deleted file mode 100644
index b47bf76..0000000
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/CatalogXmlVersionTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.camp.brooklyn.catalog;
-
-import static org.testng.Assert.assertTrue;
-
-import org.apache.brooklyn.api.entity.Entity;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class CatalogXmlVersionTest extends AbstractCatalogXmlTest {
-
-    public CatalogXmlVersionTest(String catalogUrl) {
-        super("classpath://simple-catalog.xml");
-    }
-
-    @DataProvider(name = "types")
-    public Object[][] createTypes() {
-        return new Object[][] {
-                {"org.apache.brooklyn.entity.stock.BasicApplication"},
-                {"org.apache.brooklyn.entity.stock.BasicApplication:0.0.0.SNAPSHOT"},
-                {"org.apache.brooklyn.entity.stock.BasicApplication:2.0"},
-                {"BasicApp"}, // test that items with symbolicName not matching the type work
-                {"BasicApp:0.0.0.SNAPSHOT"},
-                {"BasicApp:2.0"},
-                {"org.apache.brooklyn.test.osgi.entities.SimpleApplication"}, //test that classpath is used
-        };
-    }
-
-    @Test(dataProvider = "types")
-    public void testXmlCatalogItem(String type) throws Exception {
-        startApp(type);
-    }
-
-    @Test
-    public void testJavaPrefixDoesNotLoadXMLCatalogItem() throws Exception {
-        Entity entity = startApp("java:org.apache.brooklyn.camp.brooklyn.catalog.TestBasicApp");
-        assertTrue(entity instanceof TestBasicApp, "Entity is not a " + TestBasicApp.class.getName() + ", instead the type is " + entity.getEntityType().getName());
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java
index 1257b3e..68c7fed 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/test/lite/CampYamlLiteTest.java
@@ -191,30 +191,6 @@ public class CampYamlLiteTest {
         assertMgmtHasSampleMyCatalogApp(symbolicName, bundleUrl);
     }
 
-    @SuppressWarnings("deprecation")
-    @Test
-    public void testResetXmlWithCustomEntity() throws IOException {
-        TestResourceUnavailableException.throwIfResourceUnavailable(getClass(), OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_PATH);
-
-        String symbolicName = "my.catalog.app.id";
-        String bundleUrl = OsgiStandaloneTest.BROOKLYN_TEST_OSGI_ENTITIES_URL;
-        String yaml = getSampleMyCatalogAppYaml(symbolicName, bundleUrl);
-
-        LocalManagementContext mgmt2 = LocalManagementContextForTests.newInstanceWithOsgi();
-        try {
-            CampPlatformWithJustBrooklynMgmt platform2 = new CampPlatformWithJustBrooklynMgmt(mgmt2);
-            MockWebPlatform.populate(platform2, TestAppAssemblyInstantiator.class);
-
-            mgmt2.getCatalog().addItems(yaml);
-            String xml = ((BasicBrooklynCatalog) mgmt2.getCatalog()).toXmlString();
-            ((BasicBrooklynCatalog) mgmt.getCatalog()).reset(CatalogDto.newDtoFromXmlContents(xml, "copy of temporary catalog"));
-        } finally {
-            mgmt2.terminate();
-        }
-
-        assertMgmtHasSampleMyCatalogApp(symbolicName, bundleUrl);
-    }
-
     private String getSampleMyCatalogAppYaml(String symbolicName, String bundleUrl) {
         return Joiner.on("\n").join(
                 "brooklyn.catalog:",

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/camp/camp-brooklyn/src/test/resources/osgi-catalog.xml
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/resources/osgi-catalog.xml b/camp/camp-brooklyn/src/test/resources/osgi-catalog.xml
deleted file mode 100644
index 0586f3b..0000000
--- a/camp/camp-brooklyn/src/test/resources/osgi-catalog.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-    
-     http://www.apache.org/licenses/LICENSE-2.0
-    
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
-
-<catalog>
-    <name>OSGi catalogue</name>
-    <template name="Osgi App" type="org.apache.brooklyn.test.osgi.entities.SimpleApplication">
-        <symbolicName>OsgiApp</symbolicName>
-        <libraries>
-            <bundle>${osgi-entities-path}</bundle>
-        </libraries>
-    </template>
-</catalog>

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/camp/camp-brooklyn/src/test/resources/simple-catalog.xml
----------------------------------------------------------------------
diff --git a/camp/camp-brooklyn/src/test/resources/simple-catalog.xml b/camp/camp-brooklyn/src/test/resources/simple-catalog.xml
deleted file mode 100644
index 8b73ffa..0000000
--- a/camp/camp-brooklyn/src/test/resources/simple-catalog.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-    
-     http://www.apache.org/licenses/LICENSE-2.0
-    
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
-
-<catalog>
-    <name>Simple catalogue</name>
-    <template name="Basic App" type="org.apache.brooklyn.entity.stock.BasicApplication" />
-    <template name="Basic App" type="org.apache.brooklyn.entity.stock.BasicApplication" version="2.0" />
-    <template name="Basic App" type="org.apache.brooklyn.entity.stock.BasicApplication">
-        <symbolicName>BasicApp</symbolicName>
-    </template>
-    <template name="Basic App" type="org.apache.brooklyn.entity.stock.BasicApplication" version="2.0">
-        <symbolicName>BasicApp</symbolicName>
-    </template>
-    <template name="Custom App" type="org.apache.brooklyn.entity.stock.BasicApplication">
-        <symbolicName>org.apache.brooklyn.camp.brooklyn.catalog.TestBasicApp</symbolicName>
-        <!-- Tests that "java:" prefix won't load an old-style catalog item with the same id -->
-    </template>
-    <template name="Osgi App" type="org.apache.brooklyn.test.osgi.entities.SimpleApplication">
-        <symbolicName>OsgiApp</symbolicName>
-        <libraries>
-            <bundle>${osgi-entities-path}</bundle>
-        </libraries>
-    </template>
-    <catalog>
-        <template name="Simple App" type="org.apache.brooklyn.test.osgi.entities.SimpleApplication" />
-        <classpath>
-            <entry>${osgi-entities-path}</entry>
-        </classpath>
-    </catalog>
-</catalog>

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/CatalogPredicates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/CatalogPredicates.java b/core/src/main/java/org/apache/brooklyn/core/catalog/CatalogPredicates.java
index 576aa6b..6232c77 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/CatalogPredicates.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/CatalogPredicates.java
@@ -18,6 +18,10 @@
  */
 package org.apache.brooklyn.core.catalog;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.io.StringWriter;
+
 import javax.annotation.Nullable;
 
 import org.apache.brooklyn.api.catalog.CatalogItem;
@@ -28,16 +32,25 @@ import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.api.location.Location;
 import org.apache.brooklyn.api.location.LocationSpec;
 import org.apache.brooklyn.api.mgmt.ManagementContext;
+import org.apache.brooklyn.api.mgmt.rebind.mementos.Memento;
 import org.apache.brooklyn.api.policy.Policy;
 import org.apache.brooklyn.api.policy.PolicySpec;
 import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
 import org.apache.brooklyn.core.mgmt.entitlement.Entitlements;
+import org.apache.brooklyn.core.mgmt.persist.XmlMementoSerializer;
+import org.apache.brooklyn.core.mgmt.rebind.dto.MementosGenerators;
+import org.apache.brooklyn.util.exceptions.Exceptions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
+import com.google.common.collect.ImmutableMap;
 
 public class CatalogPredicates {
 
+    private static final Logger LOG = LoggerFactory.getLogger(CatalogPredicates.class);
+
     public static <T,SpecT> Predicate<CatalogItem<T,SpecT>> isCatalogItemType(final CatalogItemType ciType) {
         // TODO PERSISTENCE WORKAROUND kept anonymous function in case referenced in persisted state
         new Predicate<CatalogItem<T,SpecT>>() {
@@ -261,29 +274,69 @@ public class CatalogPredicates {
         }
     }
 
-    public static <T,SpecT> Predicate<CatalogItem<T,SpecT>> xml(final Predicate<? super String> filter) {
+    public static <T,SpecT> Predicate<CatalogItem<T,SpecT>> stringRepresentationMatches(final Predicate<? super String> filter) {
+        // TODO Previously the impl relied on catalogItem.toXmlString() to get a string 
+        // representation, which the filter could then be applied to. We've deleted that
+        // (as part of deleting support for ~/.brooklyn/catalog.xml, which was deprecated
+        // back in 0.7.0).
+        // Now we piggy-back off the persistence serialization. However, we really don't
+        // want to let users rely on that! We'll presumably swap out the string representation
+        // at some point in the future.
+        return new StringRepresentationMatches<>(checkNotNull(filter, "filter"));
+    }
+    private static class StringRepresentationMatches<T, SpecT> implements Predicate<CatalogItem<T,SpecT>> {
+        private final Predicate<? super String> filter;
+        StringRepresentationMatches(final Predicate<? super String> filter) {
+            this.filter = filter;
+        }
+        @Override
+        public boolean apply(@Nullable CatalogItem<T,SpecT> item) {
+            try {
+                Memento memento = MementosGenerators.newBasicMemento(item);
+                XmlMementoSerializer<CatalogItem<?,?>> serializer = new XmlMementoSerializer<CatalogItem<?,?>>(
+                        CatalogPredicates.class.getClassLoader(), 
+                        ImmutableMap.<String,String>of());
+                StringWriter writer = new StringWriter();
+                serializer.serialize(memento, writer);
+                return filter.apply(writer.toString());
+            } catch (Exception e) {
+                // If we propagated exceptions, then we'd risk aborting the checks for other catalog items.
+                // Play it safe, in case there's something messed up with just one catalog item.
+                Exceptions.propagateIfFatal(e);
+                LOG.debug("Problem producing string representation of "+item+"; assuming no match, and continuing", e);
+                return false;
+            }
+        }
+    }
+
+    @SuppressWarnings("unused")
+    private static <T,SpecT> Predicate<CatalogItem<T,SpecT>> xml(final Predicate<? super String> filter) {
         // TODO PERSISTENCE WORKAROUND kept anonymous function in case referenced in persisted state
         new Predicate<CatalogItem<T,SpecT>>() {
             @Override
             public boolean apply(@Nullable CatalogItem<T,SpecT> item) {
-                return (item != null) && filter.apply(item.toXmlString());
+                throw new IllegalStateException();
             }
         };
-        return new XmlMatches<T,SpecT>(filter);
+        throw new UnsupportedOperationException();
     }
     
     /**
      * @since 0.8.0
+     * @deprecated since 0.11.0 (should have been 0.7.0, when catalog.xml was deprecated!)
+     * 
+     * TODO Kept for backwards compatibility, in case it is reference in customer persisted state.
      */
+    @SuppressWarnings("unused")
     private static class XmlMatches<T,SpecT> implements Predicate<CatalogItem<T,SpecT>> {
         private final Predicate<? super String> filter;
         
         public XmlMatches(Predicate<? super String> filter) {
-            this.filter = filter;
+            throw new IllegalStateException();
         }
         @Override
         public boolean apply(@Nullable CatalogItem<T,SpecT> item) {
-            return (item != null) && filter.apply(item.toXmlString());
+            throw new IllegalStateException();
         }
         @Override
         public String toString() {

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
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 2634ecf..31b6ce5 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
@@ -1180,18 +1180,6 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
         };
     }
 
-    transient CatalogXmlSerializer serializer;
-    
-    public String toXmlString() {
-        if (serializer==null) loadSerializer();
-        return serializer.toString(catalog.dto);
-    }
-    
-    private synchronized void loadSerializer() {
-        if (serializer==null) 
-            serializer = new CatalogXmlSerializer();
-    }
-
     private static class SpecCache {
         private final Map<String, AbstractBrooklynObjectSpec<?,?>> cache = Collections.synchronizedMap(
                 Maps.<String, AbstractBrooklynObjectSpec<?,?>>newLinkedHashMap());

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBundleConverter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBundleConverter.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBundleConverter.java
deleted file mode 100644
index 79b39c3..0000000
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogBundleConverter.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.core.catalog.internal;
-
-import com.thoughtworks.xstream.converters.Converter;
-import com.thoughtworks.xstream.converters.MarshallingContext;
-import com.thoughtworks.xstream.converters.UnmarshallingContext;
-import com.thoughtworks.xstream.converters.reflection.ReflectionConverter;
-import com.thoughtworks.xstream.converters.reflection.ReflectionProvider;
-import com.thoughtworks.xstream.io.HierarchicalStreamReader;
-import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
-import com.thoughtworks.xstream.mapper.Mapper;
-
-
-/**
- *  Convert old-style catalog.xml file formats to the latest version.
- *  The code is needed only during transition to the new version, can be removed after a while.
- */
-@Deprecated
-public class CatalogBundleConverter implements Converter {
-
-    private ReflectionConverter delegateConverter;
-
-    public CatalogBundleConverter(Mapper mapper, ReflectionProvider reflectionProvider) {
-        this.delegateConverter = new ReflectionConverter(mapper, reflectionProvider);
-    }
-
-    @Override
-    public boolean canConvert(@SuppressWarnings("rawtypes") Class type) {
-        return type == CatalogBundleDto.class;
-    }
-
-    @Override
-    public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
-        context.convertAnother(source, delegateConverter);
-    }
-
-    @Override
-    public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
-        if (reader.hasMoreChildren()) {
-            return context.convertAnother(context.currentObject(), CatalogBundleDto.class, delegateConverter);
-        } else {
-            return new CatalogBundleDto(null, null, reader.getValue());
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogClasspathDo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogClasspathDo.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogClasspathDo.java
index d183c7e..c41eed9 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogClasspathDo.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogClasspathDo.java
@@ -166,9 +166,8 @@ public class CatalogClasspathDo {
         
         Stopwatch timer = Stopwatch.createStarted();
         ReflectionScanner scanner = null;
-        if (!catalog.isLocal()) {
-            log.warn("Scanning not supported for remote catalogs; ignoring scan request in "+catalog);
-        } else if (classpath.getEntries() == null || classpath.getEntries().isEmpty()) {
+        
+        if (classpath.getEntries() == null || classpath.getEntries().isEmpty()) {
             // scan default classpath:
             ClassLoader baseCL = null;
             Iterable<URL> baseCP = null;

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDo.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDo.java
index f30803e..4852929 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDo.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDo.java
@@ -30,7 +30,6 @@ import org.apache.brooklyn.core.mgmt.internal.ManagementContextInternal;
 import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.exceptions.Exceptions;
 import org.apache.brooklyn.util.javalang.AggregateClassLoader;
-import org.apache.brooklyn.util.net.Urls;
 import org.apache.brooklyn.util.time.CountdownTimer;
 import org.apache.brooklyn.util.time.Duration;
 import org.slf4j.Logger;
@@ -110,7 +109,6 @@ public class CatalogDo {
             log.warn("Catalog "+this+" being initialised with different mgmt "+mgmt+" when already managed by "+this.mgmt, new Throwable("source of reparented "+this));
         this.parent = parent;
         this.mgmt = mgmt;
-        dto.populate();
         loadCatalogClasspath();
         loadCatalogItems(failOnLoadError);
         isLoaded = true;
@@ -312,18 +310,6 @@ public class CatalogDo {
         return "Loaded:" + dto + "(" + size + ")";
     }
 
-    /** is "local" if it and all ancestors are not based on any remote urls */ 
-    public boolean isLocal() {
-        if (dto.url != null) {
-            String proto = Urls.getProtocol(dto.url);
-            if (proto != null) {
-                // 'file' is the only protocol accepted as "local"
-                if (!"file".equals(proto)) return false;
-            }
-        }
-        return parent == null || parent.isLocal();
-    }
-
     /** classloader for only the entries in this catalog's classpath */ 
     public ClassLoader getLocalClassLoader() {
         if (classpath != null) return classpath.getLocalClassLoader();

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDto.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDto.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDto.java
index 1047488..14b9fea 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDto.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDto.java
@@ -18,21 +18,15 @@
  */
 package org.apache.brooklyn.core.catalog.internal;
 
-import java.io.InputStream;
-import java.io.StringReader;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.apache.brooklyn.api.catalog.CatalogItem;
 import org.apache.brooklyn.util.collections.MutableList;
 import org.apache.brooklyn.util.collections.MutableMap;
-import org.apache.brooklyn.util.core.ResourceUtils;
-import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.apache.brooklyn.util.exceptions.PropagatedRuntimeException;
-import org.apache.brooklyn.util.stream.Streams;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.Beta;
 import com.google.common.base.Objects;
@@ -42,11 +36,10 @@ import com.google.common.collect.Lists;
 @Beta
 public class CatalogDto {
 
+    @SuppressWarnings("unused")
     private static final Logger LOG = LoggerFactory.getLogger(CatalogDto.class);
 
     String id;
-    String url;
-    String contents;
     String contentsDescription;
     String name;
     String description;
@@ -64,36 +57,6 @@ public class CatalogDto {
         return result.dto;
     }
 
-    /** @deprecated since 0.7.0 use {@link #newDtoFromXmlUrl(String)} if you must, but note the xml format itself is deprecated */
-    @Deprecated
-    public static CatalogDto newDtoFromUrl(String url) {
-        return newDtoFromXmlUrl(url);
-    }
-    
-    /** @deprecated since 0.7.0 the xml format is deprecated; use YAML parse routines on BasicBrooklynCatalog */
-    @Deprecated
-    public static CatalogDto newDtoFromXmlUrl(String url) {
-        if (LOG.isDebugEnabled()) LOG.debug("Retrieving catalog from: {}", url);
-        try {
-            InputStream source = ResourceUtils.create().getResourceFromUrl(url);
-            String contents = Streams.readFullyStringAndClose(source);
-            return newDtoFromXmlContents(contents, url);
-        } catch (Throwable t) {
-            Exceptions.propagateIfFatal(t);
-            throw new PropagatedRuntimeException("Unable to retrieve catalog from " + url + ": " + t, t);
-        }
-    }
-
-    /** @deprecated since 0.7.0 the xml format is deprecated; use YAML parse routines on BasicBrooklynCatalog */
-    @Deprecated
-    public static CatalogDto newDtoFromXmlContents(String xmlContents, String originDescription) {
-        CatalogDto result = (CatalogDto) new CatalogXmlSerializer().deserialize(new StringReader(xmlContents));
-        result.contentsDescription = originDescription;
-
-        if (LOG.isDebugEnabled()) LOG.debug("Retrieved catalog from: {}", originDescription);
-        return result;
-    }
-
     /**
      * Creates a DTO.
      * <p>
@@ -122,13 +85,6 @@ public class CatalogDto {
         return result;
     }
 
-    public static CatalogDto newLinkedInstance(String url) {
-        CatalogDto result = new CatalogDto();
-        result.contentsDescription = url;
-        result.contents = ResourceUtils.create().getResourceAsString(url);
-        return result;
-    }
-
     /** @deprecated since 0.7.0 use {@link #newDtoFromCatalogItems(Collection, String)}, supplying a description for tracking */
     @Deprecated
     public static CatalogDto newDtoFromCatalogItems(Collection<CatalogItem<?, ?>> entries) {
@@ -147,46 +103,6 @@ public class CatalogDto {
         return result;
     }
     
-    void populate() {
-        if (contents==null) {
-            if (url != null) {
-                contents = ResourceUtils.create().getResourceAsString(url);
-                contentsDescription = url;
-            } else if (contentsDescription==null) {
-                LOG.debug("Catalog DTO has no contents and no description; ignoring call to populate it. Description should be set to suppress this message.");
-                return;
-            } else {
-                LOG.trace("Nothing needs doing (no contents or URL) for catalog with contents described as "+contentsDescription+".");
-                return;
-            }
-        }
-        
-        CatalogDto remoteDto = newDtoFromXmlContents(contents, contentsDescription);
-        try {
-            copyFrom(remoteDto, true);
-        } catch (Exception e) {
-            Exceptions.propagate(e);
-        }
-    }        
-
-    /**
-     * @throws NullPointerException If source is null (and !skipNulls)
-     */
-    void copyFrom(CatalogDto source, boolean skipNulls) throws IllegalAccessException {
-        if (source==null) {
-            if (skipNulls) return;
-            throw new NullPointerException("source DTO is null, when copying to "+this);
-        }
-        
-        if (!skipNulls || source.id != null) id = source.id;
-        if (!skipNulls || source.contentsDescription != null) contentsDescription = source.contentsDescription;
-        if (!skipNulls || source.contents != null) contents = source.contents;
-        if (!skipNulls || source.name != null) name = source.name;
-        if (!skipNulls || source.description != null) description = source.description;
-        if (!skipNulls || source.classpath != null) classpath = source.classpath;
-        if (!skipNulls || source.entries != null) entries = source.entries;
-    }
-
     @Override
     public String toString() {
         return Objects.toStringHelper(this)

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDtoUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDtoUtils.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDtoUtils.java
deleted file mode 100644
index 93a5cc1..0000000
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogDtoUtils.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.core.catalog.internal;
-
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-import org.apache.brooklyn.core.catalog.internal.CatalogClasspathDo.CatalogScanningModes;
-import org.apache.brooklyn.util.core.ResourceUtils;
-import org.apache.brooklyn.util.exceptions.Exceptions;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class CatalogDtoUtils {
-
-    private static final Logger log = LoggerFactory.getLogger(CatalogDtoUtils.class);
-    
-    public static CatalogDto newDefaultLocalScanningDto(CatalogScanningModes scanMode) {
-        return CatalogDto.newDefaultLocalScanningDto(scanMode);
-    }
-
-    /** throws if there are any problems in retrieving or copying */
-    public static void populateFromUrl(CatalogDto dto, String url) {
-        CatalogDto remoteDto = newDtoFromUrl(url);
-        try {
-            copyDto(remoteDto, dto, true);
-        } catch (Exception e) {
-            Exceptions.propagate(e);
-        }
-    }
-
-    /** does a shallow copy.
-     * "skipNulls" means not to copy any fields from the source which are null */ 
-    static void copyDto(CatalogDto source, CatalogDto target, boolean skipNulls) throws IllegalArgumentException, IllegalAccessException {
-        target.copyFrom(source, skipNulls);
-    }
-
-    public static CatalogDto newDtoFromUrl(String url) {
-        if (log.isDebugEnabled()) log.debug("Retrieving catalog from: {}", url);
-        try {
-            InputStream source = ResourceUtils.create().getResourceFromUrl(url);
-            CatalogDto result = (CatalogDto) new CatalogXmlSerializer().deserialize(new InputStreamReader(source));
-            if (log.isDebugEnabled()) log.debug("Retrieved catalog from: {}", url);
-            return result;
-        } catch (Throwable t) {
-            log.debug("Unable to retrieve catalog from: "+url+" ("+t+")");
-            throw Exceptions.propagate(t);
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogInitialization.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogInitialization.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogInitialization.java
index 95e593f..45e7e7a 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogInitialization.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogInitialization.java
@@ -60,11 +60,10 @@ public class CatalogInitialization implements ManagementContextInjectable {
     A4) go to B1
 
     B1) look for --catalog-initial, if so read it, then go to C1
-    B2) look for BrooklynServerConfig.BROOKLYN_CATALOG_URL, if so, read it, supporting YAML or XML (warning if XML), then go to C1
+    B2) look for BrooklynServerConfig.BROOKLYN_CATALOG_URL, if so, read it, supporting YAML, then go to C1
     B3) look for ~/.brooklyn/catalog.bom, if exists, read it then go to C1
-    B4) look for ~/.brooklyn/brooklyn.xml, if exists, warn, read it then go to C1
-    B5) read all classpath://brooklyn/default.catalog.bom items, if they exist (and for now they will)
-    B6) go to C1
+    B4) read all classpath://brooklyn/default.catalog.bom items, if they exist (and for now they will)
+    B5) go to C1
 
     C1) if --catalog-add, read and add those items
 
@@ -238,8 +237,6 @@ public class CatalogInitialization implements ManagementContextInjectable {
         }
     }
 
-    private enum PopulateMode { YAML, XML, AUTODETECT }
-    
     protected void populateInitial(BasicBrooklynCatalog catalog) {
         if (disallowLocal) {
             if (!hasRunFinalInitialization()) {
@@ -249,35 +246,28 @@ public class CatalogInitialization implements ManagementContextInjectable {
         }
 
 //        B1) look for --catalog-initial, if so read it, then go to C1
-//        B2) look for BrooklynServerConfig.BROOKLYN_CATALOG_URL, if so, read it, supporting YAML or XML (warning if XML), then go to C1
+//        B2) look for BrooklynServerConfig.BROOKLYN_CATALOG_URL, if so, read it, supporting YAML, then go to C1
 //        B3) look for ~/.brooklyn/catalog.bom, if exists, read it then go to C1
-//        B4) look for ~/.brooklyn/brooklyn.xml, if exists, warn, read it then go to C1
-//        B5) read all classpath://brooklyn/default.catalog.bom items, if they exist (and for now they will)
-//        B6) go to C1
+//        B4) read all classpath://brooklyn/default.catalog.bom items, if they exist (and for now they will)
+//        B5) go to C1
 
         if (initialUri!=null) {
-            populateInitialFromUri(catalog, initialUri, PopulateMode.AUTODETECT);
+            populateInitialFromUri(catalog, initialUri);
             return;
         }
         
         String catalogUrl = managementContext.getConfig().getConfig(BrooklynServerConfig.BROOKLYN_CATALOG_URL);
         if (Strings.isNonBlank(catalogUrl)) {
-            populateInitialFromUri(catalog, catalogUrl, PopulateMode.AUTODETECT);
+            populateInitialFromUri(catalog, catalogUrl);
             return;
         }
         
         catalogUrl = Os.mergePaths(BrooklynServerConfig.getMgmtBaseDir( managementContext.getConfig() ), "catalog.bom");
         if (new File(catalogUrl).exists()) {
-            populateInitialFromUri(catalog, new File(catalogUrl).toURI().toString(), PopulateMode.YAML);
+            populateInitialFromUri(catalog, new File(catalogUrl).toURI().toString());
             return;
         }
         
-        catalogUrl = Os.mergePaths(BrooklynServerConfig.getMgmtBaseDir( managementContext.getConfig() ), "catalog.xml");
-        if (new File(catalogUrl).exists()) {
-            populateInitialFromUri(catalog, new File(catalogUrl).toURI().toString(), PopulateMode.XML);
-            return;
-        }
-
         // otherwise look for for classpath:/brooklyn/default.catalog.bom --
         // there is one on the classpath which says to scan, and provides a few templates;
         // if one is supplied by user in the conf/ dir that will override the item from the classpath
@@ -285,7 +275,7 @@ public class CatalogInitialization implements ManagementContextInjectable {
         
         catalogUrl = "classpath:/brooklyn/default.catalog.bom";
         if (new ResourceUtils(this).doesUrlExist(catalogUrl)) {
-            populateInitialFromUri(catalog, catalogUrl, PopulateMode.YAML);
+            populateInitialFromUri(catalog, catalogUrl);
             return;
         }
         
@@ -293,59 +283,20 @@ public class CatalogInitialization implements ManagementContextInjectable {
         return;
     }
     
-    private void populateInitialFromUri(BasicBrooklynCatalog catalog, String catalogUrl, PopulateMode mode) {
+    private void populateInitialFromUri(BasicBrooklynCatalog catalog, String catalogUrl) {
         log.debug("Loading initial catalog from {}", catalogUrl);
 
-        Exception problem = null;
-        Object result = null;
-        
-        String contents = null;
         try {
-            contents = new ResourceUtils(this).getResourceAsString(catalogUrl);
-        } catch (Exception e) {
-            Exceptions.propagateIfFatal(e);
-            if (problem==null) problem = e;
-        }
+            String contents = new ResourceUtils(this).getResourceAsString(catalogUrl);
 
-        if (contents!=null && (mode==PopulateMode.YAML || mode==PopulateMode.AUTODETECT)) {
-            // try YAML first
-            try {
-                catalog.reset(MutableList.<CatalogItem<?,?>>of());
-                result = catalog.addItems(contents);
-            } catch (Exception e) {
-                Exceptions.propagateIfFatal(e);
-                if (problem==null) problem = e;
-            }
-        }
-        
-        if (result==null && contents!=null && (mode==PopulateMode.XML || mode==PopulateMode.AUTODETECT)) {
-            // then try XML
-            try {
-                populateInitialFromUriXml(catalog, catalogUrl, contents);
-                // clear YAML problem
-                problem = null;
-            } catch (Exception e) {
-                Exceptions.propagateIfFatal(e);
-                if (problem==null) problem = e;
-            }
-        }
-        
-        if (result!=null) {
+            catalog.reset(MutableList.<CatalogItem<?,?>>of());
+            Object result = catalog.addItems(contents);
+            
             log.debug("Loaded initial catalog from {}: {}", catalogUrl, result);
-        }
-        if (problem!=null) {
-            log.warn("Error importing catalog from " + catalogUrl + ": " + problem, problem);
-            // TODO inform mgmt of error
-        }
-
-    }
-
-    // deprecated XML format
-    @SuppressWarnings("deprecation")
-    private void populateInitialFromUriXml(BasicBrooklynCatalog catalog, String catalogUrl, String contents) {
-        CatalogDto dto = CatalogDto.newDtoFromXmlContents(contents, catalogUrl);
-        if (dto!=null) {
-            catalog.reset(dto);
+            
+        } catch (Exception e) {
+            Exceptions.propagateIfFatal(e);
+            log.warn("Error importing catalog from " + catalogUrl + ": " + e, e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDo.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDo.java
index 90697fe..7e8a956 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDo.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDo.java
@@ -231,11 +231,6 @@ public class CatalogItemDo<T,SpecT> implements CatalogItem<T,SpecT>, BrooklynObj
     }
 
     @Override
-    public String toXmlString() {
-        return itemDto.toXmlString();
-    }
-
-    @Override
     public Class<SpecT> getSpecType() {
         return itemDto.getSpecType();
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDtoAbstract.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDtoAbstract.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDtoAbstract.java
index 5aec768..1201395 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDtoAbstract.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogItemDtoAbstract.java
@@ -232,20 +232,6 @@ public abstract class CatalogItemDtoAbstract<T, SpecT> extends AbstractBrooklynO
     @Override
     public abstract Class<SpecT> getSpecType();
 
-    transient CatalogXmlSerializer serializer;
-
-    @Override
-    public String toXmlString() {
-        if (serializer==null) loadSerializer();
-        return serializer.toString(this);
-    }
-
-    private synchronized void loadSerializer() {
-        if (serializer == null) {
-            serializer = new CatalogXmlSerializer();
-        }
-    }
-
     @Override
     public RebindSupport<CatalogItemMemento> getRebindSupport() {
         return new BasicCatalogItemRebindSupport(this);
@@ -385,10 +371,6 @@ public abstract class CatalogItemDtoAbstract<T, SpecT> extends AbstractBrooklynO
         this.tags = tags;
     }
 
-    protected void setSerializer(CatalogXmlSerializer serializer) {
-        this.serializer = serializer;
-    }
-
     /**
      * Parses an instance of CatalogLibrariesDto from the given List. Expects the list entries
      * to be either Strings or Maps of String -> String. Will skip items that are not.

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogXmlSerializer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogXmlSerializer.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogXmlSerializer.java
deleted file mode 100644
index 42381e6..0000000
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/CatalogXmlSerializer.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.core.catalog.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.brooklyn.core.catalog.internal.CatalogClasspathDo.CatalogScanningModes;
-import org.apache.brooklyn.core.mgmt.persist.DeserializingClassRenamesProvider;
-import org.apache.brooklyn.core.objs.AbstractBrooklynObject;
-import org.apache.brooklyn.util.core.xstream.EnumCaseForgivingSingleValueConverter;
-import org.apache.brooklyn.util.core.xstream.XmlSerializer;
-
-public class CatalogXmlSerializer extends XmlSerializer<Object> {
-
-    @SuppressWarnings("deprecation")
-    public CatalogXmlSerializer() {
-        super(DeserializingClassRenamesProvider.INSTANCE.loadDeserializingMapping());
-        
-        xstream.addDefaultImplementation(ArrayList.class, Collection.class);
-       
-        //Doesn't work well for non-standard lists, like Lists.transform results
-        xstream.aliasType("list", List.class);
-        xstream.aliasType("map", Map.class);
-
-        xstream.useAttributeFor("id", String.class);
-
-        xstream.aliasType("catalog", CatalogDto.class);
-        xstream.useAttributeFor(CatalogDto.class, "url");
-        xstream.addImplicitCollection(CatalogDto.class, "catalogs", CatalogDto.class);
-        xstream.addImplicitCollection(CatalogDto.class, "entries", CatalogTemplateItemDto.class);
-        xstream.addImplicitCollection(CatalogDto.class, "entries", CatalogEntityItemDto.class);
-        xstream.addImplicitCollection(CatalogDto.class, "entries", CatalogPolicyItemDto.class);
-        xstream.addImplicitCollection(CatalogDto.class, "entries", CatalogLocationItemDto.class);
-
-        xstream.aliasType("template", CatalogTemplateItemDto.class);
-        xstream.aliasType("entity", CatalogEntityItemDto.class);
-        xstream.aliasType("policy", CatalogPolicyItemDto.class);
-        xstream.aliasType("location", CatalogPolicyItemDto.class);
-
-        xstream.aliasField("registeredType", CatalogItemDtoAbstract.class, "symbolicName");
-        xstream.aliasAttribute(CatalogItemDtoAbstract.class, "displayName", "name");
-        xstream.useAttributeFor(CatalogItemDtoAbstract.class, "type");
-        xstream.useAttributeFor(CatalogItemDtoAbstract.class, "version");
-        xstream.aliasType("bundle", CatalogBundleDto.class);
-        xstream.registerConverter(new CatalogBundleConverter(xstream.getMapper(), xstream.getReflectionProvider()));
-
-        xstream.useAttributeFor(CatalogClasspathDto.class, "scan");
-        xstream.addImplicitCollection(CatalogClasspathDto.class, "entries", "entry", String.class);
-        xstream.registerConverter(new EnumCaseForgivingSingleValueConverter(CatalogScanningModes.class));
-
-        // Note: the management context is being omitted because it is unnecessary for
-        // representations of catalogues generated with this serializer.
-        xstream.omitField(AbstractBrooklynObject.class, "managementContext");
-        xstream.omitField(AbstractBrooklynObject.class, "_legacyConstruction");
-        xstream.omitField(AbstractBrooklynObject.class, "hasWarnedOfNoManagementContextWhenPersistRequested");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java
index 4e4fcb0..41d6d71 100644
--- a/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java
+++ b/core/src/main/java/org/apache/brooklyn/core/catalog/internal/JavaCatalogToSpecTransformer.java
@@ -42,8 +42,7 @@ import org.slf4j.LoggerFactory;
  * defines the java class name and OSGi bundles to use.
  * <p>
  * This is used where a {@link RegisteredType} is defined simply with the name of a java class
- * (no YAML etc); and for legacy old-style (c0.7.0) catalog items (defined in catalog.xml only)
- * with structure, only a single type.
+ * (no YAML etc).
  */
 public class JavaCatalogToSpecTransformer implements PlanToSpecTransformer {
     private static final Logger log = LoggerFactory.getLogger(JavaCatalogToSpecTransformer.class);
@@ -76,7 +75,11 @@ public class JavaCatalogToSpecTransformer implements PlanToSpecTransformer {
         @SuppressWarnings("deprecation")
         String javaType = item.getJavaType();
         if (javaType != null) {
-            log.warn("Deprecated functionality (since 0.9.0). Using old-style xml catalog items with java type attribute for " + item);
+            // TODO This log.warn previously said "Using old-style xml catalog items with java type attribute".
+            // However, nothing in this code is specific to catalog.xml. Perhaps that is the only way this code
+            // can be reached? We should investigate further when we have time - if we can confirm it was only
+            // used for catalog.xml, then this can be deleted.
+            log.warn("Deprecated functionality (since 0.9.0). Using old-style java type attribute for " + item);
             Class<?> type;
             try {
                 // java types were deprecated before we added osgi support so this isn't necessary,

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/java/org/apache/brooklyn/core/server/BrooklynServerConfig.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/core/server/BrooklynServerConfig.java b/core/src/main/java/org/apache/brooklyn/core/server/BrooklynServerConfig.java
index 26d76dc..da5922e 100644
--- a/core/src/main/java/org/apache/brooklyn/core/server/BrooklynServerConfig.java
+++ b/core/src/main/java/org/apache/brooklyn/core/server/BrooklynServerConfig.java
@@ -98,7 +98,7 @@ public class BrooklynServerConfig {
             + "this key is DEPRECATED in favor of promotion and demotion specific flags now defaulting to true");
 
     public static final ConfigKey<String> BROOKLYN_CATALOG_URL = ConfigKeys.newStringConfigKey("brooklyn.catalog.url",
-        "The URL of a custom catalog.bom or catalog.xml descriptor to load");
+        "The URL of a custom catalog.bom to load");
 
     /** @deprecated since 0.7.0 replaced by {@link CatalogInitialization}; also note, default removed 
      * (it was overridden anyway, and in almost all cases the new behaviour is still the default behaviour) */

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/main/resources/brooklyn-catalog-empty.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/brooklyn-catalog-empty.xml b/core/src/main/resources/brooklyn-catalog-empty.xml
deleted file mode 100644
index 898b498..0000000
--- a/core/src/main/resources/brooklyn-catalog-empty.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-    
-     http://www.apache.org/licenses/LICENSE-2.0
-    
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
--->
-<catalog/>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogDtoTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogDtoTest.java b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogDtoTest.java
index 228c922..afcdda7 100644
--- a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogDtoTest.java
+++ b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogDtoTest.java
@@ -21,22 +21,7 @@ package org.apache.brooklyn.core.catalog.internal;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
 import org.apache.brooklyn.api.catalog.CatalogItem.CatalogBundle;
-import org.apache.brooklyn.core.catalog.internal.BasicBrooklynCatalog;
-import org.apache.brooklyn.core.catalog.internal.CatalogBundleDto;
-import org.apache.brooklyn.core.catalog.internal.CatalogDo;
-import org.apache.brooklyn.core.catalog.internal.CatalogDto;
-import org.apache.brooklyn.core.catalog.internal.CatalogEntityItemDto;
-import org.apache.brooklyn.core.catalog.internal.CatalogItemBuilder;
-import org.apache.brooklyn.core.catalog.internal.CatalogItemDo;
-import org.apache.brooklyn.core.catalog.internal.CatalogUtils;
-import org.apache.brooklyn.core.catalog.internal.CatalogXmlSerializer;
 import org.apache.brooklyn.core.catalog.internal.CatalogClasspathDo.CatalogScanningModes;
 import org.apache.brooklyn.core.entity.Entities;
 import org.apache.brooklyn.core.mgmt.BrooklynTags;
@@ -47,6 +32,12 @@ import org.apache.brooklyn.core.test.entity.TestEntity;
 import org.apache.brooklyn.util.core.BrooklynMavenArtifacts;
 import org.apache.brooklyn.util.maven.MavenRetriever;
 import org.apache.commons.lang3.ClassUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
 
 import com.google.common.collect.ImmutableList;
 
@@ -72,20 +63,8 @@ public class CatalogDtoTest {
         checkCatalogHealthy(root);
     }
     
-    @Test(groups="Integration")
-    public void testCatalogSerializeAndLookup() {
-        CatalogDto root = buildExampleCatalog();
-        CatalogXmlSerializer serializer = new CatalogXmlSerializer();
-        
-        String xml = serializer.toString(root);
-        log.info("Example catalog serialized as:\n"+xml);
-        
-        CatalogDto root2 = (CatalogDto) serializer.fromString(xml);
-        checkCatalogHealthy(root2);
-    }
-
     protected void checkCatalogHealthy(CatalogDto root) {
-        assertEquals(root.catalogs.size(), 4);
+        assertEquals(root.catalogs.size(), 3, "dtos="+root.catalogs);
         CatalogDo loader = new CatalogDo(managementContext, root).load();
         
         // test app comes from jar, by default
@@ -142,7 +121,6 @@ public class CatalogDtoTest {
         testEntitiesJavaCatalog.addEntry(osgiEntity);
         root.addCatalog(osgiCatalog.dto);
 
-        root.addCatalog(CatalogDto.newLinkedInstance("classpath://brooklyn-catalog-empty.xml"));
         return root.dto;
     }
     

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/e0feddb7/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogLoadTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogLoadTest.java b/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogLoadTest.java
deleted file mode 100644
index d1862a6..0000000
--- a/core/src/test/java/org/apache/brooklyn/core/catalog/internal/CatalogLoadTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.brooklyn.core.catalog.internal;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-import org.apache.brooklyn.api.catalog.CatalogItem.CatalogBundle;
-import org.apache.brooklyn.core.catalog.internal.CatalogDto;
-import org.apache.brooklyn.core.catalog.internal.CatalogItemDtoAbstract;
-import org.apache.brooklyn.core.catalog.internal.CatalogXmlSerializer;
-import org.apache.brooklyn.util.core.ResourceUtils;
-
-import com.google.common.base.Joiner;
-import com.google.common.collect.Iterables;
-
-public class CatalogLoadTest {
-
-    CatalogXmlSerializer serializer;
-
-    @BeforeMethod
-    public void setUp() {
-        serializer = new CatalogXmlSerializer();
-    }
-
-    private String loadFile(String file) {
-        return ResourceUtils.create(this).getResourceAsString(file);
-    }
-
-    // CAMP YAML parsing not available in core, so YAML catalog tests are in camp, e.g. CatalogYamlEntityTest 
-    
-    @Test
-    public void testLoadXmlCatalog() {
-        CatalogDto catalog = (CatalogDto) serializer.fromString(
-                loadFile("classpath://brooklyn/catalog/internal/osgi-catalog.xml"));
-        assertNotNull(catalog);
-        assertEquals(catalog.name, "OSGi catalogue");
-        assertEquals(Iterables.size(catalog.getUniqueEntries()), 1, "Catalog entries = " + Joiner.on(", ").join(catalog.getUniqueEntries()));
-
-        CatalogItemDtoAbstract<?,?> template = Iterables.getOnlyElement(catalog.getUniqueEntries());
-        assertEquals(template.getDisplayName(), "Entity name");
-        assertEquals(template.getVersion(), "9.1.3");
-        assertEquals(template.getJavaType(), "com.example.ExampleApp");
-        assertEquals(template.getLibraries().size(), 2,
-                "Template bundles=" + Joiner.on(", ").join(template.getLibraries()));
-        
-        boolean foundBundle1 = false, foundBundle2 = false;
-        for (CatalogBundle bundle : template.getLibraries()) {
-            if (bundle.getUrl().equals("file://path/to/bundle.jar")) {
-                foundBundle1 = true;
-            }
-            if (bundle.getUrl().equals("http://www.url.com/for/bundle.jar")) {
-                foundBundle2 = true;
-            }
-        }
-        assertTrue(foundBundle1);
-        assertTrue(foundBundle2);
-    }
-
-}


[3/3] brooklyn-server git commit: This closes #665

Posted by dr...@apache.org.
This closes #665


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/fc575d77
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/fc575d77
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/fc575d77

Branch: refs/heads/master
Commit: fc575d77b4aaa7141ca273353fa751b2492e76df
Parents: 48933eb e0feddb
Author: Duncan Godwin <dr...@googlemail.com>
Authored: Mon May 8 12:56:02 2017 +0100
Committer: Duncan Godwin <dr...@googlemail.com>
Committed: Mon May 8 12:56:02 2017 +0100

----------------------------------------------------------------------
 .../brooklyn/api/catalog/CatalogItem.java       |   2 -
 .../catalog/AbstractCatalogXmlTest.java         | 108 ----------
 .../camp/brooklyn/catalog/CatalogScanTest.java  | 198 ++++++++++++++++++
 .../brooklyn/catalog/CatalogXmlOsgiTest.java    |  37 ----
 .../brooklyn/catalog/CatalogXmlVersionTest.java |  57 ------
 .../brooklyn/test/lite/CampYamlLiteTest.java    |  24 ---
 .../src/test/resources/osgi-catalog.xml         |  29 ---
 .../src/test/resources/simple-catalog.xml       |  47 -----
 .../core/catalog/CatalogPredicates.java         |  63 +++++-
 .../catalog/internal/BasicBrooklynCatalog.java  |  12 --
 .../internal/CatalogBundleConverter.java        |  63 ------
 .../catalog/internal/CatalogClasspathDo.java    |   5 +-
 .../core/catalog/internal/CatalogDo.java        |  14 --
 .../core/catalog/internal/CatalogDto.java       |  90 +--------
 .../core/catalog/internal/CatalogDtoUtils.java  |  66 ------
 .../catalog/internal/CatalogInitialization.java |  87 ++------
 .../core/catalog/internal/CatalogItemDo.java    |   5 -
 .../internal/CatalogItemDtoAbstract.java        |  18 --
 .../catalog/internal/CatalogXmlSerializer.java  |  77 -------
 .../internal/JavaCatalogToSpecTransformer.java  |   9 +-
 .../core/server/BrooklynServerConfig.java       |   2 +-
 .../main/resources/brooklyn-catalog-empty.xml   |  20 --
 .../core/catalog/internal/CatalogDtoTest.java   |  36 +---
 .../core/catalog/internal/CatalogLoadTest.java  |  79 --------
 .../core/catalog/internal/CatalogScanTest.java  | 199 -------------------
 .../core/mgmt/rebind/RebindCatalogItemTest.java |  84 ++++++--
 ...talogWhenCatalogPersistenceDisabledTest.java |  49 +++--
 .../core/test/BrooklynAppLiveTestSupport.java   |   3 +-
 .../brooklyn/catalog/internal/osgi-catalog.xml  |  31 ---
 .../rebind/rebind-catalog-item-test-catalog.xml |  28 ---
 .../apache/brooklyn/rest/api/CatalogApi.java    |  11 -
 .../rest/resources/CatalogResource.java         |  22 +-
 .../rest/resources/CatalogResetTest.java        | 118 -----------
 .../src/test/resources/reset-catalog.xml        |  37 ----
 .../entity/brooklynnode/BrooklynNode.java       |  19 --
 .../brooklynnode/BrooklynNodeSshDriver.java     |  14 --
 .../BrooklynNodeIntegrationTest.java            |  24 ---
 37 files changed, 389 insertions(+), 1398 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/fc575d77/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/CatalogResource.java
----------------------------------------------------------------------