Hi.
I just did a test upgrade on one of our applications to 5.3-beta-6 (from
5.2.6) and I found two problem areas.

****
The first problem I encountered are connected with abstract classes and @Log
(I have not tried other annotations).

I have a parent class and two subclasses.
The parent is declared as a abstract class as the logic in the subclasses
will differ slightly but they are both using Parent.tml and the same setup
routine.

public abstract class Parent {
  @Log
  public void setupRender() {
  }
}
public class ChildA extends Parent {
 ....
}
public class ChildB extends Parent {
  @Override
  public void setupRender() {
    super.setupRender();
  }
 ....
}


In T5.2.6, this was acceptable, but T5.3-beta-6 gives this this error:
org.apache.tapestry5.internal.services.RenderQueueException
Render queue error in SetupRender[ChildA]: Unable to locate Method public
void setupRender(): com.example.newapp.pages.ChildA.setupRender()
activeComponents:
ChildA (class com.example.newapp.pages.ChildA)
java.lang.NoSuchMethodException
com.example.newapp.pages.ChildA.setupRender()

(The stacktrace  are included at the end of the e-mail)



Please note that the error will _only_ occur if the page ChildA is accessed
before ChildB. Once ChildB (with the overridden method) has been accessed,
ChildA will work as expected.


*****
The second problem is that the tailing whitespace on properties are no
longer ignored.
${message:greeting } will therefore give a  [[missing key: greeting ]]
while ${message:greeting}  works as it should.

One could agree that we should not insert the whitespace, but as the editor
(Eclipse) is eager to insert a whitespace after writing ${, this will
probably be a problem for several users.


Am I breaking the conventions here, or should I file 2 jiras?


Regards

Sigbjørn Tvedt


-----------------------------------------------------------------------------
Stack trace from the parent/child problem:
java.lang.Class.getDeclaredMethod(Class.java:1954)
org.apache.tapestry5.internal.plastic.MethodInvocationBundle.findMethod(MethodInvocationBundle.java:59)

org.apache.tapestry5.internal.plastic.MethodInvocationBundle.getMethod(MethodInvocationBundle.java:42)

org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.getMethod(AbstractMethodInvocation.java:110)

org.apache.tapestry5.ioc.internal.services.MethodLogger.entry(MethodLogger.java:63)

org.apache.tapestry5.ioc.internal.services.LoggingAdvice.advise(LoggingAdvice.java:41)

org.apache.tapestry5.internal.plastic.AbstractMethodInvocation.proceed(AbstractMethodInvocation.java:86)

com.example.newapp.pages.Parent.setupRender(Parent.java)
com.example.newapp.pages.Parent.setupRender(Parent.java)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$SetupRenderPhase.invokeComponent(ComponentPageElementImpl.java:174)

org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.invoke(ComponentPageElementImpl.java:133)

org.apache.tapestry5.internal.structure.ComponentPageElementImpl$SetupRenderPhase.render(ComponentPageElementImpl.java:181)

org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:72)

org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:124)

org.apache.tapestry5.internal.services.MarkupRendererTerminator.renderMarkup(MarkupRendererTerminator.java:37)

org.apache.tapestry5.services.TapestryModule$31.renderMarkup(TapestryModule.java:1998)

org.apache.tapestry5.services.TapestryModule$30.renderMarkup(TapestryModule.java:1982)

org.apache.tapestry5.services.TapestryModule$29.renderMarkup(TapestryModule.java:1964)

org.apache.tapestry5.services.TapestryModule$28.renderMarkup(TapestryModule.java:1949)

org.apache.tapestry5.services.TapestryModule$27.renderMarkup(TapestryModule.java:1935)

org.apache.tapestry5.services.TapestryModule$26.renderMarkup(TapestryModule.java:1917)

org.apache.tapestry5.services.TapestryModule$25.renderMarkup(TapestryModule.java:1898)

org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:47)

org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:67)

org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:64)

org.apache.tapestry5.services.TapestryModule$38.handle(TapestryModule.java:2227)

org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)

org.apache.tapestry5.services.InitializeActivePageName.handlePageRender(InitializeActivePageName.java:47)

org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)

org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:297)

org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)

org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:894)

org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:884)

org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:90)

com.example.newapp.services.AppModule$1.service(AppModule.java:90)
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:105)

org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:95)

org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)

org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:119)

org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:248)

org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)

org.apache.tapestry5.services.TapestryModule$1.service(TapestryModule.java:844)

org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:160)




--------------------
java.library.path
/usr/lib/jvm/java-6-openjdk/jre/lib/amd64/server
/usr/lib/jvm/java-6-openjdk/jre/lib/amd64
/usr/lib/jvm/java-6-openjdk/jre/../lib/amd64
/usr/java/packages/lib/amd64
/usr/lib/x86_64-linux-gnu/jni
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu
/usr/lib/jni
/lib
/usr/lib
java.runtime.name
OpenJDK Runtime Environment
java.runtime.version
1.6.0_22-b22
java.specification.name
Java Platform API Specification
java.specification.vendor
Sun Microsystems Inc.
java.specification.version
1.6
java.vendor
Sun Microsystems Inc.
java.vendor.url
http://java.sun.com/
java.vendor.url.bug
http://java.sun.com/cgi-bin/bugreport.cgi
java.version
1.6.0_22
java.vm.info
mixed mode
java.vm.name
OpenJDK 64-Bit Server VM
java.vm.specification.name
Java Virtual Machine Specification
java.vm.specification.vendor
Sun Microsystems Inc.
java.vm.specification.version
1.0
java.vm.vendor
Sun Microsystems Inc.
java.vm.version
20.0-b11

Reply via email to