/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.dsl.api.component;
/**
* Visitor that will be invoked based on a
* {@link ComponentBuildingDefinition#getTypeDefinition()} configuration.
*
* @since 4.0
*/
public interface TypeDefinitionVisitor {
/**
* Invoked when the {@link TypeDefinition} it's defined from a {@code Class} hardcoded value
*
* @param type the hardcoded type
*/
void onType(Class<?> type);
/**
* Invoked when the {@link TypeDefinition} it's defined from a configuration attribute of the component
*
* @param attributeName the name of the configuration attribute holding the type definition. Most likely a fully qualified java
* class name.
*/
void onConfigurationAttribute(String attributeName);
/**
* Invoked when the {@link TypeDefinition} it's defined to be a map entry.
*
* @param mapEntryType the holder for the key type and value type
*/
void onMapType(TypeDefinition.MapEntryType mapEntryType);
}