All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jnario.scoping.JnarioResourceDescriptionStrategy Maven / Gradle / Ivy

package org.jnario.scoping;

import org.apache.log4j.Logger;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtend.core.resource.XtendResourceDescriptionStrategy;
import org.eclipse.xtend.core.xtend.XtendFile;
import org.eclipse.xtext.common.types.JvmType;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.resource.EObjectDescription;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.resource.IReferenceDescription;
import org.eclipse.xtext.util.IAcceptor;
import org.jnario.Executable;
import org.jnario.Specification;

public class JnarioResourceDescriptionStrategy extends	XtendResourceDescriptionStrategy {
	
	private static final Logger LOG = Logger.getLogger(JnarioResourceDescriptionStrategy.class);

	@Override
	public boolean createEObjectDescriptions(EObject eObject, IAcceptor acceptor) {
		boolean isJvmType = (eObject instanceof JvmType) || isJnarioElement(eObject);
		if (!isJvmType){
			return false;
		}
		if (getQualifiedNameProvider() == null)
			return false;
		try {
			QualifiedName qualifiedName = getQualifiedNameProvider().getFullyQualifiedName(eObject);
			if (qualifiedName != null) {
				acceptor.accept(EObjectDescription.create(qualifiedName, eObject, createLazyUserData(eObject)));
			}
		} catch (Exception exc) {
			LOG.error(exc.getMessage());
		}
		return true;
	}
	
	protected boolean isJnarioElement(EObject eObject) {
		return (eObject instanceof Executable) || 
		(eObject instanceof XtendFile) || 
		(eObject instanceof Specification);
	}

//	@Override
//	public boolean createReferenceDescriptions(EObject from, URI exportedContainerURI,
//			IAcceptor acceptor) {
//		if(isJnarioElement(from)){
//			System.out.println(from.eResource().getURI());
//			return true;
//		}
//		return false;
//	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy