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    }