On 2008-12-12, at 06:47EST, Donald Anderson wrote:

cm/CompilationManager.java has in getInfoXML() a set of lines:

       boolean isDebug = "true".equals(props.getProperty("debug"));
boolean isProfile = "true".equals(props.getProperty("profile")); boolean isBacktrace = "true".equals(props.getProperty("backtrace"));

String lfc = LPS.getLFCname( runtime, isDebug, isProfile, isBacktrace);

While CompilationEnvironment agrees with the names for "debug" and "profile",
it lists BACKTRACE_PROPERTY as "debugBacktrace".  Furthermore,
servlets/responders/ResponderCompile.java is looking for "lzbacktrace".

I take this to mean that that "debugBacktrace" is used as the internal name in CompilationEnvironment, and is also the property to set with lzc if you want this. Whereas "lzbacktrace" is used in URL arguments. But the props in getInfoXML() come from ResponderAPP_CONSOLE and ResponderINFO_XML, so I would think this would also need to be "lzbacktrace" and not merely "backtrace"?
Is there another option namespace out there?

Your guess is as good as mine here. That there are too many ways and too many paths to discover the compile options is a long-standing issue. We have slowly reduced the number of paths as the number of options has grown, but not always successfully.

Historically, the URL options started out as simple names like `debug` and `profile`, but we realized that polluted the query-args namespace, so more recent additions are prefixed with `lz` (and there is http://jira.openlaszlo.org/jira/browse/LPP-3479) . These query args are translated into internal properties, which are defined in CompilationEnvironment.java, but also note the TODO on line 448 of sc/Compiler.java, where many of these names a duplicated only because the guy writing this code did not know how to share the constants table (using some whacky define the shared constants on an interface and then declare an implementation to get at them trick that he later discovered). The command-line interface used normal command flags which it translates into the internal environment names, but also has the escape hatch of you being able to use -D and the internal name (if you can figure out what the internal name is -- obviously this is not meant to be a public interface).

As to the getInfoXML mystery, that just plain looks broken. Why it is querying props with strings rather than the constant prop names seems bogus. Luckily nothing really uses the output of that... or so it would appear. The app_console responder is presumably providing the xml so that xslt can customize the wrapper based on what options were called for, but I bet it doesn't do anything special with backtracing. The info_xlm responder is only for human consumption, so it could be wrong and no one notice; but, it sure would be a lot better if it were correct; in particular, if it told you the LFC flavor that was being used accurately. (I had to look at the Firebug net pane to figure out which LFC was actually being loaded.)

Reply via email to