Public interface for scene objects

There are cases where people want to use the JME object model as part of their own object model, especially in applications such as graphical editors.



For example, in my application I need to wrap the JME model objects as Java Beans for the purpose of databinding.  I am trying to use the JME model objects as much as possible (so as not to reinvent the wheel).  In general, this requires that the model objects have a public interface (i.e. an interface, or a class with only public and private methods).  If an interface, then I can implement the JME model object interface and use a concrete instance as a delegate helper.  If a class, I can override all the methods and forward to a concrete instance of the model object.



Unfortunately, JME implements its model objects as classes, not interfaces, and in those classes there are protected methods.  As such, it is not possible to use the JME model objects as "types" that can be implemented or wrapped.



Since abstracting out the model objects as interfaces might be too involved, I suggest that the protected methods in Spatial and Node be changed to public, with a warning to the effect that they should be treated as protected.  There aren't that many methods involved in Node and Spatial, and it only affects a few methods in a few subclasses (the signatures of any overridden protected methods have to be changed to public).

Please ignore the suggestion to change protected methods to public.  It was ill-advised.  Such an approach is always a half measure to using a real interface.



Since there is no interface for Node or Spatial (and there likely won't be one because of the effort involved) the best solution for me, and others with a similar problem, is to use a "proxy" pattern instead of a "wrapper" pattern (and take you lumps accordingly since the proxy will not test equal to its target).