Index: server/storage/src/test/java/org/apache/karaf/cave/server/storage/CaveRepositoryImplTest.java
===================================================================
--- server/storage/src/test/java/org/apache/karaf/cave/server/storage/CaveRepositoryImplTest.java	(revision 1204152)
+++ server/storage/src/test/java/org/apache/karaf/cave/server/storage/CaveRepositoryImplTest.java	(working copy)
@@ -20,6 +20,8 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
 import java.net.URL;
 
@@ -44,7 +46,22 @@
 
     @Test
     public void testUploadNonBundleFromURL() throws Exception {
-        repository.upload(new URL("http://repo1.maven.org/maven2/commons-vfs/commons-vfs/1.0/commons-vfs-1.0.jar"));
+        try {
+            repository.upload(new URL("http://repo1.maven.org/maven2/commons-vfs/commons-vfs/1.0/commons-vfs-1.0.jar"));
+            fail("An exception should be raised that the artifact is not a bundle.");
+        } catch (IllegalArgumentException expected) {
+            assertTrue("Wrong exception returned.", expected.getMessage().contains("artifact source is not a valid OSGi bundle"));
+        }
     }
 
+    @Test
+    public void testAlreadyExistingBundle() throws Exception {
+        try {
+            repository.upload(new URL("http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-beanutils/1.8.2_1/org.apache.servicemix.bundles.commons-beanutils-1.8.2_1.jar"));
+            repository.upload(new URL("http://repo1.maven.org/maven2/org/apache/servicemix/bundles/org.apache.servicemix.bundles.commons-beanutils/1.8.2_1/org.apache.servicemix.bundles.commons-beanutils-1.8.2_1.jar"));
+            fail("An exception should be raised that the artifact already exists in the Cave repository.");
+        } catch (IllegalArgumentException expected) {
+            assertTrue("Wrong exception returned.", expected.getMessage().contains("artifact is already present in the Cave repository"));
+        }
+    }
 }
Index: server/storage/src/main/java/org/apache/karaf/cave/server/storage/CaveRepositoryImpl.java
===================================================================
--- server/storage/src/main/java/org/apache/karaf/cave/server/storage/CaveRepositoryImpl.java	(revision 1204152)
+++ server/storage/src/main/java/org/apache/karaf/cave/server/storage/CaveRepositoryImpl.java	(working copy)
@@ -118,9 +131,14 @@
         if (resource == null) {
             temp.delete();
             LOGGER.warn("The {} artifact source is not a valid OSGi bundle", url);
-            return;
+            throw new IllegalArgumentException("The " + url.toString() + " artifact source is not a valid OSGi bundle");
         }
         File destination = new File(new File(this.getLocation()), resource.getSymbolicName() + "-" + resource.getVersion() + ".jar");
+        if (destination.exists()) {
+            temp.delete();
+            LOGGER.warn("The {} artifact is already present in the Cave repository", url);
+            throw new IllegalArgumentException("The " + url.toString() + " artifact is already present in the Cave repository");
+        }
         FileUtils.moveFile(temp, destination);
         resource = (ResourceImpl) new DataModelHelperImpl().createResource(destination.toURI().toURL());
         this.addResource(resource);
Index: server/command/src/main/java/org/apache/karaf/cave/server/command/UploadArtifactCommand.java
===================================================================
--- server/command/src/main/java/org/apache/karaf/cave/server/command/UploadArtifactCommand.java	(revision 1204152)
+++ server/command/src/main/java/org/apache/karaf/cave/server/command/UploadArtifactCommand.java	(working copy)
@@ -35,15 +35,9 @@
     @Argument(index = 1, name = "artifact", description = "The URL of the artifact to upload", required = true, multiValued = false)
     String url = null;
 
-    @Option(name = "-nu", aliases = { "--no-update", "--no-refresh", "--no-register" }, description = "Not refresh the OBR repository service", required = false, multiValued = true)
-    boolean noUpdate = false;
-
     public Object doExecute() throws Exception {
         CaveRepository caveRepository = getExistingRepository(name);
         caveRepository.upload(new URL(url));
-        if (!noUpdate) {
-            getCaveRepositoryService().register(name);
-        }
         return null;
     }

