Example usage for com.google.common.collect MapMaker makeComputingMap

List of usage examples for com.google.common.collect MapMaker makeComputingMap

Introduction

In this page you can find the example usage for com.google.common.collect MapMaker makeComputingMap.

Prototype

@Override
    public <K, V> ConcurrentMap<K, V> makeComputingMap(Function<? super K, ? extends V> computer) 

Source Link

Usage

From source file:de.cosmocode.palava.cache.AbstractComputingCacheService.java

public AbstractComputingCacheService() {
    // weak value "should" remove empty queues from the map
    final MapMaker maker = new MapMaker().weakValues();
    this.computations = maker.makeComputingMap(new Function<Serializable, Queue<ValueFuture<Object>>>() {

        @Override/*w  w w.  j  ava2  s.co m*/
        public Queue<ValueFuture<Object>> apply(Serializable from) {
            return new ConcurrentLinkedQueue<ValueFuture<Object>>();
        }

    });
}

From source file:org.waveprotocol.wave.examples.fedone.frontend.ClientFrontendImpl.java

@Inject
public ClientFrontendImpl(final HashedVersionFactory hashedVersionFactory, WaveletProvider waveletProvider,
        WaveBus wavebus) {/*from   w  w w  . j  av a 2s  . c  om*/
    this.waveletProvider = waveletProvider;
    wavebus.subscribe(this);
    MapMaker mapMaker = new MapMaker();
    perWavelet = mapMaker.makeComputingMap(new Function<WaveletName, PerWavelet>() {
        @Override
        public PerWavelet apply(WaveletName waveletName) {
            return new PerWavelet(waveletName, hashedVersionFactory.createVersionZero(waveletName));
        }
    });

    perUser = mapMaker.makeComputingMap(new Function<ParticipantId, UserManager>() {
        @Override
        public UserManager apply(ParticipantId from) {
            return new UserManager(hashedVersionFactory);
        }
    });
}

From source file:org.opencms.jsp.util.CmsJspStandardContextBean.java

/**
 * Returns a lazy map which computes the detail page link as a value when given the name of a (named) dynamic function
 * as a key.<p>//ww w  . j av a 2s  .c o m
 * 
 * @return a lazy map for computing function detail page links  
 */
public Map<String, String> getFunctionDetail() {

    MapMaker mm = new MapMaker();
    return mm.makeComputingMap(new Function<String, String>() {

        public String apply(String key) {

            String detailType = CmsDetailPageInfo.FUNCTION_PREFIX + key;
            CmsADEConfigData config = OpenCms.getADEManager().lookupConfiguration(m_cms,
                    m_cms.addSiteRoot(m_cms.getRequestContext().getUri()));
            List<CmsDetailPageInfo> detailPages = config.getDetailPagesForType(detailType);
            if ((detailPages == null) || (detailPages.size() == 0)) {
                return "";
            }
            CmsDetailPageInfo mainDetailPage = detailPages.get(0);
            CmsUUID id = mainDetailPage.getId();
            CmsResource detailRes;
            try {
                detailRes = m_cms.readResource(id);
                return OpenCms.getLinkManager().substituteLink(m_cms, detailRes);
            } catch (CmsException e) {
                LOG.warn(e.getLocalizedMessage(), e);
                return "";
            }
        }
    });
}

From source file:org.opencms.jsp.util.CmsJspStandardContextBean.java

/**
 * Returns a map which allows access to dynamic function beans using the JSP EL.<p>
 * /*from   w  w  w. j  a  v  a2 s .c o m*/
 * When given a key, the returned map will look up the corresponding dynamic function in the module configuration.<p>
 * 
 * @return  a map which allows access to dynamic function beans
 */
public Object getFunction() {

    if (m_function != null) {
        return m_function;
    }
    MapMaker mm = new MapMaker();
    m_function = mm.makeComputingMap(new Function<String, Object>() {

        public Object apply(String key) {

            try {
                CmsDynamicFunctionBean dynamicFunction = readDynamicFunctionBean(key);
                CmsDynamicFunctionBeanWrapper wrapper = new CmsDynamicFunctionBeanWrapper(m_cms,
                        dynamicFunction);
                return wrapper;

            } catch (CmsException e) {
                return new CmsDynamicFunctionBeanWrapper(m_cms, null);
            }
        }
    });
    return m_function;

}

From source file:org.opencms.jsp.util.CmsJspStandardContextBean.java

/**
 * Returns a lazy map which creates a wrapper object for a dynamic function format when given an XML content
 * as a key.<p>/*ww  w  .j a  v a  2 s. com*/
 * 
 * @return a lazy map for accessing function formats for a content 
 */
public Map<CmsJspContentAccessBean, CmsDynamicFunctionFormatWrapper> getFunctionFormatFromContent() {

    MapMaker mm = new MapMaker();
    return mm.makeComputingMap(new Function<CmsJspContentAccessBean, CmsDynamicFunctionFormatWrapper>() {

        public CmsDynamicFunctionFormatWrapper apply(CmsJspContentAccessBean contentAccess) {

            CmsXmlContent content = (CmsXmlContent) (contentAccess.getRawContent());
            CmsDynamicFunctionParser parser = new CmsDynamicFunctionParser();
            CmsDynamicFunctionBean functionBean = null;
            try {
                functionBean = parser.parseFunctionBean(m_cms, content);
            } catch (CmsException e) {
                return new CmsDynamicFunctionFormatWrapper(m_cms, null);
            }
            String type = getContainer().getType();
            String width = getContainer().getWidth();
            int widthNum = -1;
            try {
                widthNum = Integer.parseInt(width);
            } catch (NumberFormatException e) {
                // NOOP 
            }
            CmsDynamicFunctionBean.Format format = functionBean.getFormatForContainer(m_cms, type, widthNum);
            CmsDynamicFunctionFormatWrapper wrapper = new CmsDynamicFunctionFormatWrapper(m_cms, format);
            return wrapper;
        }
    });

}

From source file:org.opencms.jsp.util.CmsDynamicFunctionBeanWrapper.java

/**
 * Gets the lazy map for accessing the various function formats.<p>
 * //from   w w  w .j av a  2 s.  c om
 * @return a map which allows access to the various function formats 
 */
public Object getFormatFor() {

    MapMaker mm = new MapMaker();
    Function<Object, Object> mapFunction = new Function<Object, Object>() {

        public Object apply(Object param) {

            if (m_functionBean == null) {
                return new CmsDynamicFunctionFormatWrapper(m_cms, null);
            }
            int width = -1;
            String type = null;
            boolean isWidth = false;
            if (param instanceof Long) {
                width = (int) ((Long) param).longValue();
                isWidth = true;
            } else if (param instanceof Integer) {
                width = ((Integer) param).intValue();
                isWidth = true;
            } else {
                type = param.toString();
            }
            Format format;
            if (isWidth) {
                format = m_functionBean.getFormatForContainer(m_cms, "", width);
            } else {
                format = m_functionBean.getFormatForContainer(m_cms, type, -1);
            }
            CmsDynamicFunctionFormatWrapper wrapper = new CmsDynamicFunctionFormatWrapper(m_cms, format);
            return wrapper;
        }
    };
    return mm.makeComputingMap(mapFunction);
}