<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>I do apologize in advance, but I will not search the mail
      archives next.  I'm guessing I saw an Exception being thrown, but
      did not document it properly.  I'm going to cave in on this.  I do
      not have any evidence of an containerField="metadata" errors being
      thrown at this time.  I may have the energy as some point, but it
      doesn't seem to be a pressing issue.</p>
    <p>I think that "code too large" is a better thing to work on now,
      if it's possible to do class splitting in XSLT (creating inner
      classes should be okay, I think).  I don't know how you name
      classes in Java, and that may be a long term issue with supporting
      more .class files than .x3d files.</p>
    <p><br>
    </p>
    <p>Wisdom from Java would be appreciated now, and wondering if I
      should change my java to a single .class, and let Java programmers
      do their own splitting instead of me trying to automate it.</p>
    <p>Here is some example files, which could probably be increased in
      size by 30x or so.  I'm not quite sure why there are different
      dates.  I don't really have a clean up mechanism, I guess.  Java
      leaves a bunch of source code turds around based on my code.<br>
    </p>
    <p>-rw-rw-r-- 1 coderextreme coderextreme   1852 Dec 24 01:35
      JinLOA4$MFVec3f656.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1138 Dec 30 12:11
      JinLOA4$MFVec3f65.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1730 Dec 24 01:35
      JinLOA4$MFVec3f661.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1338 Dec 24 01:35
      JinLOA4$MFVec3f666.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1655 Dec 24 01:35
      JinLOA4$MFVec3f671.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1338 Dec 24 01:35
      JinLOA4$MFVec3f676.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1654 Dec 24 01:35
      JinLOA4$MFVec3f681.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1910 Dec 24 01:35
      JinLOA4$MFVec3f686.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1338 Dec 24 01:35
      JinLOA4$MFVec3f691.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1665 Dec 24 01:35
      JinLOA4$MFVec3f696.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1488 Dec 30 12:11
      JinLOA4$MFVec3f69.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1495 Dec 24 01:35
      JinLOA4$MFVec3f701.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1694 Dec 24 01:35
      JinLOA4$MFVec3f706.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   2026 Dec 24 01:35
      JinLOA4$MFVec3f70.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1950 Dec 24 01:35
      JinLOA4$MFVec3f711.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1333 Dec 24 01:35
      JinLOA4$MFVec3f716.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1655 Dec 24 01:35
      JinLOA4$MFVec3f721.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1635 Dec 24 01:35
      JinLOA4$MFVec3f726.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1780 Dec 24 01:35
      JinLOA4$MFVec3f731.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1358 Dec 24 01:35
      JinLOA4$MFVec3f736.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   2314 Dec 30 12:11
      JinLOA4$MFVec3f73.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1645 Dec 24 01:35
      JinLOA4$MFVec3f741.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1346 Dec 24 01:35
      JinLOA4$MFVec3f75.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   2021 Dec 30 12:11
      JinLOA4$MFVec3f77.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1138 Dec 24 01:35
      JinLOA4$MFVec3f80.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1346 Dec 30 12:11
      JinLOA4$MFVec3f81.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1143 Dec 30 12:11
      JinLOA4$MFVec3f85.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   2512 Dec 30 12:11
      JinLOA4$MFVec3f89.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   2314 Dec 24 01:35
      JinLOA4$MFVec3f90.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1985 Dec 30 12:11
      JinLOA4$MFVec3f93.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   2021 Dec 24 01:35
      JinLOA4$MFVec3f95.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   2304 Dec 30 12:11
      JinLOA4$MFVec3f97.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme   1953 Dec 30 12:11
      JinLOA4$MFVec3f9.class<br>
      -rw-rw-r-- 1 coderextreme coderextreme 129996 Dec 30 12:11
      JinLOA4.class</p>
    <p><br>
    </p>
    <p>What I'd like to do is change the Skeleton with Java, instead of
      modifying XML.<br>
    </p>
    <p>John<br>
    </p>
    <div class="moz-cite-prefix">On 12/30/21 11:41, John Carlson wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:79854b25-6b29-902b-2abb-5b4c56627a8c@gmail.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <pre class="moz-quote-pre" wrap="">John posted:
