Clover Coverage Report - JmDNS 3.4.1
Coverage timestamp: Thu Aug 25 2011 13:06:33 CEST
../../img/srcFileCovDistChart0.png 77% of files have more coverage
13   164   9   2.6
8   44   0.69   1.67
5     1.8  
3    
 
  NetworkTopologyDiscovery       Line # 51 0 - 0 0 - -1.0
  NetworkTopologyDiscovery.Factory       Line # 56 13 0% 9 26 0% 0.0
  NetworkTopologyDiscovery.Factory.ClassDelegate       Line # 62 0 - 0 0 - -1.0
 
No Tests
 
1    package javax.jmdns;
2   
3    import java.net.InetAddress;
4    import java.net.NetworkInterface;
5    import java.util.concurrent.atomic.AtomicReference;
6   
7    import javax.jmdns.impl.NetworkTopologyDiscoveryImpl;
8   
9    /**
10    * This class is used to resolve the list of Internet address to use when attaching JmDNS to the network.
11    * <p>
12    * To create you own filtering class for Internet Addresses you will need to implement the class and the factory delegate. These must be called before any other call to JmDNS.
13    *
14    * <pre>
15    * public static class MyNetworkTopologyDiscovery implements NetworkTopologyDiscovery {
16    *
17    * &#064;Override
18    * public InetAddress[] getInetAddresses() {
19    * // TODO Auto-generated method stub
20    * return null;
21    * }
22    *
23    * &#064;Override
24    * public boolean useInetAddress(NetworkInterface networkInterface, InetAddress interfaceAddress) {
25    * // TODO Auto-generated method stub
26    * return false;
27    * }
28    *
29    * }
30    *
31    * public static class MyClass implements NetworkTopologyDiscovery.Factory.ClassDelegate {
32    * public MyClass() {
33    * super();
34    * NetworkTopologyDiscovery.Factory.setClassDelegate(this);
35    *
36    * // Access JmDNS or JmmDNS
37    * }
38    *
39    * &#064;Override
40    * public NetworkTopologyDiscovery newNetworkTopologyDiscovery() {
41    * return new MyNetworkTopologyDiscovery();
42    * }
43    *
44    * }
45    * </pre>
46    *
47    * </p>
48    *
49    * @author Pierre Frisch
50    */
 
51    public interface NetworkTopologyDiscovery {
52   
53    /**
54    * NetworkTopologyDiscovery.Factory enable the creation of new instance of NetworkTopologyDiscovery.
55    */
 
56    public static final class Factory {
57    private static volatile NetworkTopologyDiscovery _instance;
58   
59    /**
60    * This interface defines a delegate to the NetworkTopologyDiscovery.Factory class to enable subclassing.
61    */
 
62    public static interface ClassDelegate {
63   
64    /**
65    * Allows the delegate the opportunity to construct and return a different NetworkTopologyDiscovery.
66    *
67    * @return Should return a new NetworkTopologyDiscovery Object.
68    * @see #classDelegate()
69    * @see #setClassDelegate(ClassDelegate anObject)
70    */
71    public NetworkTopologyDiscovery newNetworkTopologyDiscovery();
72    }
73   
74    private static final AtomicReference<Factory.ClassDelegate> _databaseClassDelegate = new AtomicReference<Factory.ClassDelegate>();
75   
 
76  0 toggle private Factory() {
77  0 super();
78    }
79   
80    /**
81    * Assigns <code>delegate</code> as NetworkTopologyDiscovery's class delegate. The class delegate is optional.
82    *
83    * @param delegate
84    * The object to set as NetworkTopologyDiscovery's class delegate.
85    * @see #classDelegate()
86    * @see JmmDNS.Factory.ClassDelegate
87    */
 
88  0 toggle public static void setClassDelegate(Factory.ClassDelegate delegate) {
89  0 _databaseClassDelegate.set(delegate);
90    }
91   
92    /**
93    * Returns NetworkTopologyDiscovery's class delegate.
94    *
95    * @return NetworkTopologyDiscovery's class delegate.
96    * @see #setClassDelegate(ClassDelegate anObject)
97    * @see JmmDNS.Factory.ClassDelegate
98    */
 
99  0 toggle public static Factory.ClassDelegate classDelegate() {
100  0 return _databaseClassDelegate.get();
101    }
102   
103    /**
104    * Returns a new instance of NetworkTopologyDiscovery using the class delegate if it exists.
105    *
106    * @return new instance of NetworkTopologyDiscovery
107    */
 
108  0 toggle protected static NetworkTopologyDiscovery newNetworkTopologyDiscovery() {
109  0 NetworkTopologyDiscovery instance = null;
110  0 Factory.ClassDelegate delegate = _databaseClassDelegate.get();
111  0 if (delegate != null) {
112  0 instance = delegate.newNetworkTopologyDiscovery();
113    }
114  0 return (instance != null ? instance : new NetworkTopologyDiscoveryImpl());
115    }
116   
117    /**
118    * Return the instance of the Multihommed Multicast DNS.
119    *
120    * @return the JmmDNS
121    */
 
122  0 toggle public static NetworkTopologyDiscovery getInstance() {
123  0 if (_instance == null) {
124  0 synchronized (NetworkTopologyDiscovery.Factory.class) {
125  0 if (_instance == null) {
126  0 _instance = NetworkTopologyDiscovery.Factory.newNetworkTopologyDiscovery();
127    }
128    }
129    }
130  0 return _instance;
131    }
132    }
133   
134    /**
135    * Get all local Internet Addresses for the machine.
136    *
137    * @return Set of InetAddress
138    */
139    public abstract InetAddress[] getInetAddresses();
140   
141    /**
142    * Check if a given InetAddress should be used for mDNS
143    *
144    * @param networkInterface
145    * @param interfaceAddress
146    * @return <code>true</code> is the address is to be used, <code>false</code> otherwise.
147    */
148    public boolean useInetAddress(NetworkInterface networkInterface, InetAddress interfaceAddress);
149   
150    /**
151    * Locks the given InetAddress if the device requires it.
152    *
153    * @param interfaceAddress
154    */
155    public void lockInetAddress(InetAddress interfaceAddress);
156   
157    /**
158    * Locks the given InetAddress if the device requires it.
159    *
160    * @param interfaceAddress
161    */
162    public void unlockInetAddress(InetAddress interfaceAddress);
163   
164    }