You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Howard M. Lewis Ship (JIRA)" <ta...@jakarta.apache.org> on 2005/09/13 02:27:31 UTC
[jira] Commented: (TAPESTRY-642) Injections that cause bad casts need better reporting
[ http://issues.apache.org/jira/browse/TAPESTRY-642?page=comments#action_12323293 ]
Howard M. Lewis Ship commented on TAPESTRY-642:
-----------------------------------------------
First trick of enhancement problems; enable debugging by updating log4j.properties:
log4j.category.tapestry.enhance.ComponentConstructorFactory=debug
Now I can see the generated class:
ComponentConstructorFactory [DEBUG] Creating class:
ClassFab[
public class $ReportInfo_26 extends com.vaisala.ww.ui.pages.report.ReportInfo
implements org.apache.tapestry.event.PageDetachListener
private org.apache.tapestry.form.IFormComponent _$tallNoField;
private org.apache.tapestry.form.IFormComponent _$otherField;
private org.apache.tapestry.form.IFormComponent _$otherDetailField;
private com.vaisala.ww.ui.data.UserIdentity _$userIdentity;
private org.apache.tapestry.engine.state.ApplicationStateManager _$applicationStateManager;
private com.vaisala.ww.ui.data.ReportProposal _$proposal;
private com.vaisala.ww.ui.services.ReportProposalMapURLFactory _$mapFactory;
private org.apache.tapestry.components.Block _$content;
private org.apache.tapestry.services.ComponentMessagesSource _$componentMessagesSource;
private org.apache.hivemind.Messages _$messages;
private org.apache.tapestry.spec.IComponentSpecification _$specification;
private boolean _$tallNo;
private boolean _$tallNo$default;
private boolean _$tallYes;
private boolean _$tallYes$default;
private java.lang.String _$message;
private java.lang.String _$message$defaultValue;
public $ReportInfo_26(org.apache.tapestry.engine.state.ApplicationStateManager $1, com.vaisala.ww.ui.services.ReportProposalMapURLFactory $2, org.apache.tapestry.services.ComponentMessagesSource $3, org.apache.tapestry.spec.IComponentSpecification $4)
{
_$applicationStateManager = $1;
_$mapFactory = $2;
_$componentMessagesSource = $3;
_$specification = $4;
}
public java.lang.String nameAndCompany(java.lang.String $1, java.lang.String $2, java.lang.String $3)
{
java.lang.Object[] params = new java.lang.Object[3];
params[0] = $1;
params[1] = $2;
params[2] = $3;
return getMessages().format("name-and-company", params);
}
public java.lang.String otherIsRequired()
{
return getMessages().getMessage("other-is-required");
}
public java.lang.String getNavigationTitle()
{
return getMessages().getMessage("nav-title");
}
public void setUserIdentity(com.vaisala.ww.ui.data.UserIdentity $1)
{
_$applicationStateManager.store("userIdentity", $1);
_$userIdentity = $1;
}
public boolean isTallYes()
return _$tallYes;
public java.lang.String formWasCancelled()
{
return getMessages().getMessage("form-was-cancelled");
}
public com.vaisala.ww.ui.services.ReportProposalMapURLFactory getMapFactory()
return _$mapFactory;
public org.apache.tapestry.form.IFormComponent getOtherField()
return _$otherField;
public void setProposal(com.vaisala.ww.ui.data.ReportProposal $1)
{
_$applicationStateManager.store("reportProposal", $1);
_$proposal = $1;
}
public boolean isTallNo()
return _$tallNo;
public void setTallYes(boolean $1)
{
org.apache.tapestry.Tapestry#fireObservedChange(this, "tallYes", ($w) $1);
_$tallYes = $1;
}
public com.vaisala.ww.ui.data.ReportProposal getProposal()
{
if (_$proposal == null)
_$proposal = (com.vaisala.ww.ui.data.ReportProposal) _$applicationStateManager.get("reportProposal");
return _$proposal;
}
public org.apache.tapestry.form.IFormComponent getTallNoField()
return _$tallNoField;
public org.apache.tapestry.valid.IValidationDelegate getDelegate()
return (org.apache.tapestry.valid.IValidationDelegate) getBeans().getBean("delegate");
public java.lang.String getMessage()
return _$message;
public org.apache.tapestry.form.IFormComponent getOtherDetailField()
return _$otherDetailField;
public com.vaisala.ww.ui.pages.UIMPage getAccountManagement()
return (com.vaisala.ww.ui.pages.UIMPage)getPage().getRequestCycle().getPage("account/AccountManagement");
public java.lang.String mustSetTallYesOrNo()
{
return getMessages().getMessage("must-set-tall-yes-or-no");
}
public com.vaisala.ww.ui.data.UserIdentity getUserIdentity()
{
if (_$userIdentity == null)
_$userIdentity = (com.vaisala.ww.ui.data.UserIdentity) _$applicationStateManager.get("userIdentity");
return _$userIdentity;
}
public org.apache.tapestry.spec.IComponentSpecification getSpecification()
return _$specification;
public void setTallNo(boolean $1)
{
org.apache.tapestry.Tapestry#fireObservedChange(this, "tallNo", ($w) $1);
_$tallNo = $1;
}
public java.lang.String yesOrNo()
{
return getMessages().getMessage("yes-or-no");
}
public void setMessage(java.lang.String $1)
_$message = $1;
public void pageDetached(org.apache.tapestry.event.PageEvent $1)
{
_$userIdentity = null;
_$proposal = null;
_$tallNo = _$tallNo$default;
_$tallYes = _$tallYes$default;
_$message = _$message$defaultValue;
}
public org.apache.tapestry.components.Block getContent()
return _$content;
public org.apache.hivemind.Messages getMessages()
{
if (_$messages == null)
_$messages = _$componentMessagesSource.getMessages(this);
return _$messages;
}
public void finishLoad(org.apache.tapestry.IRequestCycle $1, org.apache.tapestry.engine.IPageLoader $2, org.apache.tapestry.spec.IComponentSpecification $3)
{
super.finishLoad($$);
_$tallNoField = (org.apache.tapestry.form.IFormComponent) getComponent("tallNo");
_$otherField = (org.apache.tapestry.form.IFormComponent) getComponent("other");
_$otherDetailField = (org.apache.tapestry.form.IFormComponent) getComponent("otherDetail");
_$content = (org.apache.tapestry.components.Block) getComponent("content");
_$tallNo$default = _$tallNo;
_$tallYes$default = _$tallYes;
_$message$defaultValue = _$message;
getPage().addPageDetachListener(this);
}
]
> Injections that cause bad casts need better reporting
> -----------------------------------------------------
>
> Key: TAPESTRY-642
> URL: http://issues.apache.org/jira/browse/TAPESTRY-642
> Project: Tapestry
> Type: Bug
> Components: Framework
> Versions: 4.0
> Reporter: Howard M. Lewis Ship
> Assignee: Howard M. Lewis Ship
>
> When injection code performs a cast and a ClassCastException occurs, it's very difficult to determine what actually failed.
> The exception report provides no details (not an accurate location, and no additional information).
> Unable to instantiate component report/ReportInfo: $BaseComponent_2
> component: $ReportInfo_26@1f11507[report/ReportInfo]
> location: context:/WEB-INF/report/ReportInfo.page, line 6, column 23
> 1 <?xml version="1.0"?>
> 2 <!DOCTYPE page-specification PUBLIC
> 3 "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
> 4 "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
> 5
> 6 <page-specification>
> 7
> 8
> 9 <component id="tallYes" type="Checkbox">
> 10 <binding name="value" value="tallYes"/>
> 11 </component>
>
> java.lang.ClassCastException
> $BaseComponent_2
> Stack Trace:
> * $ReportInfo_26.finishLoad($ReportInfo_26.java)
> * org.apache.tapestry.pageload.PageLoader.constructComponent(PageLoader.java:470)
> * org.apache.tapestry.pageload.PageLoader.loadPage(PageLoader.java:639)
> * $IPageLoader_1064cccc780.loadPage($IPageLoader_1064cccc780.java)
> * $IPageLoader_1064cccc781.loadPage($IPageLoader_1064cccc781.java)
> * org.apache.tapestry.pageload.PageSource.getPage(PageSource.java:118)
> * $IPageSource_1064cccc6eb.getPage($IPageSource_1064cccc6eb.java)
> * org.apache.tapestry.engine.RequestCycle.loadPage(RequestCycle.java:265)
> * org.apache.tapestry.engine.RequestCycle.getPage(RequestCycle.java:248)
> The exception is occuring inside the finishLoad() method of the enhanced class.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org