3.  Fix or remove alternate containerFields in X3DJSAIL.  /metadata/ alternate in MetadataSet.java.  Discussion of alternate containerField enumerations in X3DUOM.

Don replied:

Also reported on mailing list last week.  X3D3 and X3D4 containerField corrections relevant HAnimHumanoid/Metadata have been applied and deployed to the models in X3D Examples Humanoid Animation archives, <b>with most subsequent changes now deployed.
</b>
Authors modify the name of a containerField to correctly show the field relationship to the parent.  You should never (i repeat Never Never Never) need to touch alternative containerField sources in underlying X3DJSAIL code.

I reply:

I was not trying to modify the alternative containerField sources.  I was responding to an exception thrown.  But I still need to search for the email in the mailing list.  In lieu of that, a more definitive exposition on how SimpleType has not been incorporated from X3DUOM with an subversion (SVN) commit will follow:

Here is relevant code about containerField_ALTERNATE_VALUES.  Previous emails discussed how the metadata containerField was included in X3DUOM for MetadataSet.java.  Here is relevant code from CreateX3dSceneAccessInterfaceJava.xslt. The first two sections of bolded, italicized, underlined text is where the two "value" container come in the containerField_ALTERNATE_VALUES String array.   What is missing from the array is what was intended to be done in the 3rd section of highlighted code.  That is, traverse into the <xsl:value-of select="InterfaceDefinition/containerField/@type"/> and pull out the SimpleType enumeration found in the @type value, instead a comment is provided (for later work?).  There's no xpath to skip to the enumeration yet.  I realize the code has not been released yet, and there is still existing code that provides a strawman way of doing it.  I was merely asking you to provide an <xsl:when> for MetadataSet which includes "metadata" as a workaround for not expanding the SimpleType (and maybe add "value" as well, but it will appear twice if you do that).  Imagine, perhaps, even replacing "value" with MetadataSet, since "value" appears in all cases with the default containerField, AFAIK.  I do not know if this is still a WIP, but not checked in state or not, since you hold stuff close to your chest.  If you say that this will be in the next release (which I think you have stated), I will be satisfied.  But don't say it's fixed.  It's not fixed until I can see the code working somewhere.  You need something better than that. There's an old story about devs that say they release right after a compile.

Now I will go look for the test case where having a metadata caused X3DJSAIL to throw an exception and I will retest.
<u><i><b>
    </b></i></u>
</pre>
                                                                       
      <xsl:if test="not($isX3dStatement = 'true')"><br>
                                                                               
      <!-- as needed, containerField updates by checking parent node
      and SFNode field --><br>
                                                                               
      <!-- Reference list found at X3D Scene Authoring Hints:
      containerField --><br>
                                                                               
      <!--
      <a class="moz-txt-link-freetext"
href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#containerField"
        moz-do-not-send="true">https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#containerField</a>
      --><br>
                                                                               
      <xsl:text><br>
              setContainerFieldOverride(""); // ensuring default value
      used<br>
                      containerField_ALTERNATE_VALUES = new String[] {
      "</xsl:text><br>
                                                                               <u><i><b>
            <xsl:value-of
            select="InterfaceDefinition/containerField/@default"/></b></i></u><br>
                                                                               
      <xsl:text>"</xsl:text><br>
                                                                               
      <!-- TODO once recorded in X3D XML Schema and X3D Object Model,
      iterate over values and add to array --><br>
                                                                               
      <xsl:choose><br>
                                                                                       
      <xsl:when test="($name = 'Shape') or ($name = 'LOD') or ($name
      = 'Transform')"><br>
                                                                                               
      <xsl:text>, "proxy", "shape"</xsl:text><br>
                                                                                       
      </xsl:when><br>
                                                                                       
      <xsl:when test="($name = 'Group')  or ($name = 'StaticGroup')
      or ($name = 'Collision')   or<br>
                                                                                                                       
      ($name = 'Anchor') or ($name = 'Billboard')   or ($name =
      'CADAssembly')
