Inner classes are not component classes and are not transformed (component class transformation is the hook that allows @Environmental to work).
On Thu, Jun 25, 2009 at 9:48 AM, Sergey Didenko <sergey.dide...@gmail.com>wrote: > Sure, I talk about component classes. Sorry for the unclear message. > > I played with the bug and reproduced it in the simple form. > > It happens when I put an inner class of the page into environment and > use @Environmental. > It does not happen when I refactor that inner class out of the page. > It does not happen when I use environment.peek() > > -------------------------------------------------------------------- > SimplePage.java > -------------------------------------------------------------------- > > package mytapp.pages; > > import org.apache.tapestry5.ioc.annotations.Inject; > import org.apache.tapestry5.services.Environment; > > public class SimplePage { > > public class InnerClass { > public String toString() { > return "InnerClass"; > } > } > > @Inject > private Environment environment; > > void beginRender() { > environment.push( InnerClass.class, new InnerClass() ); > } > > void afterRender() { > environment.pop( InnerClass.class ); > } > } > > -------------------------------------------------------------------- > SimplePage.tml > -------------------------------------------------------------------- > > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" > "http://www.w3.org/TR/html4/strict.dtd"> > <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"> > <head> > <title>Simple title</title> > </head> > <body> > <p>Simple text</p> > > <p><t:SimpleComponent/></p> > > </body> > </html> > > -------------------------------------------------------------------- > SimpleComponent.java > -------------------------------------------------------------------- > > package mytapp.components; > > import mytapp.pages.SimplePage.InnerClass; > > import org.apache.tapestry5.MarkupWriter; > import org.apache.tapestry5.annotations.Environmental; > > public class SimpleComponent { > > @Environmental > private InnerClass innerClass; > > // UNCOMMENT THIS TO WORK > // @Inject > // private Environment environment; > > void beginRender( MarkupWriter writer ) { > // UNCOMMENT THIS TO WORK > // InnerClass innerClass = environment.peek( > InnerClass.class ); > > writer.write( "SimpleComponent " + innerClass.toString() ); > } > } > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > -- Howard M. Lewis Ship Creator of Apache Tapestry Director of Open Source Technology at Formos