diff --git a/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/AbstractOBRBundleRepository.java b/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/AbstractOBRBundleRepository.java
index 6a58019..3a9e07d 100644
--- a/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/AbstractOBRBundleRepository.java
+++ b/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/AbstractOBRBundleRepository.java
@@ -25,6 +25,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLConnection;
 
@@ -65,13 +66,32 @@
         syncOBRIndex();
         OBRHandler handler = new OBRHandler( getObrURL(), getBundleCache(), listener );
         SAXParser parser = factory.newSAXParser();
-        parser.parse( getObrlCache(), handler );
+        parser.parse( findLocalOBR(), handler );
+    }
+
+
+    private File findLocalOBR()
+    {
+        if ( "file".equals( getObrURL().getProtocol() ) ) {
+            try
+            {
+               return new File( getObrURL().toURI() );
+            }
+            catch ( URISyntaxException e )
+            {
+                // should be impossible ?
+                throw new IllegalStateException( "Failed to convert file url to uri", e );
+            }
+        }
+        else {
+            return getObrlCache();
+        }
     }
 
 
     private void syncOBRIndex()
     {
-        if ( isUpdated() )
+        if ( !"file".equals( getObrURL().getProtocol() ) && isUpdated() )
         {
             InputStream in = null;
             OutputStream out = null;
@@ -159,27 +179,26 @@
     }
 
 
-    public URL getObrURL()
+    private URL getObrURL()
     {
         return obrURL;
     }
 
 
-    public File getObrlCache()
+    private File getObrlCache()
     {
         return obrlCache;
     }
 
 
-    public File getBundleCache()
+    private File getBundleCache()
     {
         return bundleCache;
     }
 
 
-    public long getUpdatePeriod()
+    private long getUpdatePeriod()
     {
         return updatePeriod;
     }
-
 }
diff --git a/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/OBRHandler.java b/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/OBRHandler.java
index 28ab9fb..0e7a8cf 100644
--- a/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/OBRHandler.java
+++ b/sigil/common/obr/src/org/apache/felix/sigil/obr/impl/OBRHandler.java
@@ -142,7 +142,12 @@
                 info.setName( attributes.getValue( "", PRESENTATION_NAME ) );
                 URI l = makeAbsolute( uri );
                 info.setUpdateLocation( l );
-                b.setLocation( cachePath( info ) );
+                if ( "file".equals(  l.getScheme() ) ) {
+                    b.setLocation( new Path( new File( l ).getAbsolutePath() ) );
+                }
+                else {
+                    b.setLocation( cachePath( info ) );
+                }
                 b.setBundleInfo( info );
                 bundle = b;
             }
