[
https://issues.apache.org/jira/browse/S2GRAPH-82?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15453426#comment-15453426
]
DOYUNG YOON commented on S2GRAPH-82:
------------------------------------
[~daewon] I just merged this issue for our first release. I think we can always
refactor code on separate issue so I am closing out this issue.
> Merge DeferCache and FutureCache.
> ---------------------------------
>
> Key: S2GRAPH-82
> URL: https://issues.apache.org/jira/browse/S2GRAPH-82
> Project: S2Graph
> Issue Type: Improvement
> Affects Versions: 0.1.0
> Reporter: DOYUNG YOON
> Assignee: Daewon Jeong
> Fix For: 0.1.0
>
> Original Estimate: 168h
> Remaining Estimate: 168h
>
> Currently, under org.apache.s2graph.core.utils package, {{DeferCache}} and
> {{FutureCache}} has exactly same behavior except for their Types on Value to
> store.
> It would be better if we can merge these two class. The problem is that there
> is no common interface between asynchbase's {{Deferr}} and scala's {{Future}}.
> I was talk with [~daewon] and here is what we are suggesting, use type class.
> {noformat}
> trait CanDefer[A, M[_], C[_]] {
> def promise: M[A]
> def future(defer: M[A]): C[A]
> def success(defer: M[A], value: A): Unit
> def onSuccess[U](defer: C[A])(pf: PartialFunction[A, U])(implicit ec:
> ExecutionContext)
> }
> {noformat}
> and change DeferCache interface as follow.
> {noformat}
> * M[_] : container type that will be stored in local cache. ex) Promise,
> Defer.
> * C[_]: container type that will be returned to client of this class. Ex)
> Future, Defer.
> * A: actual element type that will be stored in M[_] and C[_].
> class DeferCache[A, M[_], C[_]](config: Config)(implicit ec:
> ExecutionContext, canDefer: CanDefer[A, M, C])
> {noformat}
> First, define some type class CanDefer that has all common interfaces used in
> current DeferCache/FutureCache implementation.
> Secondly, provide implicit value for both of Defer and Future.
> Third, change implimentation to use common type class.
> This is what we have sofar, but any better idea would be appreciated.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)