org.apache.tapestry.enhance
Class EnhanceUtils

java.lang.Object
  extended by org.apache.tapestry.enhance.EnhanceUtils

public final class EnhanceUtils
extends Object

Convienience methods needed by various parts of the enhancement subsystem.

Since:
4.0
Author:
Howard M. Lewis Ship

Field Summary
static org.apache.hivemind.service.MethodSignature CLEANUP_AFTER_RENDER_SIGNATURE
           
static org.apache.hivemind.service.MethodSignature FINISH_LOAD_SIGNATURE
           
static org.apache.hivemind.service.MethodSignature PAGE_DETACHED_SIGNATURE
           
 
Method Summary
static boolean canProxyPropertyType(Class type)
          Determines whether or not the specified class type is elligable for proxying.
static String createAccessorMethodName(String propertyName)
           
static String createMutatorMethodName(String propertyName)
           
static void createSimpleAccessor(EnhancementOperation op, String fieldName, String propertyName, Class propertyType, org.apache.hivemind.Location location)
           
static void createSimpleMutator(EnhancementOperation op, String fieldName, String propertyName, Class propertyType, org.apache.hivemind.Location location)
           
static String createUnwrapExpression(EnhancementOperation op, String bindingName, Class valueType)
          Builds a Javassist expression for unwrapping a binding's value to a type (either primitive or a class type).
static Class extractPropertyType(EnhancementOperation op, String propertyName, String definedTypeName)
          Returns the correct class for a property to be enhanced into a class.
static Class extractPropertyType(EnhancementOperation op, String propertyName, String definedTypeName, boolean isGeneric)
          Does the same thing as extractPropertyType(EnhancementOperation, String, String), with the added knowledge of knowing whether or not the type is generic and thus skips over type validation operations as generic type checking can't be safely done in this jre 1.4 compatible section of the codebase.
static String getUnwrapperMethodName(Class type)
          Returns the name of the static method, within EnhanceUtils, used to unwrap a binding to a primitive type.
static boolean hasEmptyConstructor(Class type)
          Checks if the specified class type has an empty constructor.
static boolean toBoolean(IBinding binding)
           
static byte toByte(IBinding binding)
           
static char toChar(IBinding binding)
           
static double toDouble(IBinding binding)
           
static float toFloat(IBinding binding)
           
static int toInt(IBinding binding)
           
static long toLong(IBinding binding)
           
static short toShort(IBinding binding)
           
static Class verifyPropertyType(EnhancementOperation op, String propertyName, Class requiredType)
          Verifies that a property type can be assigned a particular type of value.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

FINISH_LOAD_SIGNATURE

public static final org.apache.hivemind.service.MethodSignature FINISH_LOAD_SIGNATURE

PAGE_DETACHED_SIGNATURE

public static final org.apache.hivemind.service.MethodSignature PAGE_DETACHED_SIGNATURE

CLEANUP_AFTER_RENDER_SIGNATURE

public static final org.apache.hivemind.service.MethodSignature CLEANUP_AFTER_RENDER_SIGNATURE
Method Detail

createMutatorMethodName

public static String createMutatorMethodName(String propertyName)

createAccessorMethodName

public static String createAccessorMethodName(String propertyName)

createSimpleAccessor

public static void createSimpleAccessor(EnhancementOperation op,
                                        String fieldName,
                                        String propertyName,
                                        Class propertyType,
                                        org.apache.hivemind.Location location)

createSimpleMutator

public static void createSimpleMutator(EnhancementOperation op,
                                       String fieldName,
                                       String propertyName,
                                       Class propertyType,
                                       org.apache.hivemind.Location location)

extractPropertyType

public static Class extractPropertyType(EnhancementOperation op,
                                        String propertyName,
                                        String definedTypeName)
Returns the correct class for a property to be enhanced into a class. If a type name is non-null, then it is converted to a Class. If the class being enhanced defines a property, then the type must be an exact match (this is largely a holdover from Tapestry 3.0, where the type had to be provided in the specification). If the type name is null, then the value returned is the type of the existing property (if such a property exists), or java.lang.Object is no property exists.

Parameters:
op - the enhancement operation, which provides most of this logic
propertyName - the name of the property (the property may or may not exist)
definedTypeName - the type indicated for the property, may be null to make the return value match the type of an existing property.

extractPropertyType

public static Class extractPropertyType(EnhancementOperation op,
                                        String propertyName,
                                        String definedTypeName,
                                        boolean isGeneric)
Does the same thing as extractPropertyType(EnhancementOperation, String, String), with the added knowledge of knowing whether or not the type is generic and thus skips over type validation operations as generic type checking can't be safely done in this jre 1.4 compatible section of the codebase.

Parameters:
op - the enhancement operation, which provides most of this logic
propertyName - the name of the property (the property may or may not exist)
definedTypeName - the type indicated for the property, may be null to make the return value match the type of an existing property.
isGeneric - Whether or not the type was previously discoverd and found to be generic, if true type validation is skipped.

toBoolean

public static boolean toBoolean(IBinding binding)

toByte

public static byte toByte(IBinding binding)

toChar

public static char toChar(IBinding binding)

toShort

public static short toShort(IBinding binding)

toInt

public static int toInt(IBinding binding)

toLong

public static long toLong(IBinding binding)

toFloat

public static float toFloat(IBinding binding)

toDouble

public static double toDouble(IBinding binding)

getUnwrapperMethodName

public static String getUnwrapperMethodName(Class type)
Returns the name of the static method, within EnhanceUtils, used to unwrap a binding to a primitive type. Returns null if the type is not a primitve.


createUnwrapExpression

public static String createUnwrapExpression(EnhancementOperation op,
                                            String bindingName,
                                            Class valueType)
Builds a Javassist expression for unwrapping a binding's value to a type (either primitive or a class type).

Parameters:
op - the enhancement operation
bindingName - the name of the field (or an expression) that will evaluate to the binding from which a value will be extracted.
valueType - the type of value to be extracted from the binding.

verifyPropertyType

public static Class verifyPropertyType(EnhancementOperation op,
                                       String propertyName,
                                       Class requiredType)
Verifies that a property type can be assigned a particular type of value.

Parameters:
op - the enhancement operation
propertyName - the name of the property to check
requiredType - the type of value that will be assigned to the property
Returns:
the property type, or java.lang.Object if the class does not define the property

canProxyPropertyType

public static boolean canProxyPropertyType(Class type)
Determines whether or not the specified class type is elligable for proxying. This generally means it needs a default constructor, can't be final / primitive / array.

Parameters:
type - The class to check for proxying elligibility.
Returns:
True if the type can be proxied, false otherwise.

hasEmptyConstructor

public static boolean hasEmptyConstructor(Class type)
Checks if the specified class type has an empty constructor.

Parameters:
type - The class to check, can't be null.
Returns:
True if a no args constructor exists.


Copyright © 2006-2008 Apache Software Foundation. All Rights Reserved.