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
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 + "] ...");
40
41
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 }