I recently discovered JCC (awesome project!) and am attempting to use it to wrap a Java API for Python users. It's been working great, with two exceptions. I'd be grateful for any advice on the following:
1) Public methods from implemented interfaces are not wrapped We have where (public) methods of interfaces are not wrapped. Here's a toy example: package us.physion.mixin; public interface MixinA { void mixinMethodA(String); } public interface MixinB { void mixinMethodB(String); } package us.physion.domain; public interface Entity extends us.physion.mixin.MixinA, us.physion.mixin.MixinB { void entityMethod(); } public interface MyClass extends Entity package us.physion.domain.impl; public class EnityBase implements us.physion.domain.Entity { } public class MyClass extends EntityBase implements us.physion.domain.MyClass { } MyClass is wrapped correctly, and exposes entityMethod. However, the mixinMethodA and mixinMethodB aren't exposed. We get an AttributeError when calling mixinMethodA on a MyClass instance: In [10]: myInstance = MyClass() In [11]: myInstance.mixinMethodA() --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-10-51f1cf2e8c2d> in <module>() ----> 1 myInstance.mixinMethodA('foo') AttributeError: 'MyClass' object has no attribute 'mixinMethodA' The issue may or may not be related to the second issue of name collisions. Note that we have an interface us.physion.domain.MyClass, and the implementation us.physion.domain.impl.MyClass. JCC 2.15 sees these as a name conflict, so we have --rename us.physion.domain.impl.MyClass=us_physion_domain_impl_MyClass in our wrapper invocation. Can anyone guide me in the right direction? 2) Name collisions across packages The same example above shows a name collision between us.physion.domain.impl.MyClass and us.physion.domain.MyClass. We're using --rename us.physion.domain.impl.MyClass=us_physion_domain_impl_MyClass in our wrapper invocation, but --rename is not well documented on the JCC web site, so i'm not positive we're using it correctly. I saw a post from Aug 29 to this list that says JCC 2.16 models the entire package structure, avoiding these name collisions, but when running JCC from SVN trunk this doesn't appear to be the case (we still get the name collision without the --rename). Are we using --rename correctly? Thank you, Barry