<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Navigation/ViewpointObject.java:        public final ViewpointObject setDEF(String newValue)</p><p class=MsoNormal>Navigation/ViewpointObject.java:        public ViewpointObject setDEF(SFStringObject newValue)</p><p class=MsoNormal>Navigation/X3DViewpointNode.java:       public X3DViewpointNode setDEF(String newValue);</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The only thing I can conclude is that somehow, the setDEF in X3DViewpointNode.java overrides the one in ViewpointObject.java.  Since the interface contract for setDEF returns an interface or abstract class, the method can’t be found.  I “patched’ this by wrapping in a SFStringObject, and there’s no interface contract for that method, so it chooses the concrete class.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Reflect.py travels up the inheritance hierarchy doing this:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-indent:.5in'>parent_class = parent_class.getSuperclass()</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I think it’s overriding methods with one of these, but not sure:</p><p class=MsoNormal style='text-indent:.5in'>classDict[name] = cls(sig, varargs=varargs)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-indent:.5in'>classDict[lowername] = (lambda n: property(lambda self: getattr(self, n)()))(name)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-indent:.5in'>classDict[name] = JavaMultipleMethod(signatures)</p><p class=MsoNormal style='text-indent:.5in'><o:p> </o:p></p><p class=MsoNormal>My guess is it overrides with the first one, since there is only one method in the interface/abstract class.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>But it will require some experimentation.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>You can replace import jnius with import reflect in classpath.py, I think, or each individual org package .py file.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’ve tried disabling the getSuperclass line without success</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Next step might be figure out how to build pyjnius.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>==========================================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>>5. we're still having trouble with pyjnius finding the appropriate method:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>- - - - - -</p><p class=MsoNormal>Loading HelloWorld.py (pipeline syntax) with python, if successful then saving and validating as HelloWorld_RoundTrip2.x3d version:</p><p class=MsoNormal>Traceback (most recent call last):</p><p class=MsoNormal>   File "C:\x3d-code\www.web3d.org\x3d\content\examples\X3dForWebAuthors/Chapter01TechnicalOverview//HelloWorld.py", line 74, in <module></p><p class=MsoNormal>     .addChild(Viewpoint().setDEF("ViewUpClose").setCenterOfRotation([0,-1,0]).setDescription("Hello world!").setPosition([0,-1,7]) \</p><p class=MsoNormal>AttributeError: 'org.web3d.x3d.sai.Navigation.X3DViewpointNode' object has no attribute 'setCenterOfRotation'</p><p class=MsoNormal>- - - - - -</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>As before, not clear why parent X3DViewpointNode object gets tagged.   Suspect it is because pyjnius can't find the correct method signature in ViewpointObject, and so goes to parent abstract class.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>==========================================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>