Project

General

Profile

« Previous | Next » 

Revision 02d5f1f1

Added by Andreas Müller over 5 years ago

cleanup and better use of generics

View differences:

eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/cdm/api/cache/CdmServiceCacher.java
31 31
 *        correct service to load / cache the entity.
32 32
 *
33 33
 * @author cmathew
34
 *
35
 * @param <T>
36 34
 */
37 35
@Component //FIXME This indicates that the CdmServiceCacher is initialized as Spring Component but it seems only to be instantiated directly
38 36
public class CdmServiceCacher extends CdmCacher implements ICdmEntitySessionManagerObserver {
......
50 48
        setUpCacheManager();
51 49

  
52 50
        DefinedTermBase.setCacher(this);
53
        CdmTransientEntityCacher.setDefaultCacher(this);
51
        CdmTransientEntityCacher.setPermanentCacher(this);
54 52
        TermServiceRequestExecutor.setDefaultCacher(this);
55 53

  
56 54
        cacheLoader = new CacheLoader(this);
57

  
58 55
    }
59 56

  
60

  
61

  
62

  
63

  
64
    /**
65
     *
66
     */
67 57
    private void setUpCacheManager() {
68 58

  
69 59
        EhCacheConfiguration cacheConfig = new EhCacheConfiguration();
......
91 81
        sizeOfConfig.setMaxDepthExceededBehavior("abort");
92 82

  
93 83
        return new CacheConfiguration(DEFAULT_CACHE_NAME, 0)
94
        .eternal(true)
95
        .statistics(true)
96
        .sizeOfPolicy(sizeOfConfig)
97
        .overflowToOffHeap(false);
84
        	.eternal(true)
85
        	.statistics(true)
86
        	.sizeOfPolicy(sizeOfConfig)
87
        	.overflowToOffHeap(false);
98 88

  
99 89
    }
100 90

  
......
131 121
    }
132 122

  
133 123
    @Override
134
    public CdmBase getFromCache(CdmBase cdmBase) {
135
        CdmBase cachedCdmEntity = null;
124
    public <T extends CdmBase> T  getFromCache(T cdmBase) {
125
        T cachedCdmEntity = null;
136 126
        // first we check in the active session cache if the
137 127
        // entity has been loaded there
138 128
        // FIXME:Remoting do we really need the cdmTransientEntityCacher
139 129
        // here. Is it not guarenteed that all every entity which 'isCachable'
140 130
        // by this cacher is cached only in this cacher ?
141 131
        if(!isCachable(cdmBase) && cdmTransientEntityCacher != null) {
142
            CdmEntityCacheKey key = CdmTransientEntityCacher.generateKey(cdmBase);
132
            CdmEntityCacheKey<T> key = CdmTransientEntityCacher.generateKey(cdmBase);
143 133
            cachedCdmEntity = cdmTransientEntityCacher.getFromCache(key);
144 134

  
145 135
        }
......
150 140
    }
151 141

  
152 142
    @Override
153
    public CdmBase load(CdmBase cdmEntity) {
154
        CdmBase cachedCdmEntity = getFromCache(cdmEntity.getUuid());
143
    public <T extends CdmBase> T load(T cdmEntity) {
144
        T cachedCdmEntity = (T)getFromCache(cdmEntity.getUuid());
155 145

  
156 146
        if(isCachable(cdmEntity) && cachedCdmEntity == null) {
157 147
            cachedCdmEntity =  cacheLoader.load(cdmEntity, false, true);

Also available in: Unified diff