| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 2 | 5 | 33.0% | 71.0% | 5.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.jce.crypto.CryptoParameters org.apache.fulcrum.jce.crypto.CryptoStreamFactory org.apache.fulcrum.jce.crypto.PasswordParameters | org.apache.fulcrum.jce.crypto.CryptoStreamFactoryImpl org.apache.fulcrum.jce.crypto.CryptoUtil org.apache.fulcrum.jce.crypto.HexConverter org.apache.fulcrum.jce.crypto.Main org.apache.fulcrum.jce.crypto.PasswordFactory org.apache.fulcrum.jce.crypto.SmartDecryptingInputStream | org.apache.fulcrum.yaafi.framework.container org.apache.fulcrum.yaafi.framework.factory | java.io java.lang java.security javax.crypto javax.crypto.spec |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 7 | 0.0% | 100.0% | 0.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.apache.fulcrum.yaafi.cli.Getopt org.apache.fulcrum.yaafi.cli.Main org.apache.fulcrum.yaafi.cli.Shutdown | None | java.io java.lang org.apache.avalon.framework.activity org.apache.avalon.framework.logger org.apache.avalon.framework.service org.apache.fulcrum.yaafi.framework.container org.apache.fulcrum.yaafi.framework.factory |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 1 | 10 | 75.0% | 91.0% | 66.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.framework.component.ServiceComponent org.apache.fulcrum.yaafi.framework.component.ServiceComponentImpl org.apache.fulcrum.yaafi.framework.component.ServiceComponentLifecycle | org.apache.fulcrum.yaafi.framework.component.AvalonServiceComponentImpl | org.apache.fulcrum.yaafi.framework.container | java.lang org.apache.avalon.framework.activity org.apache.avalon.framework.configuration org.apache.avalon.framework.context org.apache.avalon.framework.logger org.apache.avalon.framework.parameters org.apache.avalon.framework.service org.apache.fulcrum.yaafi.framework.interceptor org.apache.fulcrum.yaafi.framework.role org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 1 | 7 | 67.0% | 88.0% | 54.000004% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.framework.configuration.ComponentConfigurationPropertiesResolver org.apache.fulcrum.yaafi.framework.configuration.ComponentConfigurationPropertiesResolverBaseImpl | org.apache.fulcrum.yaafi.framework.configuration.ComponentConfigurationPropertiesResolverImpl | org.apache.fulcrum.yaafi.framework.container | java.io java.lang java.util org.apache.avalon.framework.configuration org.apache.avalon.framework.context org.apache.avalon.framework.logger org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 1 | 1 | 100.0% | 50.0% | 50.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.framework.constant.AvalonFortressConstants org.apache.fulcrum.yaafi.framework.constant.AvalonMerlinConstants org.apache.fulcrum.yaafi.framework.constant.AvalonPhoenixConstants org.apache.fulcrum.yaafi.framework.constant.AvalonYaafiConstants | None | org.apache.fulcrum.yaafi.framework.container | java.lang |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 3 | 18 | 75.0% | 86.0% | 61.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.framework.container.ServiceConstants org.apache.fulcrum.yaafi.framework.container.ServiceContainer org.apache.fulcrum.yaafi.framework.container.ServiceLifecycleManager | org.apache.fulcrum.yaafi.framework.container.ServiceContainerImpl | org.apache.fulcrum.yaafi.cli org.apache.fulcrum.yaafi.framework.factory org.apache.fulcrum.yaafi.service.reconfiguration | java.io java.lang java.security java.util org.apache.avalon.framework.activity org.apache.avalon.framework.configuration org.apache.avalon.framework.container org.apache.avalon.framework.context org.apache.avalon.framework.logger org.apache.avalon.framework.parameters org.apache.avalon.framework.service org.apache.fulcrum.jce.crypto org.apache.fulcrum.yaafi.framework.component org.apache.fulcrum.yaafi.framework.configuration org.apache.fulcrum.yaafi.framework.constant org.apache.fulcrum.yaafi.framework.context org.apache.fulcrum.yaafi.framework.role org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 1 | 4 | 0.0% | 80.0% | 20.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.apache.fulcrum.yaafi.framework.context.AvalonToYaafiContextMapper org.apache.fulcrum.yaafi.framework.context.YaafiToAvalonContextMapper | org.apache.fulcrum.yaafi.framework.container | java.io java.lang org.apache.avalon.framework.context org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 1 | 11 | 0.0% | 92.0% | 8.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.apache.fulcrum.yaafi.framework.factory.ServiceContainerConfiguration org.apache.fulcrum.yaafi.framework.factory.ServiceContainerFactory | org.apache.fulcrum.yaafi.cli | java.io java.lang java.util org.apache.avalon.framework.configuration org.apache.avalon.framework.container org.apache.avalon.framework.context org.apache.avalon.framework.logger org.apache.avalon.framework.service org.apache.fulcrum.jce.crypto org.apache.fulcrum.yaafi.framework.container org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 6 | 7 | 40.0% | 54.000004% | 6.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorContext org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorService | org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorContextImpl org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorFactory org.apache.fulcrum.yaafi.framework.interceptor.AvalonInterceptorInvocationHandler | org.apache.fulcrum.yaafi.framework.component org.apache.fulcrum.yaafi.interceptor.baseservice org.apache.fulcrum.yaafi.interceptor.jamon org.apache.fulcrum.yaafi.interceptor.logging org.apache.fulcrum.yaafi.interceptor.performance org.apache.fulcrum.yaafi.service.advice | java.lang java.lang.reflect java.util org.apache.avalon.framework.service org.apache.fulcrum.yaafi.framework.reflection org.apache.fulcrum.yaafi.framework.tls org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 1 | 3 | 38.0% | 75.0% | 12.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.framework.locking.LoggerFacade org.apache.fulcrum.yaafi.framework.locking.MultiLevelLock org.apache.fulcrum.yaafi.framework.locking.MultiLevelLock2 | org.apache.fulcrum.yaafi.framework.locking.AvalonLoggerFacade org.apache.fulcrum.yaafi.framework.locking.GenericLock org.apache.fulcrum.yaafi.framework.locking.GenericLock$LockOwner org.apache.fulcrum.yaafi.framework.locking.LockException org.apache.fulcrum.yaafi.framework.locking.ReadWriteLock | org.apache.fulcrum.yaafi.framework.util | java.lang java.util org.apache.avalon.framework.logger |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 3 | 3 | 0.0% | 50.0% | 50.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.apache.fulcrum.yaafi.framework.reflection.Clazz | org.apache.fulcrum.yaafi.framework.interceptor org.apache.fulcrum.yaafi.interceptor.jamon org.apache.fulcrum.yaafi.interceptor.logging | java.lang java.lang.reflect java.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 2 | 4 | 50.0% | 67.0% | 17.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.framework.role.RoleConfigurationParser org.apache.fulcrum.yaafi.framework.role.RoleEntry | org.apache.fulcrum.yaafi.framework.role.RoleConfigurationParserImpl org.apache.fulcrum.yaafi.framework.role.RoleEntryImpl | org.apache.fulcrum.yaafi.framework.component org.apache.fulcrum.yaafi.framework.container | java.lang java.util org.apache.avalon.framework.configuration org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 1 | 2 | 25.0% | 67.0% | 8.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.framework.tls.ThreadLocalStorage | org.apache.fulcrum.yaafi.framework.tls.ThreadLocalStorageImpl org.apache.fulcrum.yaafi.framework.tls.ThreadLocalStorageImpl$1 org.apache.fulcrum.yaafi.framework.tls.ThreadLocalStorageImpl$CleanableThreadLocal | org.apache.fulcrum.yaafi.framework.interceptor | java.lang java.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 12 | 6 | 0.0% | 33.0% | 67.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.apache.fulcrum.yaafi.framework.util.ConfigurationUtil org.apache.fulcrum.yaafi.framework.util.ExceptionUtils org.apache.fulcrum.yaafi.framework.util.InputStreamLocator org.apache.fulcrum.yaafi.framework.util.ReadWriteLock org.apache.fulcrum.yaafi.framework.util.StringUtils org.apache.fulcrum.yaafi.framework.util.ToStringBuilder org.apache.fulcrum.yaafi.framework.util.Validate | org.apache.fulcrum.yaafi.framework.component org.apache.fulcrum.yaafi.framework.configuration org.apache.fulcrum.yaafi.framework.container org.apache.fulcrum.yaafi.framework.context org.apache.fulcrum.yaafi.framework.factory org.apache.fulcrum.yaafi.framework.interceptor org.apache.fulcrum.yaafi.framework.role org.apache.fulcrum.yaafi.interceptor.baseservice org.apache.fulcrum.yaafi.interceptor.util org.apache.fulcrum.yaafi.service.advice org.apache.fulcrum.yaafi.service.reconfiguration org.apache.fulcrum.yaafi.service.shutdown | java.io java.lang java.util org.apache.avalon.framework.configuration org.apache.avalon.framework.logger org.apache.fulcrum.yaafi.framework.locking |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 3 | 9 | 0.0% | 75.0% | 25.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| None | org.apache.fulcrum.yaafi.interceptor.baseservice.BaseInterceptorServiceImpl | org.apache.fulcrum.yaafi.interceptor.jamon org.apache.fulcrum.yaafi.interceptor.logging org.apache.fulcrum.yaafi.interceptor.performance | java.io java.lang java.util org.apache.avalon.framework.configuration org.apache.avalon.framework.context org.apache.avalon.framework.logger org.apache.avalon.framework.service org.apache.fulcrum.yaafi.framework.interceptor org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 13 | 40.0% | 100.0% | 40.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.interceptor.jamon.JamonInterceptorService org.apache.fulcrum.yaafi.interceptor.jamon.JamonPerformanceMonitor | org.apache.fulcrum.yaafi.interceptor.jamon.Jamon1PerformanceMonitorImpl org.apache.fulcrum.yaafi.interceptor.jamon.Jamon2PerformanceMonitorImpl org.apache.fulcrum.yaafi.interceptor.jamon.JamonInterceptorServiceImpl | None | com.jamonapi java.io java.lang java.lang.reflect java.util org.apache.avalon.framework.activity org.apache.avalon.framework.configuration org.apache.avalon.framework.logger org.apache.avalon.framework.thread org.apache.fulcrum.yaafi.framework.interceptor org.apache.fulcrum.yaafi.framework.reflection org.apache.fulcrum.yaafi.interceptor.baseservice org.apache.fulcrum.yaafi.interceptor.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 10 | 50.0% | 100.0% | 50.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.interceptor.logging.LoggingInterceptorService | org.apache.fulcrum.yaafi.interceptor.logging.LoggingInterceptorServiceImpl | None | java.lang java.lang.reflect java.util org.apache.avalon.framework.activity org.apache.avalon.framework.configuration org.apache.avalon.framework.logger org.apache.fulcrum.yaafi.framework.interceptor org.apache.fulcrum.yaafi.framework.reflection org.apache.fulcrum.yaafi.interceptor.baseservice org.apache.fulcrum.yaafi.interceptor.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 10 | 50.0% | 100.0% | 50.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.interceptor.performance.PerformanceInterceptorService | org.apache.fulcrum.yaafi.interceptor.performance.PerformanceInterceptorServiceImpl | None | java.lang java.lang.reflect java.util org.apache.avalon.framework.configuration org.apache.avalon.framework.context org.apache.avalon.framework.logger org.apache.avalon.framework.thread org.apache.fulcrum.yaafi.framework.interceptor org.apache.fulcrum.yaafi.interceptor.baseservice org.apache.fulcrum.yaafi.interceptor.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 3 | 5 | 20.0% | 62.0% | 18.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.interceptor.util.InterceptorToStringBuilder | org.apache.fulcrum.yaafi.interceptor.util.ArgumentToStringBuilderImpl org.apache.fulcrum.yaafi.interceptor.util.DefaultToStringBuilderImpl org.apache.fulcrum.yaafi.interceptor.util.MethodToStringBuilderImpl org.apache.fulcrum.yaafi.interceptor.util.StopWatch | org.apache.fulcrum.yaafi.interceptor.jamon org.apache.fulcrum.yaafi.interceptor.logging org.apache.fulcrum.yaafi.interceptor.performance | java.io java.lang java.lang.reflect java.util org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 8 | 50.0% | 100.0% | 50.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.service.advice.AdviceService | org.apache.fulcrum.yaafi.service.advice.AdviceServiceImpl | None | java.lang java.lang.reflect org.apache.avalon.framework.configuration org.apache.avalon.framework.context org.apache.avalon.framework.logger org.apache.avalon.framework.service org.apache.fulcrum.yaafi.framework.interceptor org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 8 | 100.0% | 100.0% | 100.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.service.baseservice.BaseService org.apache.fulcrum.yaafi.service.baseservice.BaseServiceImpl | None | None | java.io java.lang org.apache.avalon.framework.activity org.apache.avalon.framework.configuration org.apache.avalon.framework.context org.apache.avalon.framework.logger org.apache.avalon.framework.parameters org.apache.avalon.framework.service |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 10 | 33.0% | 100.0% | 33.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.service.reconfiguration.ReconfigurationService | org.apache.fulcrum.yaafi.service.reconfiguration.ReconfigurationEntry org.apache.fulcrum.yaafi.service.reconfiguration.ReconfigurationServiceImpl | None | java.io java.lang java.security org.apache.avalon.framework.activity org.apache.avalon.framework.configuration org.apache.avalon.framework.context org.apache.avalon.framework.logger org.apache.avalon.framework.service org.apache.fulcrum.yaafi.framework.container org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 6 | 50.0% | 100.0% | 50.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.service.servicemanager.ServiceManagerService | org.apache.fulcrum.yaafi.service.servicemanager.ServiceManagerServiceImpl | None | java.lang org.apache.avalon.framework.activity org.apache.avalon.framework.context org.apache.avalon.framework.logger org.apache.avalon.framework.parameters org.apache.avalon.framework.service |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 9 | 25.0% | 100.0% | 25.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.service.shutdown.ShutdownService | org.apache.fulcrum.yaafi.service.shutdown.Shutdown org.apache.fulcrum.yaafi.service.shutdown.ShutdownEntry org.apache.fulcrum.yaafi.service.shutdown.ShutdownServiceImpl | None | java.io java.lang java.security org.apache.avalon.framework.activity org.apache.avalon.framework.configuration org.apache.avalon.framework.context org.apache.avalon.framework.logger org.apache.avalon.framework.service org.apache.fulcrum.yaafi.framework.util |
| Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
|---|---|---|---|---|
| 0 | 3 | 50.0% | 100.0% | 50.0% |
| Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
|---|---|---|---|
| org.apache.fulcrum.yaafi.service.systemproperty.SystemPropertyService | org.apache.fulcrum.yaafi.service.systemproperty.SystemPropertyServiceImpl | None | java.lang org.apache.avalon.framework.configuration org.apache.avalon.framework.logger |
| 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. |