Limitation in GS Executor Driven Remoting inherited from Spring ClassUtils

Description

The 7.1.1 implementation of
org.openspaces.remoting.SpaceRemotingServiceExporter.onApplicationEvent()
creates an array of interfaces implemented by Spring Beans which are to be
exposed remotely. The Bean is registered under all these interfaces for
lookup. The array is created by the getAllInterfaces() method in the Spring
Framework's org.springframework.util.ClassUtils class.

However, there is an unfortunate limitation in ClassUtils which translates
directly into a limitation in GS remoting: the getAllInterfaces() method
discovers the interfaces directly implemented by a class or its superclasses,
but not the parents of those interfaces. Som, for example, in the hierarchy

interface Alpha {}

interface Beta extends Alpha {}

class TestClass implements Beta {}

the getAllInterfaces() would report that TestClass implements Beta but not
Alpha. This is unfortunate, because it means that when TestClass is exposed
remotely by GigaSpaces it is only discoverable on the client as an
implementation of Beta and not of Alpha.
------------------------------------------------------------------------------------------------------------- WORKAROUND: You can create a very hacky workaround by having the remotely
exposed class explicitly implement all the interfaces under which it should be
discoverable, i.e. in the above example:

class TestClass implements Alpha, Beta {}

Workaround

None

Acceptance Test

None

Status

Assignee

Meron Avigdor

Reporter

Ester Atzmon

Labels

None

Priority

Medium

SalesForce Case ID

6564

Fix versions

Commitment Version/s

None

Due date

None

Product

XAP

Edition

Open Source

Platform

None
Configure