X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fgcr%2Ffs%2FFsContent.java;h=0ba24093ffbe9a838b63a0583ecfc79d9de4f69e;hb=865fc51900459b888938cc0d6943673ee6f20d09;hp=5efa65959b50a86affbf5e0b3e0b5bcc246c339d;hpb=212a43ed44ffc186b69e838d65a1421fd5e1f3a5;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/gcr/fs/FsContent.java b/org.argeo.cms/src/org/argeo/cms/gcr/fs/FsContent.java index 5efa65959..0ba24093f 100644 --- a/org.argeo.cms/src/org/argeo/cms/gcr/fs/FsContent.java +++ b/org.argeo.cms/src/org/argeo/cms/gcr/fs/FsContent.java @@ -13,6 +13,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Map; +import java.util.Optional; import java.util.Set; import javax.xml.namespace.QName; @@ -80,7 +81,7 @@ public class FsContent extends AbstractContent implements ProvidedContent { */ @Override - public A get(QName key, Class clss) { + public Optional get(QName key, Class clss) { Object value; try { // We need to add user: when accessing via Files#getAttribute @@ -88,19 +89,26 @@ public class FsContent extends AbstractContent implements ProvidedContent { } catch (IOException e) { throw new ContentResourceException("Cannot retrieve attribute " + key + " for " + path, e); } + A res = null; if (value instanceof FileTime) { if (clss.isAssignableFrom(FileTime.class)) - return (A) value; + res = (A) value; Instant instant = ((FileTime) value).toInstant(); if (Object.class.isAssignableFrom(clss)) {// plain object requested - return (A) instant; + res = (A) instant; } // TODO perform trivial file conversion to other formats } if (value instanceof byte[]) { - return (A) new String((byte[]) value, StandardCharsets.UTF_8); + res = (A) new String((byte[]) value, StandardCharsets.UTF_8); } - return (A) value; + if (res == null) + try { + res = (A) value; + } catch (ClassCastException e) { + return Optional.empty(); + } + return Optional.of(res); } @Override