[x3d-public] python pyjnius mapping

John Carlson yottzumm at gmail.com
Tue May 14 05:53:07 PDT 2019


 The return value from many methods has an abstract class type, would be my best guess.  I have found many instances in jsail.

I can provide help finding them if necessary.  I would suggest searching for “public X3D” initially.

When you point a finger, there’s three fingers pointing back at you.

John

Sent from Mail for Windows 10

From: Brutzman, Donald (Don) (CIV)
Sent: Monday, May 13, 2019 11:54 PM
To: John Carlson
Cc: X3D Graphics public mailing list
Subject: Re: python pyjnius mapping

On 5/13/2019 4:13 AM, John Carlson wrote:
> I see.  Great!  It’s like breaking the contract on purpose, but letting people know you did it.

yes, @Override annotation is useful

> I understand now.  Just took a few nights sleep.  I’m catching up!  I’m usually 5 years behind state of research :😉

far better than the international average...

> One think I did was verify all class names, abstract class names and interfaces had unique names.
> 
> We could also tack Object back on the jsail names, if necessary.

Good thinking.  We definitely don't want pyjnius to be looking at the oversimplistic/insufficient org.web3d.x3d.sai interfaces.

Was thinking we should use fully qualified concrete class names for zero ambiguity, but it looks like you have that pattern correctly listed already:

HelloWorld.py
=============
import classpath
from org.web3d.x3d.jsail.Core.X3DObject import X3DObject as X3D
from org.web3d.x3d.jsail.fields.SFStringObject import SFStringObject as SFString
from org.web3d.x3d.jsail.Core.headObject import headObject as head
etc.
=============

Is there another way we might be mistakenly triggering pyjnius to mistakenly look at abstract classes?

> Cool.
> 
> John
> 
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
> 
> *From: *Brutzman, Donald (Don) (CIV) <mailto:brutzman at nps.edu>
> *Sent: *Sunday, May 12, 2019 2:23 PM
> *To: *John Carlson <mailto:yottzumm at gmail.com>
> *Cc: *X3D Graphics public mailing list <mailto:x3d-public at web3d.org>
> *Subject: *Re: python pyjnius mapping
> 
> agreed it is confusing... reflection can be very tricky.
> 
> good observation that we should look hard at what setDEF() returns.
> 
>                  .addChild(Viewpoint().setDEF("ViewUpClose").setCenterOfRotation(0,-1,0).setDescription("Hello world!").setPosition(0,-1,7))
> 
>                  AttributeError: 'org.web3d.x3d.sai.Navigation.X3DViewpointNode' object has no attribute 'setCenterOfRotation'
> 
> from ViewpointObject, the method is explicitly declared/customized to Override the parent abstract class.
> 
>                  @Override
> 
>                  public final ViewpointObject setDEF(String newValue)
> 
> also available
> 
>                  public ViewpointObject setCenterOfRotation(double x, double y, double z)
> 
>                  public ViewpointObject setCenterOfRotation(float x, float y, float z)
> 
>                  @Override
> 
>                  public ViewpointObject setCenterOfRotation(float[] newValue)
> 
> yes still confusing.  i think we need to throughly review logic in your classes first before making a conclusive claim against pyjnius...  make sure it always looks at classes, not abstract superclasses.
all the best, Don
-- 
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20190514/a76e44ba/attachment-0001.html>


More information about the x3d-public mailing list