X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fmanager%2Fimpl%2Futil%2FInterfacesHelper.java;h=059ba45ec9b79956fa4a3f07a0adad98888d6a3c;hp=a6e9b1ba965b8532eb2e688742ca6ec66c5d5e10;hb=2b78ca93f44c372fd72927db6cbd65f5d8387b49;hpb=87837c5398976e1f44418e9f161efea9d5fa4e7c diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelper.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelper.java index a6e9b1ba96..059ba45ec9 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelper.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/util/InterfacesHelper.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2013, 2017 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -7,28 +7,30 @@ */ package org.opendaylight.controller.config.manager.impl.util; -import org.opendaylight.controller.config.api.annotations.AbstractServiceInterface; -import org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnotation; -import org.opendaylight.controller.config.spi.Module; -import org.opendaylight.controller.config.spi.ModuleFactory; - -import javax.management.JMX; +import com.google.common.collect.ImmutableSet; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import javax.management.JMX; +import org.opendaylight.controller.config.api.annotations.AbstractServiceInterface; +import org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnotation; +import org.opendaylight.controller.config.spi.Module; +import org.opendaylight.controller.config.spi.ModuleFactory; + +public final class InterfacesHelper { -public class InterfacesHelper { + private InterfacesHelper() { + } public static Set> getAllInterfaces(Class clazz) { if (clazz.isInterface()) { - throw new IllegalArgumentException(clazz - + " should not be an interface"); + throw new IllegalArgumentException(clazz + " should not be an interface"); } // getInterfaces gets interfaces implemented directly by this class Set> toBeInspected = new HashSet<>(); - while (clazz.equals(Object.class) == false) { + while (!clazz.equals(Object.class)) { toBeInspected.addAll(Arrays.asList(clazz.getInterfaces())); // get parent class clazz = clazz.getSuperclass(); @@ -37,18 +39,18 @@ public class InterfacesHelper { } - private static Set> getAllSuperInterfaces(Set> ifcs) { - ifcs = new HashSet<>(ifcs); // create copy to modify + private static Set> getAllSuperInterfaces(final Set> ifcs) { + Set> interfaces = new HashSet<>(ifcs); // create copy to modify // each interface can extend other interfaces Set> result = new HashSet<>(); - while (ifcs.size() > 0) { - Iterator> iterator = ifcs.iterator(); + while (!interfaces.isEmpty()) { + Iterator> iterator = interfaces.iterator(); Class ifc = iterator.next(); iterator.remove(); - if (ifc.isInterface() == false) { + if (!ifc.isInterface()) { throw new IllegalArgumentException(ifc + " should be an interface"); } - ifcs.addAll(Arrays.asList(ifc.getInterfaces())); + interfaces.addAll(Arrays.asList(ifc.getInterfaces())); result.add(ifc); } return result; @@ -56,9 +58,12 @@ public class InterfacesHelper { /** * Get interfaces that this class is derived from that are JMX interfaces. + * + * @param configBeanClass + * config bean class + * @return set containing classes */ - public static Set> getMXInterfaces( - Class configBeanClass) { + public static Set> getMXInterfaces(final Class configBeanClass) { Set> allInterfaces = getAllInterfaces(configBeanClass); Set> result = new HashSet<>(); for (Class clazz : allInterfaces) { @@ -73,15 +78,17 @@ public class InterfacesHelper { * Get all implemented interfaces that have * {@link org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnotation} * annotation. + * + * @param configBeanClass + * config bean class + * @return set containing classes */ - public static Set> getServiceInterfaces( - Class configBeanClass) { + public static Set> getServiceInterfaces(final Class configBeanClass) { Set> allInterfaces = getAllInterfaces(configBeanClass); Set> result = new HashSet<>(); for (Class clazz : allInterfaces) { if (AbstractServiceInterface.class.isAssignableFrom(clazz)) { - ServiceInterfaceAnnotation annotation = clazz - .getAnnotation(ServiceInterfaceAnnotation.class); + ServiceInterfaceAnnotation annotation = clazz.getAnnotation(ServiceInterfaceAnnotation.class); if (annotation != null) { result.add(clazz); } @@ -90,53 +97,58 @@ public class InterfacesHelper { return result; } - public static Set> getAllAbstractServiceClasses(Class configBeanClass) { + public static Set> getAllAbstractServiceClasses( + final Class configBeanClass) { Set> foundGeneratedSIClasses = new HashSet<>(); for (Class clazz : getAllInterfaces(configBeanClass)) { - if (AbstractServiceInterface.class.isAssignableFrom(clazz) && AbstractServiceInterface.class.equals(clazz) == false) { + if (AbstractServiceInterface.class.isAssignableFrom(clazz) + && !AbstractServiceInterface.class.equals(clazz)) { foundGeneratedSIClasses.add((Class) clazz); } } return getAllAbstractServiceInterfaceClasses(foundGeneratedSIClasses); } - /** * Get OSGi registration types under which config bean instance should be * registered. This is specified in * {@link org.opendaylight.controller.config.api.annotations.ServiceInterfaceAnnotation#osgiRegistrationType()} + * + * @param configBeanClass config bean class + * @return set of classes */ - public static Set> getOsgiRegistrationTypes( - Class configBeanClass) { - // TODO test with service interface hierarchy + public static Set> getOsgiRegistrationTypes(final Class configBeanClass) { Set> serviceInterfaces = getServiceInterfaces(configBeanClass); Set> result = new HashSet<>(); for (Class clazz : serviceInterfaces) { - ServiceInterfaceAnnotation annotation = clazz - .getAnnotation(ServiceInterfaceAnnotation.class); + ServiceInterfaceAnnotation annotation = clazz.getAnnotation(ServiceInterfaceAnnotation.class); result.add(annotation.osgiRegistrationType()); } return result; } - public static Set getQNames(Set siAnnotations) { - Set qNames = new HashSet<>(); - for (ServiceInterfaceAnnotation sia: siAnnotations) { - qNames.add(sia.value()); + public static Set getQNames(final Set siAnnotations) { + Set names = new HashSet<>(); + for (ServiceInterfaceAnnotation sia : siAnnotations) { + names.add(sia.value()); } - return Collections.unmodifiableSet(qNames); + return ImmutableSet.copyOf(names); } - public static Set getServiceInterfaceAnnotations(ModuleFactory factory) { - Set> implementedServiceIntefaces = Collections.unmodifiableSet(factory.getImplementedServiceIntefaces()); + public static Set getServiceInterfaceAnnotations(final ModuleFactory factory) { + Set> implementedServiceIntefaces = Collections + .unmodifiableSet(factory.getImplementedServiceIntefaces()); return getServiceInterfaceAnnotations(implementedServiceIntefaces); } - private static Set getServiceInterfaceAnnotations(Set> implementedServiceIntefaces) { - Set> inspected = getAllAbstractServiceInterfaceClasses(implementedServiceIntefaces); + private static Set getServiceInterfaceAnnotations( + final Set> implementedServiceIntefaces) { + Set> inspected = getAllAbstractServiceInterfaceClasses( + implementedServiceIntefaces); Set result = new HashSet<>(); - // SIs can form hierarchies, inspect superclass until it does not extend AbstractSI + // SIs can form hierarchies, inspect superclass until it does not extend + // AbstractSI for (Class clazz : inspected) { ServiceInterfaceAnnotation annotation = clazz.getAnnotation(ServiceInterfaceAnnotation.class); if (annotation != null) { @@ -147,16 +159,14 @@ public class InterfacesHelper { } static Set> getAllAbstractServiceInterfaceClasses( - Set> directlyImplementedAbstractSIs) { + final Set> directlyImplementedAbstractSIs) { - Set> allInterfaces = getAllSuperInterfaces((Set) directlyImplementedAbstractSIs); + Set> allInterfaces = getAllSuperInterfaces(directlyImplementedAbstractSIs); Set> result = new HashSet<>(); - for(Class ifc: allInterfaces){ - if (AbstractServiceInterface.class.isAssignableFrom(ifc) && - ifc.equals(AbstractServiceInterface.class) == false) { + for (Class ifc : allInterfaces) { + if (AbstractServiceInterface.class.isAssignableFrom(ifc) && !ifc.equals(AbstractServiceInterface.class)) { result.add((Class) ifc); } - } return result; }