Merge "Increase IDLE timeout for ssh netconf server"
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / sal / dom / broker / osgi / ProxyFactory.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.sal.dom.broker.osgi;
9
10 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
11 import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
12 import org.opendaylight.controller.sal.core.api.BrokerService;
13 import org.opendaylight.controller.sal.core.api.model.SchemaService;
14 import org.osgi.framework.ServiceReference;
15
16 import java.util.Arrays;
17
18 @SuppressWarnings("unchecked")
19 public class ProxyFactory {
20
21     public static <T extends BrokerService> T createProxy(
22             final ServiceReference<T> serviceRef, final T service) {
23
24         Object _createProxyImpl = ProxyFactory.createProxyImpl(serviceRef,
25                 service);
26         return ((T) _createProxyImpl);
27     }
28
29     private static Object _createProxyImpl(final ServiceReference<?> ref,
30             final DOMMountPointService service) {
31
32         return new DOMMountPointServiceProxy(
33                 ((ServiceReference<DOMMountPointService>) ref), service);
34     }
35
36     private static Object _createProxyImpl(final ServiceReference<?> ref,
37             final SchemaService service) {
38
39         return new SchemaServiceProxy(((ServiceReference<SchemaService>) ref),
40                 service);
41     }
42
43     private static DOMDataBrokerProxy _createProxyImpl(
44             final ServiceReference<?> ref, final DOMDataBroker service) {
45
46         return new DOMDataBrokerProxy(((ServiceReference<DOMDataBroker>) ref),
47                 service);
48     }
49
50     private static Object _createProxyImpl(final ServiceReference<?> reference,
51             final BrokerService service) {
52
53        return service;
54     }
55
56     private static Object createProxyImpl(final ServiceReference<?> ref,
57             final BrokerService service) {
58
59         if (service instanceof DOMDataBroker) {
60             return _createProxyImpl(ref, (DOMDataBroker) service);
61         } else if (service instanceof SchemaService) {
62             return _createProxyImpl(ref, (SchemaService) service);
63         } else if (service instanceof DOMMountPointService) {
64             return _createProxyImpl(ref, (DOMMountPointService) service);
65         } else if (service != null) {
66             return _createProxyImpl(ref, service);
67         } else {
68             throw new IllegalArgumentException("Unhandled parameter types: "
69                     + Arrays.<Object> asList(ref, service).toString());
70         }
71     }
72 }