Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/ValidatorExtensionManager.java')
-rw-r--r--plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/ValidatorExtensionManager.java24
1 files changed, 19 insertions, 5 deletions
diff --git a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/ValidatorExtensionManager.java b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/ValidatorExtensionManager.java
index aa2d33069..074ad5034 100644
--- a/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/ValidatorExtensionManager.java
+++ b/plugins/org.eclipse.etrice.core.room/src/org/eclipse/etrice/core/validation/ValidatorExtensionManager.java
@@ -21,7 +21,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.common.EMFPlugin;
@@ -37,6 +36,10 @@ import org.eclipse.xtext.validation.Check;
import org.eclipse.xtext.validation.CheckMode;
import org.eclipse.xtext.validation.CheckType;
import org.eclipse.xtext.validation.ValidationMessageAcceptor;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Inject;
+import com.google.inject.Injector;
/**
* Custom validator manager for room language, that provides registration via an
@@ -97,7 +100,7 @@ public class ValidatorExtensionManager extends CustomValidatorManager {
&& Platform.getExtensionRegistry().getExtensionPoint(IVALIDATOR_ID) != null;
}
- public void loadValidatorExtensions() {
+ public void loadValidatorExtensions(Injector injector) {
IConfigurationElement[] config = Platform.getExtensionRegistry().getConfigurationElementsFor(IVALIDATOR_ID);
// we use parent-package.class-name as key in our tables
@@ -120,7 +123,11 @@ public class ValidatorExtensionManager extends CustomValidatorManager {
// now we add each extension to our maps
for (IConfigurationElement e : config) {
try {
- final Object ext = e.createExecutableExtension("class");
+ final String extContributor = e.getContributor().getName();
+ final Bundle extBundle = Platform.getBundle(extContributor);
+ final String extClassName = e.getAttribute("class");
+ final Class<?> extClass = extBundle.loadClass(extClassName);
+ final Object ext = injector.getInstance(extClass);
if (ext instanceof ICustomValidator) {
ICustomValidator validator = (ICustomValidator) ext;
infos.add(new ValidatorInfo(validator, e.getName() + ValidatorInfo.SEP
@@ -148,8 +155,8 @@ public class ValidatorExtensionManager extends CustomValidatorManager {
System.out.println("ValidatorExtensionManager: unexpected extension");
}
}
- catch (CoreException ex) {
- System.out.println(ex.getMessage());
+ catch (ClassNotFoundException ex) {
+ System.out.println(ex.toString());
}
}
}
@@ -255,6 +262,13 @@ public class ValidatorExtensionManager extends CustomValidatorManager {
isRegistryAvailable = Registry.isAvailable();
}
+ @Inject
+ public void registerExtensionValidators(Injector injector) {
+ if(isRegistryAvailable) {
+ Registry.getInstance().loadValidatorExtensions(injector);
+ }
+ }
+
@Check
public void checkObject(EObject object) {
if (isRegistryAvailable) {

Back to the top