/*******************************************************************************
* Copyright (c) 2011 SAP AG 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
*
* Contributors:
* SAP AG - initial API and implementation
******************************************************************************/
package com.sap.furcas.runtime.parser.testbase;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.ocl.ecore.opposites.DefaultOppositeEndFinder;
import com.sap.furcas.modeladaptation.emf.adaptation.EMFModelAdapter;
import com.sap.furcas.modeladaptation.emf.lookup.QueryBasedEcoreMetaModelLookUp;
import com.sap.furcas.runtime.common.interfaces.IMetaModelLookup;
import com.sap.furcas.runtime.common.util.EcoreHelper;
import com.sap.furcas.runtime.common.util.TCSSpecificOCLEvaluator;
import com.sap.furcas.runtime.parser.IModelAdapter;
import com.sap.furcas.runtime.parser.ModelParsingResult;
import com.sap.furcas.runtime.parser.ParserFacade;
import com.sap.furcas.runtime.parser.PartitionAssignmentHandlerBaseImpl;
import com.sap.furcas.runtime.parser.impl.DefaultTextAwareModelAdapter;
/**
* Parsing helper for parsing text fragments / files that uses a {@link EMFModelAdapter}
*/
public class EMFParsingHelper extends AbstractParsingHelper<ModelParsingResult> {
private final Set<URI> referenceScope;
private final ResourceSet resourceSet;
private final String packageURI;
public EMFParsingHelper(ParserFacade parserFacade, GeneratedParserTestConfiguration testConfig, String packageURI) {
super(parserFacade);
this.packageURI = packageURI;
this.resourceSet = testConfig.getSourceConfiguration().getResourceSet();
this.referenceScope = testConfig.getSourceConfiguration().getReferenceScope();
}
@Override
protected IModelAdapter createModelAdapter() {
IMetaModelLookup<EObject> metamodelLookup = new QueryBasedEcoreMetaModelLookUp(resourceSet, referenceScope);
Resource transientResource = EcoreHelper.createTransientParsingResource(resourceSet, packageURI);
return new DefaultTextAwareModelAdapter(new EMFModelAdapter(resourceSet, new PartitionAssignmentHandlerBaseImpl(
transientResource), metamodelLookup, new HashSet<URI>(), new TCSSpecificOCLEvaluator(),
DefaultOppositeEndFinder.getInstance()));
}
@Override
protected ModelParsingResult createParsingResult(IModelAdapter modelAdapter, ModelParsingResult result) {
return result;
}
}