[550168] Keep distinct project when deresolving URIs
diff --git a/examples/org.eclipse.ocl.examples.debug.vm/src/org/eclipse/ocl/examples/debug/vm/srclookup/VMSourcePathComputer.java b/examples/org.eclipse.ocl.examples.debug.vm/src/org/eclipse/ocl/examples/debug/vm/srclookup/VMSourcePathComputer.java
index db0d88e..682323b 100644
--- a/examples/org.eclipse.ocl.examples.debug.vm/src/org/eclipse/ocl/examples/debug/vm/srclookup/VMSourcePathComputer.java
+++ b/examples/org.eclipse.ocl.examples.debug.vm/src/org/eclipse/ocl/examples/debug/vm/srclookup/VMSourcePathComputer.java
@@ -29,17 +29,18 @@
import org.eclipse.debug.core.sourcelookup.containers.WorkspaceSourceContainer;
import org.eclipse.emf.common.util.URI;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
public abstract class VMSourcePathComputer implements ISourcePathComputer
{
// private static final String JAVA_SRC_COMPUTER_ID = "org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer"; //$NON-NLS-1$
-
+
public static IFile getIFile(String fileUnderWorkspace) {
IPath location = new Path(fileUnderWorkspace);
IFile ifile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(location);
return ifile;
}
-
+
public static IFile getWorkspaceFile(String name) {
try {
IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(name));
@@ -49,7 +50,7 @@
return null;
}
}
-
+
public static IFile getWorkspaceFile(URI uri) {
String uriPath;
if (uri.isFile()) {
@@ -62,7 +63,7 @@
uriPath = uri.toString();
}
IFile ifile = getWorkspaceFile(uriPath);
-
+
if (ifile == null || !ifile.exists()) {
if (uri.isFile()) {
IFile wsfile = getIFile(uriPath);
@@ -73,15 +74,17 @@
}
return ifile;
}
-
+
// private final ISourcePathComputer fJavaSourcePathComputer;
-
+
public VMSourcePathComputer() {
// fJavaSourcePathComputer = DebugPlugin.getDefault().getLaunchManager().getSourcePathComputer(JAVA_SRC_COMPUTER_ID);
}
-
+
+ @Override
public abstract @NonNull String getId();
-
+
+ @Override
public @NonNull ISourceContainer @NonNull [] computeSourceContainers(ILaunchConfiguration configuration, IProgressMonitor monitor) throws CoreException {
assert configuration != null;
URI moduleURI = getModuleFile(configuration);
@@ -95,7 +98,7 @@
public Object[] findSourceElements(String name) throws CoreException {
URI nameURI = URI.createFileURI(name);
URI directoryURI = URI.createFileURI(getDirectory().toString() + "/");
- URI relativeURI = nameURI.deresolve(directoryURI);
+ URI relativeURI = URIUtil.deresolve(nameURI, directoryURI);
return super.findSourceElements(relativeURI.toString());
}
@@ -105,7 +108,7 @@
// TODO Auto-generated method stub
return super.findSourceElements(name, containers);
}
-
+
};
}
else {
@@ -118,7 +121,7 @@
}
}
List<ISourceContainer> result = new ArrayList<ISourceContainer>();
- result.add(sourceContainer);
+ result.add(sourceContainer);
// result.addAll(Arrays.asList(fJavaSourcePathComputer.computeSourceContainers(configuration, monitor)));
@SuppressWarnings("null")@NonNull ISourceContainer @NonNull [] array = result.toArray(new ISourceContainer[result.size()]);
return array;
diff --git a/examples/org.eclipse.ocl.examples.emf.validation.validity/src/org/eclipse/ocl/examples/emf/validation/validity/manager/ValidityManager.java b/examples/org.eclipse.ocl.examples.emf.validation.validity/src/org/eclipse/ocl/examples/emf/validation/validity/manager/ValidityManager.java
index 1b1fa95..d271023 100644
--- a/examples/org.eclipse.ocl.examples.emf.validation.validity/src/org/eclipse/ocl/examples/emf/validation/validity/manager/ValidityManager.java
+++ b/examples/org.eclipse.ocl.examples.emf.validation.validity/src/org/eclipse/ocl/examples/emf/validation/validity/manager/ValidityManager.java
@@ -55,6 +55,7 @@
import org.eclipse.ocl.pivot.utilities.ClassUtil;
import org.eclipse.ocl.pivot.utilities.LabelUtil;
import org.eclipse.ocl.pivot.utilities.TracingOption;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
public class ValidityManager
{
@@ -195,7 +196,7 @@
else {
Resource firstResource = resourceSet.getResources().get(0);
URI firstURI = firstResource.getURI();
- URI resolvedURI = uri.deresolve(firstURI);
+ URI resolvedURI = URIUtil.deresolve(uri, firstURI);
if (resolvedURI.segmentCount() <= 0) {
s.append(" in " + uri.lastSegment());
}
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/ecore/as2es/AS2EcoreDeclarationVisitor.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/ecore/as2es/AS2EcoreDeclarationVisitor.java
index ed7e2e0..600f871 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/ecore/as2es/AS2EcoreDeclarationVisitor.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/ecore/as2es/AS2EcoreDeclarationVisitor.java
@@ -80,6 +80,7 @@
import org.eclipse.ocl.pivot.utilities.PivotConstants;
import org.eclipse.ocl.pivot.utilities.PivotUtil;
import org.eclipse.ocl.pivot.utilities.StringUtil;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
import org.eclipse.ocl.pivot.values.Bag;
import org.eclipse.ocl.pivot.values.OrderedSet;
@@ -611,7 +612,7 @@
if (uri == null) {
uri = EcoreUtil.getURI(eTarget);
}
- URI uri2 = uri.deresolve(ecoreURI, true, true, true);
+ URI uri2 = URIUtil.deresolve(uri, ecoreURI, true, true, true);
value = uri2.toString();
}
else if (importedNamespace instanceof org.eclipse.ocl.pivot.Package) {
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/PrettyPrinter.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/PrettyPrinter.java
index 7f470cf..c6d694e 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/PrettyPrinter.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/prettyprint/PrettyPrinter.java
@@ -55,6 +55,7 @@
import org.eclipse.ocl.pivot.utilities.PivotConstants;
import org.eclipse.ocl.pivot.utilities.PivotUtil;
import org.eclipse.ocl.pivot.utilities.StringUtil;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
import org.eclipse.ocl.pivot.values.Unlimited;
/**
@@ -578,7 +579,7 @@
if (uri != null) {
URI baseURI = options.getBaseURI();
if (baseURI != null) {
- uri = uri.deresolve(baseURI);
+ uri = URIUtil.deresolve(uri, baseURI);
}
append("_'" + uri.toString() + "'");
}
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ProjectMap.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ProjectMap.java
index 17facbe..83ecc95 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ProjectMap.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/ProjectMap.java
@@ -40,6 +40,7 @@
import org.eclipse.ocl.pivot.resource.ProjectManager;
import org.eclipse.ocl.pivot.util.PivotPlugin;
import org.eclipse.ocl.pivot.utilities.TracingOption;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
/**
* ProjectMap extends {@link ProjectManager} to support polymorphic access in either plugin or standalone environments
@@ -272,7 +273,7 @@
IProjectDescriptor projectDescriptor = getProjectDescriptorInternal(genModelURI);
Map<@NonNull URI, @Nullable String> nsURI2className = genModel2nsURI2className.get(genModelURI);
assert nsURI2className != null;
- @NonNull URI deresolvedGenModelURI = genModelURI.deresolve(projectDescriptor.getLocationURI(), true, true, true);
+ @NonNull URI deresolvedGenModelURI = URIUtil.deresolve(genModelURI, projectDescriptor.getLocationURI(), true, true, true);
@NonNull String genModelString = String.valueOf(deresolvedGenModelURI);
IResourceDescriptor resourceDescriptor = projectDescriptor.createResourceDescriptor(genModelString, nsURI2className);
GenModelReader genModelReader = new GenModelReader(resourceDescriptor);
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/StandaloneProjectMap.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/StandaloneProjectMap.java
index 17939b0..c0c0883 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/StandaloneProjectMap.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/internal/resource/StandaloneProjectMap.java
@@ -65,6 +65,7 @@
import org.eclipse.ocl.pivot.utilities.ClassUtil;
import org.eclipse.ocl.pivot.utilities.NameUtil;
import org.eclipse.ocl.pivot.utilities.TracingOption;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
import org.w3c.dom.Document;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
@@ -1638,7 +1639,7 @@
URI projectLocationURI = projectDescriptor.getLocationURI();
URI absoluteGenModelURI = genModelURI.resolve(projectLocationURI);
URI absolutePackageURI = genModelRelativeEcorePackageURI.resolve(absoluteGenModelURI);
- @NonNull URI projectRelativeEcorePackageURI = absolutePackageURI.deresolve(projectLocationURI, true, true, true);
+ @NonNull URI projectRelativeEcorePackageURI = URIUtil.deresolve(absolutePackageURI, projectLocationURI, true, true, true);
return projectRelativeEcorePackageURI;
}
@@ -1673,7 +1674,7 @@
URI projectLocationURI = projectDescriptor.getLocationURI();
URI absoluteGenModelURI = genModelURI.resolve(projectLocationURI);
URI absolutePackageURI = genModelRelativeEcoreModelURI.resolve(absoluteGenModelURI);
- URI relativePackageURI = absolutePackageURI.deresolve(projectLocationURI, true, true, true);
+ URI relativePackageURI = URIUtil.deresolve(absolutePackageURI, projectLocationURI, true, true, true);
@NonNull URI relativeEcoreModelURI = relativePackageURI.trimFragment();
URI resourceURI = projectDescriptor.getPlatformResourceURI();
URI pluginURI = projectDescriptor.getPlatformPluginURI();
@@ -2171,7 +2172,7 @@
@Override
public @NonNull IResourceDescriptor createResourceDescriptor(@NonNull String genModel, @NonNull Map<@NonNull URI, @NonNull String> nsURI2className) {
URI absoluteGenModelURI = URI.createURI(genModel).resolve(locationURI);
- @NonNull URI projectGenModelURI = absoluteGenModelURI.deresolve(locationURI, true, true, true);
+ @NonNull URI projectGenModelURI = URIUtil.deresolve(absoluteGenModelURI, locationURI, true, true, true);
if (nsURI2className.size() <= 1) {
return new SinglePackageResourceDescriptor(this, projectGenModelURI, nsURI2className);
}
diff --git a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/URIUtil.java b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/URIUtil.java
index fc8ce92..08595b1 100644
--- a/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/URIUtil.java
+++ b/plugins/org.eclipse.ocl.pivot/src/org/eclipse/ocl/pivot/utilities/URIUtil.java
@@ -27,6 +27,31 @@
public static final URI PLATFORM_RESOURCE = URI.createPlatformResourceURI("/", false);
/**
+ * Return fullURI deresolved wrt baseURI. Tnis just invokes fullURI.deresolve(baseURI) except
+ * that platform:/x/y/... URIs are preserved as is unless both x and y aare shared. This avoids
+ * references that migrate between projects in ways that tooling may not have initialized.
+ */
+ public static @NonNull URI deresolve(@NonNull URI fullURI, URI baseURI) {
+ return deresolve(fullURI, baseURI, true, false, true);
+ }
+ public static @NonNull URI deresolve(@NonNull URI fullURI, @Nullable URI baseURI, boolean preserveRootParents, boolean anyRelPath, boolean shorterRelPath) {
+ if (baseURI == null) {
+ return fullURI;
+ }
+ if (fullURI.isPlatform() && baseURI.isPlatform()) {
+ String[] segments1 = fullURI.segments();
+ String[] segments2 = baseURI.segments();
+ if ((segments1.length < 2) || (segments2.length < 2)) {
+ return fullURI;
+ }
+ if (!segments1[0].equals(segments2[0]) || !segments1[1].equals(segments2[1])) {
+ return fullURI;
+ }
+ }
+ return fullURI.deresolve(baseURI, preserveRootParents, anyRelPath, shorterRelPath);
+ }
+
+ /**
* Convert uri to a form whereby it can be resolved relocatably within Eclipse.
*/
public static @NonNull URI getAbsoluteOrPlatformURI(@NonNull URI uri) {
diff --git a/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/commands/SaveASHandler.java b/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/commands/SaveASHandler.java
index 10df4b4..d92bc58 100644
--- a/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/commands/SaveASHandler.java
+++ b/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/commands/SaveASHandler.java
@@ -22,6 +22,7 @@
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.ocl.pivot.resource.ASResource;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
import org.eclipse.ocl.xtext.base.ui.messages.BaseUIMessages;
import org.eclipse.ocl.xtext.base.utilities.BaseCSResource;
import org.eclipse.osgi.util.NLS;
@@ -78,7 +79,7 @@
IFile srcFile = ((IFileEditorInput)editorInput).getFile();
IProject srcProject = srcFile.getProject();
URI projectURI = URI.createPlatformResourceURI(srcProject.getFullPath().toString() + "/", true);
- URI outURI = asURI.deresolve(projectURI);
+ URI outURI = URIUtil.deresolve(asURI, projectURI);
IPath outPath = new Path(outURI.toString());
IFile outFile = srcProject.getFile(outPath);
Shell shell = editor.getEditorSite().getShell();
diff --git a/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/commands/SaveCSHandler.java b/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/commands/SaveCSHandler.java
index 8dcef17..9dcf240 100644
--- a/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/commands/SaveCSHandler.java
+++ b/plugins/org.eclipse.ocl.xtext.base.ui/src/org/eclipse/ocl/xtext/base/ui/commands/SaveCSHandler.java
@@ -23,6 +23,7 @@
import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
import org.eclipse.ocl.xtext.base.ui.messages.BaseUIMessages;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Shell;
@@ -77,7 +78,7 @@
IFile srcFile = ((IFileEditorInput)editorInput).getFile();
IProject srcProject = srcFile.getProject();
URI projectURI = URI.createPlatformResourceURI(srcProject.getFullPath().toString() + "/", true);
- URI outURI = csURI.deresolve(projectURI);
+ URI outURI = URIUtil.deresolve(csURI, projectURI);
IPath outPath = new Path(outURI.toString());
IFile outFile = srcProject.getFile(outPath);
Shell shell = editor.getEditorSite().getShell();
diff --git a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/as2cs/AS2CSConversion.java b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/as2cs/AS2CSConversion.java
index d3195c7..d3deadb 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/as2cs/AS2CSConversion.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/as2cs/AS2CSConversion.java
@@ -55,6 +55,7 @@
import org.eclipse.ocl.pivot.utilities.NameUtil;
import org.eclipse.ocl.pivot.utilities.PivotConstants;
import org.eclipse.ocl.pivot.utilities.PivotUtil;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
import org.eclipse.ocl.pivot.values.Unlimited;
import org.eclipse.ocl.xtext.base.as2cs.AS2CS.Factory;
import org.eclipse.ocl.xtext.base.utilities.BaseCSResource;
@@ -165,7 +166,7 @@
}
if (importURI == null) {
URI fullURI = EcoreUtil.getURI(eObject != null ? eObject : importedNamespace);
- URI deresolvedURI = fullURI.deresolve(csURI, true, true, false);
+ URI deresolvedURI = URIUtil.deresolve(fullURI, csURI, true, true, false);
importURI = deresolvedURI.toString();
}
for (@NonNull String alias : aliases) {
diff --git a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/serializer/BaseCrossReferenceSerializer.java b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/serializer/BaseCrossReferenceSerializer.java
index 40e57d5..4eb0c52 100644
--- a/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/serializer/BaseCrossReferenceSerializer.java
+++ b/plugins/org.eclipse.ocl.xtext.base/src/org/eclipse/ocl/xtext/base/serializer/BaseCrossReferenceSerializer.java
@@ -22,6 +22,7 @@
import org.eclipse.ocl.pivot.Import;
import org.eclipse.ocl.pivot.NamedElement;
import org.eclipse.ocl.pivot.utilities.Nameable;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
import org.eclipse.ocl.xtext.base.as2cs.AliasAnalysis;
import org.eclipse.ocl.xtext.base.utilities.BaseCSResource;
import org.eclipse.ocl.xtext.basecs.ImportCS;
@@ -56,7 +57,7 @@
protected final IScope scope;
protected final @Nullable Acceptor errors;
private @Nullable List<ISerializationDiagnostic> recordedErrors = null;
-
+
public AcceptorHelper(EObject semanticObject, CrossReference crossref, EObject target, IScope scope, @Nullable Acceptor errors) {
this.semanticObject = semanticObject;
this.crossref = crossref;
@@ -64,14 +65,14 @@
this.scope = scope;
this.errors = errors;
}
-
+
public @Nullable String convert(String unconverted, String ruleName) {
try {
return valueConverter.toString(unconverted, ruleName);
} catch (ValueConverterException e) {
record(unconverted, e);
return null;
- }
+ }
}
protected @Nullable String convert(List<String> segments, String ruleName) {
@@ -115,8 +116,8 @@
}
}
}
-
-
+
+
@Inject
private LinkingHelper linkingHelper;
@@ -149,7 +150,7 @@
for (IEObjectDescription desc : elements) {
URI uri = URI.createURI(desc.getName().toString());
URI baseURI = semanticObject.eResource().getURI();
- URI deresolvedURI = uri.deresolve(baseURI, true, true, false);
+ URI deresolvedURI = URIUtil.deresolve(uri, baseURI);
String unconverted = deresolvedURI.toString();
String converted = helper.convert(unconverted, ruleName);
if (converted != null) {
@@ -182,7 +183,7 @@
String alias = adapter.getAlias(namedElement, null);
if (alias != null) {
name = alias;
- }
+ }
}
}
String converted = helper.convert(name, ruleName);
@@ -200,7 +201,7 @@
uri = EcoreUtil.getURI(element);
}
URI baseURI = semanticObject.eResource().getURI();
- URI deresolvedURI = uri.deresolve(baseURI, true, true, false);
+ URI deresolvedURI = URIUtil.deresolve(uri, baseURI);
String unconverted = deresolvedURI.toString();
String converted = helper.convert(unconverted, ruleName);
if (converted != null) {
diff --git a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src/org/eclipse/ocl/xtext/completeocl/ui/wizards/CompleteOCLFileNewWizard.java b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src/org/eclipse/ocl/xtext/completeocl/ui/wizards/CompleteOCLFileNewWizard.java
index 6ffc073..8c37dc7 100644
--- a/plugins/org.eclipse.ocl.xtext.completeocl.ui/src/org/eclipse/ocl/xtext/completeocl/ui/wizards/CompleteOCLFileNewWizard.java
+++ b/plugins/org.eclipse.ocl.xtext.completeocl.ui/src/org/eclipse/ocl/xtext/completeocl/ui/wizards/CompleteOCLFileNewWizard.java
@@ -30,6 +30,7 @@
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
import org.eclipse.ocl.pivot.utilities.ValueUtil;
import org.eclipse.ocl.xtext.base.ui.wizards.AbstractFileDialog;
import org.eclipse.ocl.xtext.base.ui.wizards.AbstractFileNewWizard;
@@ -60,22 +61,23 @@
String firstTypeName = null;
String firstPropertyName = null;
StringBuilder s = new StringBuilder();
- Set<URI> uris = new HashSet<URI>(dialog.getURIs());
+ @SuppressWarnings("null")
+ Set<@NonNull URI> uris = new HashSet<>(dialog.getURIs());
if (uris.size() > 0) {
- List<URI> sortedURIs = new ArrayList<URI>(uris);
- Collections.sort(sortedURIs, new Comparator<URI>()
+ List<@NonNull URI> sortedURIs = new ArrayList<>(uris);
+ Collections.sort(sortedURIs, new Comparator<@NonNull URI>()
{
@Override
- public int compare(URI o1, URI o2) {
+ public int compare(@NonNull URI o1, @NonNull URI o2) {
return o1.toString().compareTo(o2.toString());
}
});
ResourceSet resourceSet = new ResourceSetImpl();
- for (URI uri : sortedURIs) {
+ for (@NonNull URI uri : sortedURIs) {
try {
Resource resource = resourceSet.getResource(uri, true);
URI newURI = URI.createPlatformResourceURI(newFile.getFullPath().toString(), true);
- URI deresolvedURI = uri.deresolve(newURI);
+ URI deresolvedURI = URIUtil.deresolve(uri, newURI);
s.append("import '" + ValueUtil.oclToString(deresolvedURI) + "'\n");
if (firstPropertyName == null) {
for (EObject eObject : resource.getContents()) {
diff --git a/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src/org/eclipse/ocl/xtext/oclinecore/ui/wizards/OCLinEcoreFileNewWizard.java b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src/org/eclipse/ocl/xtext/oclinecore/ui/wizards/OCLinEcoreFileNewWizard.java
index 5c41d24..071b5a5 100644
--- a/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src/org/eclipse/ocl/xtext/oclinecore/ui/wizards/OCLinEcoreFileNewWizard.java
+++ b/plugins/org.eclipse.ocl.xtext.oclinecore.ui/src/org/eclipse/ocl/xtext/oclinecore/ui/wizards/OCLinEcoreFileNewWizard.java
@@ -17,6 +17,7 @@
import org.eclipse.emf.common.util.URI;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import org.eclipse.ocl.pivot.utilities.URIUtil;
import org.eclipse.ocl.pivot.utilities.ValueUtil;
import org.eclipse.ocl.xtext.base.ui.wizards.AbstractFileDialog;
import org.eclipse.ocl.xtext.base.ui.wizards.AbstractFileNewWizardPage;
@@ -29,11 +30,12 @@
{
@Override
protected void appendImports(StringBuilder s, AbstractFileDialog dialog, IFile newFile) {
- List<URI> uris = dialog.getURIs();
+ @SuppressWarnings("null")
+ List<@NonNull URI> uris = dialog.getURIs();
if (uris.size() > 0) {
URI newURI = URI.createPlatformResourceURI(newFile.getFullPath().toString(), true);
- for (URI uri : uris) {
- @NonNull URI deresolvedURI = uri.deresolve(newURI);
+ for (@NonNull URI uri : uris) {
+ URI deresolvedURI = URIUtil.deresolve(uri, newURI);
s.append("import '" + ValueUtil.oclToString(deresolvedURI) + "';\n");
}
s.append("\n");