[CONF] Apache Tapestry Logging in Tapestry

2014-01-18 Thread Bob Harner (Confluence)














  


Bob Harner edited the page:
 


Logging in Tapestry   




 Comment: fixed language param of code macro 


...
An example from the startup of a Tapestry application:



 No Format




 

[INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.services.TapestryModule
[INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.internal.services.InternalModule
[INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.services.assets.AssetsModule
[INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.services.pageload.PageLoadModule
[INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.integration.app1.services.AppModule
[INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.integration.app1.services.TestOnlyModule
[DEBUG] Registry [  1] -- Creating proxy for service ServletApplicationInitializer
[DEBUG] Registry [  2] -- Obtaining AspectDecorator service
[DEBUG] Registry [  3] -- Creating proxy for service AspectDecorator
[DEBUG] Registry [  3] -- Creating proxy for service AspectDecorator [59.42 ms]
[DEBUG] Registry [  2] -- Obtaining AspectDecorator service [62.49 ms]
[DEBUG] Registry [  1] -- Creating proxy for service ServletApplicationInitializer [113.98 ms]
[DEBUG] Registry [  1] -- Realizing service ServletApplicationInitializer
[DEBUG] Registry [  2] -- Realizing service ServletApplicationInitializer via org.apache.tapestry5.services.TapestryModule.buildServletApplicationInitializer(Logger, List, ApplicationInitializer) (at TapestryModule.java:1398)
[DEBUG] Registry [  3] -- Constructing module class org.apache.tapestry5.services.TapestryModule
[DEBUG] Registry [  4] -- Determining injection value for parameter #1 (org.apache.tapestry5.ioc.services.PipelineBuilder)
[DEBUG] Registry [  5] -- Creating proxy for service MasterObjectProvider
[DEBUG] Registry [  5] -- Creating proxy for service MasterObjectProvider [5.77 ms]
[DEBUG] Registry [  5] -- Realizing service MasterObjectProvider
[DEBUG] Registry [  6] -- Realizing service MasterObjectProvider via org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl(List, OperationTracker) (at MasterObjectProviderImpl.java:32) via org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at TapestryIOCModule.java:49)
[DEBUG] Registry [  7] -- Invoking constructor org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl(List, OperationTracker) (at MasterObjectProviderImpl.java:32) via org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at TapestryIOCModule.java:49)
[DEBUG] Registry [  8] -- Determining injection value for parameter #1 (java.util.List)
[DEBUG] Registry [  9] -- Collecting ordered configuration for service MasterObjectProvider
[DEBUG] Registry [ 10] -- Invoking method org.apache.tapestry5.ioc.services.TapestryIOCModule.setupObjectProviders(OrderedConfiguration, ServiceOverride) (at TapestryIOCModule.java:131).
[DEBUG] Registry [ 11] -- Determining injection value for parameter #1 (org.apache.tapestry5.ioc.OrderedConfiguration)
[DEBUG] Registry [ 11] -- Determining injection value for parameter #1 (org.apache.tapestry5.ioc.OrderedConfiguration) [0.17 ms]
[DEBUG] Registry [ 11] -- 

[CONF] Apache Tapestry Logging

2013-01-27 Thread confluence







Logging
Page edited by Bob Harner


Comment:
Expanded logging example a little


 Changes (5)
 




...
Tapestry makes extensive use of [SLF4J|http://www.slf4j.org/] to log details about the creation and operation of your page and component classes.  
The default configuration for logging uses [Log4J|http://logging.apache.org/log4j/] as the logging toolkit, though [this can be changed|Logging in Tapestry#ConfiguringTapestryforotherLoggingToolkits]. 
 h1. Class to Logger 
...
public class MyPage { 
@Inject
private Logger logger; 
 . . . 
 
  . . . 
void onSuccessFromForm() { logger.info(Changes saved successfully); } 
{code}  
...
h1. Component Transformation Debugging  
Tapestry performs a transformation on your classes as they are loaded, often and sometimes you want to gain insight into what it has done. Tapestry uses a secondary logger, consisting of the class name with the prefix tapestry.transformer., to log (at debug level) the results of transforming the class. 
 Example: 
...


Full Content


Related Articles


 Page:
 Logging





 Page:
 Logging in Tapestry




 

Logging of Tapestry Components and Pages

Tapestry makes extensive use of SLF4J to log details about the creation and operation of your page and component classes.

The default configuration for logging uses Log4J as the logging toolkit, though this can be changed.

Class to Logger

The logger name for a page or component matches the fully qualified class name. You can configure this in log4j.properties:


log4j.category.org.apache.tapestry5.integration.app1.pages.MerryChristmas=trace



Injecting Loggers

You may mark a field of type Logger with the @Inject annotation. The proper Logger for your page or component will be injected.



public class MyPage
{
@Inject
private Logger logger;

. . .
  
void onSuccessFromForm()
{
logger.info("Changes saved successfully");
}



@Log annotation

You may mark any component method with the @Log annotation. Method entry, exit (and any thrown exceptions) will be logged at DEBUG level, along with parameter values and the method's return value. This is very convenient for debugging, especially when placed on event handler methods.

Component Transformation Debugging

Tapestry performs a transformation on your classes as they are loaded, and sometimes you want to gain insight into what it has done. Tapestry uses a secondary logger, consisting of the class name with the prefix "tapestry.transformer.", to log (at debug level) the results of transforming the class.

Example:


[DEBUG] Index // class version 49.0 (49)
// access flags 0x11
public final class org/apache/tapestry5/integration/app1/pages/Index$Invocation_containingPageDidLoad_123fd9264de3fa20 extends org/apache/tapestry5/internal/plastic/AbstractMethodInvocation  implements org/apache/tapestry5/plastic/MethodInvocation  {


  // access flags 0x1
  public init(Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Lorg/apache/tapestry5/internal/plastic/MethodInvocationBundle;)V
ALOAD 0
ALOAD 1
ALOAD 2
ALOAD 3
INVOKESPECIAL org/apache/tapestry5/internal/plastic/AbstractMethodInvocation.init (Ljava/lang/Object;Lorg/apache/tapestry5/plastic/InstanceContext;Lorg/apache/tapestry5/internal/plastic/MethodInvocationBundle;)V
RETURN
MAXSTACK = 0
MAXLOCALS = 0

  // access flags 0x1
  public setReturnValue(Ljava/lang/Object;)Lorg/apache/tapestry5/plastic/MethodInvocation;
NEW java/lang/IllegalArgumentException
DUP
LDC "Method public void containingPageDidLoad() of class org.apache.tapestry5.integration.app1.pages.Index is void, setting a return value is not allowed."


  . . .



Essentially, this output is a dissasembly of the bytecode transformed or created by Tapestry for the component. Is this helpful? Probably only if you are developing your own code that integrates into the component class transformation chain; for example, to support your own field and method annotations, and even then, not as much in Tapestry 5.3 as in earlier versions of Tapestry (because of the introduction of the plastic library).

Component Event Debugging

Tapestry can also debug component event logic. The component's 

[CONF] Apache Tapestry Logging in Tapestry

2011-09-02 Thread confluence







Logging in Tapestry
Page edited by Howard M. Lewis Ship


Comment:
discuss the new operation tracker logging in 5.3


 Changes (2)
 




...
For a pragmatic standpoint, injecting Loggers makes it easier to test _logging_ code using the same techniques used to test other code: via the injection of Mock Object implementations of the Logger interface. This is something to consider when writing your own services, components and test.  
h1. Service Logging  Tapestry uses the same loggers that are injected into services; it logs, at debug level, details about the construction of the service (and the proxy for the service), including details such as methods invoked.   h1. Operation Tracker  The OperationTracker is a resource available throughout Tapestry that is used to track what Tapestry is doing at any given time. Normally, this information is only used when reporting errors, as it gives an indication of what Tapestry was doing leading up to the point where the exception occurred.  Starting in Tapestry 5.3, you may also enable debug logging for {{org.apache.tapestry5.ioc.Registry}} to see voluminous details on creation of proxies, services, injections, and so forth. It also tracks triggering of component events, handling of return values from event handler methods, and many other details.  The logging even identifies how long each operation takes. This can be useful for understanding what is going on in a Tapestry application during the processing of the request, it can also be useful when tracking down performance issues.   An example from the startup of a Tapestry application:  {noformat} [INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.services.TapestryModule [INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.internal.services.InternalModule [INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.services.assets.AssetsModule [INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.services.pageload.PageLoadModule [INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.integration.app1.services.AppModule [INFO] RegistryBuilder Adding module definition for class org.apache.tapestry5.integration.app1.services.TestOnlyModule [DEBUG] Registry [  1] -- Creating proxy for service ServletApplicationInitializer [DEBUG] Registry [  2] -- Obtaining AspectDecorator service [DEBUG] Registry [  3] -- Creating proxy for service AspectDecorator [DEBUG] Registry [  3] -- Creating proxy for service AspectDecorator [59.42 ms] [DEBUG] Registry [  2] -- Obtaining AspectDecorator service [62.49 ms] [DEBUG] Registry [  1] -- Creating proxy for service ServletApplicationInitializer [113.98 ms] [DEBUG] Registry [  1] -- Realizing service ServletApplicationInitializer [DEBUG] Registry [  2] -- Realizing service ServletApplicationInitializer via org.apache.tapestry5.services.TapestryModule.buildServletApplicationInitializer(Logger, List, ApplicationInitializer) (at TapestryModule.java:1398) [DEBUG] Registry [  3] -- Constructing module class org.apache.tapestry5.services.TapestryModule [DEBUG] Registry [  4] -- Determining injection value for parameter #1 (org.apache.tapestry5.ioc.services.PipelineBuilder) [DEBUG] Registry [  5] -- Creating proxy for service MasterObjectProvider [DEBUG] Registry [  5] -- Creating proxy for service MasterObjectProvider [5.77 ms] [DEBUG] Registry [  5] -- Realizing service MasterObjectProvider [DEBUG] Registry [  6] -- Realizing service MasterObjectProvider via org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl(List, OperationTracker) (at MasterObjectProviderImpl.java:32) via org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at TapestryIOCModule.java:49) [DEBUG] Registry [  7] -- Invoking constructor org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl(List, OperationTracker) (at MasterObjectProviderImpl.java:32) via org.apache.tapestry5.ioc.services.TapestryIOCModule.bind(ServiceBinder) (at TapestryIOCModule.java:49) [DEBUG] Registry [  8] -- Determining injection value for parameter #1 (java.util.List) [DEBUG] Registry [  9] -- Collecting ordered configuration for service MasterObjectProvider [DEBUG] Registry [ 10] -- Invoking method org.apache.tapestry5.ioc.services.TapestryIOCModule.setupObjectProviders(OrderedConfiguration, ServiceOverride) (at TapestryIOCModule.java:131). [DEBUG] Registry [ 11] -- Determining injection value for parameter #1 (org.apache.tapestry5.ioc.OrderedConfiguration) [DEBUG] Registry [ 11] -- Determining injection value for parameter #1 (org.apache.tapestry5.ioc.OrderedConfiguration) [0.17 ms] [DEBUG] Registry [ 11] -- Determining injection value for parameter #2 

[CONF] Apache Tapestry Logging

2011-06-12 Thread confluence







Logging
Page edited by Bob Harner


Comment:
Added Related Articles box


 Changes (1)
 




{float:right|background="" {contentbylabel:title=Related Articles|showLabels=false|showSpace=false|space=@self|labels=logging} {float}   
h1. Logging of Tapestry Components and Pages  
...


Full Content


Related Articles


 Page:
 Logging





 Page:
 Logging in Tapestry




 

Logging of Tapestry Components and Pages

Tapestry makes extensive use of SLF4J to log details about the creation and operation of your page and component classes.

The default configuration for logging uses Log4J as the logging toolkit, though this can be changed.

Class to Logger

The logger name for a page or component matches the fully qualified class name. You can configure this in log4j.properties:


log4j.category.org.apache.tapestry5.integration.app1.pages.MerryChristmas=trace



Injecting Loggers

You may mark a field of type Logger with the @Inject annotation. The proper Logger for your page or component will be injected.



public class MyPage
{
  @Inject
  private Logger logger;
  
  . . .



@Log annotation

You may mark any component method with the @Log annotation. Method entry, exit (and any thrown exceptions) will be logged at DEBUG level, along with parameter values and the method's return value. This is very convenient for debugging, especially when placed on event handler methods.

Component Transformation Debugging

Tapestry performs a transformation on your classes as they are loaded, often you want to gain insight into what it has done. Tapestry uses a secondary logger, consisting of the class name with the prefix "tapestry.transformer.", to log (at debug level) the results of transforming the class.

Example:


[DEBUG] MerryChristmas Finished class transformation: InternalClassTransformation[
public org.apache.tapestry5.integration.app1.pages.MerryChristmas extends java.lang.Object
  implements org.apache.tapestry5.runtime.Component, org.apache.tapestry5.runtime.RenderCommand

add default method: public void postRenderCleanup()
default

add default method: public void setupRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void beginRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void beforeRenderTemplate(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void afterRenderTemplate(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void beforeRenderBody(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void afterRenderBody(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void afterRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void cleanupRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public boolean handleComponentEvent(org.apache.tapestry5.runtime.ComponentEvent $1)
default

add default method: public org.apache.tapestry5.ComponentResources getComponentResources()
default

add default method: public void containingPageDidLoad()
default

add default method: public void containingPageDidDetach()
default

add default method: public void containingPageDidAttach()
default

add field: protected final org.apache.tapestry5.internal.InternalComponentResources _$resources;

replace method: public final org.apache.tapestry5.ComponentResources getComponentResources()
return _$resources;

add default method: public void render(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.RenderQueue $2)
default

replace method: public void render(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.RenderQueue $2)
_$resources.queueRender($2);

convert default constructor: initializer();

add constructor: org.apache.tapestry5.integration.app1.pages.MerryChristmas(org.apache.tapestry5.internal.InternalComponentResources $1)
{
  _$resources = $1;
  initializer();

}

]



Is this helpful? Probably only if you are developing your own code that integrates into the component class transformation chain; for example, to 

[CONF] Apache Tapestry Logging in Tapestry

2010-12-22 Thread confluence







Logging in Tapestry
Page edited by Bob Harner


Comment:
Renamed


 Changes (0)
 



...

Full Content

Parallel ExecutionIoCShadow Services

Logging in Tapestry

Logging in Tapestry is based on the Simple Logging Facade for Java (SLF4J). You can think of SLF4J as a leaner, meaner replacement for commons-logging.

In theory, SLF4J is a wrapper around any of a number of logging systems, including Log4J or the built-in JDK logging. In practice, it is almost always used with Log4J and no additional build configuration is needed.

Your application will need to provide a log4j.properties file (or its XML equivalent). See the Log4J manual for more information.

Accessing Loggers

Loggers are a special kind of resource that is injected into a service. In Tapestry IoC, Loggers an be injected into service constructors, or into service builder methods.

In Tapestry Core (the web framework), Loggers for components can be injected into component fields.

This often confuses people, because the standard idiom is to create a Logger based on the class name and inject it into a static field. In Tapestry, the Logger is created on your code's behalf and provided to you, and stored into a final private field.

In terms of separation of concerns, Tapestry's approach is superior ... the concern of creating loggers is offloaded into the framework, and you code retains the concern of actually logging useful information. However this is largely theoretical.

For a pragamatic standpoint, injecting Loggers makes it easier to test logging code using the same techniques used to test other code: via the injection of Mock Object implementations of the Logger interface. This is something to consider when writing your own services, components and test.

Configuring Tapestry for other Logging Toolkits

The default configuration uses Log4J.

If you need to use another logging system, that can be accomplished using Maven dependency control.

You can exclude some of the dependencies that Tapestry introduces, and replace them with your own. For example, to switch over to JDK logging, update your pom as follows:


  dependencies
dependency
  groupIdorg.apache.tapestry/groupId
  artifactIdtapestry-ioc/artifactId
  version5.0.x/version
  exclusions
  
exclusion
  groupIdorg.slf4j/groupId
  artifactIdslf4j-log4j12/artifactId
/exclusion
  
exclusion
  groupIdlog4j/groupId
  artifactIdlog4j/groupId
/exclusion

  /exclusions
/dependency

dependency
  groupIdorg.slf4j/groupId
  artifactIdslf4j-jdk14/artifactId
  version1.4.3/version
/dependency
  /dependencies


This pulls out the log4j support normally included with Tapestry, and replaces it with the SLF4J library that wraps around JDK 1.4 logging.

In all likelihood, you'll replace tapestry-ioc with tapestry-core (assuming you are building a web application using Tapestry, rather than using Tapestry IoC as part of some other application). And, of course, version numbers change all the time!

Parallel ExecutionIoCShadow Services



Change Notification Preferences

View Online
|
View Changes









[CONF] Apache Tapestry Logging

2010-11-23 Thread confluence







Logging
Page edited by Howard M. Lewis Ship


 Changes (6)
 



...
Tapestry makes extensive use of [SLF4J|http://www.slf4j.org/] to log details about the creation and operation of your page and component classes.  
The default configuration for logging uses [Log4J|http://logging.apache.org/log4j/] as the logging toolkit, though [this can be changed|../../tapestry-ioc/logging.html]. changed|TAPESTRY:IoC - logging]. 
 h1. Class to Logger 
...
You may mark a field of type [Logger|http://www.slf4j.org/api/org/slf4j/Logger.html] with the @Inject annotation. The proper Logger for your page or component will be injected.  
{noformat} {code} 
public class MyPage { 
...
   . . . 
{noformat} {code} 
 h1. @Log annotation  
You may mark any component method with the [Log|../apidocs/org/apache/tapestry5/annotations/Log.html] @[Log|http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/Log.html] annotation. Method entry, exit (and any thrown exceptions) will be logged at DEBUG level, along with parameter values and the methods return value. This is very convienient for debugging, especially when placed on event handler methods. 
 h1. Component Transformation Debugging 
...
{noformat}  
h1. Render State Queue Debugging 
 
Occasionally it is useful to get debugging output of all the steps involved in rendering a page. In Tapestry, rendering involves a series of rendering commands passed through a rendering queue (most commands will operate by queuing up additional commands).  A rendering command may represent an element or attribute from a component template, or some template text, or it may represent one render phase when rendering a component. 
 The logger is the pages logger prefixed with tapestry.render.. 
...

Full Content

Logging of Tapestry Components and Pages

Tapestry makes extensive use of SLF4J to log details about the creation and operation of your page and component classes.

The default configuration for logging uses Log4J as the logging toolkit, though this can be changed.

Class to Logger

The logger name for a page or component matches the fully qualified class name. You can configure this in log4j.properties:


log4j.category.org.apache.tapestry5.integration.app1.pages.MerryChristmas=trace



Injecting Loggers

You may mark a field of type Logger with the @Inject annotation. The proper Logger for your page or component will be injected.



public class MyPage
{
  @Inject
  private Logger logger;
  
  . . .



@Log annotation

You may mark any component method with the @Log annotation. Method entry, exit (and any thrown exceptions) will be logged at DEBUG level, along with parameter values and the method's return value. This is very convenient for debugging, especially when placed on event handler methods.

Component Transformation Debugging

Tapestry performs a transformation on your classes as they are loaded, often you want to gain insight into what it has done. Tapestry uses a secondary logger, consisting of the class name with the prefix "tapestry.transformer.", to log (at debug level) the results of transforming the class.

Example:


[DEBUG] MerryChristmas Finished class transformation: InternalClassTransformation[
public org.apache.tapestry5.integration.app1.pages.MerryChristmas extends java.lang.Object
  implements org.apache.tapestry5.runtime.Component, org.apache.tapestry5.runtime.RenderCommand

add default method: public void postRenderCleanup()
default

add default method: public void setupRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void beginRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void beforeRenderTemplate(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void afterRenderTemplate(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void beforeRenderBody(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void afterRenderBody(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void afterRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void cleanupRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public boolean 

[CONF] Apache Tapestry Logging

2010-06-16 Thread confluence







Logging
Page  added by Ulrich Stärk

 

 Logging of Tapestry Components and Pages

Tapestry makes extensive use of SLF4J to log details about the creation and operation of your page and component classes.

The default configuration for logging uses Log4J as the logging toolkit, though this can be changed|../../tapestry-ioc/logging.html.

Class to Logger

The logger name for a page or component matches the fully qualified class name. You can configure this in log4j.properties:


log4j.category.org.apache.tapestry5.integration.app1.pages.MerryChristmas=trace



Injecting Loggers

You may mark a field of type Logger with the @Inject annotation. The proper Logger for your page or component will be injected.


public class MyPage
{
  @Inject
  private Logger logger;
  
  . . .



@Log annotation

You may mark any component method with the Log|../apidocs/org/apache/tapestry5/annotations/Log.html annotation. Method entry, exit (and any thrown exceptions) will be logged at DEBUG level, along with parameter values and the method's return value. This is very convienient for debugging, especially when placed on event handler methods.

Component Transformation Debugging

Tapestry performs a transformation on your classes as they are loaded, often you want to gain insight into what it has done. Tapestry uses a secondary logger, consisting of the class name with the prefix "tapestry.transformer.", to log (at debug level) the results of transforming the class.

Example:


[DEBUG] MerryChristmas Finished class transformation: InternalClassTransformation[
public org.apache.tapestry5.integration.app1.pages.MerryChristmas extends java.lang.Object
  implements org.apache.tapestry5.runtime.Component, org.apache.tapestry5.runtime.RenderCommand

add default method: public void postRenderCleanup()
default

add default method: public void setupRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void beginRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void beforeRenderTemplate(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void afterRenderTemplate(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void beforeRenderBody(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void afterRenderBody(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void afterRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public void cleanupRender(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.Event $2)
default

add default method: public boolean handleComponentEvent(org.apache.tapestry5.runtime.ComponentEvent $1)
default

add default method: public org.apache.tapestry5.ComponentResources getComponentResources()
default

add default method: public void containingPageDidLoad()
default

add default method: public void containingPageDidDetach()
default

add default method: public void containingPageDidAttach()
default

add field: protected final org.apache.tapestry5.internal.InternalComponentResources _$resources;

replace method: public final org.apache.tapestry5.ComponentResources getComponentResources()
return _$resources;

add default method: public void render(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.RenderQueue $2)
default

replace method: public void render(org.apache.tapestry5.MarkupWriter $1, org.apache.tapestry5.runtime.RenderQueue $2)
_$resources.queueRender($2);

convert default constructor: initializer();

add constructor: org.apache.tapestry5.integration.app1.pages.MerryChristmas(org.apache.tapestry5.internal.InternalComponentResources $1)
{
  _$resources = $1;
  initializer();

}

]



Is this helpful? Probably only if you are developing your own code that integrates into the component class transformation chain; for example, to support your own field and method annotations.

Component Event Debugging

Tapestry can also debug component event logic. The component's logger, with a "tapestry.events." prefix, is used at debug level. The debugging output identifies the event name and event source, and identifies any methods that are invoked.

Note that events that are not handled by a component will bubble up to the component's container; further logging for the same event will occur using the logger associated with the container. The page containing the initial component is the final step when logging.

Examples:


[DEBUG] ActionLink Dispatch event: ComponentEvent[action from (self)]
[DEBUG] ActionDemo Dispatch event: ComponentEvent[action from actionlink]
[DEBUG] ActionDemo Invoking: