Hey Alec, I was hoping for something a little more minimal, but still complete/compilable. :)
I still can't reproduce the problem, but maybe @Persist on your report property is the culprit? Try it with out that. That's a shot in the dark though, so if that doesn't help I think I'll need something broken that I can actually run through a debugger to go any deeper. Josh On Wed, Apr 2, 2008 at 11:38 AM, Alec Leamas <[EMAIL PROTECTED]> wrote: > Josh Canfield wrote: > > Hey Alec, > > > > Looking at small excerpts from a large file leaves too much to the > > imagination. Can you create a minimal but complete page and component > > that reproduces the problem? > > > > > > Yes, I should have done it long time ago, I know. Below is the complete > example, removing all old stuff trailing around. Here comes: > > - What's rendered (ascii) > - BugPage{.tml|.java} > - Layout{.tml,|java} > - ReportSize{.tml,.java} > > As you can see, the ReportSize component works whereas the Layout doesn't. > For the moment, I presume that the situation still is such that the problem > is about the listSource parameter, while the columns is fine. > > Debugger says same thing: the value returned from BugPage.getListsource() is > a List<IRow> w 500 items. The value stored as @Parameter listSource in > Layout is a SingletonList containing the serialized value of the 500 item > list. This is returned by getListSource() in Layout as-is. > > Note that I've cut away lot's of stuff from BugPage. Layout.java is as-is > (for now). > > --------------------------- rendered ------------------------------- > > Orvar:1 // ${orvar}() in Layout reports size of singleton. > > YALT LDAP Report > Report for (mail=*), size: 500, [EMAIL PROTECTED] > // ReportSize works just fine. > > -------------------------- BugPage --------------------------- > > > <t:layout connectionUrl="${prop:connection.url}" > listSource="${prop:listSource}" > columns="${literal:cn,orvar}" > > xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> > <head> > <title>Search</title> > </head> > <body class="tables"> > <h1>YALT LDAP Report</h1> > Report for ${pattern}, size: > <t:reportsize report="prop:report" rows="prop:report.list" /> > </body> > > </t:layout> > > > package net.kln.yalt.pages; > > import java.util.List; > > import javax.naming.NameNotFoundException; > import javax.naming.NamingException; > > import net.kln.yalt.aso.User; > import net.kln.yalt.data.ConnectionData; > import net.kln.yalt.report.AttributeList; > import net.kln.yalt.report.ILdapReportService; > import net.kln.yalt.report.IRow; > import net.kln.yalt.report.LdapReport; > import net.kln.yalt.report.LdapSchema; > import net.kln.yalt.report.Report; > > import org.apache.tapestry.annotations.Persist; > import org.apache.tapestry.ioc.annotations.Inject; > import org.slf4j.Logger; > > public class BugPage > > { > @Inject > private Logger log; > > @Inject > private ILdapReportService reportService; > > @Persist > private AttributeList attributeList; > > @Persist > private String pattern; > > > @Persist > private LdapReport report; > > @Persist > private User user; > > @Persist > private ConnectionData connection; > > > /** Initiate report to present a search result. */ > public BugPage init( ConnectionData conn, User user, String pattern) > > { > try { > this.connection = conn; > this.user = user; > this.pattern = pattern; > report = reportService.getLdapReport( user); > attributeList = new AttributeList( user); > return this; > } > catch( Exception e) { > throw new RuntimeException( "Error creating report", e); > } > } > > public Object onActivate() throws NamingException > { > if( report.size() > 0 ) > return null; > boolean searchOK = false; > try { > report.setReturnedAttributes( attributeList.getColumns()); > report.patternSearch( pattern); > if( report.size() == 0) > throw new NameNotFoundException(); > > else > searchOK = true; > } > catch( Exception e ) {} > finally { > if( searchOK) > { > log.debug( "Search done, matches: " + report.size()); > LdapSchema schema = new LdapSchema( user.getDirContext()); > if( schema.getAttributes() == null) > { > return null; > } > } > } > return null; > > } > > public Report getReport() > { > List<IRow> list = report.getList(); > return report; > } > > public List<IRow> getListSource() > { > List<IRow> list = report.getList(); > int size = list.size(); > return list; > } > > public int getReportSize() { return report.size(); } > > public String getPattern() { return pattern; } > > public void setPattern(String pattern) { this.pattern = pattern; } > > public void setReport(LdapReport report) { this.report = report; } > > public User getUser() { return user; } > > public void setUser(User user) { this.user = user; } > > public ConnectionData getConnection() { return connection; } > > public void setConnection( ConnectionData connection) > { > this.connection = connection; > } > } > -------------------------- Layout ------------------------------------- > > <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> > <head> > <title>YALT</title> > </head> > <body> > <div class="connection"> > <t:if test="connected" else="block:notConnected"> > <img src="${connectIcon}" > title="${prop:connectionTooltip}"/> > </t:if> > <t:block id="notConnected"> > <img src="${disconnectIcon}" > title="${message:disconnectedTooltip}"/> > </t:block> > </div> > > <t:if test="listsVisible"> > Orvar:${orvar} > </t:if> > > <t:pagelink page="start"> > <img src="icons/yalt.gif" class="yaltIcon"/> > </t:pagelink> > <div class="flags"> <t:selectLocale/></div> > > <t:body/> > > </body> > </html> > > ---------------------------- Layout.java ---------------------------- > > package net.kln.yalt.components; > > import java.util.List; > > import net.kln.yalt.report.IRow; > > import org.apache.tapestry.Asset; > import org.apache.tapestry.annotations.IncludeStylesheet; > import org.apache.tapestry.annotations.Parameter; > import org.apache.tapestry.annotations.Path; > import org.apache.tapestry.ioc.Messages; > import org.apache.tapestry.ioc.annotations.Inject; > > > @IncludeStylesheet("context:css/yalt.css") > public class Layout > { > @Parameter( "false") > private String connectionUrl; > > @Parameter > private List<IRow> listSource; > > > @Parameter > private List<String> columns; > > @Inject > private Messages messages; > > @Inject > @Path( "context:icons/connect_no.png") > private Asset disconnectIcon; > > @Inject > @Path( "context:icons/connect_established.png") > private Asset connectIcon; > > @Inject > @Path( "context:icons/yalt.svg") > private Asset yaltIcon; > > public Asset getYaltIcon() > { > return yaltIcon; > } > > public boolean isConnected() > { > return connectionUrl != null && !connectionUrl.equals( "false"); > } > > public Asset getDisconnectIcon() > { > return disconnectIcon; > } > > public Asset getConnectIcon() > { > return connectIcon; > } > > public boolean isListsVisible() > { > return listSource != null; > } > > public String getConnectionTooltip() > { > return messages.format( "connectionTooltip", > connectionUrl.replace( "%20", " ")); > } > > public List<String> getColumns() > { > return columns; > } > > public List<IRow> getListSource() > { > > return listSource; > } > > public String getOrvar() > { > return "" + listSource.size(); > } > } > ----------------------------- ReportSize ------------------------- > > > <t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> > ${reportSize}, ${firstMail} > </t:container> > > > package net.kln.yalt.components; > > import java.util.List; > > import net.kln.yalt.report.IRow; > import net.kln.yalt.report.Report; > > import org.apache.tapestry.annotations.Parameter; > > > public class ReportSize > { > @Parameter > private Report report; > > @Parameter > private List<IRow> rows; > > public Integer getReportSize() { return report.size(); } > public String getFirstMail() > { > return rows.get( 0).getColumnValue( "mail"); > } > } > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- -- TheDailyTube.com. Sign up and get the best new videos on the internet delivered fresh to your inbox. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]