Package com.opengamma.bbg.referencedata.cache

Source Code of com.opengamma.bbg.referencedata.cache.DiskStoreEHValueCachingReferenceDataProvider$CachedReferenceDataForDisk

/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.bbg.referencedata.cache;

import java.io.Serializable;

import net.sf.ehcache.CacheManager;

import org.fudgemsg.FudgeContext;
import org.fudgemsg.FudgeMsg;

import com.opengamma.bbg.referencedata.ReferenceData;
import com.opengamma.bbg.referencedata.ReferenceDataProvider;

/**
* Decorates a reference data provider, adding caching.
* <p>
* The cache is implemented using {@code EHCache} and uses a byte[] for use on disk.
*/
public class DiskStoreEHValueCachingReferenceDataProvider extends EHValueCachingReferenceDataProvider {

  /**
   * Creates an instance.
   *
   * @param underlying  the underlying reference data provider, not null
   * @param cacheManager  the cache manager, not null
   */
  public DiskStoreEHValueCachingReferenceDataProvider(final ReferenceDataProvider underlying, final CacheManager cacheManager) {
    super(underlying, cacheManager);
  }

  /**
   * Creates an instance.
   *
   * @param underlying  the underlying reference data provider, not null
   * @param cacheManager  the cache manager, not null
   * @param fudgeContext  the Fudge context, not null
   */
  public DiskStoreEHValueCachingReferenceDataProvider(final ReferenceDataProvider underlying, final CacheManager cacheManager, final FudgeContext fudgeContext) {
    super(underlying, cacheManager, fudgeContext);
  }

  //-------------------------------------------------------------------------
  @Override
  protected ReferenceData parseCachedObject(Object fromCache) {
    CachedReferenceDataForDisk rd = (CachedReferenceDataForDisk) fromCache;
    FudgeMsg fieldValues = getFudgeContext().deserialize(rd._fieldData).getMessage();
    return new ReferenceData(rd._identifier, fieldValues);
  }

  @Override
  protected Object createCachedObject(ReferenceData refDataResult) {
    CachedReferenceDataForDisk result = new CachedReferenceDataForDisk();
    result._identifier = refDataResult.getIdentifier();
    result._fieldData = getFudgeContext().toByteArray(refDataResult.getFieldValues());
    return result;
  }

  //-------------------------------------------------------------------------
  /**
   * Data holder for storing the results.
   */
  private static class CachedReferenceDataForDisk implements Serializable {
    /** Serialization. */
    private static final long serialVersionUID = -8758715022254765226L;
    private String _identifier;
    private byte[] _fieldData;
  }

}
TOP

Related Classes of com.opengamma.bbg.referencedata.cache.DiskStoreEHValueCachingReferenceDataProvider$CachedReferenceDataForDisk

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.