Support transparent rmi over classes. #39
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Class will be eligible to transparent-rmi if:
For exapmle, take a look at test: https://github.com/gridkit/nanocloud/pull/39/files#diff-b3d424985422fd195ad32149e97b0876a961f3b2793f6b4f425714673612cd6eL855
It allows to transparently pass objects between nodes without extracting interfaces (useful for 3rd party objects).
Also it fixes following typing problem:
Before this patch will result in: java.lang.IllegalArgumentException: Can not set final TestStarter$MyRemoteSupplier field TestStarter$1.val$remoteSupplier to $Proxy1
It was because classes was passed as set of interfaces.
Now rmi classes passed as classes and proxy created as subclass of passed objects.
To implement this PR I have added two libraries: bytebuddy and objenesis. Both are shaded into resulting jar and will not conflict with other versions in classpath.