1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.persistence.jpa.entity;
20
21 import java.util.Optional;
22 import javax.persistence.Lob;
23 import javax.persistence.ManyToOne;
24 import javax.persistence.MappedSuperclass;
25 import org.apache.syncope.common.lib.to.AnyTO;
26 import org.apache.syncope.core.persistence.api.entity.AnyTemplate;
27 import org.apache.syncope.core.persistence.api.entity.AnyType;
28 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
29 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
30 import org.apache.syncope.core.spring.ApplicationContextProvider;
31
32 @MappedSuperclass
33 public abstract class AbstractAnyTemplate extends AbstractGeneratedKeyEntity implements AnyTemplate {
34
35 private static final long serialVersionUID = -5280310945358790780L;
36
37 @ManyToOne
38 private JPAAnyType anyType;
39
40 @Lob
41 private String template;
42
43 @Override
44 public AnyType getAnyType() {
45 return anyType;
46 }
47
48 @Override
49 public void setAnyType(final AnyType anyType) {
50 checkType(anyType, JPAAnyType.class);
51 this.anyType = (JPAAnyType) anyType;
52 }
53
54 @Override
55 public AnyTO get() {
56 return template == null
57 ? anyType == null
58 ? null
59 : ApplicationContextProvider.getApplicationContext().getBean(AnyUtilsFactory.class).
60 getInstance(anyType.getKind()).newAnyTO()
61 : anyType == null
62 ? null
63 : POJOHelper.deserialize(template, anyType.getKind().getTOClass());
64 }
65
66 @Override
67 public void set(final AnyTO template) {
68 this.template = Optional.ofNullable(template).map(POJOHelper::serialize).orElse(null);
69 }
70 }