Skip to content

Commit 6af3bed

Browse files
authored
Merge pull request #527 from SpectraLogic/ltfs_metadata_3_5
Adding ltfs header prefix to metadata.
2 parents 56fcbaa + 77a2c28 commit 6af3bed

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

ds3-sdk/src/test/java/com/spectralogic/ds3client/commands/MetadataImpl_Test.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,30 @@ public void getMultiValueWithSpace() {
6868
assertThat(value.get(2), is("value3"));
6969
}
7070

71+
@Test
72+
public void getSingleValueLtfs() {
73+
final String userGuid = "060a2b340101010101010f0013-000000-709e29c2d1e20085-e7610015b2a9-a854";
74+
final Metadata metadata = genMetadata(new BasicHeader("x-spectra-ltfs-user.guid", userGuid));
75+
final List<String> userGuids = metadata.get("user.guid");
76+
assertThat(userGuids, is(notNullValue()));
77+
assertFalse(userGuids.isEmpty());
78+
assertThat(userGuids.size(), is(1));
79+
assertThat(userGuids.get(0), is(userGuid));
80+
}
81+
82+
@Test
83+
public void getTwoValuesLtfs() {
84+
final String userGuid1 = "060a2b340101010101010f0013-000000-709e29c2d1e20085-e7610015b2a9-a854";
85+
final String userGuid2 = "160a2b340101010101010f0013-000000-709e29c2d1e20085-e7610015b2a9-a854";
86+
final Metadata metadata = genMetadata(new BasicHeader("x-spectra-ltfs-user.guid", userGuid1 + "," + userGuid2));
87+
final List<String> userGuids = metadata.get("user.guid");
88+
assertThat(userGuids, is(notNullValue()));
89+
assertFalse(userGuids.isEmpty());
90+
assertThat(userGuids.size(), is(2));
91+
assertThat(userGuids.get(0), is(userGuid1));
92+
assertThat(userGuids.get(1), is(userGuid2));
93+
}
94+
7195
private Metadata genMetadata(final Header... headers) {
7296

7397
final ImmutableMultimap.Builder<String, String> mapBuilder = ImmutableMultimap.builder();

ds3-utils/src/main/java/com/spectralogic/ds3client/commands/interfaces/MetadataImpl.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
public class MetadataImpl implements Metadata {
3131

3232
private static final String X_AMZ_META = "x-amz-meta-";
33-
final ImmutableMultimap<String, String> metadata;
33+
private static final String LTFS_METADATA_PREFIX = "x-spectra-ltfs-";
34+
private final ImmutableMultimap<String, String> metadata;
3435

3536
public MetadataImpl(final Headers headers) {
3637
this.metadata = genMetadata(headers);
@@ -45,17 +46,27 @@ private static ImmutableMultimap<String, String> genMetadata(final Headers heade
4546
final ImmutableMultimap.Builder<String, String> mapBuilder = ImmutableMultimap.builder();
4647

4748
for (final String key : headers.keys()) {
48-
if (key.startsWith(X_AMZ_META)) {
49-
final String name = toDecodedString(key.substring(X_AMZ_META.length()));
49+
final String keyWithoutPrefix = metadataKey(key);
5050

51+
if ( ! keyWithoutPrefix.isEmpty()) {
5152
final List<String> values = getValues(headers, key);
52-
mapBuilder.putAll(name, values);
53+
mapBuilder.putAll(keyWithoutPrefix, values);
5354
}
5455
}
5556

5657
return mapBuilder.build();
5758
}
5859

60+
private static String metadataKey(final String key) {
61+
if (key.startsWith(X_AMZ_META)) {
62+
return toDecodedString(key.substring(X_AMZ_META.length()));
63+
} else if (key.startsWith(LTFS_METADATA_PREFIX)) {
64+
return toDecodedString(key.substring(LTFS_METADATA_PREFIX.length()));
65+
}
66+
67+
return "";
68+
}
69+
5970
private static List<String> getValues(final Headers headers, final String key) {
6071
final List<String> valueList = headers.get(key);
6172
final List<String> returnList = new ArrayList<>(valueList.size());

0 commit comments

Comments
 (0)