/******************************************************************************* * 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 java.util.HashSet; import java.util.Set; import org.springframework.ide.eclipse.beans.core.namespaces.NamespaceUtils; import org.springframework.ide.eclipse.quickfix.validator.BeanValidator; import org.w3c.dom.Attr; import org.w3c.dom.Node; /** * Abstract support class for getting the right validator for an attribute of a * bean configuration. Subclasses need to specify the initiation of the * available validators. * @author Terry Denney * @author Leo Dos Santos * @author Christian Dupuis * @since 2.0 */ public abstract class QuickfixSupport { public static final String BEAN_NAMESPACE = NamespaceUtils.DEFAULT_NAMESPACE_URI; private final Set<BeanValidator> validators; public QuickfixSupport() { this.validators = new HashSet<BeanValidator>(); init(); } public Set<BeanValidator> getQuickfixValidators(Node node) { Set<BeanValidator> matchedValidators = new HashSet<BeanValidator>(); for (BeanValidator validator : validators) { if (validator.accept(node)) { matchedValidators.add(validator); } } return matchedValidators; } public Set<BeanValidator> getQuickfixValidators(Node node, Attr attr) { Set<BeanValidator> matchedValidators = new HashSet<BeanValidator>(); for (BeanValidator validator : validators) { if (validator.acceptAttribute(node, attr)) { matchedValidators.add(validator); } } return matchedValidators; } abstract protected void init(); protected void setAttributeValidator(String namespaceURI, String nodeName, String attributeName, BeanValidator validator) { validator.setNamespaceURI(namespaceURI); validator.setNodeName(nodeName); validator.setAttributeName(attributeName); validators.add(validator); } protected void setValidator(String namespaceURI, String nodeName, BeanValidator validator) { validator.setNamespaceURI(namespaceURI); validator.setNodeName(nodeName); validators.add(validator); } }