or                                                                                                                        
      ($name = 'Anchor') or ($name = 'Billboard')   or ($name =
      'CADAssembly') or <br>
                                                                                                                       
      ($name = 'CADLayer')   or ($name = 'CADPart') or ($name =
      'Switch')"><br>
                                                                                               
      <!-- debatable whether support is appropriate for a few other
      X3DGroupingNode nodes --><br>
                                                                                               
      <xsl:text>, "proxy"</xsl:text><br>
                                                                                       
      </xsl:when><br>
                                                                                       
      <xsl:when test="($name = 'ImageTexture') or ($name =
      'PixelTexture')"><br>
                                                                                               
      <xsl:text>, "back",        "bottom",        "front",       
      "left",        "right",        "top"</xsl:text><br>
                                                                                               
      <xsl:text>, "backTexture", "bottomTexture", "frontTexture",
      "leftTexture", "rightTexture", "topTexture"</xsl:text><br>
                                                                                       
      </xsl:when><br>
      <i><b><u>                                                                                       
            <xsl:when test="starts-with($name,'Metadata')"></u></b></i><i><b><u><br>
          </u></b></i><i><b><u>                                                                                               
            <xsl:text>, "value"</xsl:text></u></b></i><i><b><u><br>
          </u></b></i><i><b><u>                                                                                       
            </xsl:when></u></b></i><br>
                                                                                       
      <!-- X3D3 synonyms for X3D4 field regularization --><br>
                                                                                       
      <xsl:when test="($name = 'MovieTexture')"><br>
                                                                                               
      <xsl:text>, "source"</xsl:text><br>
                                                                                               
      <xsl:text>, "back",        "bottom",        "front",       
      "left",        "right",        "top"</xsl:text><br>
                                                                                               
      <xsl:text>, "backTexture", "bottomTexture", "frontTexture",
      "leftTexture", "rightTexture", "topTexture"</xsl:text><br>
                                                                                       
      </xsl:when><br>
                                                                                       
      <xsl:when test="starts-with($name,'DISEntityTypeMapping')"><br>
                                                                                               
      <xsl:text>, "mapping"</xsl:text><br>
                                                                                       
      </xsl:when><br>
                                                                               
      </xsl:choose><br>
                                                                               
      <!-- X3DUrlObject nodes can also be a child of LoadSensor
      --><br>
                                                                               
      <xsl:if test="($name = 'Anchor')              or ($name =
      'AudioClip')      or ($name = 'DISEntityTypeMapping') or ($name =
      'GeoMetadata') or<br>
                                                                                                         
      ($name = 'ImageCubeMapTexture') or ($name = 'ImageTexture3D') or
      ($name = 'ImageTexture')         or ($name = 'Inline') or<br>
                                                                                                         
      ($name = 'MovieTexture')        or ($name = 'PackagedShader') or
      ($name = 'Script')               or ($name = 'ShaderPart') or<br>
                                                                                                         
      ($name = 'ShaderProgram')"><br>
                                                                                               
      <xsl:text>, "children"</xsl:text><!-- formerly
      watchList in X3D3 --><br>
                                                                               
      </xsl:if><br>
                                                                               
      <xsl:text> };</xsl:text><br>
      <u><i><b>                                                                               
            <xsl:if
            test="(string-length(InterfaceDefinition/containerField/@type)
            > 0)"></b></i></u><u><i><b><br>
          </b></i></u><u><i><b>                                                                                       
            <xsl:text> // type </xsl:text></b></i></u><u><i><b><br>
          </b></i></u><u><i><b>                                                                                       
            <xsl:value-of
            select="InterfaceDefinition/containerField/@type"/></b></i></u><u><i><b><br>
          </b></i></u><u><i><b>                                                                               
            </xsl:if></b></i></u><br>
      <br>
      <br>
    </blockquote>
  </body>
</html>