You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2014/07/04 11:51:00 UTC

[18/45] git commit: BROOKLYN-13: Merge CatalogDto and CatalogDtoUtils

BROOKLYN-13: Merge CatalogDto and CatalogDtoUtils

There aren't enough methods on the latter to justify the separate class


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

Branch: refs/heads/master
Commit: 3a2f680bddd97fb5786bca08975fbbbbe425d78f
Parents: 30093bb
Author: Sam Corbett <sa...@cloudsoftcorp.com>
Authored: Tue Jul 1 16:06:12 2014 +0100
Committer: Sam Corbett <sa...@cloudsoftcorp.com>
Committed: Tue Jul 1 16:06:12 2014 +0100

----------------------------------------------------------------------
 .../catalog/internal/BasicBrooklynCatalog.java  |  8 ++-
 .../catalog/internal/CatalogClasspathDo.java    |  1 -
 .../brooklyn/catalog/internal/CatalogDo.java    |  6 +-
 .../brooklyn/catalog/internal/CatalogDto.java   | 68 +++++++++++++++++---
 .../catalog/internal/CatalogDtoUtils.java       | 52 ---------------
 .../catalog/internal/CatalogItemDo.java         |  2 +-
 .../internal/AbstractManagementContext.java     |  8 +--
 7 files changed, 71 insertions(+), 74 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/3a2f680b/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 d6b5ff0..4db16bd 100644
--- a/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
+++ b/core/src/main/java/brooklyn/catalog/internal/BasicBrooklynCatalog.java
@@ -33,7 +33,11 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
     private final CatalogDo catalog;
     private volatile CatalogDo manualAdditionsCatalog;
     private volatile LoadedClassLoader manualAdditionsClasses;
