Change 20091120-hqm-i by [email protected] on 2009-11-20 08:58:31 EST
    in /Users/hqm/openlaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: support mixins on instances

New Features:

Bugs Fixed: LPP-8602 Allow with="" on instances declarations

Technical Reviewer: ptw
QA Reviewer: max
Doc Reviewer: (pending)

Documentation:

Release Notes:

mixins are supported now on instances as well as classes, e.g., 

    <mixin name="textmixin">
        <attribute name="foo" value="bar" type="text"/>
    </mixin>

    <text name="mixinstance" with="textmixin">
        <attribute name="text" value="${this.foo}"/>
    </text>

Overview:
    

Details:
    

ClassCompiler.java: remove call to super.updateSchema, since we made
ViewCompiler's updateSchema now do some things that only apply to
instances.

schema/lfc-undeclared.lzx: Moved the "with" atribute down from <class> to <node>
beause instances can now have mixins

ViewCompiler.java: add updateSchema method, so that instances with mixins will
call the ClassModel machinery to add the needed interstitial classes to the app.
This is done by rewriting the instance as a <anonymous extends="tagclass"> 
instance,
and then ClassModel and NodeModel have been modified to know how to deal with 
these
'class-like instances'

Also removed call to the class inlining code that is no longer used in
the compiler.


ToplevelCompiler.java: use generalized 'tagname' accessor to get the
classname of an instance, since an element may be an anonymous instance
class.


ViewSchema.java: add an explicit arg to say if we're defining a public class or 
a 
private (anonymous instance) one

NodeModel.java: Since instance classes may now be given a 'anonymous'
tag, define generalized accessor tagOrClassName which returns the
value of 'extends' if it exists, otherwise return the tag name


Compiler.java: remove some of the class inlining code that has not worked in 
forever

DebugCompiler.java: remove class inlining code


ClassModel.java: make the ClassModel constructor accept a <anonymous> tag that 
has mixins, and build the
interstitial classes just like for a <class> that has mixins.






Tests:

test/lztest/lztest-mixins.lzx added to the "ant lztest" suite

test/smoke/mixin-simple.lzx

testcase from bug (uncomment the commented out region)


Files:
M       test/lztest/rhino.txt
A       test/lztest/lztest-mixins.lzx
A       test/smoke/mixin-simple.lzx
M       WEB-INF/lps/schema/lfc-undeclared.lzx
M       WEB-INF/lps/lfc/core/LzNode.lzs
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassCompiler.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewCompiler.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ToplevelCompiler.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/DebugCompiler.java
M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java

Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20091120-hqm-i.tar

_______________________________________________
Laszlo-reviews mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews

Reply via email to