    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
    015    package org.apache.tapestry5.services;
    016
    017    import org.apache.tapestry5.MarkupWriter;
    018    import org.apache.tapestry5.internal.structure.PageResetListener;
    019    import org.apache.tapestry5.plastic.MethodDescription;
    020    import org.apache.tapestry5.plastic.PlasticUtils;
    021    import org.apache.tapestry5.runtime.Component;
    022    import org.apache.tapestry5.runtime.ComponentEvent;
    023    import org.apache.tapestry5.runtime.Event;
    024    import org.apache.tapestry5.runtime.PageLifecycleListener;
    025    import org.apache.tapestry5.services.transform.ComponentClassTransformWorker2;
    026
    027    import java.lang.reflect.Modifier;
    028
    029    /**
    030     * Constants used by implementations of {@link org.apache.tapestry5.services.ComponentClassTransformWorker} and
    031     * {@link ComponentClassTransformWorker2}.
    032     * <p/>
    033     * Note: methods on transformed components will not be invoked <em>unless</em>
    034     * {@linkplain org.apache.tapestry5.model.MutableComponentModel#addRenderPhase(Class) the component model is updated to
    035     * identify the use of the corresponding render phase}.
    036     */
    037    public final class TransformConstants
    038    {
    039        // Shared parameters of a whole bunch of lifecycle methods, representing the different
    040        // component render states.
    041        private static final String[] RENDER_PHASE_METHOD_PARAMETERS =
    042                {MarkupWriter.class.getName(), Event.class.getName()};
    043
    044        /**
    045         * Signature for
    046         * {@link org.apache.tapestry5.runtime.Component#dispatchComponentEvent(org.apache.tapestry5.runtime.ComponentEvent)}
    047         * .
    048         *
    049         * @see org.apache.tapestry5.annotations.OnEvent
    050         * @deprecated Deprecated in Tapestry 5.3, use {@link #DISPATCH_COMPONENT_EVENT_DESCRIPTION}.
    051         */
    052        public static final TransformMethodSignature DISPATCH_COMPONENT_EVENT = new TransformMethodSignature(
    053                Modifier.PUBLIC, "boolean", "dispatchComponentEvent", new String[]
    054                {ComponentEvent.class.getName()}, null);
    055
    056        /**
    057         * Description for
    058         * {@link org.apache.tapestry5.runtime.Component#dispatchComponentEvent(org.apache.tapestry5.runtime.ComponentEvent)}
    059         * .
    060         *
    061         * @see org.apache.tapestry5.annotations.OnEvent
    062         * @since 5.3
    063         */
    064        public static final MethodDescription DISPATCH_COMPONENT_EVENT_DESCRIPTION = PlasticUtils.getMethodDescription(
    065                Component.class, "dispatchComponentEvent", ComponentEvent.class);
    066
    067        /**
    068         * Signature for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidLoad()}.
    069         *
    070         * @deprecated Deprecated in 5.3, use {@link #CONTAINING_PAGE_DID_LOAD_DESCRIPTION}.
    071         */
    072        public static final TransformMethodSignature CONTAINING_PAGE_DID_LOAD_SIGNATURE = new TransformMethodSignature(
    073                "containingPageDidLoad");
    074
    075        /**
    076         * Description for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidLoad()}.
    077         *
    078         * @since 5.3
    079         */
    080        public static final MethodDescription CONTAINING_PAGE_DID_LOAD_DESCRIPTION = PlasticUtils.getMethodDescription(
    081                PageLifecycleListener.class, "containingPageDidLoad");
    082
    083        /**
    084         * Description for {@link org.apache.tapestry5.internal.structure.PageResetListener#containingPageDidReset()}. Note that the {@link PageResetListener}
    085         * interface is not automatically implemented by components. ]
    086         *
    087         * @see org.apache.tapestry5.annotations.PageReset
    088         * @see org.apache.tapestry5.internal.transform.PageResetAnnotationWorker
    089         * @since 5.3
    090         */
    091        public static final MethodDescription CONTAINING_PAGE_DID_RESET_DESCRIPTION = PlasticUtils.getMethodDescription(PageResetListener.class, "containingPageDidReset");
    092
    093        /**
    094         * Signature for {@link org.apache.tapestry5.runtime.Component#postRenderCleanup()}.
    095         */
    096        public static final TransformMethodSignature POST_RENDER_CLEANUP_SIGNATURE = new TransformMethodSignature(
    097                "postRenderCleanup");
    098
    099
    100        /**
    101         * Description for {@link org.apache.tapestry5.runtime.Component#postRenderCleanup()}.
    102         *
    103         * @since 5.3
    104         */
    105        public static final MethodDescription POST_RENDER_CLEANUP_DESCRIPTION = PlasticUtils.getMethodDescription(Component.class, "postRenderCleanup");
    106
    107        /**
    108         * Signature for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidDetach()}.
    109         *
    110         * @deprecated Deprecated in Tapestry 5.3, use {@link #CONTAINING_PAGE_DID_DETACH_DESCRIPTION}
    111         */
    112        public static final TransformMethodSignature CONTAINING_PAGE_DID_DETACH_SIGNATURE = new TransformMethodSignature(
    113                "containingPageDidDetach");
    114
    115        /**
    116         * Description for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidDetach()}.
    117         *
    118         * @since 5.3
    119         * @deprecated Deprecated in 5.3, with {@link org.apache.tapestry5.annotations.PageDetached}.
    120         */
    121        public static final MethodDescription CONTAINING_PAGE_DID_DETACH_DESCRIPTION = PlasticUtils.getMethodDescription(PageLifecycleListener.class, "containingPageDidDetach");
    122
    123        /**
    124         * Signature for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidAttach()}.
    125         *
    126         * @deprecated Deprecated in Tapestry 5.3, use {@link #CONTAINING_PAGE_DID_ATTACH_DESCRIPTION}
    127         */
    128        public static final TransformMethodSignature CONTAINING_PAGE_DID_ATTACH_SIGNATURE = new TransformMethodSignature(
    129                "containingPageDidAttach");
    130
    131        /**
    132         * Description for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidAttach()}.
    133         *
    134         * @since 5.3
    135         * @deprecated Deprecated in 5.3, along with {@link org.apache.tapestry5.annotations.PageAttached}.
    136         */
    137        public static final MethodDescription CONTAINING_PAGE_DID_ATTACH_DESCRIPTION = PlasticUtils.getMethodDescription(PageLifecycleListener.class, "containingPageDidAttach");
    138
    139        /**
    140         * Signature for {@link org.apache.tapestry5.runtime.PageLifecycleListener#restoreStateBeforePageAttach()}
    141         *
    142         * @since 5.1.0.1
    143         * @deprecated Deprecated in 5.3, with no replacement.
    144         */
    145        public static final TransformMethodSignature RESTORE_STATE_BEFORE_PAGE_ATTACH_SIGNATURE = new TransformMethodSignature(
    146                "restoreStateBeforePageAttach");
    147
    148        /**
    149         * Signature for {@link org.apache.tapestry5.runtime.Component#setupRender(MarkupWriter, Event)}.
    150         *
    151         * @see org.apache.tapestry5.annotations.SetupRender
    152         * @deprecated Deprecated in Tapestry 5.3, use {@link #SETUP_RENDER_DESCRIPTION}
    153         */
    154        public static final TransformMethodSignature SETUP_RENDER_SIGNATURE = renderPhaseSignature("setupRender");
    155
    156        /**
    157         * Description for {@link org.apache.tapestry5.runtime.Component#setupRender(MarkupWriter, Event)}.
    158         *
    159         * @see org.apache.tapestry5.annotations.SetupRender
    160         * @since 5.3
    161         */
    162        public static final MethodDescription SETUP_RENDER_DESCRIPTION = renderPhaseDescription("setupRender");
    163
    164        /**
    165         * Signature for {@link org.apache.tapestry5.runtime.Component#beginRender(MarkupWriter, Event)}.
    166         *
    167         * @see org.apache.tapestry5.annotations.BeginRender
    168         * @deprecated Deprecated in Tapestry 5.3, use {@link #BEGIN_RENDER_DESCRIPTION}
    169         */
    170        public static final TransformMethodSignature BEGIN_RENDER_SIGNATURE = renderPhaseSignature("beginRender");
    171
    172        /**
    173         * Description for {@link org.apache.tapestry5.runtime.Component#beginRender(MarkupWriter, Event)}.
    174         *
    175         * @see org.apache.tapestry5.annotations.BeginRender
    176         * @since 5.3
    177         */
    178        public static final MethodDescription BEGIN_RENDER_DESCRIPTION = renderPhaseDescription("beginRender");
    179
    180        /**
    181         * Signature for {@link org.apache.tapestry5.runtime.Component#beforeRenderTemplate(MarkupWriter, Event)}.
    182         *
    183         * @see org.apache.tapestry5.annotations.BeforeRenderTemplate
    184         * @deprecated Deprecated in Tapestry 5.3, use {@link #BEFORE_RENDER_TEMPLATE_DESCRIPTION}
    185         */
    186        public static final TransformMethodSignature BEFORE_RENDER_TEMPLATE_SIGNATURE = renderPhaseSignature("beforeRenderTemplate");
    187
    188        /**
    189         * Description for {@link org.apache.tapestry5.runtime.Component#beforeRenderTemplate(MarkupWriter, Event)}.
    190         *
    191         * @see org.apache.tapestry5.annotations.BeforeRenderTemplate
    192         * @since 5.3
    193         */
    194        public static final MethodDescription BEFORE_RENDER_TEMPLATE_DESCRIPTION = renderPhaseDescription("beforeRenderTemplate");
    195
    196        /**
    197         * Signature for {@link org.apache.tapestry5.runtime.Component#afterRenderTemplate(MarkupWriter, Event)}.
    198         *
    199         * @see org.apache.tapestry5.annotations.BeforeRenderTemplate
    200         * @deprecated Deprecated in Tapestry 5.3, use {@link #AFTER_RENDER_TEMPLATE_DESCRIPTION}
    201         */
    202        public static final TransformMethodSignature AFTER_RENDER_TEMPLATE_SIGNATURE = renderPhaseSignature("afterRenderTemplate");
    203
    204        /**
    205         * Description for {@link org.apache.tapestry5.runtime.Component#afterRenderTemplate(MarkupWriter, Event)}.
    206         *
    207         * @see org.apache.tapestry5.annotations.BeforeRenderTemplate
    208         * @since 5.3
    209         */
    210        public static final MethodDescription AFTER_RENDER_TEMPLATE_DESCRIPTION = renderPhaseDescription("afterRenderTemplate");
    211
    212        /**
    213         * Signature for {@link org.apache.tapestry5.runtime.Component#beforeRenderBody(MarkupWriter, Event)}.
    214         *
    215         * @see org.apache.tapestry5.annotations.BeforeRenderBody
    216         * @deprecated Deprecated in Tapestry 5.3, use {@link #BEFORE_RENDER_BODY_DESCRIPTION}
    217         */
    218        public static final TransformMethodSignature BEFORE_RENDER_BODY_SIGNATURE = renderPhaseSignature("beforeRenderBody");
    219
    220        /**
    221         * Description for {@link org.apache.tapestry5.runtime.Component#beforeRenderBody(MarkupWriter, Event)}.
    222         *
    223         * @see org.apache.tapestry5.annotations.BeforeRenderBody
    224         * @since 5.3
    225         */
    226        public static final MethodDescription BEFORE_RENDER_BODY_DESCRIPTION = renderPhaseDescription("beforeRenderBody");
    227
    228        /**
    229         * Signature for {@link org.apache.tapestry5.runtime.Component#afterRenderBody(MarkupWriter, Event)}.
    230         *
    231         * @see org.apache.tapestry5.annotations.AfterRenderBody
    232         * @deprecated Deprecated in Tapestry 5.3, use {@link #AFTER_RENDER_BODY_DESCRIPTION}
    233         */
    234        public static final TransformMethodSignature AFTER_RENDER_BODY_SIGNATURE = renderPhaseSignature("afterRenderBody");
    235
    236
    237        /**
    238         * Description for {@link org.apache.tapestry5.runtime.Component#afterRenderBody(MarkupWriter, Event)}.
    239         *
    240         * @see org.apache.tapestry5.annotations.AfterRenderBody
    241         * @since 5.3
    242         */
    243        public static final MethodDescription AFTER_RENDER_BODY_DESCRIPTION = renderPhaseDescription("afterRenderBody");
    244
    245        /**
    246         * Signature for {@link org.apache.tapestry5.runtime.Component#afterRender(MarkupWriter, Event)}
    247         *
    248         * @see org.apache.tapestry5.annotations.AfterRender
    249         * @deprecated Deprecated in Tapestry 5.3, use {@link #AFTER_RENDER_DESCRIPTION}
    250         */
    251        public static final TransformMethodSignature AFTER_RENDER_SIGNATURE = renderPhaseSignature("afterRender");
    252
    253        /**
    254         * Description for {@link org.apache.tapestry5.runtime.Component#afterRender(MarkupWriter, Event)}
    255         *
    256         * @see org.apache.tapestry5.annotations.AfterRender
    257         * @since 5.3
    258         */
    259        public static final MethodDescription AFTER_RENDER_DESCRIPTION = renderPhaseDescription("afterRender");
    260
    261        /**
    262         * Signature for {@link org.apache.tapestry5.runtime.Component#cleanupRender(MarkupWriter, Event)}.
    263         *
    264         * @see org.apache.tapestry5.annotations.CleanupRender
    265         * @deprecated Deprecated in Tapestry 5.3, use {@link #CLEANUP_RENDER_DESCRIPTION}
    266         */
    267        public static final TransformMethodSignature CLEANUP_RENDER_SIGNATURE = renderPhaseSignature("cleanupRender");
    268
    269        /**
    270         * Description for {@link org.apache.tapestry5.runtime.Component#cleanupRender(MarkupWriter, Event)}.
    271         *
    272         * @see org.apache.tapestry5.annotations.CleanupRender
    273         * @since 5.3
    274         */
    275        public static final MethodDescription CLEANUP_RENDER_DESCRIPTION = renderPhaseDescription("cleanupRender");
    276
    277        private static TransformMethodSignature renderPhaseSignature(String name)
    278        {
    279            return new TransformMethodSignature(Modifier.PUBLIC, "void", name, RENDER_PHASE_METHOD_PARAMETERS, null);
    280        }
    281
    282        private static MethodDescription renderPhaseDescription(String name)
    283        {
    284            return new MethodDescription(Modifier.PUBLIC, "void", name, RENDER_PHASE_METHOD_PARAMETERS, null, null);
    285        }
    286
    287    }