-    
+
+    public BasicBrooklynCatalog(ManagementContext mgmt, String catalogUrl) {
+        this(mgmt, CatalogDto.newDtoFromUrl(catalogUrl));
+    }
+
     public BasicBrooklynCatalog(final ManagementContext mgmt, final CatalogDto dto) {
         this.mgmt = Preconditions.checkNotNull(mgmt, "managementContext");
         this.catalog = new CatalogDo(mgmt, dto);
@@ -90,7 +94,7 @@ public class BasicBrooklynCatalog implements BrooklynCatalog {
     @Override
     public <T> Class<? extends T> loadClass(CatalogItem<T> item) {
         if (log.isDebugEnabled())
-            log.debug("Loading class for catalog item "+item);
+            log.debug("Loading class for catalog item " + item);
         Preconditions.checkNotNull(item);
         CatalogItemDo<?> loadedItem = getCatalogItemDo(item.getId());
         if (loadedItem==null) throw new NoSuchElementException("Unable to load '"+item.getId()+"' to instantiate it");

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/3a2f680b/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 66a2bba..ffe6e9c 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogClasspathDo.java
@@ -66,7 +66,6 @@ public class CatalogClasspathDo {
         TYPES
     }
     
-
     private static final Logger log = LoggerFactory.getLogger(CatalogClasspathDo.class);
     
     private final CatalogDo catalog;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/3a2f680b/core/src/main/java/brooklyn/catalog/internal/CatalogDo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogDo.java b/core/src/main/java/brooklyn/catalog/internal/CatalogDo.java
index 9573eb1..c478e59 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogDo.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogDo.java
@@ -66,19 +66,17 @@ public class CatalogDo {
         if (isLoaded()) return;
         if (this.parent!=null && !this.parent.equals(parent))
             log.warn("Catalog "+this+" being initialised with different parent "+parent+" when already parented by "+this.parent, new Throwable("source of reparented "+this));
-        this.parent = parent;
         if (this.mgmt!=null && !this.mgmt.equals(mgmt))
             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;
         try {
-            if (dto.url!=null)
-                CatalogDtoUtils.populateFromUrl(dto, dto.url);
+            dto.populateFromUrl();
             classpath = new CatalogClasspathDo(this);
             classpath.load();
         } catch (Exception e) {
             Exceptions.propagateIfFatal(e);
             log.error("Unable to load catalog "+this+" (ignoring): "+e);
-//            log.debug("Trace for failure to load "+this+": "+e, e);
             log.info("Trace for failure to load "+this+": "+e, e);
         }
         isLoaded = true;

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/3a2f680b/core/src/main/java/brooklyn/catalog/internal/CatalogDto.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogDto.java b/core/src/main/java/brooklyn/catalog/internal/CatalogDto.java
index 7e7f33a..f222215 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogDto.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogDto.java
@@ -1,9 +1,21 @@
 package brooklyn.catalog.internal;
 
+import java.io.InputStream;
+import java.io.InputStreamReader;
 import java.util.List;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.base.Objects;
+
+import brooklyn.util.ResourceUtils;
+import brooklyn.util.exceptions.Exceptions;
+
 public class CatalogDto {
-    
+
+    private static final Logger LOG = LoggerFactory.getLogger(CatalogDto.class);
+
     String id;
     String url;
     String name;
@@ -15,6 +27,26 @@ public class CatalogDto {
     // in this class which does copy-on-write
     List<CatalogDto> catalogs = null;
 
+    public static CatalogDto newDefaultLocalScanningDto(CatalogClasspathDo.CatalogScanningModes scanMode) {
+        CatalogDo result = new CatalogDo(
+                CatalogDto.newNamedInstance("Local Scanned Catalog", "All annotated Brooklyn entities detected in the default classpath") );
+        result.setClasspathScanForEntities(scanMode);
+        return result.dto;
+    }
+
+    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);
+        }
+    }
+
     public static CatalogDto newNamedInstance(String name, String description) {
         CatalogDto result = new CatalogDto();
         result.name = name;
@@ -28,15 +60,6 @@ public class CatalogDto {
         return result;
     }
 
-    @Override
-    public String toString() {
-        return getClass().getSimpleName()+"["+
-                (url!=null ? url+"; " : "")+
-                (name!=null ? name+":" : "")+
-                (id!=null ? id : "")+
-                "]";
-    }
-
     /**
      * @throws NullPointerException If source is null (and !skipNulls)
      */
@@ -54,4 +77,29 @@ public class CatalogDto {
         if (!skipNulls || source.entries != null) entries = source.entries;
     }
 
+    /**
+     * Populates this Dto by loading the catalog at its {@link #url}. Takes no action if url is null.
+     * Throws if there are any problems in retrieving or copying from url.
+     */
+    void populateFromUrl() {
+        if (url != null) {
+            CatalogDto remoteDto = newDtoFromUrl(url);
+            try {
+                copyFrom(remoteDto, true);
+            } catch (Exception e) {
+                Exceptions.propagate(e);
+            }
+        }
+    }
+
+    @Override
+    public String toString() {
+        return Objects.toStringHelper(this)
+                .omitNullValues()
+                .add("name", name)
+                .add("id", id)
+                .add("url", url)
+                .toString();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/3a2f680b/core/src/main/java/brooklyn/catalog/internal/CatalogDtoUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogDtoUtils.java b/core/src/main/java/brooklyn/catalog/internal/CatalogDtoUtils.java
deleted file mode 100644
index 86a499b..0000000
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogDtoUtils.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package brooklyn.catalog.internal;
-
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import brooklyn.catalog.internal.CatalogClasspathDo.CatalogScanningModes;
-import brooklyn.util.ResourceUtils;
-import brooklyn.util.exceptions.Exceptions;
-
-public class CatalogDtoUtils {
-
-    private static final Logger log = LoggerFactory.getLogger(CatalogDtoUtils.class);
-    
-    public static CatalogDto newDefaultLocalScanningDto(CatalogScanningModes scanMode) {
-        CatalogDo result = new CatalogDo(
-                CatalogDto.newNamedInstance("Local Scanned Catalog", "All annotated Brooklyn entities detected in the default classpath") );
-        result.setClasspathScanForEntities(scanMode);
-        return result.dto;
-    }
-
-    /** 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/incubator-brooklyn/blob/3a2f680b/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java b/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
index d857c45..edce2e7 100644
--- a/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
+++ b/core/src/main/java/brooklyn/catalog/internal/CatalogItemDo.java
@@ -24,7 +24,7 @@ public class CatalogItemDo<T> implements CatalogItem<T> {
     }
 
     @Override
-    public brooklyn.catalog.CatalogItem.CatalogItemType getCatalogItemType() {
+    public CatalogItemType getCatalogItemType() {
         return itemDto.getCatalogItemType();
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/3a2f680b/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java b/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
index cd86bb8..bb9db2e 100644
--- a/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
+++ b/core/src/main/java/brooklyn/management/internal/AbstractManagementContext.java
@@ -19,7 +19,7 @@ import org.slf4j.LoggerFactory;
 import brooklyn.catalog.BrooklynCatalog;
 import brooklyn.catalog.internal.BasicBrooklynCatalog;
 import brooklyn.catalog.internal.CatalogClasspathDo.CatalogScanningModes;
-import brooklyn.catalog.internal.CatalogDtoUtils;
+import brooklyn.catalog.internal.CatalogDto;
 import brooklyn.config.BrooklynProperties;
 import brooklyn.config.StringConfigMap;
 import brooklyn.entity.Effector;
@@ -267,7 +267,7 @@ public abstract class AbstractManagementContext implements ManagementContextInte
      * Returns the actual task (if it is local) or a proxy task (if it is remote);
      * if management for the entity has not yet started this may start it.
      * 
-     * @deprecated since 0.6.0 use effectors (or support {@link #runAtEntity(Entity, Task)} if something else is needed);
+     * @deprecated since 0.6.0 use effectors (or support {@code runAtEntity(Entity, Task)} if something else is needed);
      * (Callable with Map flags is too open-ended, bothersome to support, and not used much) 
      */
     @Deprecated
@@ -311,7 +311,7 @@ public abstract class AbstractManagementContext implements ManagementContextInte
         
         try {
             if (!Strings.isEmpty(catalogUrl)) {
-                catalog = new BasicBrooklynCatalog(this, CatalogDtoUtils.newDtoFromUrl(catalogUrl));
+                catalog = new BasicBrooklynCatalog(this, catalogUrl);
                 if (log.isDebugEnabled())
                     log.debug("Loaded catalog from "+catalogUrl+": "+catalog);
             }
@@ -330,7 +330,7 @@ public abstract class AbstractManagementContext implements ManagementContextInte
         }
         if (catalog==null) {
             // retry, either an error, or was blank
-            catalog = new BasicBrooklynCatalog(this, CatalogDtoUtils.newDefaultLocalScanningDto(CatalogScanningModes.ANNOTATIONS));
+            catalog = new BasicBrooklynCatalog(this, CatalogDto.newDefaultLocalScanningDto(CatalogScanningModes.ANNOTATIONS));
             if (log.isDebugEnabled())
                 log.debug("Loaded default (local classpath) catalog: "+catalog);
         }