You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2011/08/18 09:47:12 UTC

svn commit: r1159070 - /karaf/sandbox/jbonofre/cave/trunk/server/backend/filesystem/src/main/java/org/apache/karaf/cave/server/backend/impl/CaveRepositoryImpl.java

Author: jbonofre
Date: Thu Aug 18 07:47:12 2011
New Revision: 1159070

URL: http://svn.apache.org/viewvc?rev=1159070&view=rev
Log:
Use Resource relative URI (from the repository one)

Modified:
    karaf/sandbox/jbonofre/cave/trunk/server/backend/filesystem/src/main/java/org/apache/karaf/cave/server/backend/impl/CaveRepositoryImpl.java

Modified: karaf/sandbox/jbonofre/cave/trunk/server/backend/filesystem/src/main/java/org/apache/karaf/cave/server/backend/impl/CaveRepositoryImpl.java
URL: http://svn.apache.org/viewvc/karaf/sandbox/jbonofre/cave/trunk/server/backend/filesystem/src/main/java/org/apache/karaf/cave/server/backend/impl/CaveRepositoryImpl.java?rev=1159070&r1=1159069&r2=1159070&view=diff
==============================================================================
--- karaf/sandbox/jbonofre/cave/trunk/server/backend/filesystem/src/main/java/org/apache/karaf/cave/server/backend/impl/CaveRepositoryImpl.java (original)
+++ karaf/sandbox/jbonofre/cave/trunk/server/backend/filesystem/src/main/java/org/apache/karaf/cave/server/backend/impl/CaveRepositoryImpl.java Thu Aug 18 07:47:12 2011
@@ -19,6 +19,7 @@ package org.apache.karaf.cave.server.bac
 import org.apache.felix.bundlerepository.Resource;
 import org.apache.felix.bundlerepository.impl.DataModelHelperImpl;
 import org.apache.felix.bundlerepository.impl.RepositoryImpl;
+import org.apache.felix.bundlerepository.impl.ResourceImpl;
 import org.apache.karaf.cave.server.backend.api.CaveRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -103,8 +104,9 @@ public class CaveRepositoryImpl implemen
      * @param resource the resource to add.
      * @throws Exception in case of failure.
      */
-    private void addResource(Resource resource) throws Exception {
+    private void addResource(ResourceImpl resource) throws Exception {
         if (resource != null) {
+            this.useResourceRelativeUri(resource);
             obrRepository.addResource(resource);
             obrRepository.setLastModified(System.currentTimeMillis());
         }
@@ -131,7 +133,7 @@ public class CaveRepositoryImpl implemen
         fos.flush();
         fos.close();
         // update the repository.xml
-        Resource resource = new DataModelHelperImpl().createResource(temp.toURI().toURL());
+        ResourceImpl resource = (ResourceImpl) new DataModelHelperImpl().createResource(temp.toURI().toURL());
         if (resource == null) {
             temp.delete();
             LOGGER.warn("The {} artifact source is not a valid OSGi bundle", url);
@@ -139,7 +141,7 @@ public class CaveRepositoryImpl implemen
         }
         File destination = new File(location, resource.getSymbolicName() + "-" + resource.getVersion() + ".jar");
         temp.renameTo(destination);
-        resource = new DataModelHelperImpl().createResource(destination.toURI().toURL());
+        resource = (ResourceImpl) new DataModelHelperImpl().createResource(destination.toURI().toURL());
         this.addResource(resource);
         this.generateRepositoryXml();
     }
@@ -179,7 +181,7 @@ public class CaveRepositoryImpl implemen
         } else {
             // populate the repository
             try {
-                Resource resource = new DataModelHelperImpl().createResource(entry.toURI().toURL());
+                ResourceImpl resource = (ResourceImpl) new DataModelHelperImpl().createResource(entry.toURI().toURL());
                 this.addResource(resource);
             } catch (IllegalArgumentException e) {
                 LOGGER.warn(e.getMessage());
@@ -188,6 +190,23 @@ public class CaveRepositoryImpl implemen
     }
 
     /**
+     * Convert the Resource absolute URI to an URI relative to the repository one.
+     * @param resource the Resource to manipulate.
+     * @throws Exception in cave of URI convertion failure.
+     */
+    private void useResourceRelativeUri(ResourceImpl resource) throws Exception {
+        String resourceURI = resource.getURI();
+        String repositoryURI = location.toURI().toString();
+        LOGGER.debug("Converting resource URI " + resourceURI + " relatively to repository URI " + repositoryURI);
+        if (resourceURI.startsWith(repositoryURI)) {
+            resourceURI = resourceURI.substring(repositoryURI.length());
+            LOGGER.debug("Resource URI converted to " + resourceURI);
+            resource.put(Resource.URI, resourceURI);
+        }
+
+    }
+
+    /**
      * Get the File object of the OBR repository.xml file.
      *
      * @return the File corresponding to the OBR repository.xml.