<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>