Hi,
This is a question more for my own education rather than it being an 'real'
issue...
Using Tapestry 4.0.1:
In one of our page superclasses we define an abstract method that throws 2
exceptions, there are no associated properties within the .page and the
method isn't used as a listener, but rather implemented by subclasses.
protected abstract void saveDraft() throws IOException,
NoSuchContentException;
The problem appears to be that Tapestry/Hivemind expects to enhance/find an
implementation that matches this signature exactly - forcing the declaration
of checked exceptions by each implementing subclass even if they are not
thrown. If I instead define the method within an interface (which I don't
want due to visibility) then the same issue still occurs:
------------------
org.apache.hivemind.ApplicationRuntimeException
Error at context:/WEB-INF/CaseImageStudyData.page, line 7, column 74: Method
'protected abstract void
com.syndicom.scn.ui.pages.framework.BaseCasePage.saveDraft()
throws java.io.IOException,com.syndicom.core.content.NoSuchContentException'
(declared in class com.syndicom.scn.ui.pages.framework.BaseCasePage) has no
implementation in class com.syndicom.scn.ui.pages.CaseImageStudyData (or
enhanced subclass $CaseImageStudyData_47).
------------------
Is there any way to 'tone down' this behaviour - I could understand
enhancement/whatever occurring if the method was public and had the
potential to be used as a property... Could protected methods be excluded?
Declaring that the exceptions are actually thrown solves the problem, but
I'd rather avoid adding @SuppressWarnings("unused") if at all possible...
Thanks for any information!
Ash