| author | szarnekow | 2009-03-13 10:49:40 (EDT) |
|---|---|---|
| committer | sefftinge | 2009-03-13 10:49:40 (EDT) |
| commit | 8f2472f7af22995bf23a54beefc8a9cd86992acb (patch) (side-by-side diff) | |
| tree | d98108a25e772e9b7c2ef64960a83f3480bbc9d6 | |
| parent | 7b50232e976f93f074601486d0baffce795cd2bd (diff) | |
| download | org.eclipse.xtext-8f2472f7af22995bf23a54beefc8a9cd86992acb.zip org.eclipse.xtext-8f2472f7af22995bf23a54beefc8a9cd86992acb.tar.gz org.eclipse.xtext-8f2472f7af22995bf23a54beefc8a9cd86992acb.tar.bz2 | |
Feature: Allow composite validators for java validation
Fix: HyperlinkTest didn't call super.setUp()
11 files changed, 93 insertions, 73 deletions
diff --git a/examples/org.eclipse.xtext.example.domainmodel/src/org/eclipse/xtext/example/DomainModelValidator.java b/examples/org.eclipse.xtext.example.domainmodel/src/org/eclipse/xtext/example/DomainModelValidator.java new file mode 100644 index 0000000..5c21578 --- a/dev/null +++ b/examples/org.eclipse.xtext.example.domainmodel/src/org/eclipse/xtext/example/DomainModelValidator.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright (c) 2009 itemis AG (http://www.itemis.eu) and others. + * 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 + *******************************************************************************/ +package org.eclipse.xtext.example; + +import java.util.Collections; +import java.util.List; + +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.xtext.crossref.impl.ImportUriValidator; +import org.eclipse.xtext.example.domainmodel.DomainmodelPackage; +import org.eclipse.xtext.validator.AbstractDeclarativeValidator; +import org.eclipse.xtext.validator.ComposedChecks; + +/** + * @author Sebastian Zarnekow - Initial contribution and API + */ +@ComposedChecks(validators= {ImportUriValidator.class}) +public class DomainModelValidator extends AbstractDeclarativeValidator { + + @Override + protected List<? extends EPackage> getEPackages() { + return Collections.singletonList(DomainmodelPackage.eINSTANCE); + } + +} diff --git a/examples/org.eclipse.xtext.example.domainmodel/src/org/eclipse/xtext/example/DomainmodelRuntimeModule.java b/examples/org.eclipse.xtext.example.domainmodel/src/org/eclipse/xtext/example/DomainmodelRuntimeModule.java index 48c3747..963fa43 100644 --- a/examples/org.eclipse.xtext.example.domainmodel/src/org/eclipse/xtext/example/DomainmodelRuntimeModule.java +++ b/examples/org.eclipse.xtext.example.domainmodel/src/org/eclipse/xtext/example/DomainmodelRuntimeModule.java @@ -3,10 +3,13 @@ Generated with Xtext */ package org.eclipse.xtext.example; - /** * used to register components to be used within the IDE. */ public class DomainmodelRuntimeModule extends AbstractDomainmodelRuntimeModule { + @org.eclipse.xtext.service.SingletonBinding(eager=true) + public Class<? extends DomainModelValidator> bindDomainModelValidator() { + return DomainModelValidator.class; + } } diff --git a/plugins/org.eclipse.xtext.xtend/src/org/eclipse/xtext/check/AbstractCheckValidator.java b/plugins/org.eclipse.xtext.xtend/src/org/eclipse/xtext/check/AbstractCheckValidator.java index 32f7987..683e8bd 100644 --- a/plugins/org.eclipse.xtext.xtend/src/org/eclipse/xtext/check/AbstractCheckValidator.java +++ b/plugins/org.eclipse.xtext.xtend/src/org/eclipse/xtext/check/AbstractCheckValidator.java @@ -1,3 +1,10 @@ +/******************************************************************************* + * Copyright (c) 2008 itemis AG (http://www.itemis.eu) and others. + * 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 + *******************************************************************************/ package org.eclipse.xtext.check; import java.util.Collections; @@ -6,64 +13,41 @@ import java.util.Map; import org.eclipse.emf.common.util.DiagnosticChain; import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.EObject; -import org.eclipse.emf.ecore.EPackage; -import org.eclipse.emf.ecore.EValidator; import org.eclipse.emf.mwe.core.issues.Issues; import org.eclipse.emf.mwe.core.issues.IssuesImpl; import org.eclipse.emf.mwe.core.issues.MWEDiagnostic; import org.eclipse.xtend.check.CheckFacade; import org.eclipse.xtend.expression.ExecutionContext; import org.eclipse.xtext.util.MultiMap; +import org.eclipse.xtext.validator.AbstractInjectableValidator; import org.eclipse.xtext.validator.CheckMode; import org.eclipse.xtext.validator.CheckType; -import org.eclipse.xtext.validator.CompositeEValidator; import com.google.inject.Inject; /** * @author Sven Efftinge - Initial contribution and API - * */ -public abstract class AbstractCheckValidator implements EValidator { - +public abstract class AbstractCheckValidator extends AbstractInjectableValidator { + private ExecutionContext ctx = null; - + @Inject public void setExecutionContext(ExecutionContext ctx) { this.ctx = ctx; } - - @Inject - public void register(EValidator.Registry registry) { - List<? extends EPackage> packages = getEPackages(); - for (EPackage ePackage : packages) { - CompositeEValidator.register(ePackage, this, registry); - } - } - - /** - * - */ - protected List<? extends EPackage> getEPackages() { - throw new UnsupportedOperationException("please overwrite"); - } - private MultiMap<CheckType, String> checkFiles = new MultiMap<CheckType, String>(); - + private final MultiMap<CheckType, String> checkFiles = new MultiMap<CheckType, String>(); + public void addCheckFile(String checkFile, CheckType checkType) { checkFiles.put(checkType, checkFile); } - + public void addCheckFile(String checkFile) { checkFiles.put(CheckType.FAST, checkFile); } - public boolean validate(EObject eObject, DiagnosticChain diagnostics, Map<Object, Object> context) { - return validate(eObject.eClass(),eObject,diagnostics,context); - } - public boolean validate(EClass eClass, EObject eObject, final DiagnosticChain diagnostics, Map<Object, Object> context) { CheckMode mode = CheckMode.getCheckMode(context); Issues issues = new IssuesImpl(); @@ -75,15 +59,11 @@ public abstract class AbstractCheckValidator implements EValidator { } } } - + for (MWEDiagnostic diag : issues.getIssues()) { diagnostics.add(diag); } return !issues.hasErrors(); } - public boolean validate(EDataType eDataType, Object value, DiagnosticChain diagnostics, Map<Object, Object> context) { - return true; - } - } diff --git a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parser/datatyperules/PackratParserTest.java b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parser/datatyperules/PackratParserTest.java index 2022879..c4bdf73 100644 --- a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parser/datatyperules/PackratParserTest.java +++ b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parser/datatyperules/PackratParserTest.java @@ -55,7 +55,7 @@ public class PackratParserTest extends ParserTest { } @Override - protected XtextResource getResource(InputStream in) throws Exception { + public XtextResource getResource(InputStream in) throws Exception { ParserTestHelper helper = new ParserTestHelper(getResourceFactory(), parser, get(Keys.RESOURCE_SET_KEY)); return helper.getResourceFromStream(in); } diff --git a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parser/terminalrules/PackratParserTest.java b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parser/terminalrules/PackratParserTest.java index e2d9e9a..8655e92 100644 --- a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parser/terminalrules/PackratParserTest.java +++ b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/parser/terminalrules/PackratParserTest.java @@ -27,7 +27,7 @@ public class PackratParserTest extends ParserTest { } @Override - protected XtextResource getResource(InputStream in) throws Exception { + public XtextResource getResource(InputStream in) throws Exception { ParserTestHelper helper = new ParserTestHelper(getResourceFactory(), parser, get(Keys.RESOURCE_SET_KEY)); return helper.getResourceFromStream(in); } diff --git a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/resource/metamodel/Xtext2EcoreTransformerTest.java b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/resource/metamodel/Xtext2EcoreTransformerTest.java index 9f332a1..37da39a 100644 --- a/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/resource/metamodel/Xtext2EcoreTransformerTest.java +++ b/tests/org.eclipse.xtext.generator.tests/src/org/eclipse/xtext/resource/metamodel/Xtext2EcoreTransformerTest.java @@ -92,7 +92,7 @@ public class Xtext2EcoreTransformerTest extends AbstractGeneratorTest { } @Override - protected XtextResource getResource(InputStream in) throws Exception { + public XtextResource getResource(InputStream in) throws Exception { ResourceSet rs = get(XtextResourceSet.class); XtextResource resource = (XtextResource) getResourceFactory().createResource(URI.createURI("mytestmodel.test")); rs.getResources().add(resource); diff --git a/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/ContentAssistProcessorTestBuilder.java b/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/ContentAssistProcessorTestBuilder.java index c4bd6e9..0e128df 100644 --- a/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/ContentAssistProcessorTestBuilder.java +++ b/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/ContentAssistProcessorTestBuilder.java @@ -23,6 +23,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import junit.framework.Assert; + import org.easymock.EasyMock; import org.eclipse.jface.text.ITextViewer; import org.eclipse.jface.text.contentassist.ICompletionProposal; @@ -45,18 +47,20 @@ import org.eclipse.xtext.util.Strings; * @author Michael Clay - Initial contribution and API * @author Sven Efftinge */ -public class ContentAssistProcessorTestBuilder extends AbstractXtextTests { +public class ContentAssistProcessorTestBuilder { private final IContentAssistProcessor contentAssistProcessor; private final ITextViewer textViewerMock; private String model; private int cursorPosition; private final ISetup setupClazz; + private final AbstractXtextTests tests; - public ContentAssistProcessorTestBuilder(ISetup setupClazz) throws Exception { + public ContentAssistProcessorTestBuilder(ISetup setupClazz, AbstractXtextTests tests) throws Exception { this.setupClazz = setupClazz; - with(setupClazz); - this.contentAssistProcessor = get(IContentAssistProcessor.class); + this.tests = tests; + tests.with(setupClazz); + this.contentAssistProcessor = tests.get(IContentAssistProcessor.class); this.textViewerMock = EasyMock.createMock(ITextViewer.class); } @@ -113,14 +117,14 @@ public class ContentAssistProcessorTestBuilder extends AbstractXtextTests { ICompletionProposal[] computeCompletionProposals = computeCompletionProposals(currentModelToParse, cursorPosition); - assertEquals("expect " + expectedText.length + " CompletionProposal item for model '" + Assert.assertEquals("expect " + expectedText.length + " CompletionProposal item for model '" + currentModelToParse + "': expectation was:\n" + Strings.concat(", ", Arrays.asList(expectedText)) + "\nbut actual was:\n" + Strings.concat(", ", toString(computeCompletionProposals)), expectedText.length, computeCompletionProposals.length); for (int i = 0; i < computeCompletionProposals.length; i++) { ICompletionProposal completionProposal = computeCompletionProposals[i]; - assertTrue("expect completionProposal text '" + completionProposal.getDisplayString() + "' ", Arrays.asList(expectedText) + Assert.assertTrue("expect completionProposal text '" + completionProposal.getDisplayString() + "' ", Arrays.asList(expectedText) .contains(completionProposal.getDisplayString())); } @@ -130,16 +134,16 @@ public class ContentAssistProcessorTestBuilder extends AbstractXtextTests { public ContentAssistProcessorTestBuilder assertMatchString(String matchString) throws Exception { String currentModelToParse = getModel(); - final XtextResource xtextResource = getResource(new StringInputStream(currentModelToParse)); + final XtextResource xtextResource = tests.getResource(new StringInputStream(currentModelToParse)); List<IContentAssistContext> contentAssistContextList = new DefaultContentAssistProcessor() { @Override public List<IContentAssistContext> createContextList(XtextResource resource, String text, final int offset) { return super.createContextList(xtextResource, text, offset); } }.createContextList(xtextResource, currentModelToParse,cursorPosition); - - for (IContentAssistContext contentAssistContext : contentAssistContextList) { - assertEquals(matchString, contentAssistContext.getMatchString()); + + for (IContentAssistContext contentAssistContext : contentAssistContextList) { + Assert.assertEquals(matchString, contentAssistContext.getMatchString()); break; } return this; @@ -172,7 +176,7 @@ public class ContentAssistProcessorTestBuilder extends AbstractXtextTests { computedProposals.append(","); } } - assertEquals("expect only " + completionProposalCount + " CompletionProposal item for model '" + Assert.assertEquals("expect only " + completionProposalCount + " CompletionProposal item for model '" + currentModelToParse + "' but got '"+computedProposals+"'", completionProposalCount, computeCompletionProposals.length); return this; @@ -181,7 +185,7 @@ public class ContentAssistProcessorTestBuilder extends AbstractXtextTests { public ICompletionProposal[] computeCompletionProposals(final String currentModelToParse, int cursorPosition) throws Exception { - final XtextResource xtextResource = getResource(new StringInputStream(currentModelToParse)); + final XtextResource xtextResource = tests.getResource(new StringInputStream(currentModelToParse)); final IXtextDocument xtextDocument = getDocument(xtextResource); @@ -220,7 +224,7 @@ public class ContentAssistProcessorTestBuilder extends AbstractXtextTests { } private ContentAssistProcessorTestBuilder clone(String model, int offset) throws Exception { - ContentAssistProcessorTestBuilder builder = new ContentAssistProcessorTestBuilder(setupClazz); + ContentAssistProcessorTestBuilder builder = new ContentAssistProcessorTestBuilder(setupClazz, tests); builder.model = model; builder.cursorPosition = offset; return builder; @@ -237,7 +241,7 @@ public class ContentAssistProcessorTestBuilder extends AbstractXtextTests { public String getText(int start, int end) { return testDslModel.substring(start, end + 1); } - + @Override public String getText() { return testDslModel; @@ -245,4 +249,8 @@ public class ContentAssistProcessorTestBuilder extends AbstractXtextTests { }; } + public <T> T get(Class<T> clazz) { + return tests.get(clazz); + } + } diff --git a/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/DefaultContentAssistProcessorTest.java b/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/DefaultContentAssistProcessorTest.java index 9dadf16..be34e31 100644 --- a/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/DefaultContentAssistProcessorTest.java +++ b/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/DefaultContentAssistProcessorTest.java @@ -40,8 +40,8 @@ import com.google.inject.Injector; * @author Jan Koehnlein
* @see org.eclipse.xtext.ui.common.editor.contentassist.impl.DefaultContentAssistProcessor
*/
-public class DefaultContentAssistProcessorTest extends AbstractXtextTests {
-
+public class DefaultContentAssistProcessorTest extends AbstractXtextTests {
+
private ISetup getRefGrammarSetup() {
return new ReferenceGrammarTestLanguageStandaloneSetup() {
@Override
@@ -132,7 +132,7 @@ public class DefaultContentAssistProcessorTest extends AbstractXtextTests { .append("spielplatz 1 \"1\" {kind")
.assertTextAtCursorPosition(18,"kind","erwachsener","spielzeug","familie","}");
}
-
+
public void testComputeCompletionProposalsIgnoreCase() throws Exception {
ContentAssistProcessorTestBuilder builder = newBuilder(getRefGrammarSetup());
builder = builder.append("spielplatz 1 \"SpielplatzBeschreibung\" { kind(k1 0) kind(k2 0) erwachsener(e1 0) erwachsener(e2 0) ");
@@ -240,13 +240,13 @@ public class DefaultContentAssistProcessorTest extends AbstractXtextTests { newBuilder(getXtextGrammarSetup())
.appendNl("grammar foo with org.eclipse.xtext.common.Terminals")
.appendNl("generate foo \"foo\"")
- .append("MyRule : 'foo' name").assertText("\"Keyword_Value\"", "(", "*", "+", "+=", ";", "=", "?", "?=",
+ .append("MyRule : 'foo' name").assertText("\"Keyword_Value\"", "(", "*", "+", "+=", ";", "=", "?", "?=",
"Assignment_Feature", "MyRule", "{")
.appendNl(";")
.append("terminal Other_Id").assertText(":","returns");
}
-
+
public void testKeywordWithBackslashes() throws Exception {
newBuilder(getKeywordsLangSetup())
.assertText("foo\\bar", "foo\\", "\\bar", "\\");
@@ -254,7 +254,7 @@ public class DefaultContentAssistProcessorTest extends AbstractXtextTests { protected ContentAssistProcessorTestBuilder newBuilder(ISetup standAloneSetup) throws Exception {
with(standAloneSetup);
- return new ContentAssistProcessorTestBuilder(standAloneSetup);
+ return new ContentAssistProcessorTestBuilder(standAloneSetup, this);
}
}
\ No newline at end of file diff --git a/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/TwoContextsContentAssistTest.java b/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/TwoContextsContentAssistTest.java index f642c9c..1683689 100644 --- a/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/TwoContextsContentAssistTest.java +++ b/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/contentassist/impl/TwoContextsContentAssistTest.java @@ -34,25 +34,23 @@ public class TwoContextsContentAssistTest extends AbstractXtextTests { * @return */ private ISetup getGrammarSetup() { - return new TwoContextsTestLanguageStandaloneSetup() - { + return new TwoContextsTestLanguageStandaloneSetup() { + @Override + public Injector createInjector() { + return Guice.createInjector(new TwoContextsTestLanguageRuntimeModule(), new TwoContextsTestLanguageUiModule(){ - @Override - public Injector createInjector() { - return Guice.createInjector(new TwoContextsTestLanguageRuntimeModule(), new TwoContextsTestLanguageUiModule(){ - - @Override - public Class<? extends IProposalProvider> bindIProposalProvider() { - return TwoContextsTestLanguageTestProposals.class; - } - }); - } + @Override + public Class<? extends IProposalProvider> bindIProposalProvider() { + return TwoContextsTestLanguageTestProposals.class; + } + }); + } }; } protected ContentAssistProcessorTestBuilder newBuilder(ISetup standAloneSetup) throws Exception { with(standAloneSetup); - return new ContentAssistProcessorTestBuilder(standAloneSetup); + return new ContentAssistProcessorTestBuilder(standAloneSetup, this); } public static class TwoContextsTestLanguageTestProposals extends org.eclipse.xtext.ui.common.editor.contentassist.impl.GenTwoContextsTestLanguageProposals { diff --git a/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/hyperlinking/HyperlinkHelperTest.java b/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/hyperlinking/HyperlinkHelperTest.java index e803c60..ba6fc0e 100644 --- a/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/hyperlinking/HyperlinkHelperTest.java +++ b/tests/org.eclipse.xtext.ui.common.tests/src/org/eclipse/xtext/ui/common/editor/hyperlinking/HyperlinkHelperTest.java @@ -43,6 +43,7 @@ public class HyperlinkHelperTest extends AbstractXtextTests { @Override protected void setUp() throws Exception { + super.setUp(); with(getSetup()); helper = get(HyperlinkHelper.class); model = "grammar org.eclipse.xtext.ui.common.HyperlinkTest with org.eclipse.xtext.common.Terminals\n" + diff --git a/tests/org.eclipse.xtext.xtend.tests/src/org/eclipse/xtext/xtend/contentassist/DefaultXtendContentAssistProcessorTest.java b/tests/org.eclipse.xtext.xtend.tests/src/org/eclipse/xtext/xtend/contentassist/DefaultXtendContentAssistProcessorTest.java index 6519d15..9253637 100644 --- a/tests/org.eclipse.xtext.xtend.tests/src/org/eclipse/xtext/xtend/contentassist/DefaultXtendContentAssistProcessorTest.java +++ b/tests/org.eclipse.xtext.xtend.tests/src/org/eclipse/xtext/xtend/contentassist/DefaultXtendContentAssistProcessorTest.java @@ -26,6 +26,6 @@ public class DefaultXtendContentAssistProcessorTest extends DefaultContentAssist assertTrue(newBuilder.get(IProposalProvider.class) instanceof AbstractXtendProposalProvider); return newBuilder; } - + } |

