View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.syncope.core.persistence.jpa.entity.am;
20  
21  import com.fasterxml.jackson.core.type.TypeReference;
22  import java.util.ArrayList;
23  import java.util.List;
24  import java.util.Optional;
25  import javax.persistence.Column;
26  import javax.persistence.EnumType;
27  import javax.persistence.Enumerated;
28  import javax.persistence.FetchType;
29  import javax.persistence.Lob;
30  import javax.persistence.ManyToOne;
31  import javax.persistence.MappedSuperclass;
32  import org.apache.syncope.common.lib.Attr;
33  import org.apache.syncope.common.lib.clientapps.UsernameAttributeProviderConf;
34  import org.apache.syncope.common.lib.types.LogoutType;
35  import org.apache.syncope.core.persistence.api.entity.Realm;
36  import org.apache.syncope.core.persistence.api.entity.am.ClientApp;
37  import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
38  import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
39  import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
40  import org.apache.syncope.core.persistence.api.entity.policy.TicketExpirationPolicy;
41  import org.apache.syncope.core.persistence.jpa.entity.AbstractGeneratedKeyEntity;
42  import org.apache.syncope.core.persistence.jpa.entity.JPARealm;
43  import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccessPolicy;
44  import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAttrReleasePolicy;
45  import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAuthPolicy;
46  import org.apache.syncope.core.persistence.jpa.entity.policy.JPATicketExpirationPolicy;
47  import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
48  
49  @MappedSuperclass
50  public class AbstractClientApp extends AbstractGeneratedKeyEntity implements ClientApp {
51  
52      private static final long serialVersionUID = 7422422526695279794L;
53  
54      protected static final TypeReference<List<Attr>> ATTR_TYPEREF = new TypeReference<List<Attr>>() {
55      };
56  
57      @Column(unique = true, nullable = false)
58      private String name;
59  
60      @Column(unique = true, nullable = false)
61      private Long clientAppId;
62  
63      private String description;
64  
65      private String logo;
66  
67      @Lob
68      private String usernameAttributeProviderConf;
69  
70      private String theme;
71  
72      private String informationUrl;
73  
74      private String privacyUrl;
75  
76      @ManyToOne(fetch = FetchType.EAGER)
77      private JPARealm realm;
78  
79      @ManyToOne(fetch = FetchType.EAGER)
80      private JPAAuthPolicy authPolicy;
81  
82      @ManyToOne(fetch = FetchType.EAGER)
83      private JPAAccessPolicy accessPolicy;
84  
85      @ManyToOne(fetch = FetchType.EAGER)
86      private JPAAttrReleasePolicy attrReleasePolicy;
87  
88      @ManyToOne(fetch = FetchType.EAGER)
89      private JPATicketExpirationPolicy ticketExpirationPolicy;
90  
91      @Lob
92      private String properties;
93  
94      @Enumerated(EnumType.STRING)
95      private LogoutType logoutType;
96  
97      @Override
98      public Long getClientAppId() {
99          return clientAppId;
100     }
101 
102     @Override
103     public void setClientAppId(final Long clientAppId) {
104         this.clientAppId = clientAppId;
105     }
106 
107     @Override
108     public String getName() {
109         return name;
110     }
111 
112     @Override
113     public void setName(final String name) {
114         this.name = name;
115     }
116 
117     @Override
118     public String getDescription() {
119         return description;
120     }
121 
122     @Override
123     public void setDescription(final String description) {
124         this.description = description;
125     }
126 
127     @Override
128     public String getLogo() {
129         return logo;
130     }
131 
132     @Override
133     public void setLogo(final String logo) {
134         this.logo = logo;
135     }
136 
137     @Override
138     public String getTheme() {
139         return theme;
140     }
141 
142     @Override
143     public void setTheme(final String theme) {
144         this.theme = theme;
145     }
146 
147     @Override
148     public String getInformationUrl() {
149         return informationUrl;
150     }
151 
152     @Override
153     public void setInformationUrl(final String informationUrl) {
154         this.informationUrl = informationUrl;
155     }
156 
157     @Override
158     public String getPrivacyUrl() {
159         return privacyUrl;
160     }
161 
162     @Override
163     public void setPrivacyUrl(final String privacyUrl) {
164         this.privacyUrl = privacyUrl;
165     }
166 
167     @Override
168     public UsernameAttributeProviderConf getUsernameAttributeProviderConf() {
169         return Optional.ofNullable(usernameAttributeProviderConf).
170                 map(conf -> POJOHelper.deserialize(conf, UsernameAttributeProviderConf.class)).orElse(null);
171     }
172 
173     @Override
174     public void setUsernameAttributeProviderConf(final UsernameAttributeProviderConf conf) {
175         this.usernameAttributeProviderConf = conf == null ? null : POJOHelper.serialize(conf);
176     }
177 
178     @Override
179     public JPAAuthPolicy getAuthPolicy() {
180         return authPolicy;
181     }
182 
183     @Override
184     public void setAuthPolicy(final AuthPolicy authPolicy) {
185         checkType(authPolicy, JPAAuthPolicy.class);
186         this.authPolicy = (JPAAuthPolicy) authPolicy;
187     }
188 
189     @Override
190     public JPAAccessPolicy getAccessPolicy() {
191         return accessPolicy;
192     }
193 
194     @Override
195     public void setAccessPolicy(final AccessPolicy accessPolicy) {
196         checkType(accessPolicy, JPAAccessPolicy.class);
197         this.accessPolicy = (JPAAccessPolicy) accessPolicy;
198     }
199 
200     @Override
201     public AttrReleasePolicy getAttrReleasePolicy() {
202         return this.attrReleasePolicy;
203     }
204 
205     @Override
206     public void setAttrReleasePolicy(final AttrReleasePolicy policy) {
207         checkType(policy, JPAAttrReleasePolicy.class);
208         this.attrReleasePolicy = (JPAAttrReleasePolicy) policy;
209     }
210 
211     @Override
212     public TicketExpirationPolicy getTicketExpirationPolicy() {
213         return this.ticketExpirationPolicy;
214     }
215 
216     @Override
217     public void setTicketExpirationPolicy(final TicketExpirationPolicy policy) {
218         checkType(policy, JPATicketExpirationPolicy.class);
219         this.ticketExpirationPolicy = (JPATicketExpirationPolicy) policy;
220     }
221 
222     @Override
223     public Realm getRealm() {
224         return realm;
225     }
226 
227     @Override
228     public void setRealm(final Realm realm) {
229         checkType(realm, JPARealm.class);
230         this.realm = (JPARealm) realm;
231     }
232 
233     @Override
234     public List<Attr> getProperties() {
235         return properties == null
236                 ? new ArrayList<>(0)
237                 : POJOHelper.deserialize(properties, ATTR_TYPEREF);
238     }
239 
240     @Override
241     public void setProperties(final List<Attr> properties) {
242         this.properties = POJOHelper.serialize(properties);
243     }
244 
245     @Override
246     public LogoutType getLogoutType() {
247         return this.logoutType;
248     }
249 
250     @Override
251     public void setLogoutType(final LogoutType logoutType) {
252         this.logoutType = logoutType;
253     }
254 }