// 第一层pipelineId , 第二层DbMediaSource id
private Map<Long, Map<DbMediaSource, DbDialect>> dialects;
public DbDialectFactory(){
// 构建第一层map
GenericMapMaker mapMaker = null;
mapMaker = new MapMaker().softValues().evictionListener(new MapEvictionListener<Long, Map<DbMediaSource, DbDialect>>() {
public void onEviction(Long pipelineId,
Map<DbMediaSource, DbDialect> dialect) {
if (dialect == null) {
return;
}
for (DbDialect dbDialect : dialect.values()) {
dbDialect.destory();
}
}
});
dialects = mapMaker.makeComputingMap(new Function<Long, Map<DbMediaSource, DbDialect>>() {
public Map<DbMediaSource, DbDialect> apply(final Long pipelineId) {
// 构建第二层map
return new MapMaker().makeComputingMap(new Function<DbMediaSource, DbDialect>() {