package wicket.contrib.groovy.builder; import java.util.List; import java.util.Map; import wicket.model.IModel; public abstract class BaseModelBuilder extends BuilderSupport implements WicketModelBuilder { public BaseModelBuilder(Class targetClass) { super(targetClass); } /** * Generate a list of constructor arguments. This should allow for obscure situations * easily with sub-classed component builders. * * @return */ public abstract List getConstructorParameters(Object defaultArg, Map attributes); protected IModel createModelInstace(Object defaultArg, Map attributes) { try { List constructorParameters = getConstructorParameters(defaultArg, attributes); Object generated = generateInstance(attributes, constructorParameters); return (IModel) generated; } catch (Exception e) { throw new WicketComponentBuilderException("Can't create model instance", e); } } }