1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.client.enduser.commons;
20
21 import java.io.Serializable;
22 import java.util.Optional;
23 import org.apache.commons.lang3.StringUtils;
24 import org.apache.syncope.client.enduser.init.ClassPathScanImplementationLookup;
25 import org.apache.syncope.client.ui.commons.markup.html.form.preview.BinaryPreviewer;
26 import org.apache.syncope.client.ui.commons.markup.html.form.preview.DefaultPreviewer;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29 import org.springframework.util.ClassUtils;
30
31 public class PreviewUtils implements Serializable {
32
33 private static final long serialVersionUID = 2765845550328631887L;
34
35 protected static final Logger LOG = LoggerFactory.getLogger(PreviewUtils.class);
36
37 protected final ClassPathScanImplementationLookup lookup;
38
39 public PreviewUtils(final ClassPathScanImplementationLookup lookup) {
40 this.lookup = lookup;
41 }
42
43 public BinaryPreviewer getPreviewer(final String mimeType) {
44 if (StringUtils.isBlank(mimeType)) {
45 return new DefaultPreviewer(mimeType);
46 }
47
48 return Optional.ofNullable(lookup.getPreviewerClass(mimeType)).map(clazz -> {
49 try {
50 return ClassUtils.getConstructorIfAvailable(clazz, String.class).
51 newInstance(new Object[] { mimeType });
52 } catch (Exception e) {
53 LOG.error("While getting BinaryPreviewer for {}", mimeType, e);
54
55 return new DefaultPreviewer(mimeType);
56 }
57 }).orElseGet(() -> new DefaultPreviewer(mimeType));
58 }
59 }