    001// Copyright 2006, 2007, 2008, 2009, 2011 The Apache Software Foundation
    002//
    003// Licensed under the Apache License, Version 2.0 (the "License");
    004// you may not use this file except in compliance with the License.
    005// You may obtain a copy of the License at
    006//
    007// http://www.apache.org/licenses/LICENSE-2.0
    008//
    009// Unless required by applicable law or agreed to in writing, software
    010// distributed under the License is distributed on an "AS IS" BASIS,
    011// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    012// See the License for the specific language governing permissions and
    013// limitations under the License.
    014
    015package org.apache.tapestry5.services;
    016
    017import org.apache.tapestry5.MarkupWriter;
    018import org.apache.tapestry5.internal.structure.PageResetListener;
    019import org.apache.tapestry5.plastic.MethodDescription;
    020import org.apache.tapestry5.plastic.PlasticUtils;
    021import org.apache.tapestry5.runtime.Component;
    022import org.apache.tapestry5.runtime.ComponentEvent;
    023import org.apache.tapestry5.runtime.Event;
    024import org.apache.tapestry5.runtime.PageLifecycleListener;
    025import org.apache.tapestry5.services.transform.ComponentClassTransformWorker2;
    026
    027import java.lang.reflect.Modifier;
    028
    029/**
    030 * Constants used by implementations {@link ComponentClassTransformWorker2}.
    031 * <p/>
    032 * Note: render phase methods on transformed components will not be invoked <em>unless</em>
    033 * {@linkplain org.apache.tapestry5.model.MutableComponentModel#addRenderPhase(Class) the component model is updated to
    034 * identify the use of the corresponding render phase}. This represents an optimization introduced in Tapestry 5.1.
    035 */
    036public final class TransformConstants
    037{
    038    // Shared parameters of a whole bunch of lifecycle methods, representing the different
    039    // component render states.
    040    private static final String[] RENDER_PHASE_METHOD_PARAMETERS =
    041            {MarkupWriter.class.getName(), Event.class.getName()};
    042
    043
    044    /**
    045     * Description for
    046     * {@link org.apache.tapestry5.runtime.Component#dispatchComponentEvent(org.apache.tapestry5.runtime.ComponentEvent)}
    047     * .
    048     *
    049     * @see org.apache.tapestry5.annotations.OnEvent
    050     * @since 5.3
    051     */
    052    public static final MethodDescription DISPATCH_COMPONENT_EVENT_DESCRIPTION = PlasticUtils.getMethodDescription(
    053            Component.class, "dispatchComponentEvent", ComponentEvent.class);
    054
    055
    056    /**
    057     * Description for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidLoad()}.
    058     *
    059     * @since 5.3
    060     */
    061    public static final MethodDescription CONTAINING_PAGE_DID_LOAD_DESCRIPTION = PlasticUtils.getMethodDescription(
    062            PageLifecycleListener.class, "containingPageDidLoad");
    063
    064    /**
    065     * Description for {@link org.apache.tapestry5.internal.structure.PageResetListener#containingPageDidReset()}. Note that the {@link PageResetListener}
    066     * interface is not automatically implemented by components. ]
    067     *
    068     * @see org.apache.tapestry5.annotations.PageReset
    069     * @see org.apache.tapestry5.internal.transform.PageResetAnnotationWorker
    070     * @since 5.3
    071     */
    072    public static final MethodDescription CONTAINING_PAGE_DID_RESET_DESCRIPTION = PlasticUtils.getMethodDescription(PageResetListener.class, "containingPageDidReset");
    073
    074
    075    /**
    076     * Description for {@link org.apache.tapestry5.runtime.Component#postRenderCleanup()}.
    077     *
    078     * @since 5.3
    079     */
    080    public static final MethodDescription POST_RENDER_CLEANUP_DESCRIPTION = PlasticUtils.getMethodDescription(Component.class, "postRenderCleanup");
    081
    082
    083    /**
    084     * Description for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidDetach()}.
    085     *
    086     * @since 5.3
    087     */
    088    public static final MethodDescription CONTAINING_PAGE_DID_DETACH_DESCRIPTION = PlasticUtils.getMethodDescription(PageLifecycleListener.class, "containingPageDidDetach");
    089
    090
    091    /**
    092     * Description for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidAttach()}.
    093     *
    094     * @since 5.3
    095     */
    096    public static final MethodDescription CONTAINING_PAGE_DID_ATTACH_DESCRIPTION = PlasticUtils.getMethodDescription(PageLifecycleListener.class, "containingPageDidAttach");
    097
    098
    099    /**
    100     * Description for {@link org.apache.tapestry5.runtime.Component#setupRender(MarkupWriter, Event)}.
    101     *
    102     * @see org.apache.tapestry5.annotations.SetupRender
    103     * @since 5.3
    104     */
    105    public static final MethodDescription SETUP_RENDER_DESCRIPTION = renderPhaseDescription("setupRender");
    106
    107
    108    /**
    109     * Description for {@link org.apache.tapestry5.runtime.Component#beginRender(MarkupWriter, Event)}.
    110     *
    111     * @see org.apache.tapestry5.annotations.BeginRender
    112     * @since 5.3
    113     */
    114    public static final MethodDescription BEGIN_RENDER_DESCRIPTION = renderPhaseDescription("beginRender");
    115
    116
    117    /**
    118     * Description for {@link org.apache.tapestry5.runtime.Component#beforeRenderTemplate(MarkupWriter, Event)}.
    119     *
    120     * @see org.apache.tapestry5.annotations.BeforeRenderTemplate
    121     * @since 5.3
    122     */
    123    public static final MethodDescription BEFORE_RENDER_TEMPLATE_DESCRIPTION = renderPhaseDescription("beforeRenderTemplate");
    124
    125
    126    /**
    127     * Description for {@link org.apache.tapestry5.runtime.Component#afterRenderTemplate(MarkupWriter, Event)}.
    128     *
    129     * @see org.apache.tapestry5.annotations.BeforeRenderTemplate
    130     * @since 5.3
    131     */
    132    public static final MethodDescription AFTER_RENDER_TEMPLATE_DESCRIPTION = renderPhaseDescription("afterRenderTemplate");
    133
    134
    135    /**
    136     * Description for {@link org.apache.tapestry5.runtime.Component#beforeRenderBody(MarkupWriter, Event)}.
    137     *
    138     * @see org.apache.tapestry5.annotations.BeforeRenderBody
    139     * @since 5.3
    140     */
    141    public static final MethodDescription BEFORE_RENDER_BODY_DESCRIPTION = renderPhaseDescription("beforeRenderBody");
    142
    143
    144    /**
    145     * Description for {@link org.apache.tapestry5.runtime.Component#afterRenderBody(MarkupWriter, Event)}.
    146     *
    147     * @see org.apache.tapestry5.annotations.AfterRenderBody
    148     * @since 5.3
    149     */
    150    public static final MethodDescription AFTER_RENDER_BODY_DESCRIPTION = renderPhaseDescription("afterRenderBody");
    151
    152
    153    /**
    154     * Description for {@link org.apache.tapestry5.runtime.Component#afterRender(MarkupWriter, Event)}
    155     *
    156     * @see org.apache.tapestry5.annotations.AfterRender
    157     * @since 5.3
    158     */
    159    public static final MethodDescription AFTER_RENDER_DESCRIPTION = renderPhaseDescription("afterRender");
    160
    161
    162    /**
    163     * Description for {@link org.apache.tapestry5.runtime.Component#cleanupRender(MarkupWriter, Event)}.
    164     *
    165     * @see org.apache.tapestry5.annotations.CleanupRender
    166     * @since 5.3
    167     */
    168    public static final MethodDescription CLEANUP_RENDER_DESCRIPTION = renderPhaseDescription("cleanupRender");
    169
    170
    171    private static MethodDescription renderPhaseDescription(String name)
    172    {
    173        return new MethodDescription(Modifier.PUBLIC, "void", name, RENDER_PHASE_METHOD_PARAMETERS, null, null);
    174    }
    175
    176}