1 package net.sf.josceleton.connection.impl.service.motion;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import com.google.inject.Inject;
7
8 import net.sf.josceleton.connection.api.Connection;
9 import net.sf.josceleton.connection.api.service.motion.MotionSeparator;
10 import net.sf.josceleton.connection.api.service.motion.MotionSeparatorCache;
11
12
13
14
15 class MotionSeparatorCacheImpl implements MotionSeparatorCache {
16
17 private final Map<Connection, MotionSeparator> separatorByConnection = new HashMap<Connection, MotionSeparator>();
18
19 private final MotionSeparatorFactory factory;
20
21 @Inject MotionSeparatorCacheImpl(final MotionSeparatorFactory factory) {
22 this.factory = factory;
23 }
24
25
26 @Override public final MotionSeparator lookupMotionSeparator(final Connection openedConnection) {
27 if(this.separatorByConnection.containsKey(openedConnection) == false) {
28
29 final MotionSeparator newSeparator = this.factory.create(openedConnection);
30
31 this.separatorByConnection.put(openedConnection, newSeparator);
32 }
33
34 return this.separatorByConnection.get(openedConnection);
35 }
36
37 }