| /** |
| * <copyright> |
| * |
| * Copyright (c) 2008,2011 E.D.Willink and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v2.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v20.html |
| * |
| * Contributors: |
| * E.D.Willink - initial API and implementation |
| * |
| * </copyright> |
| * |
| * $Id$ |
| */ |
| package org.eclipse.qvto.examples.xtext.qvtoperational.tests; |
| |
| import java.io.IOException; |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.eclipse.emf.common.EMFPlugin; |
| import org.eclipse.emf.common.util.URI; |
| import org.eclipse.emf.ecore.resource.Resource; |
| import org.eclipse.emf.ecore.resource.ResourceSet; |
| import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl; |
| import org.eclipse.emf.ecore.xmi.XMLResource; |
| import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; |
| import org.eclipse.jdt.annotation.NonNull; |
| import org.eclipse.ocl.examples.xtext.tests.XtextTestCase; |
| import org.eclipse.ocl.pivot.utilities.OCL; |
| import org.eclipse.ocl.xtext.base.utilities.BaseCSResource; |
| import org.eclipse.qvto.examples.xtext.qvtoperational.QVTOperationalStandaloneSetup; |
| |
| public abstract class AbstractQVToXtextTestCase extends XtextTestCase |
| { |
| |
| protected OCL ocl; |
| |
| public Resource doLoad_Concrete(String stem, String extension) throws IOException { |
| String inputName = stem + "." + extension; |
| URI inputURI = getProjectFileURI(inputName); |
| return doLoad_Concrete(inputURI); |
| } |
| |
| protected Resource doLoad_Concrete(@NonNull URI inputURI) throws IOException { |
| String inputName = inputURI.lastSegment(); |
| String cstName = inputName + ".xmi"; |
| String pivotName = inputName + ".pivot"; |
| URI cstURI = getProjectFileURI(cstName); |
| URI pivotURI = getProjectFileURI(pivotName); |
| // URI savedURI = getProjectFileURI(savedName); |
| // MetaModelManager metaModelManager = new MetaModelManager(); |
| // MetaModelManagerResourceSetAdapter.getAdapter(resourceSet, metaModelManager); |
| try { |
| BaseCSResource xtextResource = (BaseCSResource) ocl.getResourceSet().getResource(inputURI, true); |
| assertNoResourceErrors("Load failed", xtextResource); |
| Resource pivotResource = xtextResource.getASResource(); |
| // assertNoUnresolvedProxies("Unresolved proxies", xtextResource); |
| // System.out.println(Long.toString(System.currentTimeMillis() - startTime) + " validate()"); |
| assertNoValidationErrors("Validation errors", xtextResource.getContents().get(0)); |
| // System.out.println(Long.toString(System.currentTimeMillis() - startTime) + " validated()"); |
| // xtextResource.setURI(savedURI); |
| // xtextResource.save(null); |
| // xtextResource.setURI(inputURI); |
| // assertNoResourceErrors("Save failed", xtextResource); |
| saveAsXMI(xtextResource, cstURI); |
| pivotResource.setURI(pivotURI); |
| assertNoValidationErrors("Pivot validation errors", pivotResource.getContents().get(0)); |
| Map<String, Object> options = new HashMap<String, Object>(); |
| options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE); |
| pivotResource.save(options); |
| return pivotResource; |
| } |
| finally { |
| // if (adapter != null) { |
| // adapter.dispose(); |
| // adapter.getMetaModelManager().dispose(); |
| // } |
| } |
| } |
| |
| protected void doLoadFromString(@NonNull String fileName, @NonNull String testFile) throws Exception { |
| doLoadFromString(ocl, fileName, testFile); |
| // URI libraryURI = getProjectFileURI(fileName); |
| // ModelContext modelContext = new ModelContext(ocl.getEnvironmentFactory(), libraryURI); |
| // BaseCSResource xtextResource = (BaseCSResource) modelContext.createBaseResource(testFile); |
| // assertNoResourceErrors("Load failed", xtextResource); |
| // Resource pivotResource = xtextResource.getASResource(); |
| // assertNoResourceErrors("File Model", pivotResource); |
| // assertNoUnresolvedProxies("File Model", pivotResource); |
| // assertNoValidationErrors("File Model", pivotResource); |
| } |
| |
| protected void saveAsXMI(Resource resource, URI xmiURI) throws IOException { |
| ResourceSet resourceSet = new ResourceSetImpl(); |
| resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("*", new XMIResourceFactoryImpl()); //$NON-NLS-1$ |
| Resource xmiResource = resourceSet.createResource(xmiURI); |
| xmiResource.getContents().addAll(resource.getContents()); |
| Map<String, Object> options = new HashMap<String, Object>(); |
| // options.put(XMLResource.OPTION_SCHEMA_LOCATION_IMPLEMENTATION, Boolean.TRUE); |
| xmiResource.save(options); |
| assertNoResourceErrors("Save failed", xmiResource); |
| resource.getContents().addAll(xmiResource.getContents()); |
| } |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| doQVTOperationalSetup(); |
| ocl = OCL.newInstance(OCL.NO_PROJECTS); |
| //configurePlatformResources(); |
| //resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("emof", new EMOFResourceFactoryImpl()); //$NON-NLS-1$ |
| //resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("pivot", new XMIResourceFactoryImpl()); //$NON-NLS-1$ |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| ocl.dispose(); |
| } |
| |
| protected static void doQVTOperationalSetup() { |
| if (!EMFPlugin.IS_ECLIPSE_RUNNING) { |
| QVTOperationalStandaloneSetup.doSetup(); |
| } |
| } |
| } |