Metric Results

[ summary ] [ packages ] [ cycles ] [ explanations ]

The following document contains the results of a JDepend metric analysis. The various metrics are defined at the bottom of this document.

Summary

[ summary ] [ packages ] [ cycles ] [ explanations ]

Package TC CC AC Ca Ce A I D V
org.opendaylight.netvirt.natservice.internal 59 58 1 1 132 2.0% 99.0% 1.0% 1
org.opendaylight.netvirt.natservice.rpcservice 1 1 0 0 25 0.0% 100.0% 0.0% 1

Packages

[ summary ] [ packages ] [ cycles ] [ explanations ]

org.opendaylight.netvirt.natservice.internal

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 132 2.0% 99.0% 1.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.netvirt.natservice.internal.FloatingIPHandler
org.opendaylight.netvirt.natservice.internal.EventDispatcher
org.opendaylight.netvirt.natservice.internal.ExternalNetworkGroupInstaller
org.opendaylight.netvirt.natservice.internal.ExternalNetworkListener
org.opendaylight.netvirt.natservice.internal.ExternalNetworksChangeListener
org.opendaylight.netvirt.natservice.internal.ExternalRoutersListener
org.opendaylight.netvirt.natservice.internal.ExternalRoutersListener$1
org.opendaylight.netvirt.natservice.internal.ExternalRoutersListener$2
org.opendaylight.netvirt.natservice.internal.ExternalRoutersListener$3
org.opendaylight.netvirt.natservice.internal.ExternalRoutersListener$4
org.opendaylight.netvirt.natservice.internal.ExternalRoutersListener$5
org.opendaylight.netvirt.natservice.internal.ExternalRoutersListener$6
org.opendaylight.netvirt.natservice.internal.ExternalRoutersListener$7
org.opendaylight.netvirt.natservice.internal.FloatingIPListener
org.opendaylight.netvirt.natservice.internal.FloatingIPListener$1
org.opendaylight.netvirt.natservice.internal.IPAddress
org.opendaylight.netvirt.natservice.internal.InterfaceStateEventListener
org.opendaylight.netvirt.natservice.internal.InterfaceStateEventListener$NatFlowAddWorker
org.opendaylight.netvirt.natservice.internal.InterfaceStateEventListener$NatFlowRemoveWorker
org.opendaylight.netvirt.natservice.internal.InterfaceStateEventListener$NatFlowUpdateWorker
org.opendaylight.netvirt.natservice.internal.NAPTEntryEvent
org.opendaylight.netvirt.natservice.internal.NAPTEntryEvent$Operation
org.opendaylight.netvirt.natservice.internal.NAPTEntryEvent$Protocol
org.opendaylight.netvirt.natservice.internal.NAPTSwitchSelector
org.opendaylight.netvirt.natservice.internal.NAPTSwitchSelector$SwitchWeight
org.opendaylight.netvirt.natservice.internal.NaptEventHandler
org.opendaylight.netvirt.natservice.internal.NaptFlowRemovedEventHandler
org.opendaylight.netvirt.natservice.internal.NaptManager
org.opendaylight.netvirt.natservice.internal.NaptPacketInHandler
org.opendaylight.netvirt.natservice.internal.NaptSwitchHA
org.opendaylight.netvirt.natservice.internal.NatConstants
org.opendaylight.netvirt.natservice.internal.NatConstants$ITMTunnelLocType
org.opendaylight.netvirt.natservice.internal.NatInterfaceStateChangeListener
org.opendaylight.netvirt.natservice.internal.NatInterfaceStateChangeListener$NatInterfaceStateAddWorker
org.opendaylight.netvirt.natservice.internal.NatInterfaceStateChangeListener$NatInterfaceStateRemoveWorker
org.opendaylight.netvirt.natservice.internal.NatInterfaceStateChangeListener$NatInterfaceStateUpdateWorker
org.opendaylight.netvirt.natservice.internal.NatNodeEventListener
org.opendaylight.netvirt.natservice.internal.NatRouterInterfaceListener
org.opendaylight.netvirt.natservice.internal.NatServiceCounters
org.opendaylight.netvirt.natservice.internal.NatTunnelInterfaceStateListener
org.opendaylight.netvirt.natservice.internal.NatTunnelInterfaceStateListener$1
org.opendaylight.netvirt.natservice.internal.NatTunnelInterfaceStateListener$2
org.opendaylight.netvirt.natservice.internal.NatTunnelInterfaceStateListener$3
org.opendaylight.netvirt.natservice.internal.NatTunnelInterfaceStateListener$4
org.opendaylight.netvirt.natservice.internal.NatTunnelInterfaceStateListener$TunnelAction
org.opendaylight.netvirt.natservice.internal.NatUtil
org.opendaylight.netvirt.natservice.internal.NatUtil$1
org.opendaylight.netvirt.natservice.internal.RouterDpnChangeListener
org.opendaylight.netvirt.natservice.internal.RouterPortsListener
org.opendaylight.netvirt.natservice.internal.RouterToVpnListener
org.opendaylight.netvirt.natservice.internal.SNATDefaultRouteProgrammer
org.opendaylight.netvirt.natservice.internal.SessionAddress
org.opendaylight.netvirt.natservice.internal.SubnetGwMacChangeListener
org.opendaylight.netvirt.natservice.internal.SubnetmapListener
org.opendaylight.netvirt.natservice.internal.VpnFloatingIpHandler
org.opendaylight.netvirt.natservice.internal.VpnFloatingIpHandler$1
org.opendaylight.netvirt.natservice.internal.VpnFloatingIpHandler$2
org.opendaylight.netvirt.natservice.internal.VpnFloatingIpHandler$3
org.opendaylight.netvirt.natservice.internal.VpnFloatingIpHandler$4
org.opendaylight.netvirt.natservice.rpcservice
com.google.common.base
com.google.common.collect
com.google.common.primitives
com.google.common.util.concurrent
io.netty.util.concurrent
java.lang
java.math
java.net
java.util
java.util.concurrent
org.apache.commons.net.util
org.opendaylight.controller.config.api.osgi
org.opendaylight.controller.liblldp
org.opendaylight.controller.md.sal.binding.api
org.opendaylight.controller.md.sal.common.api.data
org.opendaylight.genius.datastoreutils
org.opendaylight.genius.interfacemanager.globals
org.opendaylight.genius.interfacemanager.interfaces
org.opendaylight.genius.mdsalutil
org.opendaylight.genius.mdsalutil.interfaces
org.opendaylight.genius.mdsalutil.packet
org.opendaylight.infrautils.counters.api
org.opendaylight.netvirt.bgpmanager.api
org.opendaylight.netvirt.elanmanager.api
org.opendaylight.netvirt.fibmanager.api
org.opendaylight.netvirt.neutronvpn.api.utils
org.opendaylight.netvirt.neutronvpn.interfaces
org.opendaylight.netvirt.vpnmanager.api
org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815
org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715
org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action
org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action
org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.output.action._case
org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case
org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026
org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.interfaces
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.dpn.endpoints.dpn.teps.info
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.op.rev160406.tunnels_state.state.tunnel.list
org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406
org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018
org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819
org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes
org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827
org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026
org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match
org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match
org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match
org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fib.rpc.rev160121
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.fibentries
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.fibmanager.rev150330.vrfentries
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.dpn.routers
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.dpn.routers.dpn.routers.list
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.learnt.vpn.vip.to.port.data
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.neutron.router.dpns
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.neutron.router.dpns.router.dpn.list
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.neutron.router.dpns.router.dpn.list.dpn.vpninterfaces.list
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.prefix.to._interface
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.prefix.to._interface.vpn.ids
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.router.interfaces
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.id.to.vpn.instance
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.vpn.instance.op.data.entry
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.to.vpn.id
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.ext.routers
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.external.ips.counter
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.external.ips.counter.external.counters
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.external.networks
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports.ports
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.port.info
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.map
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.map.ip.mapping
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.port.map
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.port.map.ip.port.mapping
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.port.map.ip.port.mapping.intext.ip.protocol.type
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.port.map.ip.port.mapping.intext.ip.protocol.type.ip.port.map
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.napt.switches
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.router.id.name
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.router.to.vpn.mapping
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.snatint.ip.port.map
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.snatint.ip.port.map.intip.port.map
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.snatint.ip.port.map.intip.port.map.ip.port
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.networkmaps
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.neutron.vpn.portip.port.data
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.router.interfaces.map
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.router.interfaces.map.router.interfaces
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.vpnmaps
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.vpn.rpc.rev160201
org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes
org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.l3.rev150712.routers.attributes.routers
org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.port.attributes
org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes
org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.ports.rev150712.ports.attributes.ports
org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712
org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes
org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.subnets
org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action
org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action
org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping
org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.reg.load.grouping.nx.reg.load
org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.resubmit.grouping
org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709
org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.packet.received
org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026
org.opendaylight.yangtools.concepts
org.opendaylight.yangtools.yang.binding
org.opendaylight.yangtools.yang.common
org.osgi.framework
org.slf4j

