fix catalog scan test dependency on local drive and tidy up url handling for 
catalog items


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

Branch: refs/heads/master
Commit: c72fe8a0e1e566cc22955b69d8aee3fbe4c07a47
Parents: 1207d99
Author: Alex Heneveld <[email protected]>
Authored: Thu May 28 14:50:39 2015 +0100
Committer: Alex Heneveld <[email protected]>
Committed: Thu May 28 14:51:21 2015 +0100

----------------------------------------------------------------------
 .../catalog/internal/BasicBrooklynCatalog.java  |  9 +++++----
 .../catalog/internal/CatalogClasspathDo.java    | 12 ++++++-----
 .../catalog/internal/CatalogInitialization.java |  2 +-
 .../catalog/internal/CatalogScanTest.java       | 21 +++++++++++++++++---
 4 files changed, 31 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c72fe8a0/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java 
b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
index bba0b73..7c192d0 100644
--- a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
@@ -1195,11 +1195,12 @@ public class BasicBrooklynCatalog implements 
BrooklynCatalog {
                     // will be set by scan -- slightly longwinded way to 
retrieve, but scanning for osgi needs an overhaul in any case
                     Collection<CatalogBundle> libraryBundles = 
CatalogItemDtoAbstract.parseLibraries((Collection<?>) librariesCombined);
                     dto.setLibraries(libraryBundles);
-                    // must replace java type with plan yaml here for 
libraries / catalog item to be picked up
-                    dto.setSymbolicName(dto.getJavaType());
-                    dto.setPlanYaml("services: [{ type: "+dto.getJavaType()+" 
}]");
-                    dto.setJavaType(null);
                 }
+                // replace java type with plan yaml -- needed for libraries / 
catalog item to be picked up,
+                // but probably useful to transition away from javaType 
altogether
+                dto.setSymbolicName(dto.getJavaType());
+                dto.setPlanYaml("services: [{ type: "+dto.getJavaType()+" }]");
+                dto.setJavaType(null);
 
                 return dto;
             }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c72fe8a0/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java 
b/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java
index 077abaa..a30a9dc 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java
@@ -128,16 +128,18 @@ public class CatalogClasspathDo {
                         InputStream uin = 
ResourceUtils.create(this).getResourceFromUrl(u);
                         File f = Os.newTempFile("brooklyn-catalog-"+u, null);
                         FileOutputStream fout = new FileOutputStream(f);
-                        Streams.copy(uin, fout);
-                        fout.close();
-                        uin.close();
+                        try {
+                            Streams.copy(uin, fout);
+                        } finally {
+                            Streams.closeQuietly(fout);
+                            Streams.closeQuietly(uin);
+                        }
                         u = f.toURI().toString();
                     }
                     urls[i] = new URL(u);
                     
                     // TODO potential disk leak above as we have no way to 
know when the temp file can be removed earlier than server shutdown;
-                    // a better way to handle this is to supply a stream 
handler:
-//                    urls[i] = new URL(classpath.getEntries().get(i));
+                    // a better way to handle this is to supply a stream 
handler (but URLConnection is a little bit hard to work with):
 //                    URI uri = URI.create(classpath.getEntries().get(i));
 //                    urls[i] = new URL(uri.getScheme(), uri.getHost(), 
uri.getPort(), uri.getPath()  // TODO query fragment?
 //                        , new URLStreamHandler() {

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c72fe8a0/core/src/main/java/brooklyn/catalog/internal/CatalogInitialization.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/brooklyn/catalog/internal/CatalogInitialization.java 
b/core/src/main/java/brooklyn/catalog/internal/CatalogInitialization.java
index 8f45a8c..51814ea 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogInitialization.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogInitialization.java
@@ -157,7 +157,7 @@ public class CatalogInitialization implements 
ManagementContextInjectable {
      *   and so subsequent applications should ignore any initialization data 
(e.g. on a subsequent promotion to master, 
      *   after a master -> standby -> master cycle)
      * @param needsInitialItemsLoaded whether the catalog needs the initial 
items loaded
-     * @param needsInitialItemsLoaded whether the catalog needs the additiona 
items loaded
+     * @param needsAdditionalItemsLoaded whether the catalog needs the 
additions loaded
      * @param optionalExcplicitItemsForResettingCatalog
      *   if supplied, the catalog is reset to contain only these items, before 
calling any other initialization
      *   for use primarily when rebinding

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/c72fe8a0/core/src/test/java/brooklyn/catalog/internal/CatalogScanTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/brooklyn/catalog/internal/CatalogScanTest.java 
b/core/src/test/java/brooklyn/catalog/internal/CatalogScanTest.java
index 5b32bed..101e306 100644
--- a/core/src/test/java/brooklyn/catalog/internal/CatalogScanTest.java
+++ b/core/src/test/java/brooklyn/catalog/internal/CatalogScanTest.java
@@ -37,6 +37,7 @@ import brooklyn.entity.Application;
 import brooklyn.entity.basic.Entities;
 import brooklyn.entity.proxying.EntitySpec;
 import brooklyn.management.internal.LocalManagementContext;
+import brooklyn.util.ResourceUtils;
 import brooklyn.util.net.Urls;
 import brooklyn.util.text.Strings;
 
@@ -75,10 +76,14 @@ public class CatalogScanTest {
         log.info("ENTITIES loaded for FULL: 
"+fullCatalog.getCatalogItems(Predicates.alwaysTrue()));
     }
     
-    private synchronized void loadTheDefaultCatalog() {
+    private synchronized void loadTheDefaultCatalog(boolean 
lookOnDiskForDefaultCatalog) {
         if (defaultCatalog!=null) return;
         BrooklynProperties props = BrooklynProperties.Factory.newEmpty();
-        props.put(BrooklynServerConfig.BROOKLYN_CATALOG_URL.getName(), "");
+        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()));
@@ -162,7 +167,17 @@ public class CatalogScanTest {
     
     @Test
     public void testAnnotationIsDefault() {
-        loadTheDefaultCatalog();
+        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();

Reply via email to