You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by "Robert J. Walker" <rw...@mshare.net> on 2007/04/16 21:32:34 UTC

Tap 4.1.1: Unable to add clientId() method

I've just created a new page and was trying it out and I got a bizarre error when calling cycle.getPage() to get a reference to the new page:

org.apache.hivemind.ApplicationRuntimeException: Error at context:/WEB-INF/PasswordUpdate.page, line 3, column 69: Error adding property clientId to class mshare.web.tapestry.page.PasswordUpdate: Unable to add method java.lang.String getClientId() to class $PasswordUpdate_34: [source error] no such field: apache [context:/WEB-INF/PasswordUpdate.page, line 3, column 69]
	at org.apache.hivemind.impl.StrictErrorHandler.error(StrictErrorHandler.java:39)
	at org.apache.hivemind.impl.ErrorLogImpl.error(ErrorLogImpl.java:40)
	at org.apache.tapestry.enhance.ClientIdPropertyWorker.performEnhancement(ClientIdPropertyWorker.java:54)
	at $EnhancementWorker_111fbcab83a.performEnhancement($EnhancementWorker_111fbcab83a.java)
	at $EnhancementWorker_111fbcab84e.performEnhancement($EnhancementWorker_111fbcab84e.java)
	at $EnhancementWorker_111fbcab822.performEnhancement($EnhancementWorker_111fbcab822.java)
	at org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:103)
	at $ComponentConstructorFactory_111fbcab80f.getComponentConstructor($ComponentConstructorFactory_111fbcab80f.java)
	at org.apache.tapestry.pageload.PageLoader.instantiatePage(PageLoader.java:564)
	at org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:591)
	at $IPageLoader_111fbcab7ff.loadPage($IPageLoader_111fbcab7ff.java)
	at $IPageLoader_111fbcab800.loadPage($IPageLoader_111fbcab800.java)
	at org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:119)
	at $IPageSource_111fbcab75f.getPage($IPageSource_111fbcab75f.java)
	at org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:248)
	at org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:235)
...
Caused by: org.apache.hivemind.ApplicationRuntimeException: Unable to add method java.lang.String getClientId() to class $PasswordUpdate_34: [source error] no such field: apache
	at org.apache.hivemind.service.impl.ClassFabImpl.addMethod(ClassFabImpl.java:295)
	at org.apache.tapestry.enhance.EnhancementOperationImpl.addMethod(EnhancementOperationImpl.java:397)
	at org.apache.tapestry.enhance.ClientIdPropertyWorker.createProperty(ClientIdPropertyWorker.java:99)
	at org.apache.tapestry.enhance.ClientIdPropertyWorker.performEnhancement(ClientIdPropertyWorker.java:50)
	... 69 more
Caused by: javassist.CannotCompileException: [source error] no such field: apache
	at javassist.CtBehavior.setBody(CtBehavior.java:347)
	at javassist.CtBehavior.setBody(CtBehavior.java:316)
	at org.apache.hivemind.service.impl.ClassFabImpl.addMethod(ClassFabImpl.java:288)
	... 72 more
Caused by: compile error: no such field: apache
	at javassist.compiler.MemberResolver.lookupField(MemberResolver.java:302)
	at javassist.compiler.MemberResolver.lookupFieldByJvmName(MemberResolver.java:288)
	at javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:829)
	at javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:770)
	at javassist.compiler.TypeChecker.atExpr(TypeChecker.java:571)
	at javassist.compiler.ast.Expr.accept(Expr.java:67)
	at javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:827)
	at javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:770)
	at javassist.compiler.TypeChecker.atExpr(TypeChecker.java:571)
	at javassist.compiler.ast.Expr.accept(Expr.java:67)
	at javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:827)
	at javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:770)
	at javassist.compiler.TypeChecker.atExpr(TypeChecker.java:571)
	at javassist.compiler.ast.Expr.accept(Expr.java:67)
	at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:653)
	at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
	at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
	at javassist.compiler.JvstTypeChecker.atMethodArgs(JvstTypeChecker.java:220)
	at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:702)
	at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
	at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
	at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
	at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:235)
	at javassist.compiler.CodeGen.compileExpr(CodeGen.java:222)
	at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:591)
	at javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:356)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:344)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
	at javassist.compiler.CodeGen.atIfStmnt(CodeGen.java:384)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:348)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
	at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:285)
	at javassist.compiler.Javac.compileBody(Javac.java:212)
	at javassist.CtBehavior.setBody(CtBehavior.java:341)
	... 74 more

