rolling out content-assist for Spring XML config files to a lot more elements and attributes

This commit is contained in:
Martin Lippert
2019-05-12 19:11:54 +02:00
parent 737460ae90
commit 812c2cab44
7 changed files with 68 additions and 21 deletions

View File

@@ -51,9 +51,7 @@ import org.springframework.stereotype.Component;
import com.google.common.collect.ImmutableList;
/**
*
* @author Alex Boyko
*
*/
@Component
public class XmlBeansConfigDefinitionHandler implements DefinitionHandler, LanguageSpecific {
@@ -78,7 +76,6 @@ public class XmlBeansConfigDefinitionHandler implements DefinitionHandler, Langu
hyperlinkProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, BEAN_ELEMENT, CLASS_ATTRIBUTE), Arrays.asList(new JavaTypeHyperlinkProvider(projectFinder, locationProvider)));
hyperlinkProviders.put(new XMLElementKey(BEANS_NAMESPACE, BEAN_ELEMENT, PROPERTY_ELEMENT, NAME_ATTRIBUTE), Arrays.asList(new PropertyNameHyperlinkProvider(projectFinder, locationProvider)));
hyperlinkProviders.put(new XMLElementKey(BEANS_NAMESPACE, BEAN_ELEMENT, PROPERTY_ELEMENT, REF_ATTRIBUTE), Arrays.asList(new BeanRefHyperlinkProvider(projectFinder, symbolIndex, documents)));
}
@Override

View File

@@ -49,9 +49,39 @@ public class SpringXMLCompletionEngine implements ICompletionEngine {
this.config = config;
this.completionProviders = new HashMap<>();
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, BEAN_ELEMENT, CLASS_ATTRIBUTE), new TypeCompletionProposalProvider(server, projectFinder, true, true, false, false));
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, BEAN_ELEMENT, PROPERTY_ELEMENT, NAME_ATTRIBUTE), new PropertyNameCompletionProposalProvider(projectFinder));
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, BEAN_ELEMENT, PROPERTY_ELEMENT, REF_ATTRIBUTE), new BeanRefCompletionProposalProvider(projectFinder, symbolIndex));
TypeCompletionProposalProvider classesOnlyProvider = new TypeCompletionProposalProvider(server, projectFinder, true, true, false, false);
TypeCompletionProposalProvider classesAndInterfacesProvider = new TypeCompletionProposalProvider(server, projectFinder, true, true, true, false);
TypeCompletionProposalProvider packagesProvider = new TypeCompletionProposalProvider(server, projectFinder, true, false, false, false);
BeanRefCompletionProposalProvider beanRefProvider = new BeanRefCompletionProposalProvider(projectFinder, symbolIndex);
PropertyNameCompletionProposalProvider propertyNameProvider = new PropertyNameCompletionProposalProvider(projectFinder);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, BEAN_ELEMENT, CLASS_ATTRIBUTE), classesOnlyProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, CONSTRUCTOR_ARG_ELEMENT, TYPE_ATTRIBUTE), classesAndInterfacesProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, ARG_TYPE_ELEMENT, MATCH_ATTRIBUTE), classesAndInterfacesProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, VALUE_ELEMENT, TYPE_ATTRIBUTE), classesAndInterfacesProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, null, VALUE_TYPE_ATTRIBUTE), classesAndInterfacesProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, null, KEY_TYPE_ATTRIBUTE), classesAndInterfacesProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, BEAN_ELEMENT, PARENT_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, BEAN_ELEMENT, DEPENDS_ON_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, BEAN_ELEMENT, FACTORY_BEAN_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, REF_ELEMENT, BEAN_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, IDREF_ELEMENT, BEAN_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, CONSTRUCTOR_ARG_ELEMENT, REF_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, ALIAS_ELEMENT, NAME_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, REPLACED_METHOD_ELEMENT, REPLACER_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, ENTRY_ELEMENT, VALUE_REF_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, ENTRY_ELEMENT, KEY_REF_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, null, LOOKUP_METHOD_ELEMENT, BEAN_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, BEAN_ELEMENT, PROPERTY_ELEMENT, REF_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(BEANS_NAMESPACE, BEAN_ELEMENT, PROPERTY_ELEMENT, NAME_ATTRIBUTE), propertyNameProvider);
this.completionProviders.put(new XMLElementKey(CONTEXT_NAMESPACE, null, COMPONENT_SCAN_ELEMENT, BASE_PACKAGE_ATTRIBUTE), packagesProvider);
this.completionProviders.put(new XMLElementKey(CONTEXT_NAMESPACE, null, COMPONENT_SCAN_ELEMENT, NAME_GENERATOR_ATTRIBUTE), beanRefProvider);
this.completionProviders.put(new XMLElementKey(CONTEXT_NAMESPACE, null, COMPONENT_SCAN_ELEMENT, SCOPE_RESOLVER_ATTRIBUTE), beanRefProvider);
}
@Override

