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;
20
21 import org.apache.syncope.core.persistence.api.attrvalue.validation.PlainAttrValidationManager;
22 import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
23 import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
24 import org.apache.syncope.core.persistence.api.dao.AuditConfDAO;
25 import org.apache.syncope.core.persistence.api.dao.DynRealmDAO;
26 import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
27 import org.apache.syncope.core.persistence.api.dao.GroupDAO;
28 import org.apache.syncope.core.persistence.api.dao.JPAJSONAnyDAO;
29 import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
30 import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
31 import org.apache.syncope.core.persistence.api.dao.RealmDAO;
32 import org.apache.syncope.core.persistence.api.dao.UserDAO;
33 import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
34 import org.apache.syncope.core.persistence.api.entity.EntityFactory;
35 import org.apache.syncope.core.persistence.jpa.dao.OJPAJSONAnyDAO;
36 import org.apache.syncope.core.persistence.jpa.dao.OJPAJSONAnySearchDAO;
37 import org.apache.syncope.core.persistence.jpa.dao.OJPAJSONAuditConfDAO;
38 import org.apache.syncope.core.persistence.jpa.dao.OJPAJSONPlainSchemaDAO;
39 import org.apache.syncope.core.persistence.jpa.entity.OJPAJSONEntityFactory;
40 import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
41 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
42 import org.springframework.context.annotation.Bean;
43 import org.springframework.context.annotation.Lazy;
44
45 @ConditionalOnExpression("#{'${provisioning.quartz.sql}' matches '.*oracle.*'}")
46 public class OJPAJSONPersistenceContext extends JPAJSONPersistenceContext {
47
48 @ConditionalOnMissingBean(name = "oJPAJSONEntityFactory")
49 @Bean
50 public EntityFactory entityFactory() {
51 return new OJPAJSONEntityFactory();
52 }
53
54 @ConditionalOnMissingBean(name = "oJPAJSONAnyDAO")
55 @Bean
56 public JPAJSONAnyDAO anyDAO(final @Lazy PlainSchemaDAO plainSchemaDAO) {
57 return new OJPAJSONAnyDAO(plainSchemaDAO);
58 }
59
60 @ConditionalOnMissingBean(name = "oJPAJSONAnySearchDAO")
61 @Bean
62 public AnySearchDAO anySearchDAO(
63 final @Lazy RealmDAO realmDAO,
64 final @Lazy DynRealmDAO dynRealmDAO,
65 final @Lazy UserDAO userDAO,
66 final @Lazy GroupDAO groupDAO,
67 final @Lazy AnyObjectDAO anyObjectDAO,
68 final @Lazy PlainSchemaDAO schemaDAO,
69 final @Lazy EntityFactory entityFactory,
70 final AnyUtilsFactory anyUtilsFactory,
71 final PlainAttrValidationManager validator) {
72
73 return new OJPAJSONAnySearchDAO(
74 realmDAO,
75 dynRealmDAO,
76 userDAO,
77 groupDAO,
78 anyObjectDAO,
79 schemaDAO,
80 entityFactory,
81 anyUtilsFactory,
82 validator);
83 }
84
85 @ConditionalOnMissingBean(name = "oJPAJSONAuditConfDAO")
86 @Bean
87 public AuditConfDAO auditConfDAO() {
88 return new OJPAJSONAuditConfDAO();
89 }
90
91 @ConditionalOnMissingBean(name = "oJPAJSONPlainSchemaDAO")
92 @Bean
93 public PlainSchemaDAO plainSchemaDAO(
94 final AnyUtilsFactory anyUtilsFactory,
95 final @Lazy PlainAttrDAO plainAttrDAO,
96 final @Lazy ExternalResourceDAO resourceDAO) {
97
98 return new OJPAJSONPlainSchemaDAO(anyUtilsFactory, plainAttrDAO, resourceDAO);
99 }
100 }