001// Copyright 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.transform;
016
017import org.apache.tapestry5.plastic.PlasticClass;
018import org.apache.tapestry5.services.ComponentEventHandler;
019
020/**
021 * Additional utilities, beyond {@link PlasticClass}, needed when transforming.
022 *
023 * @since 5.3
024 */
025public interface TransformationSupport
026{
027    /**
028     * @param typeName Java type name (which may be a primitive type or array, or fully qualified class name)
029     * @return corresponding Java Class
030     */
031    Class toClass(String typeName);
032
033    /**
034     * Returns true if the class being transformed is a root class: it does not inherit
035     * from another transformed class, but instead inherits from Object.
036     *
037     * @return true if root
038     */
039    boolean isRootTransformation();
040
041    /**
042     * Adds an event handler. Added event handlers execute <em>before</em> calls to super-class event handlers,
043     * or calls to event handler methods.
044     *
045     * @param eventType            type of event
046     * @param minContextValues     number of context values required to activate the handler
047     * @param operationDescription Used with {@link org.apache.tapestry5.ioc.OperationTracker} when invoking the handler
048     * @param handler              code to execute when the event matches
049     */
050    void addEventHandler(String eventType, int minContextValues, String operationDescription, ComponentEventHandler handler);
051
052}