<div dir="ltr">Here's the nodejs script that works!<div><br></div><div>John</div><div>var java = require('java');<br>var autoclass = require('./X3Dautoclass');<br>var ProtoInstance0 = null;<br>var ProtoInstance1 = null;<br>      var X3D0 =  new autoclass.X3D().setProfileSync("Immersive").setVersionSync("3.3")<br>      .setHeadSync(new autoclass.head()<br>        .addMetaSync(new autoclass.meta().setNameSync("title").setContentSync("abox.x3d"))<br>        .addMetaSync(new autoclass.meta().setNameSync("creator").setContentSync("John Carlson"))<br>        .addMetaSync(new autoclass.meta().setNameSync("generator").setContentSync("manual"))<br>        .addMetaSync(new autoclass.meta().setNameSync("identifier").setContentSync("<a href="https://coderextreme.net/X3DJSONLD/abox.x3d">https://coderextreme.net/X3DJSONLD/abox.x3d</a>"))<br>        .addMetaSync(new autoclass.meta().setNameSync("description").setContentSync("a box")))<br>      .setSceneSync(new autoclass.Scene()<br>        .addChildSync(new autoclass.ProtoDeclare().setNameSync("anyShape")<br>          .setProtoInterfaceSync(new autoclass.ProtoInterface()<br>            .addFieldSync(new autoclass.field().setTypeSync(autoclass.field.TYPE_MFNODE).setNameSync("myShape").setAccessTypeSync(autoclass.field.ACCESSTYPE_INPUTOUTPUT)<br>              .addChildSync(new autoclass.Shape()<br>                .setGeometrySync(new autoclass.Sphere()))))<br>          .setProtoBodySync(new autoclass.ProtoBody()<br>            .addChildSync(new autoclass.Transform()<br>              .setISSync(new autoclass.IS()<br>                .addConnectSync(new autoclass.connect().setNodeFieldSync("children").setProtoFieldSync("myShape"))))))<br>        .addChildSync(new autoclass.ProtoDeclare().setNameSync("one")<br>          .setProtoInterfaceSync(new autoclass.ProtoInterface()<br>            .addFieldSync(new autoclass.field().setTypeSync(autoclass.field.TYPE_MFNODE).setNameSync("myShape").setAccessTypeSync(autoclass.field.ACCESSTYPE_INPUTOUTPUT)<br>              .addChildSync(new autoclass.Shape()<br>                .setGeometrySync(new autoclass.Cylinder()))))<br>          .setProtoBodySync(new autoclass.ProtoBody()<br>            .addChildSync(new autoclass.Transform()<br>              .addChildSync(ProtoInstance0 = new autoclass.ProtoInstance().setNameSync("anyShape")<br>                .setISSync(new autoclass.IS()<br>                  .addConnectSync(new autoclass.connect().setNodeFieldSync("myShape").setProtoFieldSync("myShape")))))))<br>        .addChildSync(ProtoInstance1 = new autoclass.ProtoInstance().setNameSync("one")))      ;<br>ProtoInstance1<br>          .addFieldValueSync(new autoclass.fieldValue().setNameSync("myShape")<br>            .addChildSync(new autoclass.Shape()<br>              .setGeometrySync(new autoclass.Box().setSizeSync(java.newArray("float", [java.newFloat(140), java.newFloat(140), java.newFloat(140)])))));<br>    X3D0.toFileX3D("../data/abox.new.x3d");<br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">---------- Forwarded message ---------<br>From: <strong class="gmail_sendername" dir="auto">John Carlson</strong> <span dir="auto"><<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>></span><br>Date: Fri, Apr 10, 2020 at 11:21 PM<br>Subject: Re: JSweet translation of X3DJSAIL to JavaScript: need specific design goals first<br>To: Don Brutzman <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>><br>Cc: Andreas Plesch <<a href="mailto:andreasplesch@gmail.com">andreasplesch@gmail.com</a>>, Katie Unger <<a href="mailto:kunger@ssdllc.biz">kunger@ssdllc.biz</a>>, X3D Graphics public mailing list <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>><br></div><br><br><div dir="ltr">var java = require('java');<br>java.options.push("-Djava.awt.headless=true");<br>java.options.push("-Xmx1000m");<br>//java.options.push("-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005");<br>java.classpath.push("X3DJSAIL.3.3.full.jar");<br>java.classpath.push("pythonSAI/X3DJSAIL.3.3.full.jar");<br>java.classpath.push("../pythonSAI/X3DJSAIL.3.3.full.jar");<br>java.classpath.push("../../pythonSAI/X3DJSAIL.3.3.full.jar");<br>java.classpath.push("../../../pythonSAI/X3DJSAIL.3.3.full.jar");<br>java.classpath.push("../../../../pythonSAI/X3DJSAIL.3.3.full.jar");<br>module.exports = {<br>Anchor : java.import('org.web3d.x3d.jsail.Networking.AnchorObject'),<br>Appearance : java.import('org.web3d.x3d.jsail.Shape.AppearanceObject'),<br>Arc2D : java.import('org.web3d.x3d.jsail.Geometry2D.Arc2DObject'),<br>ArcClose2D : java.import('org.web3d.x3d.jsail.Geometry2D.ArcClose2DObject'),<br>AudioClip : java.import('org.web3d.x3d.jsail.Sound.AudioClipObject'),<br>Background : java.import('org.web3d.x3d.jsail.EnvironmentalEffects.BackgroundObject'),<br>BallJoint : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.BallJointObject'),<br>Billboard : java.import('org.web3d.x3d.jsail.Navigation.BillboardObject'),<br>BlendedVolumeStyle : java.import('org.web3d.x3d.jsail.VolumeRendering.BlendedVolumeStyleObject'),<br>BooleanFilter : java.import('org.web3d.x3d.jsail.EventUtilities.BooleanFilterObject'),<br>BooleanSequencer : java.import('org.web3d.x3d.jsail.EventUtilities.BooleanSequencerObject'),<br>BooleanToggle : java.import('org.web3d.x3d.jsail.EventUtilities.BooleanToggleObject'),<br>BooleanTrigger : java.import('org.web3d.x3d.jsail.EventUtilities.BooleanTriggerObject'),<br>BoundaryEnhancementVolumeStyle : java.import('org.web3d.x3d.jsail.VolumeRendering.BoundaryEnhancementVolumeStyleObject'),<br>BoundedPhysicsModel : java.import('org.web3d.x3d.jsail.ParticleSystems.BoundedPhysicsModelObject'),<br>Box : java.import('org.web3d.x3d.jsail.Geometry3D.BoxObject'),<br>CADAssembly : java.import('org.web3d.x3d.jsail.CADGeometry.CADAssemblyObject'),<br>CADFace : java.import('org.web3d.x3d.jsail.CADGeometry.CADFaceObject'),<br>CADLayer : java.import('org.web3d.x3d.jsail.CADGeometry.CADLayerObject'),<br>CADPart : java.import('org.web3d.x3d.jsail.CADGeometry.CADPartObject'),<br>CartoonVolumeStyle : java.import('org.web3d.x3d.jsail.VolumeRendering.CartoonVolumeStyleObject'),<br>Circle2D : java.import('org.web3d.x3d.jsail.Geometry2D.Circle2DObject'),<br>ClipPlane : java.import('org.web3d.x3d.jsail.Rendering.ClipPlaneObject'),<br>CollidableOffset : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollidableOffsetObject'),<br>CollidableShape : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollidableShapeObject'),<br>Collision : java.import('org.web3d.x3d.jsail.Navigation.CollisionObject'),<br>CollisionCollection : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollisionCollectionObject'),<br>CollisionSensor : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSensorObject'),<br>CollisionSpace : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSpaceObject'),<br>Color : java.import('org.web3d.x3d.jsail.Rendering.ColorObject'),<br>ColorChaser : java.import('org.web3d.x3d.jsail.Followers.ColorChaserObject'),<br>ColorDamper : java.import('org.web3d.x3d.jsail.Followers.ColorDamperObject'),<br>ColorInterpolator : java.import('org.web3d.x3d.jsail.Interpolation.ColorInterpolatorObject'),<br>ColorRGBA : java.import('org.web3d.x3d.jsail.Rendering.ColorRGBAObject'),<br>ComposedCubeMapTexture : java.import('org.web3d.x3d.jsail.CubeMapTexturing.ComposedCubeMapTextureObject'),<br>ComposedShader : java.import('org.web3d.x3d.jsail.Shaders.ComposedShaderObject'),<br>ComposedTexture3D : java.import('org.web3d.x3d.jsail.Texturing3D.ComposedTexture3DObject'),<br>ComposedVolumeStyle : java.import('org.web3d.x3d.jsail.VolumeRendering.ComposedVolumeStyleObject'),<br>Cone : java.import('org.web3d.x3d.jsail.Geometry3D.ConeObject'),<br>ConeEmitter : java.import('org.web3d.x3d.jsail.ParticleSystems.ConeEmitterObject'),<br>Contact : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.ContactObject'),<br>Contour2D : java.import('org.web3d.x3d.jsail.NURBS.Contour2DObject'),<br>ContourPolyline2D : java.import('org.web3d.x3d.jsail.NURBS.ContourPolyline2DObject'),<br>Coordinate : java.import('org.web3d.x3d.jsail.Rendering.CoordinateObject'),<br>CoordinateChaser : java.import('org.web3d.x3d.jsail.Followers.CoordinateChaserObject'),<br>CoordinateDamper : java.import('org.web3d.x3d.jsail.Followers.CoordinateDamperObject'),<br>CoordinateDouble : java.import('org.web3d.x3d.jsail.NURBS.CoordinateDoubleObject'),<br>CoordinateInterpolator : java.import('org.web3d.x3d.jsail.Interpolation.CoordinateInterpolatorObject'),<br>CoordinateInterpolator2D : java.import('org.web3d.x3d.jsail.Interpolation.CoordinateInterpolator2DObject'),<br>Cylinder : java.import('org.web3d.x3d.jsail.Geometry3D.CylinderObject'),<br>CylinderSensor : java.import('org.web3d.x3d.jsail.PointingDeviceSensor.CylinderSensorObject'),<br>DirectionalLight : java.import('org.web3d.x3d.jsail.Lighting.DirectionalLightObject'),<br>DISEntityManager : java.import('org.web3d.x3d.jsail.DIS.DISEntityManagerObject'),<br>DISEntityTypeMapping : java.import('org.web3d.x3d.jsail.DIS.DISEntityTypeMappingObject'),<br>Disk2D : java.import('org.web3d.x3d.jsail.Geometry2D.Disk2DObject'),<br>DoubleAxisHingeJoint : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.DoubleAxisHingeJointObject'),<br>EaseInEaseOut : java.import('org.web3d.x3d.jsail.Interpolation.EaseInEaseOutObject'),<br>EdgeEnhancementVolumeStyle : java.import('org.web3d.x3d.jsail.VolumeRendering.EdgeEnhancementVolumeStyleObject'),<br>ElevationGrid : java.import('org.web3d.x3d.jsail.Geometry3D.ElevationGridObject'),<br>EspduTransform : java.import('org.web3d.x3d.jsail.DIS.EspduTransformObject'),<br>ExplosionEmitter : java.import('org.web3d.x3d.jsail.ParticleSystems.ExplosionEmitterObject'),<br>Extrusion : java.import('org.web3d.x3d.jsail.Geometry3D.ExtrusionObject'),<br>FillProperties : java.import('org.web3d.x3d.jsail.Shape.FillPropertiesObject'),<br>FloatVertexAttribute : java.import('org.web3d.x3d.jsail.Shaders.FloatVertexAttributeObject'),<br>Fog : java.import('org.web3d.x3d.jsail.EnvironmentalEffects.FogObject'),<br>FogCoordinate : java.import('org.web3d.x3d.jsail.EnvironmentalEffects.FogCoordinateObject'),<br>FontStyle : java.import('org.web3d.x3d.jsail.Text.FontStyleObject'),<br>ForcePhysicsModel : java.import('org.web3d.x3d.jsail.ParticleSystems.ForcePhysicsModelObject'),<br>GeneratedCubeMapTexture : java.import('org.web3d.x3d.jsail.CubeMapTexturing.GeneratedCubeMapTextureObject'),<br>GeoCoordinate : java.import('org.web3d.x3d.jsail.Geospatial.GeoCoordinateObject'),<br>GeoElevationGrid : java.import('org.web3d.x3d.jsail.Geospatial.GeoElevationGridObject'),<br>GeoLocation : java.import('org.web3d.x3d.jsail.Geospatial.GeoLocationObject'),<br>GeoLOD : java.import('org.web3d.x3d.jsail.Geospatial.GeoLODObject'),<br>GeoMetadata : java.import('org.web3d.x3d.jsail.Geospatial.GeoMetadataObject'),<br>GeoOrigin : java.import('org.web3d.x3d.jsail.Geospatial.GeoOriginObject'),<br>GeoPositionInterpolator : java.import('org.web3d.x3d.jsail.Geospatial.GeoPositionInterpolatorObject'),<br>GeoProximitySensor : java.import('org.web3d.x3d.jsail.Geospatial.GeoProximitySensorObject'),<br>GeoTouchSensor : java.import('org.web3d.x3d.jsail.Geospatial.GeoTouchSensorObject'),<br>GeoTransform : java.import('org.web3d.x3d.jsail.Geospatial.GeoTransformObject'),<br>GeoViewpoint : java.import('org.web3d.x3d.jsail.Geospatial.GeoViewpointObject'),<br>Group : java.import('org.web3d.x3d.jsail.Grouping.GroupObject'),<br>HAnimDisplacer : java.import('org.web3d.x3d.jsail.HAnim.HAnimDisplacerObject'),<br>HAnimHumanoid : java.import('org.web3d.x3d.jsail.HAnim.HAnimHumanoidObject'),<br>HAnimJoint : java.import('org.web3d.x3d.jsail.HAnim.HAnimJointObject'),<br>HAnimSegment : java.import('org.web3d.x3d.jsail.HAnim.HAnimSegmentObject'),<br>HAnimSite : java.import('org.web3d.x3d.jsail.HAnim.HAnimSiteObject'),<br>ImageCubeMapTexture : java.import('org.web3d.x3d.jsail.CubeMapTexturing.ImageCubeMapTextureObject'),<br>ImageTexture : java.import('org.web3d.x3d.jsail.Texturing.ImageTextureObject'),<br>ImageTexture3D : java.import('org.web3d.x3d.jsail.Texturing3D.ImageTexture3DObject'),<br>IndexedFaceSet : java.import('org.web3d.x3d.jsail.Geometry3D.IndexedFaceSetObject'),<br>IndexedLineSet : java.import('org.web3d.x3d.jsail.Rendering.IndexedLineSetObject'),<br>IndexedQuadSet : java.import('org.web3d.x3d.jsail.CADGeometry.IndexedQuadSetObject'),<br>IndexedTriangleFanSet : java.import('org.web3d.x3d.jsail.Rendering.IndexedTriangleFanSetObject'),<br>IndexedTriangleSet : java.import('org.web3d.x3d.jsail.Rendering.IndexedTriangleSetObject'),<br>IndexedTriangleStripSet : java.import('org.web3d.x3d.jsail.Rendering.IndexedTriangleStripSetObject'),<br>Inline : java.import('org.web3d.x3d.jsail.Networking.InlineObject'),<br>IntegerSequencer : java.import('org.web3d.x3d.jsail.EventUtilities.IntegerSequencerObject'),<br>IntegerTrigger : java.import('org.web3d.x3d.jsail.EventUtilities.IntegerTriggerObject'),<br>IsoSurfaceVolumeData : java.import('org.web3d.x3d.jsail.VolumeRendering.IsoSurfaceVolumeDataObject'),<br>KeySensor : java.import('org.web3d.x3d.jsail.KeyDeviceSensor.KeySensorObject'),<br>Layer : java.import('org.web3d.x3d.jsail.Layering.LayerObject'),<br>LayerSet : java.import('org.web3d.x3d.jsail.Layering.LayerSetObject'),<br>Layout : java.import('org.web3d.x3d.jsail.Layout.LayoutObject'),<br>LayoutGroup : java.import('org.web3d.x3d.jsail.Layout.LayoutGroupObject'),<br>LayoutLayer : java.import('org.web3d.x3d.jsail.Layout.LayoutLayerObject'),<br>LinePickSensor : java.import('org.web3d.x3d.jsail.Picking.LinePickSensorObject'),<br>LineProperties : java.import('org.web3d.x3d.jsail.Shape.LinePropertiesObject'),<br>LineSet : java.import('org.web3d.x3d.jsail.Rendering.LineSetObject'),<br>LoadSensor : java.import('org.web3d.x3d.jsail.Networking.LoadSensorObject'),<br>LocalFog : java.import('org.web3d.x3d.jsail.EnvironmentalEffects.LocalFogObject'),<br>LOD : java.import('org.web3d.x3d.jsail.Navigation.LODObject'),<br>Material : java.import('org.web3d.x3d.jsail.Shape.MaterialObject'),<br>Matrix3VertexAttribute : java.import('org.web3d.x3d.jsail.Shaders.Matrix3VertexAttributeObject'),<br>Matrix4VertexAttribute : java.import('org.web3d.x3d.jsail.Shaders.Matrix4VertexAttributeObject'),<br>MetadataBoolean : java.import('org.web3d.x3d.jsail.Core.MetadataBooleanObject'),<br>MetadataDouble : java.import('org.web3d.x3d.jsail.Core.MetadataDoubleObject'),<br>MetadataFloat : java.import('org.web3d.x3d.jsail.Core.MetadataFloatObject'),<br>MetadataInteger : java.import('org.web3d.x3d.jsail.Core.MetadataIntegerObject'),<br>MetadataSet : java.import('org.web3d.x3d.jsail.Core.MetadataSetObject'),<br>MetadataString : java.import('org.web3d.x3d.jsail.Core.MetadataStringObject'),<br>MotorJoint : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.MotorJointObject'),<br>MovieTexture : java.import('org.web3d.x3d.jsail.Texturing.MovieTextureObject'),<br>MultiTexture : java.import('org.web3d.x3d.jsail.Texturing.MultiTextureObject'),<br>MultiTextureCoordinate : java.import('org.web3d.x3d.jsail.Texturing.MultiTextureCoordinateObject'),<br>MultiTextureTransform : java.import('org.web3d.x3d.jsail.Texturing.MultiTextureTransformObject'),<br>NavigationInfo : java.import('org.web3d.x3d.jsail.Navigation.NavigationInfoObject'),<br>Normal : java.import('org.web3d.x3d.jsail.Rendering.NormalObject'),<br>NormalInterpolator : java.import('org.web3d.x3d.jsail.Interpolation.NormalInterpolatorObject'),<br>NurbsCurve : java.import('org.web3d.x3d.jsail.NURBS.NurbsCurveObject'),<br>NurbsCurve2D : java.import('org.web3d.x3d.jsail.NURBS.NurbsCurve2DObject'),<br>NurbsOrientationInterpolator : java.import('org.web3d.x3d.jsail.NURBS.NurbsOrientationInterpolatorObject'),<br>NurbsPatchSurface : java.import('org.web3d.x3d.jsail.NURBS.NurbsPatchSurfaceObject'),<br>NurbsPositionInterpolator : java.import('org.web3d.x3d.jsail.NURBS.NurbsPositionInterpolatorObject'),<br>NurbsSet : java.import('org.web3d.x3d.jsail.NURBS.NurbsSetObject'),<br>NurbsSurfaceInterpolator : java.import('org.web3d.x3d.jsail.NURBS.NurbsSurfaceInterpolatorObject'),<br>NurbsSweptSurface : java.import('org.web3d.x3d.jsail.NURBS.NurbsSweptSurfaceObject'),<br>NurbsSwungSurface : java.import('org.web3d.x3d.jsail.NURBS.NurbsSwungSurfaceObject'),<br>NurbsTextureCoordinate : java.import('org.web3d.x3d.jsail.NURBS.NurbsTextureCoordinateObject'),<br>NurbsTrimmedSurface : java.import('org.web3d.x3d.jsail.NURBS.NurbsTrimmedSurfaceObject'),<br>OpacityMapVolumeStyle : java.import('org.web3d.x3d.jsail.VolumeRendering.OpacityMapVolumeStyleObject'),<br>OrientationChaser : java.import('org.web3d.x3d.jsail.Followers.OrientationChaserObject'),<br>OrientationDamper : java.import('org.web3d.x3d.jsail.Followers.OrientationDamperObject'),<br>OrientationInterpolator : java.import('org.web3d.x3d.jsail.Interpolation.OrientationInterpolatorObject'),<br>OrthoViewpoint : java.import('org.web3d.x3d.jsail.Navigation.OrthoViewpointObject'),<br>PackagedShader : java.import('org.web3d.x3d.jsail.Shaders.PackagedShaderObject'),<br>ParticleSystem : java.import('org.web3d.x3d.jsail.ParticleSystems.ParticleSystemObject'),<br>PickableGroup : java.import('org.web3d.x3d.jsail.Picking.PickableGroupObject'),<br>PixelTexture : java.import('org.web3d.x3d.jsail.Texturing.PixelTextureObject'),<br>PixelTexture3D : java.import('org.web3d.x3d.jsail.Texturing3D.PixelTexture3DObject'),<br>PlaneSensor : java.import('org.web3d.x3d.jsail.PointingDeviceSensor.PlaneSensorObject'),<br>PointEmitter : java.import('org.web3d.x3d.jsail.ParticleSystems.PointEmitterObject'),<br>PointLight : java.import('org.web3d.x3d.jsail.Lighting.PointLightObject'),<br>PointPickSensor : java.import('org.web3d.x3d.jsail.Picking.PointPickSensorObject'),<br>PointSet : java.import('org.web3d.x3d.jsail.Rendering.PointSetObject'),<br>Polyline2D : java.import('org.web3d.x3d.jsail.Geometry2D.Polyline2DObject'),<br>PolylineEmitter : java.import('org.web3d.x3d.jsail.ParticleSystems.PolylineEmitterObject'),<br>Polypoint2D : java.import('org.web3d.x3d.jsail.Geometry2D.Polypoint2DObject'),<br>PositionChaser : java.import('org.web3d.x3d.jsail.Followers.PositionChaserObject'),<br>PositionChaser2D : java.import('org.web3d.x3d.jsail.Followers.PositionChaser2DObject'),<br>PositionDamper : java.import('org.web3d.x3d.jsail.Followers.PositionDamperObject'),<br>PositionDamper2D : java.import('org.web3d.x3d.jsail.Followers.PositionDamper2DObject'),<br>PositionInterpolator : java.import('org.web3d.x3d.jsail.Interpolation.PositionInterpolatorObject'),<br>PositionInterpolator2D : java.import('org.web3d.x3d.jsail.Interpolation.PositionInterpolator2DObject'),<br>PrimitivePickSensor : java.import('org.web3d.x3d.jsail.Picking.PrimitivePickSensorObject'),<br>ProgramShader : java.import('org.web3d.x3d.jsail.Shaders.ProgramShaderObject'),<br>ProjectionVolumeStyle : java.import('org.web3d.x3d.jsail.VolumeRendering.ProjectionVolumeStyleObject'),<br>ProtoInstance : java.import('org.web3d.x3d.jsail.Core.ProtoInstanceObject'),<br>ProximitySensor : java.import('org.web3d.x3d.jsail.EnvironmentalSensor.ProximitySensorObject'),<br>QuadSet : java.import('org.web3d.x3d.jsail.CADGeometry.QuadSetObject'),<br>ReceiverPdu : java.import('org.web3d.x3d.jsail.DIS.ReceiverPduObject'),<br>Rectangle2D : java.import('org.web3d.x3d.jsail.Geometry2D.Rectangle2DObject'),<br>RigidBody : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.RigidBodyObject'),<br>RigidBodyCollection : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.RigidBodyCollectionObject'),<br>ScalarChaser : java.import('org.web3d.x3d.jsail.Followers.ScalarChaserObject'),<br>ScalarDamper : java.import('org.web3d.x3d.jsail.Followers.ScalarDamperObject'),<br>ScalarInterpolator : java.import('org.web3d.x3d.jsail.Interpolation.ScalarInterpolatorObject'),<br>ScreenFontStyle : java.import('org.web3d.x3d.jsail.Layout.ScreenFontStyleObject'),<br>ScreenGroup : java.import('org.web3d.x3d.jsail.Layout.ScreenGroupObject'),<br>Script : java.import('org.web3d.x3d.jsail.Scripting.ScriptObject'),<br>SegmentedVolumeData : java.import('org.web3d.x3d.jsail.VolumeRendering.SegmentedVolumeDataObject'),<br>ShadedVolumeStyle : java.import('org.web3d.x3d.jsail.VolumeRendering.ShadedVolumeStyleObject'),<br>ShaderPart : java.import('org.web3d.x3d.jsail.Shaders.ShaderPartObject'),<br>ShaderProgram : java.import('org.web3d.x3d.jsail.Shaders.ShaderProgramObject'),<br>Shape : java.import('org.web3d.x3d.jsail.Shape.ShapeObject'),<br>SignalPdu : java.import('org.web3d.x3d.jsail.DIS.SignalPduObject'),<br>SilhouetteEnhancementVolumeStyle : java.import('org.web3d.x3d.jsail.VolumeRendering.SilhouetteEnhancementVolumeStyleObject'),<br>SingleAxisHingeJoint : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.SingleAxisHingeJointObject'),<br>SliderJoint : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.SliderJointObject'),<br>Sound : java.import('org.web3d.x3d.jsail.Sound.SoundObject'),<br>Sphere : java.import('org.web3d.x3d.jsail.Geometry3D.SphereObject'),<br>SphereSensor : java.import('org.web3d.x3d.jsail.PointingDeviceSensor.SphereSensorObject'),<br>SplinePositionInterpolator : java.import('org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolatorObject'),<br>SplinePositionInterpolator2D : java.import('org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolator2DObject'),<br>SplineScalarInterpolator : java.import('org.web3d.x3d.jsail.Interpolation.SplineScalarInterpolatorObject'),<br>SpotLight : java.import('org.web3d.x3d.jsail.Lighting.SpotLightObject'),<br>SquadOrientationInterpolator : java.import('org.web3d.x3d.jsail.Interpolation.SquadOrientationInterpolatorObject'),<br>StaticGroup : java.import('org.web3d.x3d.jsail.Grouping.StaticGroupObject'),<br>StringSensor : java.import('org.web3d.x3d.jsail.KeyDeviceSensor.StringSensorObject'),<br>SurfaceEmitter : java.import('org.web3d.x3d.jsail.ParticleSystems.SurfaceEmitterObject'),<br>Switch : java.import('org.web3d.x3d.jsail.Grouping.SwitchObject'),<br>TexCoordChaser2D : java.import('org.web3d.x3d.jsail.Followers.TexCoordChaser2DObject'),<br>TexCoordDamper2D : java.import('org.web3d.x3d.jsail.Followers.TexCoordDamper2DObject'),<br>Text : java.import('org.web3d.x3d.jsail.Text.TextObject'),<br>TextureBackground : java.import('org.web3d.x3d.jsail.EnvironmentalEffects.TextureBackgroundObject'),<br>TextureCoordinate : java.import('org.web3d.x3d.jsail.Texturing.TextureCoordinateObject'),<br>TextureCoordinate3D : java.import('org.web3d.x3d.jsail.Texturing3D.TextureCoordinate3DObject'),<br>TextureCoordinate4D : java.import('org.web3d.x3d.jsail.Texturing3D.TextureCoordinate4DObject'),<br>TextureCoordinateGenerator : java.import('org.web3d.x3d.jsail.Texturing.TextureCoordinateGeneratorObject'),<br>TextureProperties : java.import('org.web3d.x3d.jsail.Texturing.TexturePropertiesObject'),<br>TextureTransform : java.import('org.web3d.x3d.jsail.Texturing.TextureTransformObject'),<br>TextureTransform3D : java.import('org.web3d.x3d.jsail.Texturing3D.TextureTransform3DObject'),<br>TextureTransformMatrix3D : java.import('org.web3d.x3d.jsail.Texturing3D.TextureTransformMatrix3DObject'),<br>TimeSensor : java.import('org.web3d.x3d.jsail.Time.TimeSensorObject'),<br>TimeTrigger : java.import('org.web3d.x3d.jsail.EventUtilities.TimeTriggerObject'),<br>ToneMappedVolumeStyle : java.import('org.web3d.x3d.jsail.VolumeRendering.ToneMappedVolumeStyleObject'),<br>TouchSensor : java.import('org.web3d.x3d.jsail.PointingDeviceSensor.TouchSensorObject'),<br>Transform : java.import('org.web3d.x3d.jsail.Grouping.TransformObject'),<br>TransformSensor : java.import('org.web3d.x3d.jsail.EnvironmentalSensor.TransformSensorObject'),<br>TransmitterPdu : java.import('org.web3d.x3d.jsail.DIS.TransmitterPduObject'),<br>TriangleFanSet : java.import('org.web3d.x3d.jsail.Rendering.TriangleFanSetObject'),<br>TriangleSet : java.import('org.web3d.x3d.jsail.Rendering.TriangleSetObject'),<br>TriangleSet2D : java.import('org.web3d.x3d.jsail.Geometry2D.TriangleSet2DObject'),<br>TriangleStripSet : java.import('org.web3d.x3d.jsail.Rendering.TriangleStripSetObject'),<br>TwoSidedMaterial : java.import('org.web3d.x3d.jsail.Shape.TwoSidedMaterialObject'),<br>UniversalJoint : java.import('org.web3d.x3d.jsail.RigidBodyPhysics.UniversalJointObject'),<br>Viewpoint : java.import('org.web3d.x3d.jsail.Navigation.ViewpointObject'),<br>ViewpointGroup : java.import('org.web3d.x3d.jsail.Navigation.ViewpointGroupObject'),<br>Viewport : java.import('org.web3d.x3d.jsail.Layering.ViewportObject'),<br>VisibilitySensor : java.import('org.web3d.x3d.jsail.EnvironmentalSensor.VisibilitySensorObject'),<br>VolumeData : java.import('org.web3d.x3d.jsail.VolumeRendering.VolumeDataObject'),<br>VolumeEmitter : java.import('org.web3d.x3d.jsail.ParticleSystems.VolumeEmitterObject'),<br>VolumePickSensor : java.import('org.web3d.x3d.jsail.Picking.VolumePickSensorObject'),<br>WindPhysicsModel : java.import('org.web3d.x3d.jsail.ParticleSystems.WindPhysicsModelObject'),<br>WorldInfo : java.import('org.web3d.x3d.jsail.Core.WorldInfoObject'),<br>component : java.import('org.web3d.x3d.jsail.Core.componentObject'),<br>connect : java.import('org.web3d.x3d.jsail.Core.connectObject'),<br>EXPORT : java.import('org.web3d.x3d.jsail.Networking.EXPORTObject'),<br>ExternProtoDeclare : java.import('org.web3d.x3d.jsail.Core.ExternProtoDeclareObject'),<br>field : java.import('org.web3d.x3d.jsail.Core.fieldObject'),<br>fieldValue : java.import('org.web3d.x3d.jsail.Core.fieldValueObject'),<br>head : java.import('org.web3d.x3d.jsail.Core.headObject'),<br>IMPORT : java.import('org.web3d.x3d.jsail.Networking.IMPORTObject'),<br>IS : java.import('org.web3d.x3d.jsail.Core.ISObject'),<br>meta : java.import('org.web3d.x3d.jsail.Core.metaObject'),<br>ProtoBody : java.import('org.web3d.x3d.jsail.Core.ProtoBodyObject'),<br>ProtoDeclare : java.import('org.web3d.x3d.jsail.Core.ProtoDeclareObject'),<br>ProtoInterface : java.import('org.web3d.x3d.jsail.Core.ProtoInterfaceObject'),<br>ROUTE : java.import('org.web3d.x3d.jsail.Core.ROUTEObject'),<br>Scene : java.import('org.web3d.x3d.jsail.Core.SceneObject'),<br>unit : java.import('org.web3d.x3d.jsail.Core.unitObject'),<br>X3D : java.import('org.web3d.x3d.jsail.Core.X3DObject'),<br>SFBool : java.import('org.web3d.x3d.jsail.fields.SFBoolObject'),<br>MFBool : java.import('org.web3d.x3d.jsail.fields.MFBoolObject'),<br>SFColor : java.import('org.web3d.x3d.jsail.fields.SFColorObject'),<br>MFColor : java.import('org.web3d.x3d.jsail.fields.MFColorObject'),<br>SFColorRGBA : java.import('org.web3d.x3d.jsail.fields.SFColorRGBAObject'),<br>MFColorRGBA : java.import('org.web3d.x3d.jsail.fields.MFColorRGBAObject'),<br>SFDouble : java.import('org.web3d.x3d.jsail.fields.SFDoubleObject'),<br>MFDouble : java.import('org.web3d.x3d.jsail.fields.MFDoubleObject'),<br>SFFloat : java.import('org.web3d.x3d.jsail.fields.SFFloatObject'),<br>MFFloat : java.import('org.web3d.x3d.jsail.fields.MFFloatObject'),<br>SFImage : java.import('org.web3d.x3d.jsail.fields.SFImageObject'),<br>MFImage : java.import('org.web3d.x3d.jsail.fields.MFImageObject'),<br>SFInt32 : java.import('org.web3d.x3d.jsail.fields.SFInt32Object'),<br>MFInt32 : java.import('org.web3d.x3d.jsail.fields.MFInt32Object'),<br>SFMatrix3d : java.import('org.web3d.x3d.jsail.fields.SFMatrix3dObject'),<br>MFMatrix3d : java.import('org.web3d.x3d.jsail.fields.MFMatrix3dObject'),<br>SFMatrix3f : java.import('org.web3d.x3d.jsail.fields.SFMatrix3fObject'),<br>MFMatrix3f : java.import('org.web3d.x3d.jsail.fields.MFMatrix3fObject'),<br>SFMatrix4d : java.import('org.web3d.x3d.jsail.fields.SFMatrix4dObject'),<br>MFMatrix4d : java.import('org.web3d.x3d.jsail.fields.MFMatrix4dObject'),<br>SFMatrix4f : java.import('org.web3d.x3d.jsail.fields.SFMatrix4fObject'),<br>MFMatrix4f : java.import('org.web3d.x3d.jsail.fields.MFMatrix4fObject'),<br>SFString : java.import('org.web3d.x3d.jsail.fields.SFStringObject'),<br>SFNode : java.import('org.web3d.x3d.jsail.fields.SFNodeObject'),<br>MFNode : java.import('org.web3d.x3d.jsail.fields.MFNodeObject'),<br>SFRotation : java.import('org.web3d.x3d.jsail.fields.SFRotationObject'),<br>MFRotation : java.import('org.web3d.x3d.jsail.fields.MFRotationObject'),<br>MFString : java.import('org.web3d.x3d.jsail.fields.MFStringObject'),<br>SFTime : java.import('org.web3d.x3d.jsail.fields.SFTimeObject'),<br>MFTime : java.import('org.web3d.x3d.jsail.fields.MFTimeObject'),<br>SFVec2d : java.import('org.web3d.x3d.jsail.fields.SFVec2dObject'),<br>MFVec2d : java.import('org.web3d.x3d.jsail.fields.MFVec2dObject'),<br>SFVec2f : java.import('org.web3d.x3d.jsail.fields.SFVec2fObject'),<br>MFVec2f : java.import('org.web3d.x3d.jsail.fields.MFVec2fObject'),<br>SFVec3d : java.import('org.web3d.x3d.jsail.fields.SFVec3dObject'),<br>MFVec3d : java.import('org.web3d.x3d.jsail.fields.MFVec3dObject'),<br>SFVec3f : java.import('org.web3d.x3d.jsail.fields.SFVec3fObject'),<br>MFVec3f : java.import('org.web3d.x3d.jsail.fields.MFVec3fObject'),<br>SFVec4d : java.import('org.web3d.x3d.jsail.fields.SFVec4dObject'),<br>MFVec4d : java.import('org.web3d.x3d.jsail.fields.MFVec4dObject'),<br>SFVec4f : java.import('org.web3d.x3d.jsail.fields.SFVec4fObject'),<br>MFVec4f : java.import('org.web3d.x3d.jsail.fields.MFVec4fObject'),<br>ConfigurationProperties : java.import("org.web3d.x3d.jsail.ConfigurationProperties"),<br>CommentsBlock : java.import("org.web3d.x3d.jsail.Core.CommentsBlock")<br>}<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Apr 10, 2020 at 11:20 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">This seems to be a better version, that uses require correctly.  My next email will be an example that actually works!.<div><br></div><div>John</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Apr 10, 2020 at 10:34 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">A real quick copy paste of autoclass.py and some tweaks produce the following JavaScript file (runs).  I welcome your tests. Currently, one must add "Sync" after method call names, but I think there's a way to override that.  You may find that running asynchronously may lead to issues, not sure.<div><br></div><div>If this seems like a good approach, I will start work on a JavaScript serializer.</div><div><br></div><div>This code ran last time I tried it.</div><div><br></div><div>I think we may have to put this into a module, and reference all classes from a root. "x3d"?</div><div><br>var java = require('java');<br>java.options.push("-Djava.awt.headless=true");<br>java.options.push("-Xmx1000m");<br>//java.options.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005');<br><br>java.classpath.push("X3DJSAIL.3.3.full.jar");<br><br>var CommentsBlock = java.import('org.web3d.x3d.jsail.Core.CommentsBlock');<br>var Anchor = java.import('org.web3d.x3d.jsail.Networking.AnchorObject');<br>var Appearance = java.import('org.web3d.x3d.jsail.Shape.AppearanceObject');<br>var Arc2D = java.import('org.web3d.x3d.jsail.Geometry2D.Arc2DObject');<br>var ArcClose2D = java.import('org.web3d.x3d.jsail.Geometry2D.ArcClose2DObject');<br>var AudioClip = java.import('org.web3d.x3d.jsail.Sound.AudioClipObject');<br>var Background = java.import('org.web3d.x3d.jsail.EnvironmentalEffects.BackgroundObject');<br>var BallJoint = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.BallJointObject');<br>var Billboard = java.import('org.web3d.x3d.jsail.Navigation.BillboardObject');<br>var BlendedVolumeStyle = java.import('org.web3d.x3d.jsail.VolumeRendering.BlendedVolumeStyleObject');<br>var BooleanFilter = java.import('org.web3d.x3d.jsail.EventUtilities.BooleanFilterObject');<br>var BooleanSequencer = java.import('org.web3d.x3d.jsail.EventUtilities.BooleanSequencerObject');<br>var BooleanToggle = java.import('org.web3d.x3d.jsail.EventUtilities.BooleanToggleObject');<br>var BooleanTrigger = java.import('org.web3d.x3d.jsail.EventUtilities.BooleanTriggerObject');<br>var BoundaryEnhancementVolumeStyle = java.import('org.web3d.x3d.jsail.VolumeRendering.BoundaryEnhancementVolumeStyleObject');<br>var BoundedPhysicsModel = java.import('org.web3d.x3d.jsail.ParticleSystems.BoundedPhysicsModelObject');<br>var Box = java.import('org.web3d.x3d.jsail.Geometry3D.BoxObject');<br>var CADAssembly = java.import('org.web3d.x3d.jsail.CADGeometry.CADAssemblyObject');<br>var CADFace = java.import('org.web3d.x3d.jsail.CADGeometry.CADFaceObject');<br>var CADLayer = java.import('org.web3d.x3d.jsail.CADGeometry.CADLayerObject');<br>var CADPart = java.import('org.web3d.x3d.jsail.CADGeometry.CADPartObject');<br>var CartoonVolumeStyle = java.import('org.web3d.x3d.jsail.VolumeRendering.CartoonVolumeStyleObject');<br>var Circle2D = java.import('org.web3d.x3d.jsail.Geometry2D.Circle2DObject');<br>var ClipPlane = java.import('org.web3d.x3d.jsail.Rendering.ClipPlaneObject');<br>var CollidableOffset = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollidableOffsetObject');<br>var CollidableShape = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollidableShapeObject');<br>var Collision = java.import('org.web3d.x3d.jsail.Navigation.CollisionObject');<br>var CollisionCollection = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollisionCollectionObject');<br>var CollisionSensor = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSensorObject');<br>var CollisionSpace = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSpaceObject');<br>var Color = java.import('org.web3d.x3d.jsail.Rendering.ColorObject');<br>var ColorChaser = java.import('org.web3d.x3d.jsail.Followers.ColorChaserObject');<br>var ColorDamper = java.import('org.web3d.x3d.jsail.Followers.ColorDamperObject');<br>var ColorInterpolator = java.import('org.web3d.x3d.jsail.Interpolation.ColorInterpolatorObject');<br>var ColorRGBA = java.import('org.web3d.x3d.jsail.Rendering.ColorRGBAObject');<br>var ComposedCubeMapTexture = java.import('org.web3d.x3d.jsail.CubeMapTexturing.ComposedCubeMapTextureObject');<br>var ComposedShader = java.import('org.web3d.x3d.jsail.Shaders.ComposedShaderObject');<br>var ComposedTexture3D = java.import('org.web3d.x3d.jsail.Texturing3D.ComposedTexture3DObject');<br>var ComposedVolumeStyle = java.import('org.web3d.x3d.jsail.VolumeRendering.ComposedVolumeStyleObject');<br>var Cone = java.import('org.web3d.x3d.jsail.Geometry3D.ConeObject');<br>var ConeEmitter = java.import('org.web3d.x3d.jsail.ParticleSystems.ConeEmitterObject');<br>var Contact = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.ContactObject');<br>var Contour2D = java.import('org.web3d.x3d.jsail.NURBS.Contour2DObject');<br>var ContourPolyline2D = java.import('org.web3d.x3d.jsail.NURBS.ContourPolyline2DObject');<br>var Coordinate = java.import('org.web3d.x3d.jsail.Rendering.CoordinateObject');<br>var CoordinateChaser = java.import('org.web3d.x3d.jsail.Followers.CoordinateChaserObject');<br>var CoordinateDamper = java.import('org.web3d.x3d.jsail.Followers.CoordinateDamperObject');<br>var CoordinateDouble = java.import('org.web3d.x3d.jsail.NURBS.CoordinateDoubleObject');<br>var CoordinateInterpolator = java.import('org.web3d.x3d.jsail.Interpolation.CoordinateInterpolatorObject');<br>var CoordinateInterpolator2D = java.import('org.web3d.x3d.jsail.Interpolation.CoordinateInterpolator2DObject');<br>var Cylinder = java.import('org.web3d.x3d.jsail.Geometry3D.CylinderObject');<br>var CylinderSensor = java.import('org.web3d.x3d.jsail.PointingDeviceSensor.CylinderSensorObject');<br>var DirectionalLight = java.import('org.web3d.x3d.jsail.Lighting.DirectionalLightObject');<br>var DISEntityManager = java.import('org.web3d.x3d.jsail.DIS.DISEntityManagerObject');<br>var DISEntityTypeMapping = java.import('org.web3d.x3d.jsail.DIS.DISEntityTypeMappingObject');<br>var Disk2D = java.import('org.web3d.x3d.jsail.Geometry2D.Disk2DObject');<br>var DoubleAxisHingeJoint = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.DoubleAxisHingeJointObject');<br>var EaseInEaseOut = java.import('org.web3d.x3d.jsail.Interpolation.EaseInEaseOutObject');<br>var EdgeEnhancementVolumeStyle = java.import('org.web3d.x3d.jsail.VolumeRendering.EdgeEnhancementVolumeStyleObject');<br>var ElevationGrid = java.import('org.web3d.x3d.jsail.Geometry3D.ElevationGridObject');<br>var EspduTransform = java.import('org.web3d.x3d.jsail.DIS.EspduTransformObject');<br>var ExplosionEmitter = java.import('org.web3d.x3d.jsail.ParticleSystems.ExplosionEmitterObject');<br>var Extrusion = java.import('org.web3d.x3d.jsail.Geometry3D.ExtrusionObject');<br>var FillProperties = java.import('org.web3d.x3d.jsail.Shape.FillPropertiesObject');<br>var FloatVertexAttribute = java.import('org.web3d.x3d.jsail.Shaders.FloatVertexAttributeObject');<br>var Fog = java.import('org.web3d.x3d.jsail.EnvironmentalEffects.FogObject');<br>var FogCoordinate = java.import('org.web3d.x3d.jsail.EnvironmentalEffects.FogCoordinateObject');<br>var FontStyle = java.import('org.web3d.x3d.jsail.Text.FontStyleObject');<br>var ForcePhysicsModel = java.import('org.web3d.x3d.jsail.ParticleSystems.ForcePhysicsModelObject');<br>var GeneratedCubeMapTexture = java.import('org.web3d.x3d.jsail.CubeMapTexturing.GeneratedCubeMapTextureObject');<br>var GeoCoordinate = java.import('org.web3d.x3d.jsail.Geospatial.GeoCoordinateObject');<br>var GeoElevationGrid = java.import('org.web3d.x3d.jsail.Geospatial.GeoElevationGridObject');<br>var GeoLocation = java.import('org.web3d.x3d.jsail.Geospatial.GeoLocationObject');<br>var GeoLOD = java.import('org.web3d.x3d.jsail.Geospatial.GeoLODObject');<br>var GeoMetadata = java.import('org.web3d.x3d.jsail.Geospatial.GeoMetadataObject');<br>var GeoOrigin = java.import('org.web3d.x3d.jsail.Geospatial.GeoOriginObject');<br>var GeoPositionInterpolator = java.import('org.web3d.x3d.jsail.Geospatial.GeoPositionInterpolatorObject');<br>var GeoProximitySensor = java.import('org.web3d.x3d.jsail.Geospatial.GeoProximitySensorObject');<br>var GeoTouchSensor = java.import('org.web3d.x3d.jsail.Geospatial.GeoTouchSensorObject');<br>var GeoTransform = java.import('org.web3d.x3d.jsail.Geospatial.GeoTransformObject');<br>var GeoViewpoint = java.import('org.web3d.x3d.jsail.Geospatial.GeoViewpointObject');<br>var Group = java.import('org.web3d.x3d.jsail.Grouping.GroupObject');<br>var HAnimDisplacer = java.import('org.web3d.x3d.jsail.HAnim.HAnimDisplacerObject');<br>var HAnimHumanoid = java.import('org.web3d.x3d.jsail.HAnim.HAnimHumanoidObject');<br>var HAnimJoint = java.import('org.web3d.x3d.jsail.HAnim.HAnimJointObject');<br>var HAnimSegment = java.import('org.web3d.x3d.jsail.HAnim.HAnimSegmentObject');<br>var HAnimSite = java.import('org.web3d.x3d.jsail.HAnim.HAnimSiteObject');<br>var ImageCubeMapTexture = java.import('org.web3d.x3d.jsail.CubeMapTexturing.ImageCubeMapTextureObject');<br>var ImageTexture = java.import('org.web3d.x3d.jsail.Texturing.ImageTextureObject');<br>var ImageTexture3D = java.import('org.web3d.x3d.jsail.Texturing3D.ImageTexture3DObject');<br>var IndexedFaceSet = java.import('org.web3d.x3d.jsail.Geometry3D.IndexedFaceSetObject');<br>var IndexedLineSet = java.import('org.web3d.x3d.jsail.Rendering.IndexedLineSetObject');<br>var IndexedQuadSet = java.import('org.web3d.x3d.jsail.CADGeometry.IndexedQuadSetObject');<br>var IndexedTriangleFanSet = java.import('org.web3d.x3d.jsail.Rendering.IndexedTriangleFanSetObject');<br>var IndexedTriangleSet = java.import('org.web3d.x3d.jsail.Rendering.IndexedTriangleSetObject');<br>var IndexedTriangleStripSet = java.import('org.web3d.x3d.jsail.Rendering.IndexedTriangleStripSetObject');<br>var Inline = java.import('org.web3d.x3d.jsail.Networking.InlineObject');<br>var IntegerSequencer = java.import('org.web3d.x3d.jsail.EventUtilities.IntegerSequencerObject');<br>var IntegerTrigger = java.import('org.web3d.x3d.jsail.EventUtilities.IntegerTriggerObject');<br>var IsoSurfaceVolumeData = java.import('org.web3d.x3d.jsail.VolumeRendering.IsoSurfaceVolumeDataObject');<br>var KeySensor = java.import('org.web3d.x3d.jsail.KeyDeviceSensor.KeySensorObject');<br>var Layer = java.import('org.web3d.x3d.jsail.Layering.LayerObject');<br>var LayerSet = java.import('org.web3d.x3d.jsail.Layering.LayerSetObject');<br>var Layout = java.import('org.web3d.x3d.jsail.Layout.LayoutObject');<br>var LayoutGroup = java.import('org.web3d.x3d.jsail.Layout.LayoutGroupObject');<br>var LayoutLayer = java.import('org.web3d.x3d.jsail.Layout.LayoutLayerObject');<br>var LinePickSensor = java.import('org.web3d.x3d.jsail.Picking.LinePickSensorObject');<br>var LineProperties = java.import('org.web3d.x3d.jsail.Shape.LinePropertiesObject');<br>var LineSet = java.import('org.web3d.x3d.jsail.Rendering.LineSetObject');<br>var LoadSensor = java.import('org.web3d.x3d.jsail.Networking.LoadSensorObject');<br>var LocalFog = java.import('org.web3d.x3d.jsail.EnvironmentalEffects.LocalFogObject');<br>var LOD = java.import('org.web3d.x3d.jsail.Navigation.LODObject');<br>var Material = java.import('org.web3d.x3d.jsail.Shape.MaterialObject');<br>var Matrix3VertexAttribute = java.import('org.web3d.x3d.jsail.Shaders.Matrix3VertexAttributeObject');<br>var Matrix4VertexAttribute = java.import('org.web3d.x3d.jsail.Shaders.Matrix4VertexAttributeObject');<br>var MetadataBoolean = java.import('org.web3d.x3d.jsail.Core.MetadataBooleanObject');<br>var MetadataDouble = java.import('org.web3d.x3d.jsail.Core.MetadataDoubleObject');<br>var MetadataFloat = java.import('org.web3d.x3d.jsail.Core.MetadataFloatObject');<br>var MetadataInteger = java.import('org.web3d.x3d.jsail.Core.MetadataIntegerObject');<br>var MetadataSet = java.import('org.web3d.x3d.jsail.Core.MetadataSetObject');<br>var MetadataString = java.import('org.web3d.x3d.jsail.Core.MetadataStringObject');<br>var MotorJoint = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.MotorJointObject');<br>var MovieTexture = java.import('org.web3d.x3d.jsail.Texturing.MovieTextureObject');<br>var MultiTexture = java.import('org.web3d.x3d.jsail.Texturing.MultiTextureObject');<br>var MultiTextureCoordinate = java.import('org.web3d.x3d.jsail.Texturing.MultiTextureCoordinateObject');<br>var MultiTextureTransform = java.import('org.web3d.x3d.jsail.Texturing.MultiTextureTransformObject');<br>var NavigationInfo = java.import('org.web3d.x3d.jsail.Navigation.NavigationInfoObject');<br>var Normal = java.import('org.web3d.x3d.jsail.Rendering.NormalObject');<br>var NormalInterpolator = java.import('org.web3d.x3d.jsail.Interpolation.NormalInterpolatorObject');<br>var NurbsCurve = java.import('org.web3d.x3d.jsail.NURBS.NurbsCurveObject');<br>var NurbsCurve2D = java.import('org.web3d.x3d.jsail.NURBS.NurbsCurve2DObject');<br>var NurbsOrientationInterpolator = java.import('org.web3d.x3d.jsail.NURBS.NurbsOrientationInterpolatorObject');<br>var NurbsPatchSurface = java.import('org.web3d.x3d.jsail.NURBS.NurbsPatchSurfaceObject');<br>var NurbsPositionInterpolator = java.import('org.web3d.x3d.jsail.NURBS.NurbsPositionInterpolatorObject');<br>var NurbsSet = java.import('org.web3d.x3d.jsail.NURBS.NurbsSetObject');<br>var NurbsSurfaceInterpolator = java.import('org.web3d.x3d.jsail.NURBS.NurbsSurfaceInterpolatorObject');<br>var NurbsSweptSurface = java.import('org.web3d.x3d.jsail.NURBS.NurbsSweptSurfaceObject');<br>var NurbsSwungSurface = java.import('org.web3d.x3d.jsail.NURBS.NurbsSwungSurfaceObject');<br>var NurbsTextureCoordinate = java.import('org.web3d.x3d.jsail.NURBS.NurbsTextureCoordinateObject');<br>var NurbsTrimmedSurface = java.import('org.web3d.x3d.jsail.NURBS.NurbsTrimmedSurfaceObject');<br>var OpacityMapVolumeStyle = java.import('org.web3d.x3d.jsail.VolumeRendering.OpacityMapVolumeStyleObject');<br>var OrientationChaser = java.import('org.web3d.x3d.jsail.Followers.OrientationChaserObject');<br>var OrientationDamper = java.import('org.web3d.x3d.jsail.Followers.OrientationDamperObject');<br>var OrientationInterpolator = java.import('org.web3d.x3d.jsail.Interpolation.OrientationInterpolatorObject');<br>var OrthoViewpoint = java.import('org.web3d.x3d.jsail.Navigation.OrthoViewpointObject');<br>var PackagedShader = java.import('org.web3d.x3d.jsail.Shaders.PackagedShaderObject');<br>var ParticleSystem = java.import('org.web3d.x3d.jsail.ParticleSystems.ParticleSystemObject');<br>var PickableGroup = java.import('org.web3d.x3d.jsail.Picking.PickableGroupObject');<br>var PixelTexture = java.import('org.web3d.x3d.jsail.Texturing.PixelTextureObject');<br>var PixelTexture3D = java.import('org.web3d.x3d.jsail.Texturing3D.PixelTexture3DObject');<br>var PlaneSensor = java.import('org.web3d.x3d.jsail.PointingDeviceSensor.PlaneSensorObject');<br>var PointEmitter = java.import('org.web3d.x3d.jsail.ParticleSystems.PointEmitterObject');<br>var PointLight = java.import('org.web3d.x3d.jsail.Lighting.PointLightObject');<br>var PointPickSensor = java.import('org.web3d.x3d.jsail.Picking.PointPickSensorObject');<br>var PointSet = java.import('org.web3d.x3d.jsail.Rendering.PointSetObject');<br>var Polyline2D = java.import('org.web3d.x3d.jsail.Geometry2D.Polyline2DObject');<br>var PolylineEmitter = java.import('org.web3d.x3d.jsail.ParticleSystems.PolylineEmitterObject');<br>var Polypoint2D = java.import('org.web3d.x3d.jsail.Geometry2D.Polypoint2DObject');<br>var PositionChaser = java.import('org.web3d.x3d.jsail.Followers.PositionChaserObject');<br>var PositionChaser2D = java.import('org.web3d.x3d.jsail.Followers.PositionChaser2DObject');<br>var PositionDamper = java.import('org.web3d.x3d.jsail.Followers.PositionDamperObject');<br>var PositionDamper2D = java.import('org.web3d.x3d.jsail.Followers.PositionDamper2DObject');<br>var PositionInterpolator = java.import('org.web3d.x3d.jsail.Interpolation.PositionInterpolatorObject');<br>var PositionInterpolator2D = java.import('org.web3d.x3d.jsail.Interpolation.PositionInterpolator2DObject');<br>var PrimitivePickSensor = java.import('org.web3d.x3d.jsail.Picking.PrimitivePickSensorObject');<br>var ProgramShader = java.import('org.web3d.x3d.jsail.Shaders.ProgramShaderObject');<br>var ProjectionVolumeStyle = java.import('org.web3d.x3d.jsail.VolumeRendering.ProjectionVolumeStyleObject');<br>var ProtoInstance = java.import('org.web3d.x3d.jsail.Core.ProtoInstanceObject');<br>var ProximitySensor = java.import('org.web3d.x3d.jsail.EnvironmentalSensor.ProximitySensorObject');<br>var QuadSet = java.import('org.web3d.x3d.jsail.CADGeometry.QuadSetObject');<br>var ReceiverPdu = java.import('org.web3d.x3d.jsail.DIS.ReceiverPduObject');<br>var Rectangle2D = java.import('org.web3d.x3d.jsail.Geometry2D.Rectangle2DObject');<br>var RigidBody = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.RigidBodyObject');<br>var RigidBodyCollection = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.RigidBodyCollectionObject');<br>var ScalarChaser = java.import('org.web3d.x3d.jsail.Followers.ScalarChaserObject');<br>var ScalarDamper = java.import('org.web3d.x3d.jsail.Followers.ScalarDamperObject');<br>var ScalarInterpolator = java.import('org.web3d.x3d.jsail.Interpolation.ScalarInterpolatorObject');<br>var ScreenFontStyle = java.import('org.web3d.x3d.jsail.Layout.ScreenFontStyleObject');<br>var ScreenGroup = java.import('org.web3d.x3d.jsail.Layout.ScreenGroupObject');<br>var Script = java.import('org.web3d.x3d.jsail.Scripting.ScriptObject');<br>var SegmentedVolumeData = java.import('org.web3d.x3d.jsail.VolumeRendering.SegmentedVolumeDataObject');<br>var ShadedVolumeStyle = java.import('org.web3d.x3d.jsail.VolumeRendering.ShadedVolumeStyleObject');<br>var ShaderPart = java.import('org.web3d.x3d.jsail.Shaders.ShaderPartObject');<br>var ShaderProgram = java.import('org.web3d.x3d.jsail.Shaders.ShaderProgramObject');<br>var Shape = java.import('org.web3d.x3d.jsail.Shape.ShapeObject');<br>var SignalPdu = java.import('org.web3d.x3d.jsail.DIS.SignalPduObject');<br>var SilhouetteEnhancementVolumeStyle = java.import('org.web3d.x3d.jsail.VolumeRendering.SilhouetteEnhancementVolumeStyleObject');<br>var SingleAxisHingeJoint = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.SingleAxisHingeJointObject');<br>var SliderJoint = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.SliderJointObject');<br>var Sound = java.import('org.web3d.x3d.jsail.Sound.SoundObject');<br>var Sphere = java.import('org.web3d.x3d.jsail.Geometry3D.SphereObject');<br>var SphereSensor = java.import('org.web3d.x3d.jsail.PointingDeviceSensor.SphereSensorObject');<br>var SplinePositionInterpolator = java.import('org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolatorObject');<br>var SplinePositionInterpolator2D = java.import('org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolator2DObject');<br>var SplineScalarInterpolator = java.import('org.web3d.x3d.jsail.Interpolation.SplineScalarInterpolatorObject');<br>var SpotLight = java.import('org.web3d.x3d.jsail.Lighting.SpotLightObject');<br>var SquadOrientationInterpolator = java.import('org.web3d.x3d.jsail.Interpolation.SquadOrientationInterpolatorObject');<br>var StaticGroup = java.import('org.web3d.x3d.jsail.Grouping.StaticGroupObject');<br>var StringSensor = java.import('org.web3d.x3d.jsail.KeyDeviceSensor.StringSensorObject');<br>var SurfaceEmitter = java.import('org.web3d.x3d.jsail.ParticleSystems.SurfaceEmitterObject');<br>var Switch = java.import('org.web3d.x3d.jsail.Grouping.SwitchObject');<br>var TexCoordChaser2D = java.import('org.web3d.x3d.jsail.Followers.TexCoordChaser2DObject');<br>var TexCoordDamper2D = java.import('org.web3d.x3d.jsail.Followers.TexCoordDamper2DObject');<br>var Text = java.import('org.web3d.x3d.jsail.Text.TextObject');<br>var TextureBackground = java.import('org.web3d.x3d.jsail.EnvironmentalEffects.TextureBackgroundObject');<br>var TextureCoordinate = java.import('org.web3d.x3d.jsail.Texturing.TextureCoordinateObject');<br>var TextureCoordinate3D = java.import('org.web3d.x3d.jsail.Texturing3D.TextureCoordinate3DObject');<br>var TextureCoordinate4D = java.import('org.web3d.x3d.jsail.Texturing3D.TextureCoordinate4DObject');<br>var TextureCoordinateGenerator = java.import('org.web3d.x3d.jsail.Texturing.TextureCoordinateGeneratorObject');<br>var TextureProperties = java.import('org.web3d.x3d.jsail.Texturing.TexturePropertiesObject');<br>var TextureTransform = java.import('org.web3d.x3d.jsail.Texturing.TextureTransformObject');<br>var TextureTransform3D = java.import('org.web3d.x3d.jsail.Texturing3D.TextureTransform3DObject');<br>var TextureTransformMatrix3D = java.import('org.web3d.x3d.jsail.Texturing3D.TextureTransformMatrix3DObject');<br>var TimeSensor = java.import('org.web3d.x3d.jsail.Time.TimeSensorObject');<br>var TimeTrigger = java.import('org.web3d.x3d.jsail.EventUtilities.TimeTriggerObject');<br>var ToneMappedVolumeStyle = java.import('org.web3d.x3d.jsail.VolumeRendering.ToneMappedVolumeStyleObject');<br>var TouchSensor = java.import('org.web3d.x3d.jsail.PointingDeviceSensor.TouchSensorObject');<br>var Transform = java.import('org.web3d.x3d.jsail.Grouping.TransformObject');<br>var TransformSensor = java.import('org.web3d.x3d.jsail.EnvironmentalSensor.TransformSensorObject');<br>var TransmitterPdu = java.import('org.web3d.x3d.jsail.DIS.TransmitterPduObject');<br>var TriangleFanSet = java.import('org.web3d.x3d.jsail.Rendering.TriangleFanSetObject');<br>var TriangleSet = java.import('org.web3d.x3d.jsail.Rendering.TriangleSetObject');<br>var TriangleSet2D = java.import('org.web3d.x3d.jsail.Geometry2D.TriangleSet2DObject');<br>var TriangleStripSet = java.import('org.web3d.x3d.jsail.Rendering.TriangleStripSetObject');<br>var TwoSidedMaterial = java.import('org.web3d.x3d.jsail.Shape.TwoSidedMaterialObject');<br>var UniversalJoint = java.import('org.web3d.x3d.jsail.RigidBodyPhysics.UniversalJointObject');<br>var Viewpoint = java.import('org.web3d.x3d.jsail.Navigation.ViewpointObject');<br>var ViewpointGroup = java.import('org.web3d.x3d.jsail.Navigation.ViewpointGroupObject');<br>var Viewport = java.import('org.web3d.x3d.jsail.Layering.ViewportObject');<br>var VisibilitySensor = java.import('org.web3d.x3d.jsail.EnvironmentalSensor.VisibilitySensorObject');<br>var VolumeData = java.import('org.web3d.x3d.jsail.VolumeRendering.VolumeDataObject');<br>var VolumeEmitter = java.import('org.web3d.x3d.jsail.ParticleSystems.VolumeEmitterObject');<br>var VolumePickSensor = java.import('org.web3d.x3d.jsail.Picking.VolumePickSensorObject');<br>var WindPhysicsModel = java.import('org.web3d.x3d.jsail.ParticleSystems.WindPhysicsModelObject');<br>var WorldInfo = java.import('org.web3d.x3d.jsail.Core.WorldInfoObject');<br>var component = java.import('org.web3d.x3d.jsail.Core.componentObject');<br>var connect = java.import('org.web3d.x3d.jsail.Core.connectObject');<br>var EXPORT = java.import('org.web3d.x3d.jsail.Networking.EXPORTObject');<br>var ExternProtoDeclare = java.import('org.web3d.x3d.jsail.Core.ExternProtoDeclareObject');<br>var field = java.import('org.web3d.x3d.jsail.Core.fieldObject');<br>var fieldValue = java.import('org.web3d.x3d.jsail.Core.fieldValueObject');<br>var head = java.import('org.web3d.x3d.jsail.Core.headObject');<br>var IMPORT = java.import('org.web3d.x3d.jsail.Networking.IMPORTObject');<br>var IS = java.import('org.web3d.x3d.jsail.Core.ISObject');<br>var meta = java.import('org.web3d.x3d.jsail.Core.metaObject');<br>var ProtoBody = java.import('org.web3d.x3d.jsail.Core.ProtoBodyObject');<br>var ProtoDeclare = java.import('org.web3d.x3d.jsail.Core.ProtoDeclareObject');<br>var ProtoInterface = java.import('org.web3d.x3d.jsail.Core.ProtoInterfaceObject');<br>var ROUTE = java.import('org.web3d.x3d.jsail.Core.ROUTEObject');<br>var Scene = java.import('org.web3d.x3d.jsail.Core.SceneObject');<br>var unit = java.import('org.web3d.x3d.jsail.Core.unitObject');<br>var X3D = java.import('org.web3d.x3d.jsail.Core.X3DObject');<br>var SFBool = java.import('org.web3d.x3d.jsail.fields.SFBoolObject');<br>var MFBool = java.import('org.web3d.x3d.jsail.fields.MFBoolObject');<br>var SFColor = java.import('org.web3d.x3d.jsail.fields.SFColorObject');<br>var MFColor = java.import('org.web3d.x3d.jsail.fields.MFColorObject');<br>var SFColorRGBA = java.import('org.web3d.x3d.jsail.fields.SFColorRGBAObject');<br>var MFColorRGBA = java.import('org.web3d.x3d.jsail.fields.MFColorRGBAObject');<br>var SFDouble = java.import('org.web3d.x3d.jsail.fields.SFDoubleObject');<br>var MFDouble = java.import('org.web3d.x3d.jsail.fields.MFDoubleObject');<br>var SFFloat = java.import('org.web3d.x3d.jsail.fields.SFFloatObject');<br>var MFFloat = java.import('org.web3d.x3d.jsail.fields.MFFloatObject');<br>var SFImage = java.import('org.web3d.x3d.jsail.fields.SFImageObject');<br>var MFImage = java.import('org.web3d.x3d.jsail.fields.MFImageObject');<br>var SFInt32 = java.import('org.web3d.x3d.jsail.fields.SFInt32Object');<br>var MFInt32 = java.import('org.web3d.x3d.jsail.fields.MFInt32Object');<br>var SFMatrix3d = java.import('org.web3d.x3d.jsail.fields.SFMatrix3dObject');<br>var MFMatrix3d = java.import('org.web3d.x3d.jsail.fields.MFMatrix3dObject');<br>var SFMatrix3f = java.import('org.web3d.x3d.jsail.fields.SFMatrix3fObject');<br>var MFMatrix3f = java.import('org.web3d.x3d.jsail.fields.MFMatrix3fObject');<br>var SFMatrix4d = java.import('org.web3d.x3d.jsail.fields.SFMatrix4dObject');<br>var MFMatrix4d = java.import('org.web3d.x3d.jsail.fields.MFMatrix4dObject');<br>var SFMatrix4f = java.import('org.web3d.x3d.jsail.fields.SFMatrix4fObject');<br>var MFMatrix4f = java.import('org.web3d.x3d.jsail.fields.MFMatrix4fObject');<br>var SFString = java.import('org.web3d.x3d.jsail.fields.SFStringObject');<br>var SFRotation = java.import('org.web3d.x3d.jsail.fields.SFRotationObject');<br>var MFRotation = java.import('org.web3d.x3d.jsail.fields.MFRotationObject');<br>var MFString = java.import('org.web3d.x3d.jsail.fields.MFStringObject');<br>var SFTime = java.import('org.web3d.x3d.jsail.fields.SFTimeObject');<br>var MFTime = java.import('org.web3d.x3d.jsail.fields.MFTimeObject');<br>var SFVec2d = java.import('org.web3d.x3d.jsail.fields.SFVec2dObject');<br>var MFVec2d = java.import('org.web3d.x3d.jsail.fields.MFVec2dObject');<br>var SFVec2f = java.import('org.web3d.x3d.jsail.fields.SFVec2fObject');<br>var MFVec2f = java.import('org.web3d.x3d.jsail.fields.MFVec2fObject');<br>var SFVec3d = java.import('org.web3d.x3d.jsail.fields.SFVec3dObject');<br>var MFVec3d = java.import('org.web3d.x3d.jsail.fields.MFVec3dObject');<br>var SFVec3f = java.import('org.web3d.x3d.jsail.fields.SFVec3fObject');<br>var MFVec3f = java.import('org.web3d.x3d.jsail.fields.MFVec3fObject');<br>var SFVec4d = java.import('org.web3d.x3d.jsail.fields.SFVec4dObject');<br>var MFVec4d = java.import('org.web3d.x3d.jsail.fields.MFVec4dObject');<br>var SFVec4f = java.import('org.web3d.x3d.jsail.fields.SFVec4fObject');<br>var MFVec4f = java.import('org.web3d.x3d.jsail.fields.MFVec4fObject');<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Apr 10, 2020 at 10:03 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I discovered a way forward: <a href="https://github.com/joeferner/node-java#import" target="_blank">https://github.com/joeferner/node-java#import</a> Makes a Java class work like a JavaScript class, in my reading.  I will proceed to write a nodejs file which creates all the classes, if we are in agreement that this is a nodejs-only solution and we want it. node-java is the npm java I was talking about.  This will primarily make an X3DJSAIL derivative, and will not be native JavaScript. I am not really into generating a bunch of untested code at this point, and it seems like X3DJSAIL is becoming a crown jewel again.  I do think that something like PhantomJS is better for testing webapps rather than creating a nodejs app to do it. I still test my webapps by hand unfortunately!<br><div><br></div><div>However, I think we may have discussed this solution some time back, and it may be worth reviewing the email.</div><div><br></div><div>It does tie us to an external source code out of our control, but is that any different netbeans?</div><div><br></div><div>Will we run into the same problems as PyJNIus?</div><div><br></div><div>It seems like we could create some test cases pretty quickly, that is, use the same ones that cause PyJNIus to fail.</div><div><br>I'm not sure when I'll get to this.</div><div><br></div><div>Note that this will likely NOT be like the SAI reference implementation for ECMAScript.</div><div>This will be a Java derivative that builds on previous work.<br></div><div><br></div><div>I welcome people who want to help with the JSweet solution, but that won't be SAI either.</div><div><br></div><div>Perhaps we should have server-side SAI and client-side SAI?</div><div><br></div><div>John</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Apr 10, 2020 at 7:46 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">So here's a description of my Java<->node.js bridge for RunSaxon.java.<div><br></div><div>I have a file, runAndSend.js that imports another javascript file, allsaxon.js</div><div><br></div><div>runAndSend.js has the following code:</div><div>-----------------------------------------------------</div><div>var runsaxon = require('./allsaxon');<br>var config = require('./config');<br>var fs = require("fs");<br><br>function runAndSend(args, callback) {<br>        runsaxon(args);<br></div><div>----------------------------------------------------</div><div>allsaxon.js looks like this:</div><div>----------------------------------------------------</div><div>var java = require("java");<br>java.options.push("-Djava.awt.headless=true");<br>java.options.push("-Xmx1000m");<br>//java.options.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005');<br>java.classpath.push("saxon9he.jar");<br>java.classpath.push("../saxon9he.jar");<br>java.classpath.push("../../saxon9he.jar");<br>java.classpath.push("../../../saxon9he.jar");<br><br>java.classpath.push("target/classes");<br>java.classpath.push("../target/classes");<br>java.classpath.push("../../target/classes");<br>java.classpath.push("../../../target/classes");<br><br>java.classpath.push("target/X3DJSONLD-1.0-SNAPSHOT.jar");<br>java.classpath.push("../target/X3DJSONLD-1.0-SNAPSHOT.jar");<br>java.classpath.push("../../target/X3DJSONLD-1.0-SNAPSHOT.jar");<br>java.classpath.push("../../../target/X3DJSONLD-1.0-SNAPSHOT.jar");<br><br>function translate(infiles) {<br>        java.callStaticMethodSync("net.coderextreme.RunSaxon", "main", infiles);<br>}<br><br>if (typeof module === 'object')  {<br>        module.exports = translate;<br>}<br></div><div>---------------------------------------------------------------------------------------------------------</div><div>I have forgotten if there are class level interfaces to the underlying Java code, as we had in PyJNIus.   That would require research. We may run into the same issues as PyJNIus.</div><div><br></div><div>In any cases, it would require mirroring the entire X3DJSAIL package, so it would be best if we probably wrote a stylesheet that put out this binding JavaScript code, whatever that may be.</div><div><br></div><div>Here is the repository for npm (or node) java:</div><div><br></div><div><a href="https://github.com/joeferner/node-java#javaNewInstance" target="_blank">https://github.com/joeferner/node-java</a></div><div><br></div><div>It seems to me that we need some python or xslt code to read the X3DUOM and produce the glue code. Possibly only at the class level, but more likely at the method and instance level, not sure.  That requires more research.  I suggest someone take the Transform specification and convert it to the necessary glue code.  For me, I don't "need" this glue code as I am happy with Nashorn presently.  So it would probably be best to apply some $$ to make me need this glue code.  That is, I am pretty much happy with a Java/Nashorn server-side and JavaScript client-side solution.  I don't really need a JavaScript server-side solution.</div><div><br></div><div>So who exactly needs a JavaScript server solution, and why aren't they speaking up?</div><div><br></div><div>Thanks,</div><div><br></div><div>John</div><div> <br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Apr 10, 2020 at 7:24 PM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Mar 24, 2020 at 8:20 AM Don Brutzman wrote:</div><div dir="ltr" class="gmail_attr"><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Authoring use-case environments are<br>
1. Script inside X3D scene graph,<br>
2. Script in outer HTML5 web page,<br>
3. Standalone programmatic use in node.js<br>
<br>
Now get specific.<br></blockquote><div><br></div><div>Not yet.   We need to discuss the environments.   X_ITE does inside X3D, and with the addition of X_ITE_DOM, in outer HTML5. X3DOM does outer HTML5. X3DJSAIL is a standalone library.</div><div><br></div><div>So what we really need is a standalone EAI for node.js without rendering except to an encoding.  Can we turn either X3DJSAIL, X_ITE or X3DOM into such an environment?  I provided a solution for Nashorn on top of X3DJSAIL, but not a solution for node.js. Have we had any take up on the Nashorn solution, enough to warrant a node.js solution?</div><div><br></div><div>So I would recommend that before researching all the various Transforms, that we just try to develop a single Transform.js class for node.js, with an encoding rendering.  It will be throwaway code, just a proof of concept.</div><div><br></div><div>Suggestions for next steps are welcome, and I will review Don's email again and see what he said.</div><div><br></div><div>For node.js, I believe there are packages that emulate the browser enviroment, i think that jsdom (?) and xmldom are two popular ones, so we can look at turning node.js into a headless browser.   There are also ways to run browsers in headless mode, PhantomJs comes to mind, but I haven't researched this extensively.</div><div><br></div><div>There are environments for running Java and node.js together, as I demonstrated with RunSaxon.java in X3DJSONLD.  My approach for that was simplistic, and won't really work for a multiclass approach.  There is also the java npm package that may lead towards a solution.</div><div><br></div><div>So a possible path forward is generating the glue code between node.js and Java, similar to what we did for PyJNIus.</div><div><br></div><div>I suggest that we do a very simple single class solution, not unlike the RunSaxon.java solution. This required various node.js files.   I think the new solution will be more complex to deal with the npm java peculiarities.</div><div><br></div><div>So this is throwaway code for now, just a single class.</div><div><br></div><div>Note that I have been stripping RunSaxon code out of my code, since I have a XML to JSON solution.</div><div><br></div><div>What do you think?</div><div><br></div><div>John</div><div><br></div></div></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</div></div></div>