Github user aledsage commented on a diff in the pull request:

    https://github.com/apache/brooklyn-server/pull/879#discussion_r149312203
  
    --- Diff: 
api/src/main/java/org/apache/brooklyn/api/mgmt/ManagementContext.java ---
    @@ -309,8 +310,14 @@
         /** As {@link #lookup(String, Class)} but not constraining the return 
type */
         public BrooklynObject lookup(String id);
         
    -    /** Finds an entity with the given ID known at this management context 
*/
    -    // TODO in future support policies etc
    +    /** As {@link #lookup(Predicate)} comparing the ID of the object with 
the given string */
         public <T extends BrooklynObject> T lookup(String id, Class<T> type); 
     
    -}
    \ No newline at end of file
    +    /** Finds a {@link BrooklynObject} known in this management context 
    +     * satisfying the given predicate, or null */
    +    public <T extends BrooklynObject> T lookup(Predicate<? super T> 
filter);
    --- End diff --
    
    I'm hesitant about adding this, but see why you're doing it (because it 
fits with the existing `lookup` naming, and is useful for you're use-case!).
    
    I don't want to bloat the public `ManagementContext` api. In other places, 
we've grouped related methods (e.g. `entity.config().set(...)`, rather than 
`entity.setConfig(...)`). Perhaps we should group the lookup methods.
    
    I also prefer the guava conventions, rather than returning null when not 
found. Should we go for `Maybe<T> tryLookup(Predicate<? super T> filter)`, or 
even `tryFind()`? That is different from the existing `lookup(String id)`, but 
is a better api and is consistent with lots of other parts of Brooklyn.


---

Reply via email to