Committed by
Gerrit Code Review
Adding ability for driver handler behaviours to obtain services via the parent handler context.
Change-Id: Icc71a0c5f1fd50a4accd35777aeca7d0d5811bbf
Showing
2 changed files
with
23 additions
and
3 deletions
... | @@ -15,6 +15,9 @@ | ... | @@ -15,6 +15,9 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.driver; | 16 | package org.onosproject.net.driver; |
17 | 17 | ||
18 | +import org.onlab.osgi.DefaultServiceDirectory; | ||
19 | +import org.onlab.osgi.ServiceDirectory; | ||
20 | + | ||
18 | import static com.google.common.base.MoreObjects.toStringHelper; | 21 | import static com.google.common.base.MoreObjects.toStringHelper; |
19 | 22 | ||
20 | /** | 23 | /** |
... | @@ -24,6 +27,9 @@ public class DefaultDriverHandler implements DriverHandler { | ... | @@ -24,6 +27,9 @@ public class DefaultDriverHandler implements DriverHandler { |
24 | 27 | ||
25 | private final DefaultDriverData data; | 28 | private final DefaultDriverData data; |
26 | 29 | ||
30 | + // Reference to service directory to provide run-time context. | ||
31 | + protected static ServiceDirectory serviceDirectory = new DefaultServiceDirectory(); | ||
32 | + | ||
27 | /** | 33 | /** |
28 | * Creates new driver handler with the attached driver data. | 34 | * Creates new driver handler with the attached driver data. |
29 | * | 35 | * |
... | @@ -49,10 +55,13 @@ public class DefaultDriverHandler implements DriverHandler { | ... | @@ -49,10 +55,13 @@ public class DefaultDriverHandler implements DriverHandler { |
49 | } | 55 | } |
50 | 56 | ||
51 | @Override | 57 | @Override |
58 | + public <T> T get(Class<T> serviceClass) { | ||
59 | + return serviceDirectory.get(serviceClass); | ||
60 | + } | ||
61 | + | ||
62 | + @Override | ||
52 | public String toString() { | 63 | public String toString() { |
53 | - return toStringHelper(this) | 64 | + return toStringHelper(this).add("data", data).toString(); |
54 | - .add("data", data) | ||
55 | - .toString(); | ||
56 | } | 65 | } |
57 | 66 | ||
58 | } | 67 | } | ... | ... |
... | @@ -43,4 +43,15 @@ public interface DriverHandler { | ... | @@ -43,4 +43,15 @@ public interface DriverHandler { |
43 | */ | 43 | */ |
44 | <T extends Behaviour> T behaviour(Class<T> behaviourClass); | 44 | <T extends Behaviour> T behaviour(Class<T> behaviourClass); |
45 | 45 | ||
46 | + /** | ||
47 | + * Returns the reference to the implementation of the specified service. | ||
48 | + * Provides access to run-time context. | ||
49 | + * | ||
50 | + * @param serviceClass service class | ||
51 | + * @param <T> type of service | ||
52 | + * @return service implementation | ||
53 | + * @throws org.onlab.osgi.ServiceNotFoundException if service is unavailable | ||
54 | + */ | ||
55 | + <T> T get(Class<T> serviceClass); | ||
56 | + | ||
46 | } | 57 | } | ... | ... |
-
Please register or login to post a comment