View Javadoc

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   * @since 0.4
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  	/** {@inheritDoc} from {@link MotionSeparatorCache} */
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  			// separator will add itself as an connection listener if necessary (and remove itself as well)
31  			this.separatorByConnection.put(openedConnection, newSeparator);
32  		}
33  		
34  		return this.separatorByConnection.get(openedConnection);
35  	}
36  
37  }