[x3d-public] X3DJSAIL running generated Java program to produce Java

Don Brutzman brutzman at nps.edu
Mon Jul 23 23:25:26 PDT 2018

On 7/20/2018 7:32 AM, yottzumm at gmail.com wrote:
> 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.

OK starting to understand better.  You have a class and want to do something with it.

For a given Java model produced from .x3d or from X3DJSAIL X3DObject by X3dToJava.xslt, the main(args) method controls what happens on execution.

Here is an example main method produced in HelloWorldOutput.  Looks like it validates itself but will do little else.

Your goals are much clearer now.  Sounds like excellent functionality to add, will let us recover models from .class files some day.

Will work on it.  When ready will also add some smoke tests to the pile.  Thanks John.


     /** Default main() method provided for test purposes, uses CommandLine to set global ConfigurationProperties for this object.
      * @param args array of input parameters, provided as arguments
	 * @see <a href="http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3DObject.html#handleArguments-java.lang.String:A-">X3DObject.handleArguments(args)</a>
	 * @see <a href="http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3DObject.html#validationReport--">X3DObject.validationReport()</a>
      * @see <a href="http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html">CommandLine</a>
      * @see <a href="http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE">CommandLine.USAGE</a>
      * @see <a href="http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html">ConfigurationProperties</a>
     public static void main(String args[])
         X3DObject thisExampleX3dObject = new HelloWorldProgramOutput().getX3dModel();

		boolean hasArguments = (args != null) && (args.length > 0);
		boolean validate = true; // default
		boolean argumentsLoadNewModel = false;
		String  fileName = new String();

		if (args != null)
			for (String arg : args)
				if (arg.toLowerCase().startsWith("-v") || arg.toLowerCase().contains("validate"))
					validate = true; // making sure
				if (arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_X3D) ||
					arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_CLASSICVRML) ||
					arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_X3DB) ||
					arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_VRML97) ||
					arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_EXI) ||
					arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_GZIP) ||
					arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_ZIP) ||
					arg.toLowerCase().endsWith(X3DObject.FILE_EXTENSION_HTML) ||
					argumentsLoadNewModel = true;
					fileName = arg;
		if      (argumentsLoadNewModel)
			System.out.println("WARNING: \"HelloWorldProgramOutput\" model invocation is attempting to load file \"" + fileName + "\" instead of simply validating itself... file loading ignored.");
		else if (hasArguments) // if no arguments provided, this method produces usage warning

		if (validate)
			System.out.print("Java program \"HelloWorldProgramOutput\" self-validation test results: ");
			String validationResults = thisExampleX3dObject.validationReport();

all the best, Don
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman

More information about the x3d-public mailing list