[ 
https://issues.apache.org/jira/browse/GEODE-393?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16059545#comment-16059545
 ] 

ASF GitHub Bot commented on GEODE-393:
--------------------------------------

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

    https://github.com/apache/geode/pull/589#discussion_r123544587
  
    --- Diff: 
geode-core/src/main/java/org/apache/geode/internal/cache/execute/FunctionContextImpl.java
 ---
    @@ -37,20 +38,25 @@
     
       private String functionId = null;
     
    +  private Cache cache = null;
    +
       private ResultSender resultSender = null;
     
       private final boolean isPossDup;
     
       public FunctionContextImpl(final String functionId, final Object args,
           ResultSender resultSender) {
    -    this.functionId = functionId;
    -    this.args = args;
    -    this.resultSender = resultSender;
    -    this.isPossDup = false;
    +    this(null, functionId, args, resultSender, false);
    +  }
    +
    +  public FunctionContextImpl(final Cache cache, final String functionId, 
final Object args,
    +      ResultSender resultSender) {
    +    this(cache, functionId, args, resultSender, false);
       }
     
    -  public FunctionContextImpl(final String functionId, final Object args, 
ResultSender resultSender,
    -      boolean isPossibleDuplicate) {
    +  public FunctionContextImpl(final Cache cache, final String functionId, 
final Object args,
    +      ResultSender resultSender, boolean isPossibleDuplicate) {
    --- End diff --
    
    Looking at the places where it's grabbing the cache to create the 
FunctionContext, it's all using GemfireCacheImpl.getInstance(). I am wondering 
we should just have the implementation of getCache() in FunctionContextImpl to 
be simply GemfireCacheImpl.getInstance(), then we don't need to change all the 
constructor signatures and keep a member variable of the cache in the context. 


> FunctionContext should provide a Cache
> --------------------------------------
>
>                 Key: GEODE-393
>                 URL: https://issues.apache.org/jira/browse/GEODE-393
>             Project: Geode
>          Issue Type: Improvement
>          Components: functions
>            Reporter: Dan Smith
>            Assignee: David Anuta
>              Labels: starter
>
> FunctionContext has methods to get the arguments to the function and the 
> result sender, but there is no way to get the Cache or DistributedSystem.
> This means pretty much any function will need to statically look up the cache 
> using CacheFactory.getAnyInstance(). While that works, it makes it impossible 
> to write unit tests for functions by passing in a mock cache.
> Note that onRegion functions are provided a RegionFunctionContext, which does 
> provide these functions with a means to look up the cache, but not all 
> functions are applied to a region.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to