<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>I think it has something to do with the method signatures and how pyjnius handles them.   The jar has the abstract class, so any code in Java which references the abstract class will load it.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>See my code for a non-SAI solution.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Locations of X3DViewpointNode:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$ find . -type f -print0| xargs -0 grep -l X3DViewpointNode</p><p class=MsoNormal>./classes.json</p><p class=MsoNormal>./fieldTypes.js</p><p class=MsoNormal>./mapToMethod.js</p><p class=MsoNormal>./org/web3d/x3d/sai/Navigation/X3DViewpointNode.py</p><p class=MsoNormal>./X3Dautoclass.py</p><p class=MsoNormal>./__pycache__/X3Dautoclass.cpython-36.pyc</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So you can try removing X3DViewpointNode.py and X3Dautoclass.py for a test.  I am happy with my fix until we find something we can’t fix.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:brutzman@nps.edu">Brutzman, Donald (Don) (CIV)</a><br><b>Sent: </b>Monday, April 22, 2019 10:57 PM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] Sample X3D Python API; examplespublishedforcontinuing improvement</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Our messages crossed but are quite similar... we might have the problem surrounded I hope...</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 4/22/2019 8:45 PM, John Carlson wrote:</p><p class=MsoNormal>> This is a more broad problem than pyjnius, and is likely a Java problem that is letting things past the interface contract.  Okay, I will try to explain what the bug is:</p><p class=MsoNormal>> </p><p class=MsoNormal>> setDEF in X3DViewpointNode returns an X3DViewpointNode (interface)</p><p class=MsoNormal>> </p><p class=MsoNormal>> public X3DViewpointNode setDEF(String newValue);</p><p class=MsoNormal>[...]</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Please make sure that you have _no_ references to abstract class X3DViewpointNode anywhere in your code.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The Java source for concrete class ViewpointObject specifically overrides its abstract parent superclass with an @Override annotation.  Inside X3DJSAIL the setDEF() method correctly returns type ViewpointObject.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>If we remove all references to X3D*Node abstract classes everywhere and the problem still occurs, then</p><p class=MsoNormal>- perhaps not all of those definitions are removed, or</p><p class=MsoNormal>- perhaps an old file in the path is somehow visible, or</p><p class=MsoNormal>- we have isolated a bug in Pyjnius that we can ask them to fix.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Good luck sir.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>all the best, Don</p><p class=MsoNormal>-- </p><p class=MsoNormal>Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman@nps.edu</p><p class=MsoNormal>Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149</p><p class=MsoNormal>X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>