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.