Any chance you could do me a favor and file them in http://jira.opensymphony.com/browse/OGNL ? (it'll make it easier than filtering through mailing list emails )
On 3/26/07, Ben Dotte <[EMAIL PROTECTED]> wrote:
Excellent, again I really appreciate it. While you're in there string concatenation appears to have some issues as well. For example: <span jwcid="@Any" class="ognl:'' + 'tabHeader'>Test</span> This ends up outputting <span class="nulltabHeader"/> whereas it used to output a class of just "tabHeader". This causes problem for us in a few places, and may also be the cause of another string problem. Here is a contrived example of that: <span jwcid="@Any" class="ognl:(true ? 'tabHeader' : '') + (false ? 'tabHeader' : '')">Test</span> I verified this expression works in OGNL 2.6 and outputs a class of "tabHeader". In 2.7 you get this: Unable to parse OGNL expression '(true ? 'tabHeader' : '') + (false ? 'tabHeader' : '')': Error compiling expression on object [EMAIL PROTECTED] with expression node (true ? "tabHeader" : "") + (false ? "tabHeader" : "") getter body: { return ($w) (ognl.OgnlOps.booleanValue(true) ? "tabHeader" : "" + ognl.OgnlOps.booleanValue(false) ? "tabHeader" : "");} setter body: null Nested Exception: caused by javassist.compiler.CompileError: invalid types for + javassist.compiler.CodeGen#badTypes (CodeGen.java:1242) javassist.compiler.CodeGen#convertOprandTypes (CodeGen.java:1303) javassist.compiler.CodeGen#compareExpr (CodeGen.java:1193) javassist.compiler.CodeGen#booleanExpr (CodeGen.java:1091) javassist.compiler.CodeGen#atCondExpr (CodeGen.java:904) javassist.compiler.ast.CondExpr#accept (CondExpr.java:42) javassist.compiler.CodeGen#atCondExpr (CodeGen.java:913) javassist.compiler.ast.CondExpr#accept (CondExpr.java:42) javassist.compiler.JvstCodeGen#atCastToWrapper (JvstCodeGen.java:201) javassist.compiler.JvstCodeGen#atCastExpr (JvstCodeGen.java:171) javassist.compiler.ast.CastExpr#accept (CastExpr.java:54) javassist.compiler.CodeGen#compileExpr (CodeGen.java:223) javassist.compiler.CodeGen#atReturnStmnt2 (CodeGen.java:591) javassist.compiler.JvstCodeGen#atReturnStmnt (JvstCodeGen.java:424) javassist.compiler.CodeGen#atStmnt (CodeGen.java:356) javassist.compiler.ast.Stmnt#accept (Stmnt.java:49) javassist.compiler.CodeGen#atStmnt (CodeGen.java:344) javassist.compiler.ast.Stmnt#accept (Stmnt.java:49) javassist.compiler.CodeGen#atMethodBody (CodeGen.java:285) javassist.compiler.Javac#compileBody (Javac.java:212) javassist.CtBehavior#setBody (CtBehavior.java:341) javassist.CtBehavior#setBody (CtBehavior.java:316) org.apache.tapestry.enhance.ClassFabImpl#addMethod (ClassFabImpl.java:272) org.apache.tapestry.services.impl.HiveMindExpressionCompiler#compileExpr ession (HiveMindExpressionCompiler.java:221) ognl.OgnlRuntime#compileExpression (OgnlRuntime.java:388) ognl.Ognl#compileExpression (Ognl.java:123) org.apache.tapestry.services.impl.ExpressionCacheImpl#parse (ExpressionCacheImpl.java:129) org.apache.tapestry.services.impl.ExpressionCacheImpl#getCompiledExpress ion (ExpressionCacheImpl.java:91) $ExpressionCache_1118f7bbf54#getCompiledExpression ($ExpressionCache_1118f7bbf54.java:-1) ... -----Original Message----- From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] Sent: Monday, March 26, 2007 1:09 PM To: Tapestry users Subject: Re: OGNL AND errors Yep.....but this is probably still a bug...I'll get it tonight. On 3/26/07, Ben Dotte <[EMAIL PROTECTED]> wrote: > Ok, actually the concrete listSource implementation in this case does > extend ArrayList in addition to implementing the ListSource > interface--that's got to be where this is coming from. > > -----Original Message----- > From: Ben Dotte [mailto:[EMAIL PROTECTED] > Sent: Monday, March 26, 2007 12:10 PM > To: Tapestry users > Subject: RE: OGNL AND errors > > getListSource() returns a ListSource object, which is one of our own > interfaces. It has a getTotal() method that returns an int, which is > what I expect to have called in this case. > > So the problem appears to be that it thinks getListSource() returns a > java.util.List, then it tries to call the get() method on that. > > But the definition on BaseListContainerModel for getListSource() is > pretty clear: > public abstract ListSource getListSource(); > > ListSource does not extend any other interfaces so I'm unclear as to why > it would think it was a List. > > -----Original Message----- > From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] > Sent: Monday, March 26, 2007 12:05 PM > To: Tapestry users > Subject: Re: OGNL AND errors > > Aha......So what kind of interfaces does your listSource implement? > > On 3/26/07, Ben Dotte <[EMAIL PROTECTED]> wrote: > > Aha! "count" is a parameter, it is what is being passed in for count > > that is the problem. Here is the template portion: > > > > <showAll jwcid="@ShowAll" > > count="ognl:components.doxList.model.listSource.total" title="" > > pageName="MyDocuments" > > > <div class="shadeIconIndent"> > > <br/> > > <myDocs jwcid="[EMAIL PROTECTED]" > > allowItemsPerPageSelection="false"/> > > </div> > > </showAll> > > > > So the "components.doxList.model.listSource.total" is what isn't being > > evaluated properly. Looking closer at the stack trace I see how it is > > expanding the ognl: > > > > Unable to parse OGNL expression > > 'components.doxList.model.listSource.total': Error compiling > expression > > on object [EMAIL PROTECTED] with expression node > > components.doxList.model.listSource.total getter body: { return ($w) > > > (((java.util.List)((collective.listcontainer.model.BaseListContainerMode > > > l)((collective.mb.ui.components.MyDocumentsList)(($BuilderAccount_106)$2 > > > ).getComponents().get("doxList")).getModel()).getListSource()).get(total > > ));} setter body: null > > > > Notice it is calling getListSource().get(total). This should be > > getListSource().getTotal() (and it worked this way in 2.6). > > > > -----Original Message----- > > From: Ben Dotte [mailto:[EMAIL PROTECTED] > > Sent: Monday, March 26, 2007 11:16 AM > > To: Tapestry users > > Subject: RE: OGNL AND errors > > > > I upgraded javassist to 3.4.ga so it should be the same version. I > just > > verified that is the one on the build path too. I'm fairly certain I > got > > all of our dependencies up to date with the versions listed on the > > Tapestry site but I'll double check that as well. > > > > -----Original Message----- > > From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] > > Sent: Monday, March 26, 2007 11:12 AM > > To: Tapestry users > > Subject: Re: OGNL AND errors > > > > What version of javassist are you using? In my test suite I've created > > a similar count > 0 expression for every conceivable type / object > > combination I can think of with no failure. ...So I'm either not > > correctly re-creating the exact object structure you have or we are on > > different version of javassist. ..It should be 3.4ga (something like > > that) > > > > On 3/26/07, Ben Dotte <[EMAIL PROTECTED]> wrote: > > > I got the latest OGNL snapshot from 3-24 but the "ognl:count > 0" > > > expression still isn't working. I get a different exception however: > > > > > > Unable to parse OGNL expression 'count > 0': Error compiling > > expression > > > on object [EMAIL PROTECTED]/$ShowAll] with > > expression > > > node count > 0 getter body: null setter body: null > > > > > > Nested Exception: > > > caused by javassist.compiler.NoFieldException: no such field: total > > > javassist.compiler.TypeChecker#fieldAccess (TypeChecker.java:812) > > > javassist.compiler.TypeChecker#atFieldRead (TypeChecker.java:770) > > > javassist.compiler.TypeChecker#atMember (TypeChecker.java:920) > > > javassist.compiler.JvstTypeChecker#atMember > (JvstTypeChecker.java:65) > > > javassist.compiler.ast.Member#accept (Member.java:38) > > > javassist.compiler.JvstTypeChecker#atMethodArgs > > > (JvstTypeChecker.java:220) > > > javassist.compiler.TypeChecker#atMethodCallCore > (TypeChecker.java:702) > > > javassist.compiler.TypeChecker#atCallExpr (TypeChecker.java:681) > > > javassist.compiler.JvstTypeChecker#atCallExpr > > (JvstTypeChecker.java:156) > > > javassist.compiler.ast.CallExpr#accept (CallExpr.java:45) > > > javassist.compiler.JvstTypeChecker#atCastToWrapper > > > (JvstTypeChecker.java:125) > > > javassist.compiler.JvstTypeChecker#atCastExpr > > (JvstTypeChecker.java:97) > > > javassist.compiler.ast.CastExpr#accept (CastExpr.java:54) > > > javassist.compiler.CodeGen#doTypeCheck (CodeGen.java:235) > > > javassist.compiler.CodeGen#compileExpr (CodeGen.java:222) > > > javassist.compiler.CodeGen#atReturnStmnt2 (CodeGen.java:591) > > > javassist.compiler.JvstCodeGen#atReturnStmnt (JvstCodeGen.java:424) > > > javassist.compiler.CodeGen#atStmnt (CodeGen.java:356) > > > javassist.compiler.ast.Stmnt#accept (Stmnt.java:49) > > > javassist.compiler.CodeGen#atStmnt (CodeGen.java:344) > > > javassist.compiler.ast.Stmnt#accept (Stmnt.java:49) > > > javassist.compiler.CodeGen#atMethodBody (CodeGen.java:285) > > > javassist.compiler.Javac#compileBody (Javac.java:212) > > > javassist.CtBehavior#setBody (CtBehavior.java:341) > > > javassist.CtBehavior#setBody (CtBehavior.java:316) > > > org.apache.tapestry.enhance.ClassFabImpl#addMethod > > > (ClassFabImpl.java:272) > > > > > > org.apache.tapestry.services.impl.HiveMindExpressionCompiler#compileExpr > > > ession (HiveMindExpressionCompiler.java:221) > > > ognl.OgnlRuntime#compileExpression (OgnlRuntime.java:388) > > > ognl.Ognl#compileExpression (Ognl.java:123) > > > org.apache.tapestry.services.impl.ExpressionCacheImpl#parse > > > (ExpressionCacheImpl.java:129) > > > > > > org.apache.tapestry.services.impl.ExpressionCacheImpl#getCompiledExpress > > > ion (ExpressionCacheImpl.java:91) > > > $ExpressionCache_1118ef72fb5#getCompiledExpression > > > ($ExpressionCache_1118ef72fb5.java:-1) > > > org.apache.tapestry.binding.ExpressionBinding#resolveExpression > > > (ExpressionBinding.java:120) > > > org.apache.tapestry.binding.ExpressionBinding#getObject > > > (ExpressionBinding.java:111) > > > org.apache.tapestry.binding.AbstractBinding#getObject > > > (AbstractBinding.java:84) > > > org.apache.tapestry.enhance.EnhanceUtils#toInt > (EnhanceUtils.java:204) > > > $ShowAll_179#getCount ($ShowAll_179.java:-1) > > > ... > > > > > > -----Original Message----- > > > From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] > > > Sent: Friday, March 23, 2007 2:44 PM > > > To: Tapestry users > > > Subject: Re: OGNL AND errors > > > > > > Fix should be finished deploying in the next few minutes. > > > > > > On 3/23/07, Ben Dotte <[EMAIL PROTECTED]> wrote: > > > > Excellent thanks, that seems to have fixed the AND issue. Here's > one > > > > that still isn't working: > > > > > > > > <anyItems jwcid="@If" condition="ognl:count > 0"> > > > > > > > > @Parameter(required = true) > > > > public abstract int getCount(); > > > > public abstract void setCount(int count); > > > > > > > > This error occurred in the file javassist.compiler.CompileError: > > > missing > > > > member name > > > > This error occurred in the file ShowAll.html on line 7 > > > > > > > > Tapestry error message: Unable to parse OGNL expression 'count > > 0': > > > > Error compiling expression on object > > > > [EMAIL PROTECTED]/$ShowAll] with expression > node > > > > count > 0 getter body: null setter body: null > > > > > > > > Nested Stack Trace: > > > > > > > > caused by javassist.compiler.CompileError: missing member name > > > > javassist.compiler.Parser#parsePostfix (Parser.java:1068) > > > > javassist.compiler.Parser#parseUnaryExpr (Parser.java:887) > > > > javassist.compiler.Parser#parseBinaryExpr (Parser.java:774) > > > > javassist.compiler.Parser#parseConditionalExpr (Parser.java:718) > > > > javassist.compiler.Parser#parseExpression (Parser.java:698) > > > > javassist.compiler.Parser#parseArgumentList (Parser.java:1329) > > > > javassist.compiler.Parser#parseMethodCall (Parser.java:1177) > > > > javassist.compiler.Parser#parsePostfix (Parser.java:1034) > > > > javassist.compiler.Parser#parseCast (Parser.java:920) > > > > javassist.compiler.Parser#parseUnaryExpr (Parser.java:885) > > > > javassist.compiler.Parser#parseBinaryExpr (Parser.java:774) > > > > javassist.compiler.Parser#parseConditionalExpr (Parser.java:718) > > > > javassist.compiler.Parser#parseExpression (Parser.java:698) > > > > javassist.compiler.Parser#parsePrimaryExpr (Parser.java:1243) > > > > javassist.compiler.Parser#parsePostfix (Parser.java:1029) > > > > javassist.compiler.Parser#parseCast (Parser.java:920) > > > > javassist.compiler.Parser#parseUnaryExpr (Parser.java:885) > > > > javassist.compiler.Parser#parseCast (Parser.java:917) > > > > javassist.compiler.Parser#parseUnaryExpr (Parser.java:885) > > > > javassist.compiler.Parser#parseBinaryExpr (Parser.java:774) > > > > javassist.compiler.Parser#parseConditionalExpr (Parser.java:718) > > > > javassist.compiler.Parser#parseExpression (Parser.java:698) > > > > javassist.compiler.Parser#parseReturn (Parser.java:506) > > > > javassist.compiler.Parser#parseStatement (Parser.java:268) > > > > javassist.compiler.Parser#parseBlock (Parser.java:288) > > > > javassist.compiler.Parser#parseStatement (Parser.java:242) > > > > javassist.compiler.Javac#compileBody (Javac.java:203) > > > > javassist.CtBehavior#setBody (CtBehavior.java:341) > > > > javassist.CtBehavior#setBody (CtBehavior.java:316) > > > > org.apache.tapestry.enhance.ClassFabImpl#addMethod > > > > (ClassFabImpl.java:272) > > > > > > > > > > org.apache.tapestry.services.impl.HiveMindExpressionCompiler#compileExpr > > > > ession (HiveMindExpressionCompiler.java:221) > > > > ognl.OgnlRuntime#compileExpression (OgnlRuntime.java:388) > > > > ognl.Ognl#compileExpression (Ognl.java:123) > > > > org.apache.tapestry.services.impl.ExpressionCacheImpl#parse > > > > (ExpressionCacheImpl.java:129) > > > > > > > > > > org.apache.tapestry.services.impl.ExpressionCacheImpl#getCompiledExpress > > > > ion (ExpressionCacheImpl.java:91) > > > > $ExpressionCache_111801dfeec#getCompiledExpression > > > > ($ExpressionCache_111801dfeec.java:-1) > > > > org.apache.tapestry.binding.ExpressionBinding#resolveExpression > > > > (ExpressionBinding.java:120) > > > > org.apache.tapestry.binding.ExpressionBinding#getObject > > > > (ExpressionBinding.java:111) > > > > org.apache.tapestry.binding.AbstractBinding#getObject > > > > (AbstractBinding.java:84) > > > > org.apache.tapestry.enhance.EnhanceUtils#toInt > > (EnhanceUtils.java:204) > > > > $ShowAll_179#getCount ($ShowAll_179.java:-1) > > > > ... > > > > > > > > -----Original Message----- > > > > From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] > > > > Sent: Friday, March 23, 2007 12:40 PM > > > > To: Tapestry users > > > > Subject: Re: OGNL AND errors > > > > > > > > This particular issue should be fixed && deployed now. Feel free > to > > > > report any others...It only took so long because I discovered a > > > > critical section of code that hadn't had the same kind of > > refactoring > > > > that others had gone through recently..If similar new bugs come up > > > > they should be quicker to fix now. > > > > > > > > On 3/23/07, Ben Dotte <[EMAIL PROTECTED]> wrote: > > > > > Awesome, I really appreciate it. The simplest one is probably > the > > > last > > > > > one. It is just a String parameter on a component. > > > > > > > > > > <pageTitle jwcid="@If" condition="ognl:title != null && > > > title.length() > > > > > > > > > > 0"> > > > > > <span class="title"><title jwcid="@Insert" > > > > > mode="ognl:@[EMAIL PROTECTED]" > > > > > value="ognl:title" /></span> > > > > > </pageTitle> > > > > > > > > > > Java: > > > > > @Parameter > > > > > public abstract String getTitle(); > > > > > public abstract void setTitle(String title); > > > > > > > > > > -----Original Message----- > > > > > From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] > > > > > Sent: Friday, March 23, 2007 10:16 AM > > > > > To: Tapestry users > > > > > Subject: Re: OGNL AND errors > > > > > > > > > > Well I'm going in to fix one other tiny bug this morning, so > I'll > > > see > > > > > if what you wrote is enough to re-produce it. > > > > > > > > > > On 3/23/07, Ben Dotte <[EMAIL PROTECTED]> wrote: > > > > > > I tried the new version but unfortunately I'm still getting > the > > > same > > > > > > errors. > > > > > > > > > > > > -----Original Message----- > > > > > > From: Jesse Kuhnert [mailto:[EMAIL PROTECTED] > > > > > > Sent: Friday, March 23, 2007 9:45 AM > > > > > > To: Tapestry users > > > > > > Subject: Re: OGNL AND errors > > > > > > > > > > > > I think a new ognl version went out last night. I would try > that > > > > > first. > > > > > > > > > > > > On 3/23/07, Ben Dotte <[EMAIL PROTECTED]> wrote: > > > > > > > I recently tried updating from a Tapestry 4.1.2 snapshot a > > > couple > > > > > > months > > > > > > > old to one from 3-21. Along the way I had to incorporate the > > new > > > > 2.7 > > > > > > > OGNL snapshot from 3-18. I'm seeing multiple expressions on > > each > > > > > page > > > > > > > that no longer work. So far they have all involved AND > > > > expressions. > > > > > > Here > > > > > > > are some examples: > > > > > > > > > > > > > > > > > > > > > > > > > > > > info.rootCause.getMessage() != null && > > > > > > > info.rootCause.getMessage().length() > 0 > > > > > > > > > > > > > > currentElement.message != null && > > > currentElement.message.length() > > > > > > > > > > 0 > > > > > > > > > > > > > > sysMessages != null && sysMessages.size() != 0 > > > > > > > > > > > > > > title != null && title.length() > 0 > > > > > > > > > > > > > > > > > > > > > > > > > > > > Here is an example error message: > > > > > > > > > > > > > > Error compiling expression on object > > > > > > > > > > > > > > > > > > > > > > > > > > > > [EMAIL PROTECTED]/$SystemMessageDisplay > > > > > > > ] with expression node (sysMessages != null) && > > > > (sysMessages.size() > > > > > != > > > > > > > 0) getter body: { return ($w) > > > > > > > > > > > > > > > > > > > > > > > > > > > > ((ognl.OgnlOps.booleanValue((($SystemMessageDisplay_245)$2).getSysMessag > > > > > > > es() != null) ? > ognl.OgnlOps.convertValue(!ognl.OgnlOps.equal( > > > > ($w) > > > > > > > > > > > > > > > > > > > > > > > > > > > > ognl.OgnlOps.convertValue((($SystemMessageDisplay_245)$2).getSysMessages > > > > > > > ().size(), java.lang.Integer.class) , > > > ognl.OgnlOps.convertValue(0, > > > > > > > java.lang.Integer.class)), java.lang.Integer.class) : > > > > > > > (($SystemMessageDisplay_245)$2).getSysMessages() != null));} > > > > setter > > > > > > > body: { _node.setValue($1, $2, $3); } > > > > > > > > > > > > > > > > > > > > > > > > > > > > Our app is now specless so any objects being accessed are > > > defined > > > > on > > > > > > the > > > > > > > Java class. I can open a case in the OGNL issue tracking > > system > > > > but > > > > > I > > > > > > > wanted to check if anyone knows what is going on first since > I > > > > don't > > > > > > > want to have to go through and convert hundreds of > expressions > > > to > > > > > Java > > > > > > > code if I can avoid it (still haven't even gotten our Home > > page > > > to > > > > > > come > > > > > > > up yet..) > > > > > > > > > > > > > > > > > > > > > > > > > > > > Thanks, > > > > > > > > > > > > > > Ben > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > Jesse Kuhnert > > > > > > Tapestry/Dojo team member/developer > > > > > > > > > > > > Open source based consulting work centered around > > > > > > dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > > For additional commands, e-mail: > [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > Jesse Kuhnert > > > > > Tapestry/Dojo team member/developer > > > > > > > > > > Open source based consulting work centered around > > > > > dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > > > > > > -- > > > > Jesse Kuhnert > > > > Tapestry/Dojo team member/developer > > > > > > > > Open source based consulting work centered around > > > > dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > > > > -- > > > Jesse Kuhnert > > > Tapestry/Dojo team member/developer > > > > > > Open source based consulting work centered around > > > dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > -- > > Jesse Kuhnert > > Tapestry/Dojo team member/developer > > > > Open source based consulting work centered around > > dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > -- > Jesse Kuhnert > Tapestry/Dojo team member/developer > > Open source based consulting work centered around > dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Jesse Kuhnert Tapestry/Dojo team member/developer Open source based consulting work centered around dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Jesse Kuhnert Tapestry/Dojo team member/developer Open source based consulting work centered around dojo/tapestry/tacos/hivemind. http://blog.opencomponentry.com --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]