Releases: foldright/inspectable-wrappers
🪐 v0.5.5 rename wrapper spec methods with postfix `_`, avoid naming conflict with biz methods 👓
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with the inspection ability.
- The core interfaces/specification interfaces:
Wrapper
interface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachable
interface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapter
interface is used to
adapt an existed wrapper instance to typeWrapper
without modifying it
- The
Inspector
class is used to inspect the wrapper chain - The utility classes:
AttachableDelegate
class provides a simpleAttachable
delegate implementationWrapperAdapterUtils
class provides utility methods for creatingWrapperAdapter
instances without writing boilerplate codes of creating new adapter classes
🛠️ Refactor
⚠️ rename wrapper spec methods with postfix_
, avoid naming conflict with biz methods 👓
🧪 Test
- add a test case for studying the reflection methods:
Class.getMethods
andClass.getDeclaredMethods
🚜 Chore/Bulid
- upgrade dependencies/plugins 🛠️
- improve
pom version
check ✅
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:
Wrapper
interface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachable
interface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapter
interface is used to
adapt an existed wrapper instance to typeWrapper
without modifying it
- The
Inspector
class is used to inspect the wrapper chain - The utility classes:
AttachableDelegate
class provides a simpleAttachable
delegate implementationWrapperAdapterUtils
class provides utility methods for creatingWrapperAdapter
instances 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
☘️getInstancesOfWrapperChain
getBaseOfWrapperChain
unwrap
isWrapper
verifyWrapperChainContracts(W, Class<W>)
forEachOnWrapperChain
- add overloaded methods of
WrapperAdapterUtils
to add tag interfaces 🤖 Inspector
check cyclic wrapper chain 🔄 💣
🚜 Chore/Bulid
- upgrade dependencies/plugins 🛠️
- add
jdk 22
into CI 🤖 - improve
pom version
check ✅
🍼 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:
Wrapper
interface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachable
interface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapter
interface is used to
adapt an existed wrapper instance to typeWrapper
without modifying it
- The
Inspector
class is used to inspect the wrapper chain - The utility classes:
AttachableDelegate
class provides a simpleAttachable
delegate implementationWrapperAdapterUtils
class provides utility methods for creatingWrapperAdapter
instances 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:
Wrapper
interface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachable
interface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapter
interface is used to
adapt an existed wrapper instance to typeWrapper
without modifying it
- The
Inspector
class is used to inspect the wrapper chain - Util classes:
AttachableDelegate
class provides a simpleAttachable
delegate implementationWrapperAdapterUtils
class provides utility methods for creatingWrapperAdapter
instances 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:
Wrapper
interface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachable
interface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapter
interface is used to
adapt an existed wrapper instance to typeWrapper
without modifying it
- The
Inspector
class 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 import
these methods.
📚 Documentation/Test
- add wrapper chain graph to the javadoc ⛓️
- refactor the demo
ExistedExecutorWrapper
implementation, 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:
Wrapper
interface is used to
be implemented by wrapper classes, make an inspectable wrapper chain(linked list)Attachable
interface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapter
interface is used to
adapt an existed wrapper instance to typeWrapper
without modifying it
Inspector
class is used to inspect the wrapper chain
Note
Thanks to inspirational discussions from @zavakid about Inspector
and WrapperAdapter
💕🫡
☘️ Features
- add
Inspector
class 🕵️ (by @zavakid)
extractInspector
fromWrapper
- add
Inspector.travel
method 🛥️
and use it in methodsWrapper.inspect/getAttachment
🐞 BugFix
- inspection/iteration of wrapper chain should not skip the last non-
Wrapper
instance 🧐
🛠️ Refactor
- move util methods to
Inspector
, removeInternalUtils
class - 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.
Wrapper
is core interface, used to- identify the wrapper instances as a wrapper chain
- provide static entry methods to inspect the wrapper chain
Attachable
interface is used to
enhance the wrapper instances with the attachment storage abilityWrapperAdapter
interface is used to
adapt an existed wrapper without modifying it
Note
Thanks to inspirational discussions from @zavakid about WrapperAdapter
💕🫡
☘️ Features
- add interface
WrapperAdapter
and its test cases 🔌- more info see usage demo
🛠️ Refactor
- add
final
to 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.
Wrapper
is core interface, used to- identify the wrapper instances as a wrapper chain
- provide static entry methods to inspect the wrapper chain
Attachable
interface is used to
enhance the wrapper instances with the attachment storage ability
🛠️ Refactor
- check
null
forunwrap()
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
buildExecutorChain
method in demo codes 🧪 - improve javadoc 📚
🚜 Chore/Bulid
- add
pom version
check ✅ - upgrade dependencies/plugins 🛠️
- upgrade maven wrapper to
3.9.6
🪶 - remove
kotlin.compiler.apiVersion=1.5
kotlin 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.
Wrapper
is core interface, used to- identify the wrapper instances as a wrapper chain
- provide static entry methods to inspect the wrapper chain
Attachable
interface 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.check
method toinspect
🌈 - check
null
for 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>
🪐 v0.3.0: rename to "Inspectable Wrappers" 🌈💗
Note
Naming is one of the hardest things! 🤣
- Thanks to the state-of-the-art project
reactive-streams-jvm
that we can start learning by imitation. 🫡 💎 - Thanks to inspirational discussions with @zavakid @driventokill 💕
The purpose of Inspectable Wrappers is to provide a standard for wrapper chain with inspection ability.
Wrapper
is core interface, used to- identify the wrapper instances as a wrapper chain
- provide static entry methods to inspect the wrapper chain
Attachable
interface is used to
enhance the wrapper instances with the attachment storage ability
🍀 Features
- rename to
inspectable-wrappers
forartifactId
,package names
, etc. 🌈
🍼 Java API Doc
https://foldright.io/inspectable-wrappers/apidocs/0.3.0/index.html
🍪 Maven dependency
<dependency>
<groupId>io.foldright</groupId>
<artifactId>inspectable-wrappers</artifactId>
<version>0.3.0</version>
</dependency>