summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Laner <laner@itestra.de>2014-03-05 16:42:39 +0100
committerStefan Laner <laner@itestra.de>2014-03-05 16:45:35 +0100
commit4a64be6f11647240b74bda82020b1865deaefb34 (patch)
tree798b9f9fb7f8b3fdd0060402dfdcc07ecf330287
parent43967c317751a2acf809357d7dbf8ccb9e7120a2 (diff)
downloadgenivi-common-api-runtime-4a64be6f11647240b74bda82020b1865deaefb34.tar.gz
Added preference page to en- or disable validator
Added franca version test to cancel some validations updated franca validation point Rebased change Change-Id: I1b779e0f3a8d45effe9df19147b678abac740203
-rw-r--r--org.genivi.commonapi.core.validator/META-INF/MANIFEST.MF8
-rw-r--r--org.genivi.commonapi.core.validator/plugin.xml19
-rw-r--r--org.genivi.commonapi.core.validator/src/org/genivi/commonapi/core/validator/ValidatorCore.java82
-rw-r--r--org.genivi.commonapi.core.validator/src/org/genivi/commonapi/core/validator/preferencepage/ValidatorCorePreferencesPage.java42
4 files changed, 125 insertions, 26 deletions
diff --git a/org.genivi.commonapi.core.validator/META-INF/MANIFEST.MF b/org.genivi.commonapi.core.validator/META-INF/MANIFEST.MF
index 0e55bb6..6091eae 100644
--- a/org.genivi.commonapi.core.validator/META-INF/MANIFEST.MF
+++ b/org.genivi.commonapi.core.validator/META-INF/MANIFEST.MF
@@ -17,7 +17,11 @@ Require-Bundle: org.eclipse.ui,
org.genivi.commonapi.core;bundle-version="2.1.4",
org.genivi.commonapi.core.ui;bundle-version="2.1.4",
org.franca.core.dsl;bundle-version="0.8.9",
- org.eclipse.xtext;bundle-version="2.4.3"
+ org.eclipse.xtext;bundle-version="2.4.3",
+ org.eclipse.ui;bundle-version="3.104.0"
Import-Package: org.eclipse.core.resources,
- org.eclipse.core.runtime;version="3.4.0"
+ org.eclipse.core.runtime;version="3.4.0",
+ org.eclipse.jface.preference,
+ org.genivi.commonapi.core.ui,
+ org.osgi.framework;version="1.7.0"
Export-Package: org.genivi.commonapi.core.validator
diff --git a/org.genivi.commonapi.core.validator/plugin.xml b/org.genivi.commonapi.core.validator/plugin.xml
index c135580..31886e4 100644
--- a/org.genivi.commonapi.core.validator/plugin.xml
+++ b/org.genivi.commonapi.core.validator/plugin.xml
@@ -3,9 +3,18 @@
<plugin>
<extension
point="org.franca.core.dsl.francaValidator">
- <validator
- class="org.genivi.commonapi.core.validator.ValidatorCore"
- mode="FAST">
- </validator>
+ <validator
+ class="org.genivi.commonapi.core.validator.ValidatorCore"
+ mode="FAST"
+ name="ValidatorCore">
+ </validator>
</extension>
-</plugin> \ No newline at end of file
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ class="org.genivi.commonapi.core.validator.preferencepage.ValidatorCorePreferencesPage"
+ id="org.genivi.commonapi.core.validator.preferencepage.ValidatorCorePreferencesPage"
+ name="Validator Core">
+ </page>
+ </extension>
+</plugin>
diff --git a/org.genivi.commonapi.core.validator/src/org/genivi/commonapi/core/validator/ValidatorCore.java b/org.genivi.commonapi.core.validator/src/org/genivi/commonapi/core/validator/ValidatorCore.java
index 9487df2..67338cf 100644
--- a/org.genivi.commonapi.core.validator/src/org/genivi/commonapi/core/validator/ValidatorCore.java
+++ b/org.genivi.commonapi.core.validator/src/org/genivi/commonapi/core/validator/ValidatorCore.java
@@ -37,11 +37,16 @@ import org.franca.core.franca.FField;
import org.franca.core.franca.FInterface;
import org.franca.core.franca.FMethod;
import org.franca.core.franca.FModel;
+import org.franca.core.franca.FModelElement;
import org.franca.core.franca.FStructType;
import org.franca.core.franca.FType;
import org.franca.core.franca.FTypeCollection;
import org.franca.core.franca.FrancaPackage;
import org.franca.core.franca.Import;
+import org.genivi.commonapi.core.ui.CommonApiUiPlugin;
+import org.genivi.commonapi.core.validator.preferencepage.ValidatorCorePreferencesPage;
+import org.osgi.framework.BundleReference;
+import org.osgi.framework.Version;
public class ValidatorCore implements IFrancaExternalValidator {
@@ -53,6 +58,9 @@ public class ValidatorCore implements IFrancaExternalValidator {
@Override
public void validateModel(FModel model,
ValidationMessageAcceptor messageAcceptor) {
+ if (!isValidatorEnabled()) {
+ return;
+ }
resourceSet = new ResourceSetImpl();
Resource res = model.eResource();
final Path platformPath = new Path(res.getURI().toPlatformString(true));
@@ -289,14 +297,16 @@ public class ValidatorCore implements IFrancaExternalValidator {
ValidationMessageAcceptor messageAcceptor,
List<String> interfaceTypecollectionNames,
FTypeCollection fTypeCollection) {
- validateName(fTypeCollection.getName(), messageAcceptor,
+ validateName(messageAcceptor,
fTypeCollection);
- if (interfaceTypecollectionNames.indexOf(fTypeCollection.getName()) != interfaceTypecollectionNames
- .lastIndexOf(fTypeCollection.getName())) {
- acceptError("Name " + fTypeCollection.getName()
- + " isn't unique in this file!", fTypeCollection,
- FrancaPackage.Literals.FMODEL_ELEMENT__NAME, -1,
- messageAcceptor);
+ if (!isFrancaVersionGreaterThan(0, 8, 9)) {
+ if (interfaceTypecollectionNames.indexOf(fTypeCollection.getName()) != interfaceTypecollectionNames
+ .lastIndexOf(fTypeCollection.getName())) {
+ acceptError("Name " + fTypeCollection.getName()
+ + " isn't unique in this file!", fTypeCollection,
+ FrancaPackage.Literals.FMODEL_ELEMENT__NAME, -1,
+ messageAcceptor);
+ }
}
}
@@ -337,17 +347,17 @@ public class ValidatorCore implements IFrancaExternalValidator {
ValidationMessageAcceptor messageAcceptor,
FTypeCollection fTypeCollection) {
for (FType fType : fTypeCollection.getTypes()) {
- validateName(fType.getName(), messageAcceptor, fType);
+ validateName(messageAcceptor, fType);
if (fType instanceof FStructType) {
for (FField fField : ((FStructType) fType).getElements()) {
- validateName(fField.getName(), messageAcceptor, fField);
+ validateName(messageAcceptor, fField);
}
}
if (fType instanceof FEnumerationType) {
for (FEnumerator fEnumerator : ((FEnumerationType) fType)
.getEnumerators()) {
- validateName(fEnumerator.getName(), messageAcceptor,
+ validateName(messageAcceptor,
fEnumerator);
}
}
@@ -362,35 +372,69 @@ public class ValidatorCore implements IFrancaExternalValidator {
-1, messageAcceptor);
for (FAttribute att : fInterface.getAttributes()) {
- validateName(att.getName(), messageAcceptor, att);
+ validateName(messageAcceptor, att);
}
for (FBroadcast fBroadcast : fInterface.getBroadcasts()) {
- validateName(fBroadcast.getName(), messageAcceptor, fBroadcast);
+ validateName(messageAcceptor, fBroadcast);
for (FArgument out : fBroadcast.getOutArgs()) {
- validateName(out.getName(), messageAcceptor, out);
+ validateName(messageAcceptor, out);
}
}
for (FMethod fMethod : fInterface.getMethods()) {
- validateName(fMethod.getName(), messageAcceptor, fMethod);
+ validateName(messageAcceptor, fMethod);
for (FArgument out : fMethod.getOutArgs()) {
- validateName(out.getName(), messageAcceptor, out);
+ validateName(messageAcceptor, out);
}
for (FArgument in : fMethod.getInArgs()) {
- validateName(in.getName(), messageAcceptor, in);
+ validateName(messageAcceptor, in);
}
}
}
- private void validateName(String name,
- ValidationMessageAcceptor messageAcceptor, EObject eObject) {
+ private void validateName(ValidationMessageAcceptor messageAcceptor,
+ EObject eObject) {
+ String name = ((FModelElement) eObject).getName();
if (cppKeywords.keyWords.contains(name)) {
- acceptError("Name " + name + " is a keyword in c++", eObject,
+ acceptError("Name " + name
+ + " is a keyword in c++", eObject,
FrancaPackage.Literals.FMODEL_ELEMENT__NAME, -1,
messageAcceptor);
return;
}
}
+ private boolean isFrancaVersionGreaterThan(int major, int minor, int micro) {
+ Version francaVersion = ((BundleReference) FArgument.class
+ .getClassLoader()).getBundle().getVersion();
+ if (francaVersion.getMajor() > major) {
+ return true;
+ }
+ if (francaVersion.getMajor() < major){
+ return false;
+ }
+ if (francaVersion.getMinor() > minor) {
+ return true;
+ }
+ if (francaVersion.getMinor() < minor){
+ return false;
+ }
+ if (francaVersion.getMicro() > micro) {
+ return true;
+ }
+ if (francaVersion.getMicro() < micro) {
+ return false;
+ }
+ return false;
+ }
+
+ public boolean isValidatorEnabled() {
+ boolean enabled = CommonApiUiPlugin
+ .getDefault()
+ .getPreferenceStore()
+ .getBoolean(ValidatorCorePreferencesPage.ENABLED_CORE_VALIDATOR);
+ return enabled;
+ }
+
private void acceptError(String message, EObject object,
EStructuralFeature feature, int index,
ValidationMessageAcceptor messageAcceptor) {
diff --git a/org.genivi.commonapi.core.validator/src/org/genivi/commonapi/core/validator/preferencepage/ValidatorCorePreferencesPage.java b/org.genivi.commonapi.core.validator/src/org/genivi/commonapi/core/validator/preferencepage/ValidatorCorePreferencesPage.java
new file mode 100644
index 0000000..8c2c749
--- /dev/null
+++ b/org.genivi.commonapi.core.validator/src/org/genivi/commonapi/core/validator/preferencepage/ValidatorCorePreferencesPage.java
@@ -0,0 +1,42 @@
+/* Copyright (C) 2013 BMW Group
+ * Author: Manfred Bathelt (manfred.bathelt@bmw.de)
+ * Author: Juergen Gehring (juergen.gehring@bmw.de)
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.genivi.commonapi.core.validator.preferencepage;
+
+import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.genivi.commonapi.core.ui.CommonApiUiPlugin;
+
+public class ValidatorCorePreferencesPage extends FieldEditorPreferencePage
+ implements IWorkbenchPreferencePage {
+
+ public final static String ENABLED_CORE_VALIDATOR = "ENABLED_CORE_VALIDATOR";
+
+ @Override
+ public void checkState() {
+ super.checkState();
+ }
+
+ @Override
+ public void createFieldEditors() {
+ addField(new BooleanFieldEditor(ENABLED_CORE_VALIDATOR,
+ "validator enabled", getFieldEditorParent()));
+ }
+
+ @Override
+ public void init(IWorkbench workbench) {
+ IPreferenceStore prefStore = CommonApiUiPlugin.getDefault()
+ .getPreferenceStore();
+ setPreferenceStore(prefStore);
+ setDescription("Disable or enable the core validator!");
+ prefStore.setDefault(
+ ValidatorCorePreferencesPage.ENABLED_CORE_VALIDATOR, true);
+ }
+}