<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Here are the files that are affected:</p>
    <p>~/X3DJSONLD/src/main/data$ grep ComposedCubeMapTexture *x3d|grep
      -v new<br>
      ball.x3d:                <ComposedCubeMapTexture
      DEF="texture"><br>
      ball.x3d:                </ComposedCubeMapTexture><br>
      ball.x3d:                       <ComposedCubeMapTexture
      USE="texture"></ComposedCubeMapTexture><br>
      ball.x3d:                       <ComposedCubeMapTexture
      USE="texture"></ComposedCubeMapTexture><br>
      ball.x3d:                       <ComposedCubeMapTexture
      USE="texture"></ComposedCubeMapTexture><br>
      ball.x3d:                       <ComposedCubeMapTexture
      USE="texture"></ComposedCubeMapTexture><br>
      bubbles.x3d:                <ComposedCubeMapTexture
      containerField='texture'><br>
      bubbles.x3d:                </ComposedCubeMapTexture><br>
      bub.x3d:                                       
      <ComposedCubeMapTexture DEF="texture"><br>
      bub.x3d:                                       
      </ComposedCubeMapTexture><br>
      bub.x3d:                                   
      <ComposedCubeMapTexture USE="texture"/><br>
      flowerproto.x3d:                           
      <ComposedCubeMapTexture DEF="texture"><br>
      flowerproto.x3d:                           
      </ComposedCubeMapTexture><br>
      flowerproto.x3d:                         
      <ComposedCubeMapTexture USE="texture"/><br>
      flowers4.x3d:                    <ComposedCubeMapTexture><br>
      flowers4.x3d:                    </ComposedCubeMapTexture><br>
      flowers7.x3d:                <ComposedCubeMapTexture
      DEF="texture"><br>
      flowers7.x3d:                </ComposedCubeMapTexture><br>
      flowers7.x3d:                     <ComposedCubeMapTexture
      USE="texture"/><br>
      flowers7.x3d:                     <ComposedCubeMapTexture
      USE="texture"/><br>
      flowers.x3d:                            <ComposedCubeMapTexture
      DEF="texture"><br>
      flowers.x3d:                           
      </ComposedCubeMapTexture><br>
      flowers.x3d:                      <ComposedCubeMapTexture
      USE="texture"/><br>
      flowers.x3d:                      <ComposedCubeMapTexture
      USE="texture"/><br>
      geo.x3d:                    <ComposedCubeMapTexture
      DEF='texture'><br>
      geo.x3d:                    </ComposedCubeMapTexture><br>
      geo.x3d:                                <ComposedCubeMapTexture
      USE="texture"></ComposedCubeMapTexture><br>
      geo.x3d:                                <ComposedCubeMapTexture
      USE="texture"></ComposedCubeMapTexture><br>
      mirror2.x3d:                <ComposedCubeMapTexture><br>
      mirror2.x3d:                </ComposedCubeMapTexture><br>
      mirror.x3d:                <ComposedCubeMapTexture><br>
      mirror.x3d:                </ComposedCubeMapTexture><br>
      <br>
    </p>
    <div class="moz-cite-prefix">On 6/1/21 11:41 PM, John Carlson wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:f3abb040-67d9-98df-6eb4-6a9b616f5eb6@gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <p>So let's look at some of the products of X3DJSAIL and X3DJSONLD
        (either through Java or Node.js).  I backed out my change in the
        XML back to 3.3 <br>
      </p>
      <p><br>
      </p>
      <p>~/X3DJSONLD/src/main/data$ egrep ImageTexture ball.x3d
        ball.x3d.new ball.newPrettyPrint.intermediate.x3d ball.new.x3d <br>
      </p>
      <p>[ this is the original XML file.   See the 6 different
        containerFields ]<br>
      </p>
      <p>ball.x3d:                       <ImageTexture
        url='"../resources/images/all_probes/stpeters_cross/stpeters_back.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"</a>'
        containerField="backTexture"/><br>
        ball.x3d:                       <ImageTexture
        url='"../resources/images/all_probes/stpeters_cross/stpeters_bottom.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"</a>'
        containerField="bottomTexture"/><br>
        ball.x3d:                       <ImageTexture
        url='"../resources/images/all_probes/stpeters_cross/stpeters_front.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"</a>'
        containerField="frontTexture"/><br>
        ball.x3d:                       <ImageTexture
        url='"../resources/images/all_probes/stpeters_cross/stpeters_left.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"</a>'
        containerField="leftTexture"/><br>
        ball.x3d:                       <ImageTexture
        url='"../resources/images/all_probes/stpeters_cross/stpeters_right.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"</a>'
        containerField="rightTexture"/><br>
        ball.x3d:                       <ImageTexture
        url='"../resources/images/all_probes/stpeters_cross/stpeters_top.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"</a>'
        containerField="topTexture"/></p>
      <p><br>
      </p>
      <p><br>
      </p>
      <p>[ this is the XML after the JSON goes through X3DJSONLD.js. 
        Notice that containerField names are preserved. ]<br>
      </p>
      <p><br>
      </p>
      <p>ball.x3d.new:<ComposedCubeMapTexture
        containerField="texture" DEF="texture"><ImageTexture
        containerField="backTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_back.png&quot;
        &quot;<a class="moz-txt-link-freetext"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png&quot"
          moz-do-not-send="true">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png&quot</a>;"></ImageTexture><br>
        ball.x3d.new:<ImageTexture containerField="bottomTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_bottom.png&quot;
        &quot;<a class="moz-txt-link-freetext"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png&quot"
          moz-do-not-send="true">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png&quot</a>;"></ImageTexture><br>
        ball.x3d.new:<ImageTexture containerField="frontTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_front.png&quot;
        &quot;<a class="moz-txt-link-freetext"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png&quot"
          moz-do-not-send="true">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png&quot</a>;"></ImageTexture><br>
        ball.x3d.new:<ImageTexture containerField="leftTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_left.png&quot;
        &quot;<a class="moz-txt-link-freetext"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png&quot"
          moz-do-not-send="true">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png&quot</a>;"></ImageTexture><br>
        ball.x3d.new:<ImageTexture containerField="rightTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_right.png&quot;
        &quot;<a class="moz-txt-link-freetext"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png&quot"
          moz-do-not-send="true">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png&quot</a>;"></ImageTexture><br>
        ball.x3d.new:<ImageTexture containerField="topTexture"
