<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>Here’s an untested stylesheet with the diffs which you can test with my Java code which I just sent.  I will have to do a build and retest my code.  Will do.  I cannot test against your code because your code does not produce output.  You will have to test.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><br>Here are the diffs between the stylesheets as well:</p><p class=MsoNormal><o:p> </o:p></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">Don Brutzman</a><br><b>Sent: </b>Tuesday, May 23, 2017 8:14 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: X3DJSAIL: Interesting exception, but it could be myfault.Re:CommentsBlock.</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>On 5/22/2017 10:47 PM, John Carlson wrote:</p><p class=MsoNormal>> For example, Look at the MFStringObjects in this file.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>online via</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>http://www.web3d.org/x3d/content/examples/Basic/X3dSpecifications/X3dHeaderPrototypeSyntaxExamplesIndex.html</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>==============================</p><p class=MsoNormal>.x3d</p><p class=MsoNormal>         <Text string='"He said, \"Immel did it!\""'/></p><p class=MsoNormal>         <!-- alternative: Text string='"He said, \&quot;Immel did it!\&quot;"' --></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>.java</p><p class=MsoNormal>         .setGeometry(new TextObject().setString(new MFStringObject("\"He said, \\\"Immel did it!\\\"\"")))</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>         .addComments(" alternative: Text string='\"He said, \\&quot;Immel did it!\\&quot;\"' ")</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>==============================</p><p class=MsoNormal>.json</p><p class=MsoNormal>"-children":[</p><p class=MsoNormal>   {</p><p class=MsoNormal>                "#comment":"note that Collision proxy Shape is not rendered"</p><p class=MsoNormal>   },</p><p class=MsoNormal>   {</p><p class=MsoNormal>                "#comment":"alternative: Text string='\"He said, \\&quot;Immel did it!\\&quot;\"'"</p><p class=MsoNormal>   }</p><p class=MsoNormal>],</p><p class=MsoNormal>"-geometry":</p><p class=MsoNormal>   { "Text":</p><p class=MsoNormal>                {</p><p class=MsoNormal>                  "@string":["He said, \"Immel did it!\""]</p><p class=MsoNormal>                }</p><p class=MsoNormal>   },</p><p class=MsoNormal>==============================</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> First off, they aren’t arrays.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>For the Java, there are multiple ways to create an MFString using X3DJSAIL.  Your preference may vary.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Text/TextObject.html#method.summary</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>TextObject has multiple setters for the Text @string field:</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                setString(java.util.ArrayList<java.lang.String> newValue)</p><p class=MsoNormal>  </p><p class=MsoNormal>                setString(MFStringObject newValue)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                setString(SFStringObject newValue)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                TextObject          setString(java.lang.String newValue)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>                TextObject          setString(java.lang.String[] newValue)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Further there are mutliple ways to create an SFStringObject and MFStringObject; 4 constructors and 6 setValue methods each.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/SFStringObject.html</p><p class=MsoNormal>http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/MFStringObject.html</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This flexibility makes it easy for java programmers to use whichever data structure they prefer, seldom needing to do their own data conversion (which can be error prone), with strong typing for unambiguous results.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> Secondly, they have a awful lot of \’s</p><p class=MsoNormal>> </p><p class=MsoNormal>> John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>XML .x3d: must escape quote as \"</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>.java:     must escape backslash as \\ and quote as \" which results in \\\"</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>.json:     must escape quote as " as \" or \&quot;</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>note that comments are a little different because they are not SF/MFStrings but just text.  So " does not require extra backslash character(s).</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I think it is just fine if you are producing X3D -> .java that is a little different, as long as we get correct/consistent results.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10</p><p class=MsoNormal>> </p><p class=MsoNormal>> *From: *John Carlson <mailto:yottzumm@gmail.com></p><p class=MsoNormal>> *Sent: *Tuesday, May 23, 2017 12:56 AM</p><p class=MsoNormal>> *To: *Don Brutzman <mailto:brutzman@nps.edu></p><p class=MsoNormal>> *Cc: *X3D Graphics public mailing list <mailto:x3d-public@web3d.org></p><p class=MsoNormal>> *Subject: *RE: X3DJSAIL: Interesting exception, but it could be my fault.Re:CommentsBlock.</p><p class=MsoNormal>> </p><p class=MsoNormal>> Don, be sure the quotes, escapes etc in the Java generated from these files is what we want.  Also test all the way through X3DJSAIL and compare X3D output to X3D input.</p><p class=MsoNormal>> </p><p class=MsoNormal>> </p><p class=MsoNormal>> I gotta get something to eat.</p><p class=MsoNormal>> </p><p class=MsoNormal>> Thanks,</p><p class=MsoNormal>> </p><p class=MsoNormal>> John</p><p class=MsoNormal>> </p><p class=MsoNormal>> Attached.</p><p class=MsoNormal>> </p><p class=MsoNormal>> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10</p><p class=MsoNormal>> </p><p class=MsoNormal>> *From: *Don Brutzman <mailto:brutzman@nps.edu></p><p class=MsoNormal>> *Sent: *Monday, May 22, 2017 11:47 PM</p><p class=MsoNormal>> *To: *John Carlson <mailto:yottzumm@gmail.com></p><p class=MsoNormal>> *Cc: *X3D Graphics public mailing list <mailto:x3d-public@web3d.org></p><p class=MsoNormal>> *Subject: *Re: X3DJSAIL: Interesting exception, but it could be my fault. Re:CommentsBlock.</p><p class=MsoNormal>> </p><p class=MsoNormal>> On 5/21/2017 2:01 AM, Don Brutzman wrote:</p><p class=MsoNormal>> </p><p class=MsoNormal>>  > these are fixed but there is still a gap in the chain when nested protoypes occur.  not a CommentsBlock problem.</p><p class=MsoNormal>> </p><p class=MsoNormal>> Those issues are now fixed.  Build report:  improved handling of ProtoInstance getNodeByDEF, getFieldType, getAccessType plus additional utility methods.</p><p class=MsoNormal>> </p><p class=MsoNormal>> =================================================================================================================</p><p class=MsoNormal>> </p><p class=MsoNormal>> ProtoInstance utility methods</p><p class=MsoNormal>> </p><p class=MsoNormal>> http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/ProtoInstanceObject.html#method.summary</p><p class=MsoNormal>> </p><p class=MsoNormal>> hasExternProtoDeclare()</p><p class=MsoNormal>> </p><p class=MsoNormal>> Determine whether a corresponding ExternProtoDeclare with same name is connected in this scene graph.</p><p class=MsoNormal>> </p><p class=MsoNormal>> hasProtoDeclare()</p><p class=MsoNormal>> </p><p class=MsoNormal>> Determine whether a corresponding ProtoDeclare with same name is connected in this scene graph.</p><p class=MsoNormal>> </p><p class=MsoNormal>> getExternProtoDeclare()</p><p class=MsoNormal>> </p><p class=MsoNormal>> Provide corresponding ExternProtoDeclare with same name if connected in this scene graph.</p><p class=MsoNormal>> </p><p class=MsoNormal>> getProtoDeclare()</p><p class=MsoNormal>> </p><p class=MsoNormal>> Provide corresponding ProtoDeclare with same name if connected in this scene graph.</p><p class=MsoNormal>> </p><p class=MsoNormal>> =================================================================================================================</p><p class=MsoNormal>> </p><p class=MsoNormal>> As a result, test shows support is included for nested ProtoInstance nodes.  Example attached, updated X3DJSAIL deployed.</p><p class=MsoNormal>> </p><p class=MsoNormal>> These corrections fix some "false negative" warnings on ROUTEs in the archives.  I'll rerun all Java examples tonight to clean them up.</p><p class=MsoNormal>> </p><p class=MsoNormal>>  > On 5/20/2017 7:02 PM, John Carlson wrote:</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >> Have not triaged.  Code is attached.  And so is XML</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >> org.web3d.x3d.sai.InvalidProtoException: ExternProtoDeclare name='CameraShot' with field name='moves' cannot have any initial value (found "[org.web3d.x3d.jsail.Core.CommentsBlock@5cb0d902]"). Instead use ProtoInstance fieldValue to override the original default ProtoDeclare field value.</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >> org.web3d.x3d.sai.InvalidProtoException: ExternProtoDeclare name='CameraShot' with field name='moves' cannot have any initial value (found "[org.web3d.x3d.jsail.Core.CommentsBlock@5cb0d902]"). Instead use ProtoInstance fieldValue to override the original default ProtoDeclare field value.</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>          at org.web3d.x3d.jsail.Core.ExternProtoDeclareObject.setFieldList(ExternProtoDeclareObject.java:331)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>          at org.web3d.x3d.jsail.Core.ExternProtoDeclareObject.validate(ExternProtoDeclareObject.java:842)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>          at org.web3d.x3d.jsail.Core.SceneObject.validate(SceneObject.java:626)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>          at org.web3d.x3d.jsail.Core.X3DObject.validate(X3DObject.java:1880)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>          at org.web3d.x3d.jsail.Core.X3DObject.toFileJSON(X3DObject.java:750)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>          at net.coderextreme.data.CameraExamples.main(CameraExamples.java:80)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >> Exception in thread "main" org.web3d.x3d.sai.InvalidProtoException: ExternProtoDeclare name='CameraShot' with field name='moves' cannot have any initial value (found "[org.web3d.x3d.jsail.Core.CommentsBlock@5cb0d902]"). Instead use ProtoInstance fieldValue to override the original default ProtoDeclare field value.</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>          at org.web3d.x3d.jsail.Core.ExternProtoDeclareObject.setFieldList(ExternProtoDeclareObject.java:331)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>          at org.web3d.x3d.jsail.Core.ExternProtoDeclareObject.validate(ExternProtoDeclareObject.java:842)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>          at org.web3d.x3d.jsail.Core.SceneObject.validate(SceneObject.java:626)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>         at org.web3d.x3d.jsail.Core.X3DObject.validate(X3DObject.java:1880)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>          at org.web3d.x3d.jsail.Core.X3DObject.toFileJSON(X3DObject.java:750)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  >>          at net.coderextreme.data.CameraExamples.main(CameraExamples.java:80)</p><p class=MsoNormal>> </p><p class=MsoNormal>>  >></p><p class=MsoNormal>> </p><p class=MsoNormal>>  ></p><p class=MsoNormal>> </p><p class=MsoNormal>>  ></p><p class=MsoNormal>> </p><p class=MsoNormal>>  > all the best, Don</p><p class=MsoNormal>> </p><p class=MsoNormal>> all the best, Don</p><p class=MsoNormal>> </p><p class=MsoNormal>> -- </p><p class=MsoNormal>> </p><p class=MsoNormal>> Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman@nps.edu</p><p class=MsoNormal>> </p><p class=MsoNormal>> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149</p><p class=MsoNormal>> </p><p class=MsoNormal>> X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman</p><p class=MsoNormal>> </p><p class=MsoNormal><o:p> </o:p></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>