better warnings when icons are missing
Project: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/commit/fa8cdb4c Tree: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/tree/fa8cdb4c Diff: http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/diff/fa8cdb4c Branch: refs/heads/master Commit: fa8cdb4c54b5a6f46a313366ae10ec31ce287c3b Parents: 1e36c3e Author: Alex Heneveld <alex.henev...@cloudsoftcorp.com> Authored: Thu Jul 17 12:54:03 2014 -0400 Committer: Alex Heneveld <alex.henev...@cloudsoftcorp.com> Committed: Fri Jul 18 09:15:17 2014 -0400 ---------------------------------------------------------------------- .../rest/resources/CatalogResource.java | 24 ++++++++++++++++++-- .../brooklyn/rest/util/WebResourceUtils.java | 2 +- 2 files changed, 23 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/fa8cdb4c/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java b/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java index 007c19c..b553bf9 100644 --- a/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java +++ b/usage/rest-server/src/main/java/brooklyn/rest/resources/CatalogResource.java @@ -24,6 +24,7 @@ import java.io.InputStreamReader; import java.net.URI; import java.util.ArrayList; import java.util.List; +import java.util.Set; import javax.annotation.Nullable; import javax.ws.rs.core.MediaType; @@ -49,6 +50,8 @@ import brooklyn.rest.domain.SummaryComparators; import brooklyn.rest.transform.CatalogTransformer; import brooklyn.rest.util.WebResourceUtils; import brooklyn.util.ResourceUtils; +import brooklyn.util.collections.MutableSet; +import brooklyn.util.exceptions.Exceptions; import brooklyn.util.text.StringPredicates; import brooklyn.util.text.Strings; @@ -78,6 +81,8 @@ public class CatalogResource extends AbstractBrooklynRestResource implements Cat return create(CharStreams.toString(new InputStreamReader(uploadedInputStream, Charsets.UTF_8))); } + static Set<String> missingIcons = MutableSet.of(); + @Override public Response create(String yaml) { CatalogItem<?,?> item; @@ -202,8 +207,23 @@ public class CatalogResource extends AbstractBrooklynRestResource implements Cat log.debug("Loading and returning "+url+" as icon for "+result); MediaType mime = WebResourceUtils.getImageMediaTypeFromExtension(Files.getFileExtension(url)); - Object content = ResourceUtils.create(result.newClassLoadingContext(mgmt())).getResourceFromUrl(url); - return Response.ok(content, mime).build(); + try { + Object content = ResourceUtils.create(result.newClassLoadingContext(mgmt())).getResourceFromUrl(url); + return Response.ok(content, mime).build(); + } catch (Exception e) { + Exceptions.propagateIfFatal(e); + synchronized (missingIcons) { + if (missingIcons.add(url)) { + // note: this can be quite common when running from an IDE, as resources may not be copied; + // a mvn build should sort it out (the IDE will then find the resources, until you clean or maybe refresh...) + log.warn("Missing icon data for "+itemId+", expected at: "+url+" (subsequent messages will log debug only)"); + log.debug("Trace for missing icon data at "+url+": "+e, e); + } else { + log.debug("Missing icon data for "+itemId+", expected at: "+url+" (already logged WARN and error details)"); + } + } + throw WebResourceUtils.notFound("Icon unavailable for %s", itemId); + } } log.debug("Returning redirect to "+url+" as icon for "+result); http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/fa8cdb4c/usage/rest-server/src/main/java/brooklyn/rest/util/WebResourceUtils.java ---------------------------------------------------------------------- diff --git a/usage/rest-server/src/main/java/brooklyn/rest/util/WebResourceUtils.java b/usage/rest-server/src/main/java/brooklyn/rest/util/WebResourceUtils.java index 61e4217..6c1c2c1 100644 --- a/usage/rest-server/src/main/java/brooklyn/rest/util/WebResourceUtils.java +++ b/usage/rest-server/src/main/java/brooklyn/rest/util/WebResourceUtils.java @@ -59,7 +59,7 @@ public class WebResourceUtils { /** @throws WebApplicationException With code 404 not found */ public static WebApplicationException notFound(String format, Object... args) { String msg = String.format(format, args); - if (log.isDebugEnabled()) log.debug("returning 404 notFound("+msg+") - may be a stale browser session"); + if (log.isDebugEnabled()) log.debug("returning 404 notFound("+msg+")"); throw new WebApplicationException(Response.status(Response.Status.NOT_FOUND) .type(MediaType.APPLICATION_JSON_TYPE) .entity(ApiError.builder().message(msg).build()).build());