1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.security.oauth2.config.annotation.builders;
17
18 import java.util.HashSet;
19 import java.util.Set;
20
21 import javax.sql.DataSource;
22
23 import org.springframework.security.crypto.password.PasswordEncoder;
24 import org.springframework.security.oauth2.provider.ClientDetails;
25 import org.springframework.security.oauth2.provider.ClientDetailsService;
26 import org.springframework.security.oauth2.provider.client.JdbcClientDetailsService;
27 import org.springframework.util.Assert;
28
29
30
31
32
33 public class JdbcClientDetailsServiceBuilder extends ClientDetailsServiceBuilder<JdbcClientDetailsServiceBuilder> {
34
35 private Set<ClientDetails> clientDetails = new HashSet<ClientDetails>();
36
37 private DataSource dataSource;
38
39 private PasswordEncoder passwordEncoder;
40
41 public JdbcClientDetailsServiceBuilder dataSource(DataSource dataSource) {
42 this.dataSource = dataSource;
43 return this;
44 }
45
46 public JdbcClientDetailsServiceBuilder passwordEncoder(PasswordEncoder passwordEncoder) {
47 this.passwordEncoder = passwordEncoder;
48 return this;
49 }
50
51 @Override
52 protected void addClient(String clientId, ClientDetails value) {
53 clientDetails.add(value);
54 }
55
56 @Override
57 protected ClientDetailsService performBuild() {
58 Assert.state(dataSource != null, "You need to provide a DataSource");
59 JdbcClientDetailsService clientDetailsService = new JdbcClientDetailsService(dataSource);
60 if (passwordEncoder != null) {
61
62
63 clientDetailsService.setPasswordEncoder(passwordEncoder);
64 }
65 for (ClientDetails client : clientDetails) {
66 clientDetailsService.addClientDetails(client);
67 }
68 return clientDetailsService;
69 }
70
71 }