---

PasswordUpdate.page:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE page-specification PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN" "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<page-specification class="mshare.web.tapestry.page.PasswordUpdate">
	<property name="invalid"/>
	<property name="expired"/>
	<property name="password"/>
	<property name="confirm"/>
	<property name="callback"/>

	<component id="password" type="TextField">
		<binding name="displayName" value="literal:Password"/>
		<binding name="value" value="password"/>
		<binding name="hidden" value="true"/>
	</component>

	<component id="confirm" type="TextField">
		<binding name="displayName" value="literal:Confirm"/>
		<binding name="value" value="confirm"/>
		<binding name="hidden" value="true"/>
	</component>

	<asset name="loginButton" path="/image/template/login/login-button.gif"/>
</page-specification>

---

The PasswordUpdate class itself is an abstract class extending BasePage. It does not already contain a clientId property, and it appears that Tapestry is trying to enhance the page to add a clientId property and encountering an error in the attempt. I have no idea why it's looking for a field named apache. The only place the word "apache" is even referenced is in the .page file's doctype. Any ideas?

Robert J. Walker

RE: Tap 4.1.1: Unable to add clientId() method

Posted by "Robert J. Walker" <rw...@mshare.net>.
Figured out why it's happening. Any page that has a form on it and a method called getOrg() will crash. Details in JIRA: https://issues.apache.org/jira/browse/TAPESTRY-1415.

Robert J. Walker

-----Original Message-----
From: Robert J. Walker [mailto:rwalker@mshare.net] 
Sent: Monday, April 16, 2007 1:33 PM
To: Tapestry users
Subject: Tap 4.1.1: Unable to add clientId() method

I've just created a new page and was trying it out and I got a bizarre error when calling cycle.getPage() to get a reference to the new page:

org.apache.hivemind.ApplicationRuntimeException: Error at context:/WEB-INF/PasswordUpdate.page, line 3, column 69: Error adding property clientId to class mshare.web.tapestry.page.PasswordUpdate: Unable to add method java.lang.String getClientId() to class $PasswordUpdate_34: [source error] no such field: apache [context:/WEB-INF/PasswordUpdate.page, line 3, column 69]
	at org.apache.hivemind.impl.StrictErrorHandler.error(StrictErrorHandler.java:39)
	at org.apache.hivemind.impl.ErrorLogImpl.error(ErrorLogImpl.java:40)
	at org.apache.tapestry.enhance.ClientIdPropertyWorker.performEnhancement(ClientIdPropertyWorker.java:54)
	at $EnhancementWorker_111fbcab83a.performEnhancement($EnhancementWorker_111fbcab83a.java)
	at $EnhancementWorker_111fbcab84e.performEnhancement($EnhancementWorker_111fbcab84e.java)
	at $EnhancementWorker_111fbcab822.performEnhancement($EnhancementWorker_111fbcab822.java)
	at org.apache.tapestry.services.impl.ComponentConstructorFactoryImpl.getComponentConstructor(ComponentConstructorFactoryImpl.java:103)
	at $ComponentConstructorFactory_111fbcab80f.getComponentConstructor($ComponentConstructorFactory_111fbcab80f.java)
	at org.apache.tapestry.pageload.PageLoader.instantiatePage(PageLoader.java:564)
	at org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:591)
	at $IPageLoader_111fbcab7ff.loadPage($IPageLoader_111fbcab7ff.java)
	at $IPageLoader_111fbcab800.loadPage($IPageLoader_111fbcab800.java)
	at org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:119)
	at $IPageSource_111fbcab75f.getPage($IPageSource_111fbcab75f.java)
	at org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:248)
	at org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:235)
