/*******************************************************************************
* Copyright (c) 2012 VMware, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.eclipse.quickfix;
import org.springframework.ide.eclipse.config.core.schemas.BeansSchemaConstants;
import org.springframework.ide.eclipse.quickfix.validator.BeanReferenceValidator;
import org.springframework.ide.eclipse.quickfix.validator.ClassAttributeValidator;
import org.springframework.ide.eclipse.quickfix.validator.ConstructorArgNameValidator;
import org.springframework.ide.eclipse.quickfix.validator.FactoryBeanValidator;
import org.springframework.ide.eclipse.quickfix.validator.FactoryMethodValidator;
import org.springframework.ide.eclipse.quickfix.validator.InitDestroyMethodValidator;
import org.springframework.ide.eclipse.quickfix.validator.NamespaceElementsValidator;
import org.springframework.ide.eclipse.quickfix.validator.PropertyValidator;
/**
* Support class for getting the right validator for an attribute of a bean
* configuration
* @author Terry Denney
* @author Leo Dos Santos
* @author Christian Dupuis
* @since 2.0
*/
public class AttributeQuickfixSupport extends QuickfixSupport {
@Override
protected void init() {
setAttributeValidator(BEAN_NAMESPACE, BeansSchemaConstants.ELEM_BEAN, BeansSchemaConstants.ATTR_CLASS,
new ClassAttributeValidator());
setAttributeValidator(BEAN_NAMESPACE, BeansSchemaConstants.ELEM_BEAN, BeansSchemaConstants.ATTR_DESTROY_METHOD,
new InitDestroyMethodValidator());
setAttributeValidator(BEAN_NAMESPACE, BeansSchemaConstants.ELEM_BEAN, BeansSchemaConstants.ATTR_FACTORY_METHOD,
new FactoryMethodValidator());
setAttributeValidator(BEAN_NAMESPACE, BeansSchemaConstants.ELEM_BEAN, BeansSchemaConstants.ATTR_INIT_METHOD,
new InitDestroyMethodValidator());
setAttributeValidator(BEAN_NAMESPACE, BeansSchemaConstants.ELEM_BEAN, BeansSchemaConstants.ATTR_FACTORY_BEAN,
new FactoryBeanValidator());
setAttributeValidator(BEAN_NAMESPACE, BeansSchemaConstants.ELEM_BEAN, BeansSchemaConstants.ATTR_DEPENDS_ON,
new BeanReferenceValidator());
setAttributeValidator(BEAN_NAMESPACE, BeansSchemaConstants.ELEM_BEAN, BeansSchemaConstants.ATTR_PARENT,
new BeanReferenceValidator());
setAttributeValidator(BEAN_NAMESPACE, BeansSchemaConstants.ELEM_PROPERTY, BeansSchemaConstants.ATTR_NAME,
new PropertyValidator());
setAttributeValidator(BEAN_NAMESPACE, BeansSchemaConstants.ELEM_PROPERTY, BeansSchemaConstants.ATTR_REF,
new BeanReferenceValidator());
setAttributeValidator(BEAN_NAMESPACE, BeansSchemaConstants.ELEM_CONSTRUCTOR_ARG, BeansSchemaConstants.ATTR_REF,
new BeanReferenceValidator());
setAttributeValidator(BEAN_NAMESPACE, BeansSchemaConstants.ELEM_CONSTRUCTOR_ARG,
BeansSchemaConstants.ATTR_NAME, new ConstructorArgNameValidator());
// TODO: uncomment when BeanAliasRule works properly
// setAttributeValidator(BEAN_NAMESPACE,
// BeansSchemaConstants.ELEM_ALIAS, BeansSchemaConstants.ATTR_ALIAS,
// new BeanAliasValidator());
setAttributeValidator("!" + BEAN_NAMESPACE, null, null, new NamespaceElementsValidator());
}
}