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