<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><p style="margin: 0.0px 0.0px 0.0px 0.0px">Change 20081212-dda-V by <a href="mailto:dda@lester.local">dda@lester.local</a> on 2008-12-12 05:44:02 EST</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>in /Users/dda/laszlo/src/svn/openlaszlo/trunk-d</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>for <a href="http://svn.openlaszlo.org/openlaszlo/trunk">http://svn.openlaszlo.org/openlaszlo/trunk</a></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">Summary: lzsourceannotations=true now uses backtrace lfc.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">New Features:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">Bugs Fixed: LPP-7435 (LPS.getLFCname needs to be remodularized),</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span><a href="https://nexb.laszlosystems.com/trac/main/ticket/741">https://nexb.laszlosystems.com/trac/main/ticket/741</a> (LZX: Regression in proxied launch)</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">Technical Reviewer: ptw (pending)</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">QA Reviewer: (pending)</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">Doc Reviewer: (pending)</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">Documentation:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">Release Notes:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">Details:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>This change only fixes the reported problem, and does not refactor.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>The technique ended up being: wherever 'backtrace' and 'profile'</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>have special argument handling, add the same sort of handling for</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>sourceannotations; add another argument to getLFCname to enforce</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>that the caller has knowledge about sourceannotations, and put</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>the smarts about what to do in getLFCname.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>getLFCname should be remodularized to reduce the proliferation of</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>arguments, but there are some challenges to doing this, recorded here</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>in case someone wants to take up the gauntlet again.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>First, not all the callers to getLFCname have ready access to a</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>CompilationEnvironment.<span class="Apple-converted-space"> </span>In particular, Canvas calls</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>getLFCname - combining information from an original CompilationEnvironment</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>with canvas attributes (so that debugging can be set on the canvas).</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>And, while this can be solved (giving Canvas a copy of CompilationEnvironment,</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>or even just the properties), there are at least two additional mysteries that</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>need better assessing.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>1) CompilationManager.getInfoXML() calls getLFCname using values</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>from the request properties that don't completely line up with</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>the properties used either in CompilationEnvironment or</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>ResponderCompile.initCMgrProperties ('lzbacktrace' is used in initCMgrProperties(),</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>'backtrace' is used in getInfoXML()).</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>2) ResponderLFC.respondImpl() calls getLFCname using standard values</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>in CompilationEnvironment (yay!) except that it also consults an extra</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>request parameter "_canvas_debug" (boo!)</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>It didn't seem safe to do refactoring and change these two call sites (possibly</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>breaking some functionality), and not having these sites changed makes</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>the refactoring rather less effective.<span class="Apple-converted-space"> </span>If I knew how to completely</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>test the various namespaces that seem to be in use (whether intentional or not),</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>I'd be more bold in making a change of this sort.</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><span class="Apple-converted-space"> </span></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">Tests:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>Regression: {smokecheck,weather,lzpix} x {swf8,swf9,dhtml}</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>Functionality: simple app observing libraries loaded via args</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>ARGS:<span class="Apple-converted-space"> </span>LFC version:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>(noargs) <span class="Apple-converted-space"> </span>LFCdhtml</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>lzbacktrace=true <span class="Apple-converted-space"> </span>LFCdhtml-backtrace</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>backtrace=true <span class="Apple-converted-space"> </span>LFCdhtml</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px"><span class="Apple-converted-space"> </span>lzsourceannotations=true <span class="Apple-converted-space"> </span>LFCdhtml-backtrace</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">Files:</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">M<span class="Apple-converted-space"> </span>WEB-INF/lps/server/src/org/openlaszlo/cm/CompilationManager.java</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">M<span class="Apple-converted-space"> </span>WEB-INF/lps/server/src/org/openlaszlo/server/LPS.java</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">M<span class="Apple-converted-space"> </span>WEB-INF/lps/server/src/org/openlaszlo/servlets/responders/ResponderCompile.java</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">M<span class="Apple-converted-space"> </span>WEB-INF/lps/server/src/org/openlaszlo/servlets/responders/ResponderLFC.java</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">M<span class="Apple-converted-space"> </span>WEB-INF/lps/server/src/org/openlaszlo/compiler/CanvasCompiler.java</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">M<span class="Apple-converted-space"> </span>WEB-INF/lps/server/src/org/openlaszlo/compiler/ToplevelCompiler.java</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">M<span class="Apple-converted-space"> </span>WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">M<span class="Apple-converted-space"> </span>WEB-INF/lps/server/src/org/openlaszlo/compiler/Canvas.java</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; min-height: 14.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px">Changeset: <a href="http://svn.openlaszlo.org/openlaszlo/patches/20081212-dda-V.tar">http://svn.openlaszlo.org/openlaszlo/patches/20081212-dda-V.tar</a></p>
<br><br><div> <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br class="Apple-interchange-newline">--</div><div><br>Don Anderson<br>Java/C/C++, Berkeley DB, systems consultant<br><br>voice: 617-306-2057<br>email: <a href="mailto:dda@ddanderson.com">dda@ddanderson.com</a><br>www: <a href="http://www.ddanderson.com/">http://www.ddanderson.com</a><br></div></div></span></span><br class="Apple-interchange-newline"></div></span></div></span><br class="Apple-interchange-newline"></div></span><br class="Apple-interchange-newline"> </div><br></body></html>