org.opendaylight.netvirt.natservice.rpcservice

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 25 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.opendaylight.netvirt.natservice.rpcservice.NatRpcServiceImpl
None com.google.common.util.concurrent
java.lang
java.util
java.util.concurrent
org.opendaylight.controller.md.sal.binding.api
org.opendaylight.netvirt.natservice.internal
org.opendaylight.netvirt.neutronvpn.interfaces
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.floating.ip.info.router.ports.ports
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.port.map
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.port.map.ip.port.mapping
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.port.map.ip.port.mapping.intext.ip.protocol.type
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111.intext.ip.port.map.ip.port.mapping.intext.ip.protocol.type.ip.port.map
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rpc.rev170209
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rpc.rev170209.dnat.configuration
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rpc.rev170209.nat.output
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rpc.rev170209.snat.state
org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps
org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnet.attributes
org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.subnets.rev150712.subnets.attributes.subnets
org.opendaylight.yangtools.yang.common
org.slf4j

Cycles

[ summary ] [ packages ] [ cycles ] [ explanations ]

There are no cyclic dependencies.

Explanation

[ summary ] [ packages ] [ cycles ] [ explanations ]

The following explanations are for quick reference and are lifted directly from the original JDepend documentation.

Term Description
Number of Classes The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.
Afferent Couplings The number of other packages that depend upon classes within the package is an indicator of the package's responsibility.
Efferent Couplings The number of other packages that the classes in the package depend upon is an indicator of the package's independence.
Abstractness The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package.
Instability The ratio of efferent coupling (Ce) to total coupling (Ce / (Ce + Ca)). This metric is an indicator of the package's resilience to change. The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely instable package.
Distance The perpendicular distance of a package from the idealized line A + I = 1. This metric is an indicator of the package's balance between abstractness and stability. A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (x=0, y=1) or completely concrete and instable (x=1, y=0). The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible.
Cycles Packages participating in a package dependency cycle are in a deadly embrace with respect to reusability and their release cycle. Package dependency cycles can be easily identified by reviewing the textual reports of dependency cycles. Once these dependency cycles have been identified with JDepend, they can be broken by employing various object-oriented techniques.