Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.tapestry5.ioc.services
Interface TypeCoercer

All Known Implementing Classes:
  TypeCoercerImpl

    @UsesConfiguration(value=CoercionTuple.class)
    public interface TypeCoercer

Makes use of `Coercion`s to convert between an input value (of some specific type) and a desired output type. Smart about coercing, even if it requires multiple coercion steps (i.e., via an intermediate type, such as String).

Method Summary
`void` | `clearCache()` Clears cached information stored by the TypeCoercer.
`
`<S,T> T`
` | `coerce(S input, java.lang.Class<T> targetType)` Performs a coercion from an input type to a desired output type.
`
`<S,T> java.lang.String`
` | `explain(java.lang.Class<S> sourceType, java.lang.Class<T> targetType)` Used primarily inside test suites, this method performs the same steps as `coerce(Object, Class)`, but returns a string describing the series of coercions, such as "Object --> String --> Long --> Integer".
`
`<S,T> Coercion<S,T>`
` | `getCoercion(java.lang.Class<S> sourceType, java.lang.Class<T> targetType)` Given a source and target type, computes the coercion that will be used.

Method Detail

### coerce

    <S,T> T coerce(S input,
                   java.lang.Class<T> targetType)

  Performs a coercion from an input type to a desired output type. When the target type is a primitive, the actual conversion will be to the equivalent wrapper type. In some cases, the TypeCoercer will need to search for an appropriate coercion, and may even combine existing coercions to form new ones; in those cases, the results of the search are cached.

  The TypeCoercer also caches the results of a coercion search.

  Type Parameters:
    `S` - source type (input)
    `T` - target type (output)
  Parameters:
    `input` -
    `targetType` - defines the target type
  Returns:
    the coerced value
  Throws:
    `java.lang.RuntimeException` - if the input can not be coerced

### getCoercion

    <S,T> Coercion<S,T> getCoercion(java.lang.Class<S> sourceType,
                                    java.lang.Class<T> targetType)

  Given a source and target type, computes the coercion that will be used.

  Note: holding the returned coercion past the time when the cache is cleared can cause a memory leak, especially in the context of live reloading (wherein holding a reference to a single class make keep an entire ClassLoader from being reclaimed).

  Type Parameters:
    `S` - source type (input)
    `T` - target type (output)
  Parameters:
    `sourceType` - type to coerce from
    `targetType` - defines the target type
  Returns:
    the coercion that will ultimately be used
  Since:
    5.2.0

### explain

    <S,T> java.lang.String explain(java.lang.Class<S> sourceType,
                                   java.lang.Class<T> targetType)

  Used primarily inside test suites, this method performs the same steps as `coerce(Object, Class)`, but returns a string describing the series of coercions, such as "Object --> String --> Long --> Integer".

  Type Parameters:
    `S` - source type (input)
    `T` - target type (output)
  Parameters:
    `sourceType` - the source coercion type (use void.class for coercions from null)
    `targetType` - defines the target type
  Returns:
    a string identifying the series of coercions, or the empty string if no coercion is necessary

### clearCache

    void clearCache()

  Clears cached information stored by the TypeCoercer.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2003-2012 The Apache Software Foundation.