2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.sal.dom.broker.osgi;
10 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
11 import org.opendaylight.mdsal.dom.api.DOMMountPointService;
13 import org.opendaylight.controller.sal.core.api.BrokerService;
14 import org.opendaylight.controller.sal.core.api.model.SchemaService;
15 import org.osgi.framework.ServiceReference;
16 import java.util.Arrays;
18 @SuppressWarnings("unchecked")
19 public class ProxyFactory {
21 public static <T extends BrokerService> T createProxy(
22 final ServiceReference<T> serviceRef, final T service) {
24 Object _createProxyImpl = ProxyFactory.createProxyImpl(serviceRef,
26 return ((T) _createProxyImpl);
29 private static Object createProxyImpl(final ServiceReference<?> ref,
30 final DOMMountPointService service) {
32 return new DOMMountPointServiceProxy(
33 ((ServiceReference<DOMMountPointService>) ref), service);
36 private static Object createProxyImpl(final ServiceReference<?> ref,
37 final SchemaService service) {
39 return new SchemaServiceProxy(((ServiceReference<SchemaService>) ref),
43 private static DOMDataBrokerProxy createProxyImpl(
44 final ServiceReference<?> ref, final DOMDataBroker service) {
46 return new DOMDataBrokerProxy(((ServiceReference<DOMDataBroker>) ref),
50 private static Object createProxyImplFallback(final ServiceReference<?> reference,
51 final BrokerService service) {
56 private static Object createProxyImpl(final ServiceReference<?> ref,
57 final BrokerService service) {
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 createProxyImplFallback(ref, service);
68 throw new IllegalArgumentException("Unhandled parameter types: "
69 + Arrays.<Object> asList(ref, service).toString());