View File

@@ -11,19 +11,47 @@
package org.springframework.ide.vscode.boot.xml;
/**
*
* @author Alex Boyko
*
*/
public class XmlConfigConstants {
public static final String BEANS_NAMESPACE = "http://www.springframework.org/schema/beans";
public static final String BEAN_ELEMENT = "bean";
public static final String CONSTRUCTOR_ARG_ELEMENT = "constructor-arg";
public static final String ARG_TYPE_ELEMENT = "arg-type";
public static final String VALUE_ELEMENT = "value";
public static final String PROPERTY_ELEMENT = "property";
public static final String REF_ELEMENT = "ref";
public static final String IDREF_ELEMENT = "idref";
public static final String ALIAS_ELEMENT = "alias";
public static final String REPLACED_METHOD_ELEMENT = "replaced-method";
public static final String ENTRY_ELEMENT = "entry";
public static final String LOOKUP_METHOD_ELEMENT = "lookup-method";
public static final String CLASS_ATTRIBUTE = "class";
public static final String TYPE_ATTRIBUTE = "type";
public static final String NAME_ATTRIBUTE = "name";
public static final String REF_ATTRIBUTE = "ref";
public static final String MATCH_ATTRIBUTE = "match";
public static final String VALUE_TYPE_ATTRIBUTE = "value-type";
public static final String KEY_TYPE_ATTRIBUTE = "key-type";
public static final String PARENT_ATTRIBUTE = "parent";
public static final String DEPENDS_ON_ATTRIBUTE = "depends-on";
public static final String FACTORY_BEAN_ATTRIBUTE = "factory-bean";
public static final String BEAN_ATTRIBUTE = "bean";
public static final String REPLACER_ATTRIBUTE = "replacer";
public static final String VALUE_REF_ATTRIBUTE = "value-ref";
public static final String KEY_REF_ATTRIBUTE = "key-ref";
public static final String LOCAL_ATTRIBUTE = "local";
public static final String BEAN_ELEMENT = "bean";
public static final String CLASS_ATTRIBUTE = "class";
public static final String PROPERTY_ELEMENT = "property";
public static final String NAME_ATTRIBUTE = "name";
public static final String REF_ATTRIBUTE = "ref";
public static final String CONTEXT_NAMESPACE = "http://www.springframework.org/schema/context";
public static final String COMPONENT_SCAN_ELEMENT = "component-scan";
public static final String BASE_PACKAGE_ATTRIBUTE = "base-package";
public static final String NAME_GENERATOR_ATTRIBUTE = "name-generator";
public static final String SCOPE_RESOLVER_ATTRIBUTE = "scope-resolver";
}

View File

@@ -28,9 +28,7 @@ import org.springframework.ide.vscode.commons.languageserver.util.SimpleTextDocu
import org.springframework.ide.vscode.commons.util.text.TextDocument;
/**
*
* @author Alex Boyko
*
*/
public class BeanRefHyperlinkProvider implements XMLHyperlinkProvider {

View File

@@ -22,9 +22,7 @@ import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFin
import org.springframework.ide.vscode.commons.util.text.TextDocument;
/**
*
* @author Alex Boyko
*
*/
public class JavaTypeHyperlinkProvider implements XMLHyperlinkProvider {

View File

@@ -22,9 +22,7 @@ import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFin
import org.springframework.ide.vscode.commons.util.text.TextDocument;
/**
*
* @author Alex Boyko
*
*/
public class PropertyNameHyperlinkProvider implements XMLHyperlinkProvider {

View File

@@ -16,9 +16,7 @@ import org.eclipse.lsp4xml.dom.DOMNode;
import org.springframework.ide.vscode.commons.util.text.TextDocument;
/**
*
* @author Alex Boyko
*
*/
public interface XMLHyperlinkProvider {