...
Caused by: org.apache.hivemind.ApplicationRuntimeException: Unable to add method java.lang.String getClientId() to class $PasswordUpdate_34: [source error] no such field: apache
	at org.apache.hivemind.service.impl.ClassFabImpl.addMethod(ClassFabImpl.java:295)
	at org.apache.tapestry.enhance.EnhancementOperationImpl.addMethod(EnhancementOperationImpl.java:397)
	at org.apache.tapestry.enhance.ClientIdPropertyWorker.createProperty(ClientIdPropertyWorker.java:99)
	at org.apache.tapestry.enhance.ClientIdPropertyWorker.performEnhancement(ClientIdPropertyWorker.java:50)
	... 69 more
Caused by: javassist.CannotCompileException: [source error] no such field: apache
	at javassist.CtBehavior.setBody(CtBehavior.java:347)
	at javassist.CtBehavior.setBody(CtBehavior.java:316)
	at org.apache.hivemind.service.impl.ClassFabImpl.addMethod(ClassFabImpl.java:288)
	... 72 more
Caused by: compile error: no such field: apache
	at javassist.compiler.MemberResolver.lookupField(MemberResolver.java:302)
	at javassist.compiler.MemberResolver.lookupFieldByJvmName(MemberResolver.java:288)
	at javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:829)
	at javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:770)
	at javassist.compiler.TypeChecker.atExpr(TypeChecker.java:571)
	at javassist.compiler.ast.Expr.accept(Expr.java:67)
	at javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:827)
	at javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:770)
	at javassist.compiler.TypeChecker.atExpr(TypeChecker.java:571)
	at javassist.compiler.ast.Expr.accept(Expr.java:67)
	at javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:827)
	at javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:770)
	at javassist.compiler.TypeChecker.atExpr(TypeChecker.java:571)
	at javassist.compiler.ast.Expr.accept(Expr.java:67)
	at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:653)
	at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
	at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
	at javassist.compiler.JvstTypeChecker.atMethodArgs(JvstTypeChecker.java:220)
	at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:702)
	at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:681)
	at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:156)
	at javassist.compiler.ast.CallExpr.accept(CallExpr.java:45)
	at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:235)
	at javassist.compiler.CodeGen.compileExpr(CodeGen.java:222)
	at javassist.compiler.CodeGen.atReturnStmnt2(CodeGen.java:591)
	at javassist.compiler.JvstCodeGen.atReturnStmnt(JvstCodeGen.java:424)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:356)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:344)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
	at javassist.compiler.CodeGen.atIfStmnt(CodeGen.java:384)
	at javassist.compiler.CodeGen.atStmnt(CodeGen.java:348)
	at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
	at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:285)
	at javassist.compiler.Javac.compileBody(Javac.java:212)
	at javassist.CtBehavior.setBody(CtBehavior.java:341)
	... 74 more

---

PasswordUpdate.page:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE page-specification PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN" "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<page-specification class="mshare.web.tapestry.page.PasswordUpdate">
	<property name="invalid"/>
	<property name="expired"/>
	<property name="password"/>
	<property name="confirm"/>
	<property name="callback"/>

	<component id="password" type="TextField">
		<binding name="displayName" value="literal:Password"/>
		<binding name="value" value="password"/>
		<binding name="hidden" value="true"/>
	</component>

	<component id="confirm" type="TextField">
		<binding name="displayName" value="literal:Confirm"/>
		<binding name="value" value="confirm"/>
		<binding name="hidden" value="true"/>
	</component>

	<asset name="loginButton" path="/image/template/login/login-button.gif"/>
</page-specification>

---

The PasswordUpdate class itself is an abstract class extending BasePage. It does not already contain a clientId property, and it appears that Tapestry is trying to enhance the page to add a clientId property and encountering an error in the attempt. I have no idea why it's looking for a field named apache. The only place the word "apache" is even referenced is in the .page file's doctype. Any ideas?

Robert J. Walker


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org