Bug 500402 - [CSS] CSS import silently fails
The issue is solved by detecting archive URLs, and avoid working with
paths inside archives. Archives URLs contain exclamation mark.
Change-Id: I06cadc3b9b0719d25a17a3a513f911fe19547f6c
Signed-off-by: Patrik Suzzi <psuzzi@gmail.com>
diff --git a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/AbstractCSSEngine.java b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/AbstractCSSEngine.java
index a771a40..5371446 100644
--- a/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/AbstractCSSEngine.java
+++ b/bundles/org.eclipse.e4.ui.css.core/src/org/eclipse/e4/ui/css/core/impl/engine/AbstractCSSEngine.java
@@ -13,6 +13,7 @@
* Lars Vogel <Lars.Vogel@gmail.com> - Bug 428715
* Brian de Alwis (MTI) - Performance tweaks (Bug 430829)
* Dirk Fauth <dirk.fauth@googlemail.com> - Bug 479896
+ * Patrik Suzzi <psuzzi@gmail.com> - Bug 500402
*******************************************************************************/
package org.eclipse.e4.ui.css.core.impl.engine;
@@ -94,6 +95,11 @@
public abstract class AbstractCSSEngine implements CSSEngine {
/**
+ * Archives are deliberately identified by exclamation mark in URLs
+ */
+ private static final String ARCHIVE_IDENTIFIER = "!";
+
+ /**
* Default {@link IResourcesLocatorManager} used to get InputStream, Reader
* resource like Image.
*/
@@ -193,11 +199,11 @@
} else {
Path p = new Path(source.getURI());
IPath trim = p.removeLastSegments(1);
-
+ boolean isArchive = source.getURI().contains(ARCHIVE_IDENTIFIER);
url = FileLocator.resolve(new URL(trim.addTrailingSeparator()
.toString() + ((CSSImportRule) rule).getHref()));
File testFile = new File(url.getFile());
- if (!testFile.exists()) {
+ if (!isArchive&&!testFile.exists()) {
// look in platform default
String path = getResourcesLocatorManager().resolve(
(importRule).getHref());