Architecture Report

java — version local — recovered with pkg

566
Entities
1370
Dependencies
10
Components
7
Smells

Quality Metrics

Core ARCADE Metrics

0.284
RCI
1.158
TurboMQ
0.116
BasicMQ
0.003
IntraConnectivity
0.023
InterConnectivity
0.235
TwoWayPairRatio

Balanced / Principle-aligned Scores

0.881
DependencyHealth
0.383
ComponentBalance
0.222
HubBalance
0.856
BoundaryClarity
0.629
DependencyDistribution
0.000
SmellDiscipline
0.499
PrincipleAlignmentScore
0.262
BalancedArchitectureScore

Architecture Diagram

graph TD
    Hikariconfig["Hikariconfig\n(106 entities)"]
    Hikariconfigmxbean["Hikariconfigmxbean\n(1 entities)"]
    Hikaricredentialsprovider["Hikaricredentialsprovider\n(1 entities)"]
    Hikaridatasource["Hikaridatasource\n(20 entities)"]
    Hikaripoolmxbean["Hikaripoolmxbean\n(8 entities)"]
    Sqlexceptionoverride["Sqlexceptionoverride\n(2 entities)"]
    Hibernate["Hibernate\n(9 entities)"]
    Metrics["Metrics\n(84 entities)"]
    Pool["Pool\n(134 entities)"]
    Util["Util\n(201 entities)"]
    Hibernate --> Hikariconfig
    Hibernate --> Hikaridatasource
    Hikariconfig --> Hikariconfigmxbean
    Hikariconfig --> Metrics
    Hikariconfig --> Util
    Hikariconfigmxbean --> Util
    Hikaricredentialsprovider --> Util
    Hikaridatasource --> Hikariconfig
    Hikaridatasource --> Metrics
    Hikaridatasource --> Pool
    Metrics --> Hikariconfig
    Metrics --> Pool
    Metrics --> Util
    Pool --> Hikariconfig
    Pool --> Hikaricredentialsprovider
    Pool --> Hikaridatasource
    Pool --> Hikaripoolmxbean
    Pool --> Metrics
    Pool --> Sqlexceptionoverride
    Pool --> Util
    Util --> Hikariconfig
        
Package-based grouping (depth=1 after common prefix 'com.zaxxer.hikari') with dependency-affinity facade refinement (112 entities reassigned).

Components

Component Responsibility # Entities
Hikariconfig Entities in HikariConfig 106 com.zaxxer.hikari.HikariConfig, com.zaxxer.hikari.HikariConfig.HikariConfig, com.zaxxer.hikari.HikariConfig.addDataSourceProperty, com.zaxxer.hikari.HikariConfig.addHealthCheckProperty, com.zaxxer.hikari.HikariConfig.checkIfSealed, com.zaxxer.hikari.HikariConfig.copyStateTo, com.zaxxer.hikari.HikariConfig.generatePoolName, com.zaxxer.hikari.HikariConfig.getCatalog, ... (+98 more)
Hikariconfigmxbean Entities in HikariConfigMXBean 1 com.zaxxer.hikari.HikariConfigMXBean
Hikaricredentialsprovider Entities in HikariCredentialsProvider 1 com.zaxxer.hikari.HikariCredentialsProvider
Hikaridatasource Entities in HikariDataSource 20 com.zaxxer.hikari.HikariDataSource, com.zaxxer.hikari.HikariDataSource.HikariDataSource, com.zaxxer.hikari.HikariDataSource.close, com.zaxxer.hikari.HikariDataSource.evictConnection, com.zaxxer.hikari.HikariDataSource.getConnection, com.zaxxer.hikari.HikariDataSource.getHikariConfigMXBean, com.zaxxer.hikari.HikariDataSource.getHikariPoolMXBean, com.zaxxer.hikari.HikariDataSource.getLogWriter, ... (+12 more)
Hikaripoolmxbean Entities in HikariPoolMXBean 8 com.zaxxer.hikari.HikariPoolMXBean, com.zaxxer.hikari.HikariPoolMXBean.getActiveConnections, com.zaxxer.hikari.HikariPoolMXBean.getIdleConnections, com.zaxxer.hikari.HikariPoolMXBean.getThreadsAwaitingConnection, com.zaxxer.hikari.HikariPoolMXBean.getTotalConnections, com.zaxxer.hikari.HikariPoolMXBean.resumePool, com.zaxxer.hikari.HikariPoolMXBean.softEvictConnections, com.zaxxer.hikari.HikariPoolMXBean.suspendPool
Sqlexceptionoverride Entities in SQLExceptionOverride 2 com.zaxxer.hikari.SQLExceptionOverride, com.zaxxer.hikari.SQLExceptionOverride.adjudicate
Hibernate Entities in hibernate 9 com.zaxxer.hikari.hibernate.HikariConnectionProvider, com.zaxxer.hikari.hibernate.HikariConnectionProvider.HikariConnectionProvider, com.zaxxer.hikari.hibernate.HikariConnectionProvider.closeConnection, com.zaxxer.hikari.hibernate.HikariConnectionProvider.configure, com.zaxxer.hikari.hibernate.HikariConnectionProvider.getConnection, com.zaxxer.hikari.hibernate.HikariConnectionProvider.isUnwrappableAs, com.zaxxer.hikari.hibernate.HikariConnectionProvider.stop, com.zaxxer.hikari.hibernate.HikariConnectionProvider.supportsAggressiveRelease, ... (+1 more)
Metrics Entities in metrics 84 com.zaxxer.hikari.metrics.IMetricsTracker, com.zaxxer.hikari.metrics.IMetricsTracker.close, com.zaxxer.hikari.metrics.IMetricsTracker.recordConnectionAcquiredNanos, com.zaxxer.hikari.metrics.IMetricsTracker.recordConnectionCreatedMillis, com.zaxxer.hikari.metrics.IMetricsTracker.recordConnectionTimeout, com.zaxxer.hikari.metrics.IMetricsTracker.recordConnectionUsageMillis, com.zaxxer.hikari.metrics.MetricsTracker, com.zaxxer.hikari.metrics.MetricsTrackerFactory, ... (+76 more)
Pool Entities in pool 134 com.zaxxer.hikari.pool.HikariPool, com.zaxxer.hikari.pool.HikariPool.HikariPool, com.zaxxer.hikari.pool.HikariPool.abortActiveConnections, com.zaxxer.hikari.pool.HikariPool.addBagItem, com.zaxxer.hikari.pool.HikariPool.checkFailFast, com.zaxxer.hikari.pool.HikariPool.closeConnection, com.zaxxer.hikari.pool.HikariPool.createPoolEntry, com.zaxxer.hikari.pool.HikariPool.createTimeoutException, ... (+126 more)
Util Entities in util 201 com.zaxxer.hikari.HikariConfigMXBean.getCatalog, com.zaxxer.hikari.HikariConfigMXBean.getConnectionTimeout, com.zaxxer.hikari.HikariConfigMXBean.getIdleTimeout, com.zaxxer.hikari.HikariConfigMXBean.getLeakDetectionThreshold, com.zaxxer.hikari.HikariConfigMXBean.getMaxLifetime, com.zaxxer.hikari.HikariConfigMXBean.getMaximumPoolSize, com.zaxxer.hikari.HikariConfigMXBean.getMinimumIdle, com.zaxxer.hikari.HikariConfigMXBean.getPoolName, ... (+193 more)