url="&quot;../resources/images/all_probes/stpeters_cross/stpeters_top.png&quot;
        &quot;<a class="moz-txt-link-freetext"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png&quot"
          moz-do-not-send="true">https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png&quot</a>;"></ImageTexture></p>
      <p><br>
      </p>
      <p>[ this is the intermediate output from X3DJSAIL Note a single
        containerField.  ]<br>
      </p>
      <p>ball.newPrettyPrint.intermediate.x3d:           
        <ImageTexture containerField='back'
        url='"../resources/images/all_probes/stpeters_cross/stpeters_back.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"</a>'/><br>
        ball.newPrettyPrint.intermediate.x3d:           
        <ImageTexture containerField='back'
        url='"../resources/images/all_probes/stpeters_cross/stpeters_bottom.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"</a>'/><br>
        ball.newPrettyPrint.intermediate.x3d:           
        <ImageTexture containerField='back'
        url='"../resources/images/all_probes/stpeters_cross/stpeters_front.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"</a>'/><br>
        ball.newPrettyPrint.intermediate.x3d:           
        <ImageTexture containerField='back'
        url='"../resources/images/all_probes/stpeters_cross/stpeters_left.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"</a>'/><br>
        ball.newPrettyPrint.intermediate.x3d:           
        <ImageTexture containerField='back'
        url='"../resources/images/all_probes/stpeters_cross/stpeters_right.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"</a>'/><br>
        ball.newPrettyPrint.intermediate.x3d:           
        <ImageTexture containerField='back'
        url='"../resources/images/all_probes/stpeters_cross/stpeters_top.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"</a>'/></p>
      <p><br>
      </p>
      <p>[ This is the output from Node.js/X3DJSAIL, I believe.  Note
        that the containerField's echo the above intermediate form. ]<br>
      </p>
      <p>ball.new.x3d:            <ImageTexture containerField='back'
url='"../resources/images/all_probes/stpeters_cross/stpeters_back.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"</a>'/><br>
        ball.new.x3d:            <ImageTexture containerField='back'
url='"../resources/images/all_probes/stpeters_cross/stpeters_bottom.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"</a>'/><br>
        ball.new.x3d:            <ImageTexture containerField='back'
url='"../resources/images/all_probes/stpeters_cross/stpeters_front.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"</a>'/><br>
        ball.new.x3d:            <ImageTexture containerField='back'
url='"../resources/images/all_probes/stpeters_cross/stpeters_left.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"</a>'/><br>
        ball.new.x3d:            <ImageTexture containerField='back'
url='"../resources/images/all_probes/stpeters_cross/stpeters_right.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"</a>'/><br>
        ball.new.x3d:            <ImageTexture containerField='back'
url='"../resources/images/all_probes/stpeters_cross/stpeters_top.png"
        <a class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"</a>'/></p>
      <p><br>
      </p>
      <p>Note that if I call "setFront()" or "setFrontTexture()" I
        expect the containerField to be set.   So I wrote Java like
        this:</p>
      <p><br>
      </p>
      <p>.addChild(new Transform()<br>
                  .addChild(new Shape()<br>
                    .setGeometry(new Sphere())<br>
                    .setAppearance(new Appearance()<br>
                      .setMaterial(new Material().setDiffuseColor(new
        float[] {0.7f,0.7f,0.7f}).setSpecularColor(new float[]
        {0.5f,0.5f,0.5f}))<br>
                      .setTexture(new
        ComposedCubeMapTexture().setDEF("texture")<br>
                        .setBackTexture(new ImageTexture().setUrl(new
        MFString6().getArray()))<br>
                        .setBottomTexture(new ImageTexture().setUrl(new
        MFString7().getArray()))<br>
                        .setFrontTexture(new ImageTexture().setUrl(new
        MFString8().getArray()))<br>
                        .setLeftTexture(new ImageTexture().setUrl(new
        MFString9().getArray()))<br>
                        .setRightTexture(new ImageTexture().setUrl(new
        MFString10().getArray()))<br>
                        .setTopTexture(new ImageTexture().setUrl(new
        MFString11().getArray())))</p>
      <p><br>
      </p>
      <p>And Node.js like this:</p>
      <p><br>
      </p>
      <p>          .addChild((new autoclass.Shape())<br>
                    .setGeometry((new autoclass.Sphere()))<br>
                    .setAppearance((new autoclass.Appearance())<br>
                      .setMaterial((new
        autoclass.Material()).setDiffuseColor(java.newArray("float",
        [java.newFloat(0.7), java.newFloat(0.7),
        java.newFloat(0.7)])).setSpecularColor(java.newArray("float",
        [java.newFloat(0.5), java.newFloat(0.5), java.newFloat(0.5)])))<br>
                      .setTexture((new
        autoclass.ComposedCubeMapTexture()).setDEF("texture")<br>
                        .setBackTexture((new
        autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_back.png",<a
          class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"</a>])))<br>
                        .setBottomTexture((new
        autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_bottom.png",<a
          class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"</a>])))<br>
                        .setFrontTexture((new
        autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_front.png",<a
          class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"</a>])))<br>
                        .setLeftTexture((new
        autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_left.png",<a
          class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"</a>])))<br>
                        .setRightTexture((new
        autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_right.png",<a
          class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"</a>])))<br>
                        .setTopTexture((new
        autoclass.ImageTexture()).setUrl(java.newArray("java.lang.String",
["../resources/images/all_probes/stpeters_cross/stpeters_top.png",<a
          class="moz-txt-link-rfc2396E"
href="https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"
          moz-do-not-send="true">"https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"</a>]))))</p>
      <p><br>
      </p>
      <p>Here's what's normally done to get a backTexture.  These look
        fairly good, I haven't found a bug in these methods for the
        containerFields.<br>
      </p>
      <p>        public ComposedCubeMapTexture setBackTexture(
        org.web3d.x3d.sai.Texturing.X3DTexture2DNode newValue)<br>
                {<br>
                        // set-newValue-validity-checks #0<br>
                        backTexture = newValue;<br>
                        if (newValue != null)<br>
                        {<br>
                                ((X3DConcreteElement)
        backTexture).setParent(this); // parentTest15<br>
                               
        ((X3DConcreteNode)backTexture).setContainerFieldOverride("backTexture");<br>
                        }<br>
                        if (backTextureProtoInstance != null)<br>
                        {<br>
                               
        backTextureProtoInstance.setParent(null); // housekeeping, clear
        prior object<br>
                                backTextureProtoInstance = null;<br>
                        }<br>
                        return this;<br>
                }</p>
      <p><br>
      </p>
      <p>But I just found this.  Looks not very good at all, and
        potentially why we get 6 back containerFields or 6 backTexture
        containerFields:</p>
      <p>ComposedCubeMapTexture.java (from X3DJSAIL source, please code
        review this, thanks):<br>
      </p>
      <p>private void handleFieldSynonyms()<br>
            {<br>
                String correctedContainerField;<br>
                if (hasAncestorX3D() &&
        findAncestorX3D().getVersion().startsWith("3"))<br>
                     correctedContainerField = "back";<br>
                else correctedContainerField = "backTexture";<br>
        <br>
                if      (getBackTexture() != null)<br>
                         ((X3DConcreteNode)
        getBackTexture()).setContainerFieldOverride(correctedContainerField);<br>
                else if (getBackTextureProtoInstance() != null)<br>
                         ((X3DConcreteNode)
getBackTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
        <br>
                if      (getBottomTexture() != null)<br>
                         ((X3DConcreteNode)
        getBottomTexture()).setContainerFieldOverride(correctedContainerField);<br>
                else if (getBottomTextureProtoInstance() != null)<br>
                         ((X3DConcreteNode)
getBottomTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
        <br>
                if      (getFrontTexture() != null)<br>
                         ((X3DConcreteNode)
        getFrontTexture()).setContainerFieldOverride(correctedContainerField);<br>
                else if (getFrontTextureProtoInstance() != null)<br>
                         ((X3DConcreteNode)
getFrontTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
        <br>
                if      (getLeftTexture() != null)<br>
                         ((X3DConcreteNode)
        getLeftTexture()).setContainerFieldOverride(correctedContainerField);<br>
                else if (getLeftTextureProtoInstance() != null)<br>
                         ((X3DConcreteNode)
getLeftTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
        <br>
                if      (getRightTexture() != null)<br>
                         ((X3DConcreteNode)
        getRightTexture()).setContainerFieldOverride(correctedContainerField);<br>
                else if (getRightTextureProtoInstance() != null)<br>
                         ((X3DConcreteNode)
getRightTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
        <br>
                if      (getTopTexture() != null)<br>
                         ((X3DConcreteNode)
        getTopTexture()).setContainerFieldOverride(correctedContainerField);<br>
                else if (getTopTextureProtoInstance() != null)<br>
                         ((X3DConcreteNode)
getTopTextureProtoInstance()).setContainerFieldOverride(correctedContainerField);<br>
                }</p>
      <p><br>
      </p>
      <p><br>
      </p>
      <p>If someone could at least confirm the bug, that would be cool.<br>
      </p>
      <p>John<br>
      </p>
      <p><br>
      </p>
      <p><br>
      </p>
      <div class="moz-cite-prefix">On 5/28/21 2:08 PM, John Carlson
        wrote:<br>
      </div>
      <blockquote type="cite"
cite="mid:CAGC3UEmjqdPb9fS8J-04ty7JHg=pvXn31CYwFG0tzpTXUMTF8g@mail.gmail.com">
        <meta http-equiv="content-type" content="text/html;
          charset=UTF-8">
        <div dir="auto">I haven’t seen any validation problems when I
          changed the version of the JSON file to 4.0, JSON parser
          errors started when I changed the XML to 4.0.</div>
        <div dir="auto"><br>
        </div>
        <div dir="auto">Hopefully that is clear.   My thinking is kind
          of muggy right now.</div>
        <div dir="auto"><br>
        </div>
        <div dir="auto">John</div>
        <div dir="auto"><br>
        </div>
        <div dir="auto"><br>
        </div>
        <div><br>
          <div class="gmail_quote">
            <div dir="ltr" class="gmail_attr">On Fri, May 28, 2021 at
              10:56 AM Don Brutzman <<a
                href="mailto:brutzman@nps.edu" moz-do-not-send="true">brutzman@nps.edu</a>>
              wrote:<br>
            </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">Thanks
              John.  Yes there are a few differences in field names from
              X3D3 to X3D4, for improved object-model consistency. 
              Summarized at<br>
              <br>
              * X3D Scene Authoring Hints: Field name changes planned
              for improved consistency<br>
                 <a
href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#fieldNameChanges"
                rel="noreferrer" target="_blank" moz-do-not-send="true">https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#fieldNameChanges</a><br>
              <br>
              We should be able to confirm correctness of X3DUOM 3.3
              next week, am thinking that prior-version names/synonyms
              should be something to include in X3DUOM 4.0 as well.<br>
              <br>
              <br>
              On 5/27/2021 11:12 PM, John Carlson wrote:<br>
              > Report (still on old version of X3DJSAIL):<br>
              > <br>
              > These files are the one's I'm trying to get
              translations working for:<br>
              > <br>
              > /X3DJSONLD/src/main/data$ grep -l
              ComposedCubeMapTexture *.x3d| grep -v new<br>
              > <br>
              > ball.x3d<br>
              > bubbles.x3d<br>
              > bub.x3d<br>
              > flowerproto.x3d<br>
              > flowers4.x3d<br>
              > flowers7.x3d<br>
              > flowers.x3d<br>
              > geo.x3d<br>
              > mirror2.x3d<br>
              > mirror.x3d<br>
              > <br>
              > Here are the JSON files that don't parse:<br>
              > <br>
              > ~/X3DJSONLD/src/main/data$ for i in *.json; do
              jsonlint $i 2> /dev/null 1> /dev/null|| echo $i;
              done<br>
              > ball.new.json<br>
              > bubbles.new.json<br>
              > bub.new.json<br>
              > flowerproto.new.json<br>
              > flowers4.new.json<br>
              > flowers7.new.json<br>
              > flowers.new.json<br>
              > geo.new.json<br>
              > mirror2.new.json<br>
              > mirror.new.json<br>
              > SpatialAudioCameraAnimation.json<br>
              > SplitChannels.json<br>
              > text.new.json<br>
              > <br>
              > <br>
              > The new.json files are created from my generated Java
              code.  So either my code is wrong, or there's something
              wrong with X3DJSAIL.<br>
              > <br>
              > <br>
              > My code looks like this:<br>
              > <br>
              > <br>
              > .setTexture(new
              ComposedCubeMapTexture().setDEF("texture")<br>
              >                  .setBackTexture(new
              ImageTexture().setUrl(new MFString6().getArray()))<br>
              >                  .setBottomTexture(new
              ImageTexture().setUrl(new MFString7().getArray()))<br>
              >                  .setFrontTexture(new
              ImageTexture().setUrl(new MFString8().getArray()))<br>
              >                  .setLeftTexture(new
              ImageTexture().setUrl(new MFString9().getArray()))<br>
              >                  .setRightTexture(new
              ImageTexture().setUrl(new MFString10().getArray()))<br>
              >                  .setTopTexture(new
              ImageTexture().setUrl(new MFString11().getArray())))<br>
              > <br>
              > <br>
              > with setUSE below.<br>
              > <br>
              > <br>
              > John<br>
              > <br>
              > On 5/27/21 10:52 PM, John Carlson wrote:<br>
              >> A somewhat significant change to X3DUOM 3.3
              causes generated X3D JSON schema 3.3 to reject files.<br>
              >><br>
              >> That is, there is no longer a bottomTexture,
              topTexture, frontTexture, etc. for
              ComposedCubeMapTexture.  Instead, "Texture" is left off of
              these fields.<br>
              >><br>
              >><br>
              >> 4.0 has the Texture added.<br>
              >><br>
              >><br>
              >> 2 suggestions:<br>
              >><br>
              >> Update your files to X3D4.<br>
              >><br>
              >> OR:<br>
              >><br>
              >> Add these fields to X3DUOM 3.3 or find some way
              to get the old fields into X3D JSON schema 3.3 during
              schema generation (help!).<br>
              >><br>
              >> I am not sure what the standard or the browsers
              do at this point.<br>
              >><br>
              >> I'm upgrading my files to X3D4 and see if they
              work in various browsers.<br>
              >><br>
              >> Help!<br>
              >><br>
              >> John<br>
              >><br>
              > <br>
              > _______________________________________________<br>
              > x3d-public mailing list<br>
              > <a href="mailto:x3d-public@web3d.org"
                target="_blank" moz-do-not-send="true">x3d-public@web3d.org</a><br>
              > <a
                href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org"
                rel="noreferrer" target="_blank" moz-do-not-send="true">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
              <br>
              all the best, Don<br>
              -- <br>
              Don Brutzman  Naval Postgraduate School, Code USW/Br     
               <a href="mailto:brutzman@nps.edu" target="_blank"
                moz-do-not-send="true">brutzman@nps.edu</a><br>
              Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA 
               +1.831.656.2149<br>
              X3D graphics, virtual worlds, navy robotics <a
                href="http://faculty.nps.edu/brutzman" rel="noreferrer"
                target="_blank" moz-do-not-send="true">http://faculty.nps.edu/brutzman</a><br>
            </blockquote>
          </div>
        </div>
      </blockquote>
    </blockquote>
  </body>
</html>