You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by an...@apache.org on 2013/04/22 09:59:50 UTC

svn commit: r1470405 - /karaf/cellar/branches/cellar-2.2.x/cloud/src/main/java/org/apache/karaf/cellar/cloud/BlobStoreDiscoveryService.java

Author: anierbeck
Date: Mon Apr 22 07:59:49 2013
New Revision: 1470405

URL: http://svn.apache.org/r1470405
Log:
[KARAF-2286] - Cellar-Cloud: If the configured store contains unknown Blob this causes unpleasant exceptions

Modified:
    karaf/cellar/branches/cellar-2.2.x/cloud/src/main/java/org/apache/karaf/cellar/cloud/BlobStoreDiscoveryService.java

Modified: karaf/cellar/branches/cellar-2.2.x/cloud/src/main/java/org/apache/karaf/cellar/cloud/BlobStoreDiscoveryService.java
URL: http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/cloud/src/main/java/org/apache/karaf/cellar/cloud/BlobStoreDiscoveryService.java?rev=1470405&r1=1470404&r2=1470405&view=diff
==============================================================================
--- karaf/cellar/branches/cellar-2.2.x/cloud/src/main/java/org/apache/karaf/cellar/cloud/BlobStoreDiscoveryService.java (original)
+++ karaf/cellar/branches/cellar-2.2.x/cloud/src/main/java/org/apache/karaf/cellar/cloud/BlobStoreDiscoveryService.java Mon Apr 22 07:59:49 2013
@@ -33,13 +33,18 @@ import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
 public class BlobStoreDiscoveryService implements DiscoveryService {
 
-    private static final transient Logger LOGGER = LoggerFactory.getLogger(BlobStoreDiscoveryService.class);
+    private static final String KARAF_CELLAR = "Karaf-Cellar";
+
+	private static final String APPLICATION_TYPE = "Application-Type";
+
+	private static final transient Logger LOGGER = LoggerFactory.getLogger(BlobStoreDiscoveryService.class);
 
     private String provider;
     private String identity;
@@ -101,8 +106,14 @@ public class BlobStoreDiscoveryService i
 				continue;
 			}
             String ip = md.getName();
-            Object obj = readBlob(container, ip);
-            if (obj == null)
+            Map<String, String> userMetadata = md.getUserMetadata();
+            Object obj = null;
+            if (userMetadata.containsKey(APPLICATION_TYPE) && KARAF_CELLAR.equalsIgnoreCase(userMetadata.get(APPLICATION_TYPE))) {
+            	obj = readBlob(container, ip);
+            } else {
+            	LOGGER.debug("CELLAR CLOUD: found blob of unknown Application-Type, will be skipped!");
+            }
+            if (obj == null) 
             	continue;
             //Check if ip hasn't been updated recently.
             if (obj instanceof DateTime) {
@@ -218,6 +229,11 @@ public class BlobStoreDiscoveryService i
                 oos = new ObjectOutputStream(baos);
                 oos.writeObject(data);
                 blob.setPayload(baos.toByteArray());
+                if (blob.getMetadata().getUserMetadata() == null) {
+                	blob.getMetadata().setUserMetadata(new HashMap<String, String>());
+                }
+                Map<String, String> userMetadata = blob.getMetadata().getUserMetadata();
+                userMetadata.put(APPLICATION_TYPE, KARAF_CELLAR);
                 blobStore.putBlob(container, blob);
             } catch (IOException e) {
                 LOGGER.error("CELLAR CLOUD: failed to write blob", e);