View Javadoc

1   package net.sf.josceleton.connection.impl.osc;
2   
3   import net.sf.josceleton.commons.reflect.ClassAdapter;
4   import net.sf.josceleton.commons.reflect.DynamicInstantiationException;
5   import net.sf.josceleton.commons.reflect.DynamicInstantiator;
6   
7   import org.apache.commons.logging.Log;
8   import org.apache.commons.logging.LogFactory;
9   
10  import com.google.inject.Inject;
11  import com.illposed.osc.OSCPortIn;
12  
13  class OscPortOpenerImpl implements OscPortOpener {
14  	
15  	private static final Log LOG = LogFactory.getLog(OscPortOpenerImpl.class);
16  	
17  	private final DynamicInstantiator instantiator;
18  	
19  	private final OscPortFactory portFactory;
20  	
21  	private final ClassAdapter<OSCPortIn> oscPortInType;
22  	
23  	
24  	@Inject OscPortOpenerImpl(
25  			final DynamicInstantiator instantiator,
26  			final OscPortFactory portFactory,
27  			final ClassAdapter<OSCPortIn> oscPortInType
28  			) {
29  		this.instantiator = instantiator;
30  		this.portFactory = portFactory;
31  		this.oscPortInType = oscPortInType;
32  	}
33  
34  	/** {@inheritDoc} from {@link OscPortOpener} */
35  	@Override public final OscPort connect(final int port) {
36  		
37  		final OSCPortIn oscPortIn;
38  		try {
39  			LOG.debug("Connecting to OSCPortIn with port number [" + port + "] ..."); // replace with AOP
40  			
41  			// a.k.a. new OSCPortIn(port);
42  			oscPortIn = this.instantiator.create(this.oscPortInType, Integer.valueOf(port));
43  			
44  			LOG.debug("Connection to OSCPortIn established.");
45  			
46  		} catch (final DynamicInstantiationException e) {
47  			throw OscPortOpeningException.newByPort(port, e);
48  		}
49  		
50  		return this.portFactory.create(oscPortIn);
51  	}
52  	
53  }