Add mtime support to Atmos directory listing
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/b9580904 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/b9580904 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/b9580904 Branch: refs/heads/2.0.x Commit: b95809046adc899f786ba03f9217758100d821ca Parents: 28a70b7 Author: Andrew Gaul <[email protected]> Authored: Sun Oct 29 17:26:34 2017 -0700 Committer: Andrew Gaul <[email protected]> Committed: Fri Nov 24 19:25:35 2017 -0800 ---------------------------------------------------------------------- .../DirectoryEntryListToResourceMetadataList.java | 2 +- .../org/jclouds/atmos/domain/DirectoryEntry.java | 15 +++++++++++++++ .../atmos/xml/ListDirectoryResponseHandler.java | 16 +++++++++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9580904/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/DirectoryEntryListToResourceMetadataList.java ---------------------------------------------------------------------- diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/DirectoryEntryListToResourceMetadataList.java b/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/DirectoryEntryListToResourceMetadataList.java index f04100f..b14dd85 100644 --- a/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/DirectoryEntryListToResourceMetadataList.java +++ b/apis/atmos/src/main/java/org/jclouds/atmos/blobstore/functions/DirectoryEntryListToResourceMetadataList.java @@ -59,7 +59,7 @@ public class DirectoryEntryListToResourceMetadataList implements .get(), null, null, null, null, ImmutableMap.<String, String>of()); else { BlobMetadataImpl metadata = new BlobMetadataImpl(from.getObjectID(), from.getObjectName(), defaultLocation.get(), - null, null, null, null, ImmutableMap.<String, String>of(), null, + null, null, null, from.getModifiedTime(), ImmutableMap.<String, String>of(), null, null, new BaseMutableContentMetadata()); MutableBlobMetadataImpl mutable = new MutableBlobMetadataImpl(metadata); mutable.setSize(from.getSize()); http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9580904/apis/atmos/src/main/java/org/jclouds/atmos/domain/DirectoryEntry.java ---------------------------------------------------------------------- diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/domain/DirectoryEntry.java b/apis/atmos/src/main/java/org/jclouds/atmos/domain/DirectoryEntry.java index b657973..40c2cdb 100644 --- a/apis/atmos/src/main/java/org/jclouds/atmos/domain/DirectoryEntry.java +++ b/apis/atmos/src/main/java/org/jclouds/atmos/domain/DirectoryEntry.java @@ -16,6 +16,10 @@ */ package org.jclouds.atmos.domain; +import java.util.Date; + +import org.jclouds.javax.annotation.Nullable; + import com.google.common.base.Objects; /** @@ -26,12 +30,19 @@ public class DirectoryEntry implements Comparable<DirectoryEntry> { private final FileType type; private final String objname; private final long size; + @Nullable private final Date modifiedTime; + @Deprecated public DirectoryEntry(String objectid, FileType type, String objname, long size) { + this(objectid, type, objname, size, null); + } + + public DirectoryEntry(String objectid, FileType type, String objname, long size, Date modifiedTime) { this.objectid = objectid; this.objname = objname; this.type = type; this.size = size; + this.modifiedTime = modifiedTime != null ? (Date) modifiedTime.clone() : null; } public String getObjectID() { @@ -50,6 +61,10 @@ public class DirectoryEntry implements Comparable<DirectoryEntry> { return size; } + public Date getModifiedTime() { + return modifiedTime != null ? (Date) modifiedTime.clone() : null; + } + public int compareTo(DirectoryEntry o) { if (getObjectName() == null) return -1; http://git-wip-us.apache.org/repos/asf/jclouds/blob/b9580904/apis/atmos/src/main/java/org/jclouds/atmos/xml/ListDirectoryResponseHandler.java ---------------------------------------------------------------------- diff --git a/apis/atmos/src/main/java/org/jclouds/atmos/xml/ListDirectoryResponseHandler.java b/apis/atmos/src/main/java/org/jclouds/atmos/xml/ListDirectoryResponseHandler.java index ffe1a4a..3109708 100644 --- a/apis/atmos/src/main/java/org/jclouds/atmos/xml/ListDirectoryResponseHandler.java +++ b/apis/atmos/src/main/java/org/jclouds/atmos/xml/ListDirectoryResponseHandler.java @@ -16,10 +16,14 @@ */ package org.jclouds.atmos.xml; +import java.util.Date; import java.util.Set; +import javax.inject.Inject; + import org.jclouds.atmos.domain.DirectoryEntry; import org.jclouds.atmos.domain.FileType; +import org.jclouds.date.DateService; import org.jclouds.http.functions.ParseSax; import com.google.common.collect.Sets; @@ -37,12 +41,20 @@ public class ListDirectoryResponseHandler extends ParseSax.HandlerWithResult<Set private FileType currentType; private String currentFileName; private long currentSize; + private Date currentModificationTime; // metadata parsing private String currentName; private StringBuilder currentText = new StringBuilder(); + private final DateService dateService; + + @Inject + ListDirectoryResponseHandler(DateService dateService) { + this.dateService = dateService; + } + public Set<DirectoryEntry> getResult() { return entries; } @@ -61,9 +73,11 @@ public class ListDirectoryResponseHandler extends ParseSax.HandlerWithResult<Set } else if (qName.equals("Value")) { if (currentName.equals("size")) { currentSize = Long.parseLong(currentText.toString().trim()); + } else if (currentName.equals("mtime")) { + currentModificationTime = dateService.iso8601DateOrSecondsDateParse(currentText.toString().trim()); } } else if (qName.equals("DirectoryEntry")) { - entries.add(new DirectoryEntry(currentObjectId, currentType, currentFileName, currentSize)); + entries.add(new DirectoryEntry(currentObjectId, currentType, currentFileName, currentSize, currentModificationTime)); } currentText.setLength(0); }
