zoukankan      html  css  js  c++  java
  • Better ChildFactory

    http://blogs.oracle.com/geertjan/entry/better_childfactory

    ————————————————————————————————————————————————————————————————————————

    Thanks to Jesse, here's a corrected & improved ChildFactory from a few days ago, using ChildFactory.Detachable so that you have addNotify/removeNotify to add/remove the LookupListener and thus avoid a memory leak, together with a createKeys/resultChanged that is simplified too.
    private class FirstLevelChildFactory extends ChildFactory.Detachable<ResultType> implements LookupListener {

        Result<ResultSet> resultRetrievedFromYahoo;

        @Override
        protected void addNotify() {
            resultRetrievedFromYahoo = Utilities.actionsGlobalContext().lookupResult(ResultSet.class);
            resultRetrievedFromYahoo.addLookupListener(this);
        }

        @Override
        protected void removeNotify() {
            resultRetrievedFromYahoo.removeLookupListener(this);
            resultRetrievedFromYahoo = null;
        }

        @Override
        protected boolean createKeys(List<ResultType> list) {
            for (ResultSet rs : resultRetrievedFromYahoo.allInstances()) {
                list.addAll(rs.getResult());
            }
            return true;
        }

        @Override
        protected Node createNodeForKey(ResultType key) {
            String[] split = key.getTitle().split(" ");
            String theNextWordToBeSearched = split[split.length - 1];
            AbstractNode firstLevelNode =
                    new AbstractNode(
                    Children.create(new GenericChildFactory(theNextWordToBeSearched), true),
                    Lookups.singleton(key));
            firstLevelNode.setShortDescription(key.getSummary());
            firstLevelNode.setDisplayName(key.getTitle());
            return firstLevelNode;
        }

        @Override
        public void resultChanged(LookupEvent le) {
            refresh(true);
        }

    }
    This is a very simple & elegant solution.

  • 相关阅读:
    JVM相关小结
    Tachyon框架的Worker心跳及Master高可用性分析
    Yarn中的几种状态机
    Spark on Yarn遇到的几个问题
    Spark1.0.x入门指南
    Mapreduce执行过程分析(基于Hadoop2.4)——(三)
    Mapreduce执行过程分析(基于Hadoop2.4)——(二)
    Mapreduce执行过程分析(基于Hadoop2.4)——(一)
    使用HttpClient实现文件的上传下载
    Hadoop2.3+Hive0.12集群部署
  • 原文地址:https://www.cnblogs.com/cuizhf/p/2189950.html
Copyright © 2011-2022 走看看