<div><div dir="auto">Whew, finally communication.</div></div><div dir="auto"><br></div><div dir="auto">Thanks, </div><div dir="auto"><br></div><div dir="auto">John</div><div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jul 24, 2018 at 2:27 AM Don Brutzman <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 7/20/2018 7:32 AM, <a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a> wrote:<br>
> What’s important to realize is that I may only have a .class file, and I want to recover xml or JSON encoding. With your way of handling parameters, I have no way of doing that, afaict, without a decompiler.  Please correct me with an example invocation.<br>
<br>
OK starting to understand better.  You have a class and want to do something with it.<br>
<br>
For a given Java model produced from .x3d or from X3DJSAIL X3DObject by X3dToJava.xslt, the main(args) method controls what happens on execution.<br>
<br>
Here is an example main method produced in HelloWorldOutput.  Looks like it validates itself but will do little else.<br>
<br>
Your goals are much clearer now.  Sounds like excellent functionality to add, will let us recover models from .class files some day.<br>
<br>
Will work on it.  When ready will also add some smoke tests to the pile.  Thanks John.<br>
<br>
============================================================<br>
<br>
     /** Default main() method provided for test purposes, uses CommandLine to set global ConfigurationProperties for this object.<br>
      * @param args array of input parameters, provided as arguments<br>
         * @see <a href="<a href="http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3DObject.html#handleArguments-java.lang.String:A-" rel="noreferrer" target="_blank">http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3DObject.html#handleArguments-java.lang.String:A-</a>">X3DObject.handleArguments(args)</a><br>
         * @see <a href="<a href="http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3DObject.html#validationReport--" rel="noreferrer" target="_blank">http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3DObject.html#validationReport--</a>">X3DObject.validationReport()</a><br>
      * @see <a href="<a href="http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html" rel="noreferrer" target="_blank">http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html</a>">CommandLine</a><br>
      * @see <a href="<a href="http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE" rel="noreferrer" target="_blank">http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE</a>">CommandLine.USAGE</a><br>
      * @see <a href="<a href="http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html" rel="noreferrer" target="_blank">http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html</a>">ConfigurationProperties</a><br>
      */<br>
     public static void main(String args[])<br>
     {<br>
         X3DObject thisExampleX3dObject = new HelloWorldProgramOutput().getX3dModel();<br>
<br>
                boolean hasArguments = (args != null) && (args.length > 0);<br>
                boolean validate = true; // default<br>
                boolean argumentsLoadNewModel = false;<br>
                String  fileName = new String();<br>
<br>
                if (args != null)<br>
                {<br>
                        for (String arg : args)<br>
                        {<br>
                                if (arg.toLowerCase().startsWith("-v") || arg.toLowerCase().contains("validate"))<br>
                                {<br>
                                        validate = true; // making sure<br>
                                }<br>
                                if (arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_X3D) ||<br>
                                        arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_CLASSICVRML) ||<br>
                                        arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_X3DB) ||<br>
                                        arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_VRML97) ||<br>
                                        arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_EXI) ||<br>
                                        arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_GZIP) ||<br>
                                        arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_ZIP) ||<br>
                                        arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_HTML) ||<br>
                                        arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_XHTML))<br>
                                {<br>
                                        argumentsLoadNewModel = true;<br>
                                        fileName = arg;<br>
                                }<br>
                        }<br>
                }<br>
                if      (argumentsLoadNewModel)<br>
                        System.out.println("WARNING: \"HelloWorldProgramOutput\" model invocation is attempting to load file \"" + fileName + "\" instead of simply validating itself... file loading ignored.");<br>
                else if (hasArguments) // if no arguments provided, this method produces usage warning<br>
                        thisExampleX3dObject.handleArguments(args);<br>
<br>
                if (validate)<br>
                {<br>
                        System.out.print("Java program \"HelloWorldProgramOutput\" self-validation test results: ");<br>
                        String validationResults = thisExampleX3dObject.validationReport();<br>
                        System.out.println(validationResults);<br>
                }<br>
     }<br>
}<br>
<br>
<br>
all the best, Don<br>
-- <br>
Don Brutzman  Naval Postgraduate School, Code USW/Br       <a href="mailto:brutzman@nps.edu" target="_blank">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">http://faculty.nps.edu/brutzman</a><br>
<br>
</blockquote></div></div>