Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiCompilerChain.java')
-rw-r--r--plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiCompilerChain.java38
1 files changed, 33 insertions, 5 deletions
diff --git a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiCompilerChain.java b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiCompilerChain.java
index c8de18590..7efe60e8f 100644
--- a/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiCompilerChain.java
+++ b/plugins/org.eclipse.qvtd.cs2as.compiler/src/org/eclipse/qvtd/cs2as/compiler/internal/OCL2QVTiCompilerChain.java
@@ -18,14 +18,18 @@ import java.util.Map;
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.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.ocl.pivot.Element;
+import org.eclipse.ocl.pivot.resource.ASResource;
+import org.eclipse.ocl.pivot.resource.CSResource;
import org.eclipse.ocl.pivot.utilities.ClassUtil;
import org.eclipse.ocl.pivot.utilities.PivotUtil;
import org.eclipse.qvtd.compiler.AbstractCompilerChain;
import org.eclipse.qvtd.compiler.AbstractCompilerStep;
import org.eclipse.qvtd.compiler.CompilerChain;
+import org.eclipse.qvtd.compiler.CompilerChainException;
import org.eclipse.qvtd.pivot.qvtimperative.ImperativeTransformation;
import org.eclipse.qvtd.pivot.qvtimperative.utilities.QVTimperative;
@@ -39,12 +43,35 @@ public class OCL2QVTiCompilerChain extends AbstractCompilerChain {
public OCL2QVTpCompilerStep(@NonNull CompilerChain compilerChain, @NonNull QVTimperative qvti,
@Nullable Map<@NonNull String, @Nullable Map<@NonNull Key<Object>, @Nullable Object>> options,
- @NonNull URI oclDocURI, URI... extendedDocURIs) {
+ @NonNull URI oclDocURI, @NonNull URI... extendedDocURIs) throws CompilerChainException {
super(compilerChain, QVTP_STEP);
this.traceabilityPropName = getTraceabilityPropertyName();
- this.oclASUri = ClassUtil.nonNullState(qvti.parse(oclDocURI)).getURI();
- for (URI oclDocUri : extendedDocURIs) {
- this.extendedASUris.add(ClassUtil.nonNullState(qvti.parse(oclDocUri)).getURI()); // We add the AS URI
+ ResourceSet externalResourceSet = qvti.getResourceSet();
+ CSResource csResource = (CSResource) externalResourceSet.getResource(oclDocURI, true);
+ if (csResource == null) {
+ throw new CompilerChainException("Failed to parse " + oclDocURI);
+ }
+ ASResource asResource = qvti.cs2as(csResource);
+ this.oclASUri = ClassUtil.nonNullState(asResource.getURI());
+ for (@NonNull URI extendedDocURI : extendedDocURIs) {
+ csResource = (CSResource) externalResourceSet.getResource(extendedDocURI, true);
+ if (csResource == null) {
+ throw new CompilerChainException("Failed to parse " + extendedDocURI);
+ }
+ asResource = qvti.cs2as(csResource);
+ this.extendedASUris.add(ClassUtil.nonNullState(asResource.getURI())); // We add the AS URI
+ }
+ StringBuilder s = null;
+ for (@NonNull Resource resource : externalResourceSet.getResources()) {
+ if (resource.getErrors().size() > 0) {
+ if (s == null) {
+ s = new StringBuilder();
+ }
+ s.append(PivotUtil.formatResourceDiagnostics(resource.getErrors(), "\nErrors in " + resource.getURI(), "\n\t"));
+ }
+ }
+ if (s != null) {
+ throw new CompilerChainException(s.toString());
}
}
@@ -90,9 +117,10 @@ public class OCL2QVTiCompilerChain extends AbstractCompilerChain {
* @param options optional options
* @param oclDocURI the mandatory main OCL document URI to compile
* @param extendedDocURIs optional OCL document URIs that the main one extends
+ * @throws CompilerChainException
*/
public OCL2QVTiCompilerChain(@NonNull QVTimperative qvti, @Nullable Map<@NonNull String, @Nullable Map<@NonNull Key<Object>, @Nullable Object>> options,
- @NonNull URI oclDocURI, URI... extendedDocURIs) {
+ @NonNull URI oclDocURI, @NonNull URI... extendedDocURIs) throws CompilerChainException {
super(qvti.getEnvironmentFactory(), oclDocURI, options);
this.ocl2qvtpCompilerStep = new OCL2QVTpCompilerStep(this, qvti, options, oclDocURI, extendedDocURIs);
}

Back to the top