Skip to content

Commit

Permalink
Fix exceptions loading cross refs
Browse files Browse the repository at this point in the history
  • Loading branch information
melaasar committed Sep 8, 2021
1 parent 9d8e288 commit 5e1ddac
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 51 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.opencaesar.oml.dsl.ui.resource

import io.opencaesar.oml.util.OmlCrossReferenceAdapter
import org.eclipse.core.resources.IProject
import org.eclipse.emf.ecore.resource.ResourceSet
import org.eclipse.emf.ecore.util.ECrossReferenceAdapter
Expand All @@ -15,7 +14,7 @@ class OmlResourceSetInitializer implements IResourceSetInitializer {
override initialize(ResourceSet resourceSet, IProject project) {
val adapter = ECrossReferenceAdapter.getCrossReferenceAdapter(resourceSet)
if (adapter === null) {
resourceSet.eAdapters().add(new OmlCrossReferenceAdapter)
resourceSet.eAdapters().add(new ECrossReferenceAdapter)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,17 @@ class OmlResourceDescriptionStrategy extends DefaultResourceDescriptionStrategy
override boolean createEObjectDescriptions(EObject eObject, IAcceptor<IEObjectDescription> acceptor) {
if (eObject instanceof Ontology) {
val qualifiedName = getQualifiedNameProvider().getFullyQualifiedName(eObject);
acceptor.accept(EObjectDescription.create(qualifiedName, eObject, newHashMap(
"namespace" -> eObject.ontology.namespace,
"prefix" -> eObject.ontology.prefix)));
if (qualifiedName !== null) {
acceptor.accept(EObjectDescription.create(qualifiedName, eObject, newHashMap(
"namespace" -> eObject.ontology.namespace,
"prefix" -> eObject.ontology.prefix)));
}
return true
} else if (eObject instanceof Member) {
val qualifiedName = getQualifiedNameProvider().getFullyQualifiedName(eObject);
if (qualifiedName !== null) {
acceptor.accept(EObjectDescription.create(qualifiedName, eObject, newHashMap("defaultPrefix" -> eObject.ontology.prefix)));
acceptor.accept(EObjectDescription.create(qualifiedName, eObject, newHashMap(
"defaultPrefix" -> eObject.ontology.prefix)));
}
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,14 @@
*/
package io.opencaesar.oml.dsl.resource;

import org.eclipse.emf.ecore.util.ECrossReferenceAdapter;
import org.eclipse.xtext.resource.SynchronizedXtextResourceSet;

import io.opencaesar.oml.util.OmlCrossReferenceAdapter;

public class OmlSynchronizedXtextResourceSet extends SynchronizedXtextResourceSet {

public OmlSynchronizedXtextResourceSet() {
super();
eAdapters().add(new OmlCrossReferenceAdapter());
eAdapters().add(new ECrossReferenceAdapter());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,13 @@ import com.google.inject.Inject
import io.opencaesar.oml.Import
import io.opencaesar.oml.Ontology
import io.opencaesar.oml.dsl.naming.OmlNamespaceImportNormalizer
import java.util.Collections
import java.util.List
import org.eclipse.emf.ecore.EObject
import org.eclipse.xtext.naming.IQualifiedNameConverter
import org.eclipse.xtext.scoping.impl.ImportNormalizer
import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider

import static extension io.opencaesar.oml.util.OmlRead.*
import java.util.Collections
import io.opencaesar.oml.util.OmlRead

class OmlImportedNamespaceAwareLocalScopeProvider extends ImportedNamespaceAwareLocalScopeProvider{

Expand All @@ -44,13 +43,17 @@ class OmlImportedNamespaceAwareLocalScopeProvider extends ImportedNamespaceAware

override List<ImportNormalizer> internalGetImportedNamespaceResolvers(EObject context, boolean ignoreCase) {
if (context instanceof Ontology) {
var ontology = context as Ontology

val importedNamespaceResolvers = Lists.newArrayList();

// add the current ontology
importedNamespaceResolvers.add(new OmlNamespaceImportNormalizer(qnc.toQualifiedName(context.namespace), context.prefix, ignoreCase))
if (ontology.namespace !== null) {
importedNamespaceResolvers.add(new OmlNamespaceImportNormalizer(qnc.toQualifiedName(ontology.namespace), ontology.prefix, ignoreCase))
}

// collect all local imports first (so they get priority)
context.importPrefixes.forEach[namespace, prefix|
OmlRead.getImportPrefixes(ontology).forEach[namespace, prefix|
if (prefix !== null && namespace !== null) {
importedNamespaceResolvers.add(new OmlNamespaceImportNormalizer(qnc.toQualifiedName(namespace), prefix, ignoreCase))
}
Expand Down

This file was deleted.

0 comments on commit 5e1ddac

Please sign in to comment.