[ http://issues.apache.org/jira/browse/TAPESTRY-755?page=all ]
Howard M. Lewis Ship updated TAPESTRY-755:
------------------------------------------
Attachment: SandboxPage.java
InjectInheritance.java
InjectInheritance.page
Ok, so what we have here is an HTML template, a page specification, a base
class, and a page class. Seems to fit your descritpion as accurately as I can,
and it works just fine.
Are you seeing exceptions, or anything in the log?
Also, try the following. Modify log4j.properties and add
log4j.category.tapestry.enhance.ComponentConstructorFactory=debug
When you run the app, you should see quite a bit of activity as page and
component classes are enhanced to form concrete subclasses. In my example:
ComponentConstructorFactory [DEBUG] Creating class:
ClassFab[
public class $InjectInheritance_0 extends pages.InjectInheritance
private org.apache.tapestry.services.ComponentMessagesSource
_$componentMessagesSource;
private org.apache.hivemind.Messages _$messages;
private org.apache.tapestry.spec.IComponentSpecification _$specification;
private org.apache.tapestry.web.WebRequest _$webRequest;
public
$InjectInheritance_0(org.apache.tapestry.services.ComponentMessagesSource $1,
org.apache.tapestry.spec.IComponentSpecification $2,
org.apache.tapestry.web.WebRequest $3)
{
_$componentMessagesSource = $1;
_$specification = $2;
_$webRequest = $3;
}
public org.apache.tapestry.spec.IComponentSpecification getSpecification()
return _$specification;
public org.apache.hivemind.Messages getMessages()
{
if (_$messages == null)
_$messages = _$componentMessagesSource.getMessages(this);
return _$messages;
}
public org.apache.tapestry.web.WebRequest getWebRequest()
return _$webRequest;
]
> injection: Beware of where you declare the abstract method
> ----------------------------------------------------------
>
> Key: TAPESTRY-755
> URL: http://issues.apache.org/jira/browse/TAPESTRY-755
> Project: Tapestry
> Type: Bug
> Components: Framework
> Versions: 4.0
> Environment: Tested on Tomcat 5.5.9 / JDK 1.5 / FC2
> Reporter: Henrik Vendelbo
> Priority: Minor
> Attachments: InjectInheritance.html, InjectInheritance.java,
> InjectInheritance.page, SandboxPage.java
>
> Take the following class hierachy: BasePage -> MarketPage -> FeaturePage
> If you inject into FeaturePage using an <inject> tag in the page file, but
> the abstract method is declared in MarketPage, the enhanced version of
> FeaturePage will _not_ have an implementation of the accessor method.
> If you try to declare the abstract method in FeaturePage as well, it will
> _not_ have an implementation of the accessor method.
> If you instead do an @InjectObject in MarketPage(and remember to remove the
> inject tag), the enhanced FeaturePage class will have an implementation of
> the accessor method.
> I other words the current functionality requires that you inject into the
> class that first declares the abstract method, and not a sub 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]