Releases: foldright/inspectable-wrappers
🪐 v0.5.6
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with the inspection ability.
- The core interfaces/specification interfaces:
Wrapperinterface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachableinterface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapterinterface is used to
adapt an existed wrapper instance to typeWrapperwithout modifying it
- The
Inspectorclass is used to inspect the wrapper chain - The utility classes:
AttachableDelegateclass provides a simpleAttachabledelegate implementationWrapperAdapterUtilsclass provides utility methods for creatingWrapperAdapterinstances without writing boilerplate codes of creating new adapter classes
🛠 Refactor/Improvements
- refactor(
Inspector): usefast and slow pointersinstead ofhistory IdentityHashMapto detect the wrapper chain loop 🔁 - refactor: use
Class#isInstancemethod ofisAssignableFrom, more straightforward codes 🔤 - style: small adjust of line breaks
🧪 Test
- add
junit-jupiterdependency in order to runJUnit 5test cases inIntelliJ IDEA🧪 - add
kotest.propertiesto disableKotest autoscan🍩
🚜 Chore/Bulid
- add qodana CI checks on github workflow 🧠
- add
IntelliJ IDEAproject dict 📖 - upgrade dependencies/plugins 🛠️
- upgrade maven wrapper to
3.9.9🪶 - upgraded non-LTS JDK to 24 from 22 🤖
🍼 Java API Doc
https://foldright.io/api-docs/inspectable-wrappers/0.5.6/
🍪 Maven dependency
<dependency>
<groupId>io.foldright</groupId>
<artifactId>inspectable-wrappers</artifactId>
<version>0.5.6</version>
</dependency>🪐 v0.5.5 rename wrapper spec methods with postfix `_`, avoid naming conflict with the methods in biz interfaces 👓
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with the inspection ability.
- The core interfaces/specification interfaces:
Wrapperinterface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachableinterface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapterinterface is used to
adapt an existed wrapper instance to typeWrapperwithout modifying it
- The
Inspectorclass is used to inspect the wrapper chain - The utility classes:
AttachableDelegateclass provides a simpleAttachabledelegate implementationWrapperAdapterUtilsclass provides utility methods for creatingWrapperAdapterinstances without writing boilerplate codes of creating new adapter classes
🛠️ Refactor
⚠️ rename wrapper spec methods with postfix_, avoid naming conflict with the methods in biz interfaces 👓
🧪 Test
- add a test case for studying the reflection methods:
Class.getMethodsandClass.getDeclaredMethods
🚜 Chore/Bulid
- upgrade dependencies/plugins 🛠️
- improve
pom versioncheck ✅
avoid github actions failure when release version tag
🍼 Java API Doc
https://foldright.io/api-docs/inspectable-wrappers/0.5.5/
🍪 Maven dependency
<dependency>
<groupId>io.foldright</groupId>
<artifactId>inspectable-wrappers</artifactId>
<version>0.5.5</version>
</dependency>🪐 v0.5.4 add new methods of `Inspector` and `WrapperAdapterUtils` ☘️💗
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with the inspection ability.
- The core interfaces/specification interfaces:
Wrapperinterface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachableinterface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapterinterface is used to
adapt an existed wrapper instance to typeWrapperwithout modifying it
- The
Inspectorclass is used to inspect the wrapper chain - The utility classes:
AttachableDelegateclass provides a simpleAttachabledelegate implementationWrapperAdapterUtilsclass provides utility methods for creatingWrapperAdapterinstances without writing boilerplate codes of creating new adapter classes
Note
Thanks to inspirational discussions from @zavakid about Inspector and WrapperAdapter 💕🫡
☘️ Features
- add new methods of
Inspector☘️getInstancesOfWrapperChaingetBaseOfWrapperChainunwrapisWrapperverifyWrapperChainContracts(W, Class<W>)forEachOnWrapperChain
- add overloaded methods of
WrapperAdapterUtilsto add tag interfaces 🤖 Inspectorcheck cyclic wrapper chain 🔄 💣
🚜 Chore/Bulid
- upgrade dependencies/plugins 🛠️
- add
jdk 22into CI 🤖 - improve
pom versioncheck ✅
🍼 Java API Doc
https://foldright.io/inspectable-wrappers/apidocs/0.5.4/index.html
🍪 Maven dependency
<dependency>
<groupId>io.foldright</groupId>
<artifactId>inspectable-wrappers</artifactId>
<version>0.5.4</version>
</dependency>🪐 v0.5.3 support `java9 jigsaw` 📦💗
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with the inspection ability.
- The core interfaces/specification interfaces:
Wrapperinterface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachableinterface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapterinterface is used to
adapt an existed wrapper instance to typeWrapperwithout modifying it
- The
Inspectorclass is used to inspect the wrapper chain - The utility classes:
AttachableDelegateclass provides a simpleAttachabledelegate implementationWrapperAdapterUtilsclass provides utility methods for creatingWrapperAdapterinstances without writing boilerplate codes of creating new adapter classes
Note
Thanks to inspirational discussions from @zavakid about Inspector and WrapperAdapter 💕🫡
☘️ Features
- check contracts when
WrapperAdapterUtils.createWrapperAdapter()⚖️ - support
java9 jigsaw📦
📚 Documentation
- add
IntegrationDemoUsingWrapperAdapterUtils🎡 - improve docs/javadoc 📚
🚜 Chore/Bulid
- add
check-forbidden-classes.sh🚫
🍼 Java API Doc
https://foldright.io/inspectable-wrappers/apidocs/0.5.3/index.html
🍪 Maven dependency
<dependency>
<groupId>io.foldright</groupId>
<artifactId>inspectable-wrappers</artifactId>
<version>0.5.3</version>
</dependency>🪐 v0.5.2 add `WrapperAdapterUtils` 🤖💗
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with the inspection ability.
- The core interfaces/specification interfaces:
Wrapperinterface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachableinterface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapterinterface is used to
adapt an existed wrapper instance to typeWrapperwithout modifying it
- The
Inspectorclass is used to inspect the wrapper chain - Util classes:
AttachableDelegateclass provides a simpleAttachabledelegate implementationWrapperAdapterUtilsclass provides utility methods for creatingWrapperAdapterinstances without writing the boilerplate code to create a new adapter class
Note
Thanks to inspirational discussions from @zavakid about Inspector and WrapperAdapter 💕🫡
☘️ Features
- add
WrapperAdapterUtils🤖
📚 Documentation
- improve docs/javadoc 📚
🍼 Java API Doc
https://foldright.io/inspectable-wrappers/apidocs/0.5.2/index.html
🍪 Maven dependency
<dependency>
<groupId>io.foldright</groupId>
<artifactId>inspectable-wrappers</artifactId>
<version>0.5.2</version>
</dependency>🪐 v0.5.1: add `Inspector.verifyWrapperChainContracts` method ⚖️💗
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with the inspection ability.
- The specification interfaces:
Wrapperinterface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachableinterface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapterinterface is used to
adapt an existed wrapper instance to typeWrapperwithout modifying it
- The
Inspectorclass is used to inspect the wrapper chain
Note
Thanks to inspirational discussions from @zavakid about Inspector and WrapperAdapter 💕🫡
☘️ Features
- add method
Inspector.verifyWrapperChainContracts⚖️
🛠️ Refactor
- rename the methods of
Inspector🔠
Note
Note about usage and method naming of Inspector:
- All method names contain the word "wrapper chain",
so the usage code is easily recognizable as related toinspectable wrappers. - Because the method names are long and informative,
it's recommended tostatic importthese methods.
📚 Documentation/Test
- add wrapper chain graph to the javadoc ⛓️
- refactor the demo
ExistedExecutorWrapperimplementation, without leak its underlying executor field - improve docs/javadoc 📚
🍼 Java API Doc
https://foldright.io/inspectable-wrappers/apidocs/0.5.1/index.html
🍪 Maven dependency
<dependency>
<groupId>io.foldright</groupId>
<artifactId>inspectable-wrappers</artifactId>
<version>0.5.1</version>
</dependency>🪐 v0.5.0: add `Inspector` class and `travel` method 🕵️💗
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with the inspection ability.
- Core interfaces:
Wrapperinterface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachableinterface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapterinterface is used to
adapt an existed wrapper instance to typeWrapperwithout modifying it
Inspectorclass is used to inspect the wrapper chain
Note
Thanks to inspirational discussions from @zavakid about Inspector and WrapperAdapter 💕🫡
☘️ Features
- add
Inspectorclass 🕵️ (by @zavakid)
extractInspectorfromWrapper - add
Inspector.travelmethod 🛥️
and use it in methodsWrapper.inspect/getAttachment
🐞 BugFix
- inspection/iteration of wrapper chain should not skip the last non-
Wrapperinstance 🧐
🛠️ Refactor
- move util methods to
Inspector, removeInternalUtilsclass - add missing QA annotations
📚 Documentation
- improve docs/javadoc 📚
🧪 Test
- add test case of inspecting last instance on wrapper chain
🚜 Chore/Bulid
- upgrade dependencies/plugins 🛠️
🍼 Java API Doc
https://foldright.io/inspectable-wrappers/apidocs/0.5.0/index.html
🍪 Maven dependency
<dependency>
<groupId>io.foldright</groupId>
<artifactId>inspectable-wrappers</artifactId>
<version>0.5.0</version>
</dependency>🪐 v0.4.0: add `WrapperAdapter` interface used to adapt an existed wrapper without modifying it 🔌💗
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with the inspection ability.
Wrapperis core interface, used to- identify the wrapper instances as a wrapper chain
- provide static entry methods to inspect the wrapper chain
Attachableinterface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapterinterface is used to
adapt an existed wrapper without modifying it
Note
Thanks to inspirational discussions from @zavakid about WrapperAdapter 💕🫡
☘️ Features
- add interface
WrapperAdapterand its test cases 🔌- more info see usage demo
🛠️ Refactor
- add
finalto parameters for consistency - remove redundant type cast
🍼 Java API Doc
https://foldright.io/inspectable-wrappers/apidocs/0.4.0/index.html
🍪 Maven dependency
<dependency>
<groupId>io.foldright</groupId>
<artifactId>inspectable-wrappers</artifactId>
<version>0.4.0</version>
</dependency>🪐 v0.3.2: a cleanup release 📚💗
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with the inspection ability.
Wrapperis core interface, used to- identify the wrapper instances as a wrapper chain
- provide static entry methods to inspect the wrapper chain
Attachableinterface is used to
enhance the wrapper instances with the attachment storage ability
🛠️ Refactor
- check
nullforunwrap()return result when travel the wrapper chain 👻
📚 Documentation/Test
- add demo to integrate an existed executor wrapper without modification 📚
- add test cases for exceptions 💣
- improve demo codes; extract
buildExecutorChainmethod in demo codes 🧪 - improve javadoc 📚
🚜 Chore/Bulid
- add
pom versioncheck ✅ - upgrade dependencies/plugins 🛠️
- upgrade maven wrapper to
3.9.6🪶 - remove
kotlin.compiler.apiVersion=1.5kotlin compiler flag
🍼 Java API Doc
https://foldright.io/inspectable-wrappers/apidocs/0.3.2/index.html
🍪 Maven dependency
<dependency>
<groupId>io.foldright</groupId>
<artifactId>inspectable-wrappers</artifactId>
<version>0.3.2</version>
</dependency>🪐 v0.3.1: generic type support for attachable 🍀💗
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with the inspection ability.
Wrapperis core interface, used to- identify the wrapper instances as a wrapper chain
- provide static entry methods to inspect the wrapper chain
Attachableinterface is used to
enhance the wrapper instances with the attachment storage ability
🍀 Features
- generic type support for
Attachable(#5 #4 by @driventokill @zavakid)
🛠️ Refactor
- rename
Wrapper.checkmethod toinspect🌈 - check
nullfor method arguments 👻
📚 Documentation
README.md:- add logo image
- update demo code
- improve wording and format
🍼 Java API Doc
https://foldright.io/inspectable-wrappers/apidocs/0.3.1/index.html
🍪 Maven dependency
<dependency>
<groupId>io.foldright</groupId>
<artifactId>inspectable-wrappers</artifactId>
<version>0.3.1</version>
</dependency>