brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Graeme-Miller <...@git.apache.org>
Subject [GitHub] brooklyn-server pull request #818: More on adjunct highlights
Date Thu, 14 Sep 2017 07:39:28 GMT
Github user Graeme-Miller commented on a diff in the pull request:

    https://github.com/apache/brooklyn-server/pull/818#discussion_r138817948
  
    --- Diff: core/src/main/java/org/apache/brooklyn/core/objs/AbstractEntityAdjunct.java
---
    @@ -568,6 +570,98 @@ public void setUniqueTag(String uniqueTag) {
             return highlightsToReturn;
         }
     
    +    /** Records a named highlight against this object, for persistence and API access.
    +     * See common highlights including {@link #HIGHLIGHT_NAME_LAST_ACTION} and
    +     * {@link #HIGHLIGHT_NAME_LAST_CONFIRMATION}.
    +     * Also see convenience methods eg  {@link #highlightOngoing(String, String)} and
{@link #highlight(String, String, Task)}
    +     * and {@link HighlightTuple}. 
    +     */
    +    protected void setHighlight(String name, HighlightTuple tuple) {
    +        highlights.put(name, tuple);
    +    }
    +
    +    /** As {@link #setHighlight(String, HighlightTuple)}, convenience for recording an
item which is intended to be ongoing. */
    +    protected void highlightOngoing(String name, String description) {
    +        highlights.put(name, new HighlightTuple(description, 0, null));
    +    }
    +    /** As {@link #setHighlight(String, HighlightTuple)}, convenience for recording an
item with the current time. */
    +    protected void highlightNow(String name, String description) {
    +        highlights.put(name, new HighlightTuple(description, System.currentTimeMillis(),
null));
    +    }
    +    /** As {@link #setHighlight(String, HighlightTuple)}, convenience for recording an
item with the current time and given task. */
    +    protected void highlight(String name, String description, @Nullable Task<?>
t) {
    +        highlights.put(name, new HighlightTuple(description, System.currentTimeMillis(),
t!=null ? t.getId() : null));
    +    }
    +    
    +    /** As {@link #setHighlight(String, HighlightTuple)} for {@link #HIGHLIGHT_NAME_TRIGGERS}
(as ongoing). */
    +    protected void highlightTriggers(String description) {
    +        highlightOngoing(HIGHLIGHT_NAME_TRIGGERS, description);
    +    }
    +    protected <T> void highlightTriggers(Sensor<?> s, Object source) {
    +        highlightTriggers(Collections.singleton(s), Collections.singleton(source));
    +    }
    +    protected <T> void highlightTriggers(Iterable<? extends Sensor<? extends
T>> s, Object source) {
    +        highlightTriggers(s, (Iterable<?>) (source instanceof Iterable ? (Iterable<?>)source
: Collections.singleton(source)));
    +    }
    +    protected <U> void highlightTriggers(Sensor<?> s, Iterable<U> sources)
{
    +        highlightTriggers(Collections.singleton(s), sources);
    +    }
    +    protected <T,U> void highlightTriggers(Iterable<? extends Sensor<? extends
T>> sensors, Iterable<U> sources) {
    +        StringBuilder msg = new StringBuilder("Listening for ");
    +        boolean firstWord = true;
    +        if (sensors!=null) for (Object s: sensors) {
    +            if (s==null) continue;
    +            if (!firstWord) { msg.append(", "); } else { firstWord = false; }
    +            // s is normally a sensor but forgive other things if caller cheated generics
    +            msg.append(s instanceof Sensor ? ((Sensor<?>)s).getName() : s.toString());
    +        }
    +        if (firstWord) msg.append("<nothing>");
    +        
    +        firstWord = true;
    --- End diff --
    
    @grkvlt very interesting, didn't know about Collectors.joining(", "), that's very handy.
    
    re. the second clause in the if. My understanding of Alex's code is that, if there is
only one entry, and that entry is self, then we shouldn't add "on...". The second clause in
the if is to guard against that. Maybe Alex can clarify?



---

Mime
View raw message