]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.osgi/src/org/simantics/scl/osgi/internal/BundleModuleSource.java
Editing of texts inside SVG elements
[simantics/platform.git] / bundles / org.simantics.scl.osgi / src / org / simantics / scl / osgi / internal / BundleModuleSource.java
index 3213cf9b5419e7d501fdba77afd93218babc0c9e..92385a1ed3f9be600ffb0ea33d0ff5e10cda913b 100644 (file)
@@ -1,13 +1,12 @@
 package org.simantics.scl.osgi.internal;
 
+import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URISyntaxException;
 import java.net.URL;
 import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Arrays;
@@ -126,15 +125,24 @@ public class BundleModuleSource extends EncodedTextualModuleSource implements Up
             }
         }
     }
-    
-    private Path getPath() throws IOException {
-        try {
-            return Paths.get(FileLocator.toFileURL(url).toURI());
-        } catch (URISyntaxException e) {
-            throw new IOException(e);
+
+    /*
+     * This code is a copy from org.simantics.utils.ui.BundleUtils
+     */
+    public static File resolveWritableBundleFile(URL url) throws IOException {
+        // This returns file, jar, http etc. - essentially resolves the bundle protocol
+        URL resolved = FileLocator.resolve(url);
+        if (resolved.getProtocol().equals("file")) {
+            return new File(resolved.getPath());
         }
+        return null;
     }
-    
+
+    private Path getPath() throws IOException {
+        File file = resolveWritableBundleFile(url);
+        return file != null ? file.toPath() : null;
+    }
+
     @Override
     public boolean isUpdateable() {
         try {