Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/storage/url/bundleentry/Handler.java')
-rw-r--r--bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/storage/url/bundleentry/Handler.java15
1 files changed, 14 insertions, 1 deletions
diff --git a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/storage/url/bundleentry/Handler.java b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/storage/url/bundleentry/Handler.java
index aff50f1e4..3565735d9 100644
--- a/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/storage/url/bundleentry/Handler.java
+++ b/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/storage/url/bundleentry/Handler.java
@@ -15,6 +15,7 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import org.eclipse.osgi.container.*;
+import org.eclipse.osgi.internal.location.LocationHelper;
import org.eclipse.osgi.storage.BundleInfo;
import org.eclipse.osgi.storage.bundlefile.BundleEntry;
import org.eclipse.osgi.storage.url.BundleResourceHandler;
@@ -33,8 +34,20 @@ public class Handler extends BundleResourceHandler {
ModuleRevision revision = module.getCurrentRevision();
BundleInfo.Generation revisionInfo = (BundleInfo.Generation) revision.getRevisionInfo();
BundleEntry entry = revisionInfo == null ? null : revisionInfo.getBundleFile().getEntry(url.getPath());
- if (entry == null)
+ if (entry == null) {
+ String path = url.getPath();
+ if (revisionInfo != null && (path.indexOf('%') >= 0 || path.indexOf('+') >= 0)) {
+ entry = revisionInfo.getBundleFile().getEntry(LocationHelper.decode(path, true));
+ if (entry != null) {
+ return entry;
+ }
+ entry = revisionInfo.getBundleFile().getEntry(LocationHelper.decode(path, false));
+ if (entry != null) {
+ return entry;
+ }
+ }
throw new FileNotFoundException(url.getPath());
+ }
return entry;
}
}

Back to the top