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);