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

Reply via email to