# ParameterizedToolingModelBuilder

interface ParameterizedToolingModelBuilder<T> : ToolingModelBuilder(source)

A ToolingModelBuilder which can be parameterized by the client.

The parameter type `T` must be an interface and must follow a contract described in getParameterType.

The parameter type `T` does not need to implement the interface defined in the client side, but it does need to have the same structure. The Tooling API will create a view from the client side parameter type to the one defined in this model builder, and deal automatically with missing methods in order to allow evolution of the models.

All classes implementing this interface should also implement methods from ToolingModelBuilder, which will be used to determine if a model can be built by the current builder and to generate the model in case no parameter is passed from the client. The parameter type should be bound to the model type.

#### Since

4.4

#### Parameters

<T>

The type of parameter used by this model builder.

#### See also

ToolingModelBuilder

## Functions

buildAll
Link copied to clipboard
@Nullable
abstract fun buildAll(modelName: String, parameter: T, project: Project): @Nullable Any
Creates the model of the given type for the given project using the given parameter.
@Nullable
abstract fun buildAll(modelName: String, project: Project): @Nullable Any
Creates the model of the given type for the given project.
canBuild
Link copied to clipboard
abstract fun canBuild(modelName: String): Boolean
Indicates whether this builder can construct the given model.
getParameterType
Link copied to clipboard
abstract fun getParameterType(): Class<T>
Returns the expected type of the parameter.