Architectural Smells (7)

high SmellType.DEPENDENCY_CYCLE

Circular dependency among 7 components: Hikariconfig <-> Hikariconfigmxbean <-> Hikaricredentialsprovider <-> Hikaridatasource <-> Metrics <-> Pool <-> Util

Why: Dependency cycles make components tightly coupled — you cannot change, test, or deploy any component in the cycle independently. This hinders maintainability, increases build times, and makes the system harder to understand.

Fix: Break the cycle by introducing an interface/abstraction that one component depends on, inverting the dependency direction. Consider the Dependency Inversion Principle (DIP).

Affects: Hikariconfig, Hikariconfigmxbean, Hikaricredentialsprovider, Hikaridatasource, Metrics, Pool, Util

high SmellType.CONCERN_OVERLOAD

Hikariconfig contains 106 entities but only 14 internal dependencies (0.13 per entity), suggesting multiple responsibilities.

Why: Large components are harder to understand, test, and maintain. When their internals are also sparsely connected, that usually means the component is acting as a bucket for unrelated concerns rather than a cohesive module.

Fix: Consider splitting Hikariconfig into smaller, focused components with single responsibilities.

Affects: Hikariconfig

high SmellType.CONCERN_OVERLOAD

Pool contains 134 entities but only 30 internal dependencies (0.22 per entity), suggesting multiple responsibilities.

Why: Large components are harder to understand, test, and maintain. When their internals are also sparsely connected, that usually means the component is acting as a bucket for unrelated concerns rather than a cohesive module.

Fix: Consider splitting Pool into smaller, focused components with single responsibilities.

Affects: Pool

high SmellType.SCATTERED_FUNCTIONALITY

'Factory' pattern is scattered across 5 components: Hikariconfig, Hikaridatasource, Metrics, Pool, Util

Why: When a single concern is spread across many components, changes to that concern require modifying multiple places, increasing the risk of inconsistencies and bugs.

Fix: Centralize 'Factory'-related functionality into a dedicated component to reduce scattering.

Affects: Hikariconfig, Hikaridatasource, Metrics, Pool, Util

medium SmellType.SCATTERED_FUNCTIONALITY

'Provider' pattern is scattered across 3 components: Hibernate, Hikariconfig, Hikaricredentialsprovider

Why: When a single concern is spread across many components, changes to that concern require modifying multiple places, increasing the risk of inconsistencies and bugs.

Fix: Centralize 'Provider'-related functionality into a dedicated component to reduce scattering.

Affects: Hibernate, Hikariconfig, Hikaricredentialsprovider

medium SmellType.LINK_OVERLOAD

Hikariconfig is depended on by 5 other components (56% of all components).

Why: A component with too many dependents becomes a bottleneck. Any change to it can cascade across the entire system, making evolution risky and expensive.

Fix: Consider splitting Hikariconfig into smaller interfaces so dependents only couple to what they actually use (ISP).

Affects: Hikariconfig

medium SmellType.LINK_OVERLOAD

Util is depended on by 5 other components (56% of all components).

Why: A component with too many dependents becomes a bottleneck. Any change to it can cascade across the entire system, making evolution risky and expensive.

Fix: Consider splitting Util into smaller interfaces so dependents only couple to what they actually use (ISP).

Affects: Util

Dependency Summary

PackageEntities
com.zaxxer.hikari.pool 220
com.zaxxer.hikari 153
com.zaxxer.hikari.util 130
com.zaxxer.hikari.metrics.dropwizard 33
com.zaxxer.hikari.metrics.prometheus 33
com.zaxxer.hikari.metrics 19
com.zaxxer.hikari.hibernate 12
com.zaxxer.hikari.metrics.micrometer 10