• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

aspectran / aspectran / #4672
44%

Build:
DEFAULT BRANCH: master
Ran 19 Oct 2025 12:28PM UTC
Jobs 1
Files 989
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 Oct 2025 12:25PM UTC coverage: 36.339% (-0.001%) from 36.34%
#4672

push

github

topframe
Refactor(bean): Enhance bean scope locking and correctness

This commit introduces several significant improvements to the bean scope implementations, focusing on optimizing locking, correcting a critical logic flaw, enhancing API usability, and improving documentation.

Key changes include:

- **Optimized FactoryBean Locking:** The locking strategy in `AbstractBeanRegistry.getScopedBean` has been refined. Instead of escalating to a write-lock for FactoryBean object creation, it now uses a `synchronized` block on the FactoryBean instance itself. This narrows the
lock scope, reducing contention and improving concurrency when creating beans from a FactoryBean.

- **Fixed Critical Flaw in `SessionScope`:** The `findMatchingBeanRule` method had a serious bug where it could incorrectly match a bean by class name even when a specific ID was provided. The logic has been corrected to enforce a strict match by ID if one exists, and only
match by class name for beans without an ID. This prevents unpredictable behavior in clustered or deserialized sessions.

- **Enabled `destroy(Object bean)` in `SessionScope`:** Removed the `UnsupportedOperationException` thrown by `getBeanRuleByInstance`. This allows developers to manually destroy a specific session-scoped bean, making the API more complete and usable in scenarios like sticky
sessions.

- **Clarified `lazy-destroy` Intention:** Added a detailed Javadoc to the `AbstractScope.destroy()` method to explain that the `lazy-destroy` mechanism is an intentional design. It ensures that critical resources like database connections are released last, after all
dependent beans have been destroyed.

- **Improved Javadocs:** Polished and standardized Javadocs across all scope-related classes (`Scope`, `AbstractScope`, `RequestScope`, `SessionScope`, `SingletonScope`) for better clarity, consistency, and maintainability.

1 of 9 new or added lines in 2 files covered. (11.11%)

591 existing lines in 32 files now uncovered.

15061 of 41446 relevant lines covered (36.34%)

0.36 hits per line

New Missed Lines in Diff

Lines Coverage ∆ File
2
45.27
0.53% core/src/main/java/com/aspectran/core/component/bean/AbstractBeanRegistry.java
6
0.0
0.0% core/src/main/java/com/aspectran/core/component/bean/scope/SessionScope.java

Uncovered Existing Lines

Lines Coverage ∆ File
1
98.08
0.0% core/src/main/java/com/aspectran/core/activity/InstantActivity.java
1
85.71
0.0% core/src/main/java/com/aspectran/core/activity/NonActivity.java
1
58.8
0.0% core/src/main/java/com/aspectran/core/component/bean/AbstractBeanFactory.java
1
45.27
0.53% core/src/main/java/com/aspectran/core/component/bean/AbstractBeanRegistry.java
1
0.0
0.0% core/src/main/java/com/aspectran/core/component/bean/scope/RequestScope.java
1
0.0
0.0% core/src/main/java/com/aspectran/core/component/bean/scope/SessionScope.java
1
91.36
-1.23% core/src/main/java/com/aspectran/core/context/asel/TokenizedExpression.java
1
58.62
1.15% daemon/src/main/java/com/aspectran/daemon/command/CommandExecutor.java
2
0.0
0.0% core/src/main/java/com/aspectran/core/activity/ActivityPrepareException.java
2
0.0
0.0% core/src/main/java/com/aspectran/core/activity/aspect/AdviceException.java
2
0.0
0.0% core/src/main/java/com/aspectran/core/activity/InstantActivityException.java
3
0.0
0.0% core/src/main/java/com/aspectran/core/activity/request/RequestMethodNotAllowedException.java
4
0.0
0.0% core/src/main/java/com/aspectran/core/activity/request/SizeLimitExceededException.java
4
0.0
0.0% core/src/main/java/com/aspectran/core/support/i18n/message/NoSuchMessageException.java
5
0.0
0.0% core/src/main/java/com/aspectran/core/component/aspect/pointcut/RegexpPointcut.java
6
25.0
0.0% core/src/main/java/com/aspectran/core/activity/ActivityException.java
6
25.0
0.0% core/src/main/java/com/aspectran/core/activity/ActivityPerformException.java
6
0.0
0.0% core/src/main/java/com/aspectran/core/activity/request/RequestParseException.java
8
0.0
0.0% core/src/main/java/com/aspectran/core/activity/ActivityTerminatedException.java
10
61.9
0.0% core/src/main/java/com/aspectran/core/component/aspect/pointcut/WildcardPointcut.java
10
8.33
0.0% core/src/main/java/com/aspectran/core/support/i18n/message/DelegatingMessageSource.java
16
0.0
0.0% core/src/main/java/com/aspectran/core/support/i18n/message/MessageSourceResourceBundle.java
17
0.0
0.0% core/src/main/java/com/aspectran/core/activity/response/transform/AponTransformResponse.java
17
21.21
0.0% core/src/main/java/com/aspectran/core/support/i18n/message/MessageSourceSupport.java
18
0.0
0.0% core/src/main/java/com/aspectran/core/support/i18n/locale/SessionLocaleResolver.java
35
0.0
0.0% core/src/main/java/com/aspectran/core/activity/response/transform/XslTransformResponse.java
42
59.84
0.0% core/src/main/java/com/aspectran/core/support/i18n/message/ResourceBundleMessageSource.java
43
20.63
0.0% core/src/main/java/com/aspectran/core/support/i18n/message/AbstractMessageSource.java
51
0.0
0.0% core/src/main/java/com/aspectran/core/service/DefaultCoreService.java
64
5.45
0.0% core/src/main/java/com/aspectran/core/activity/process/action/InvokeAction.java
85
0.0
0.0% core/src/main/java/com/aspectran/core/service/AbstractCoreService.java
127
1.01
0.0% core/src/main/java/com/aspectran/core/activity/process/action/AnnotatedMethodInvoker.java
Jobs
ID Job ID Ran Files Coverage
1 #4672.1 19 Oct 2025 12:28PM UTC 989
36.34
Source Files on build #4672
  • Tree
  • List 989
  • Changed 59
  • Source Changed 57
  • Coverage Changed 40
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • cc05b62e on github
  • Prev Build on master
  • Next Build on master
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc