Skip to content

Commit a00e902

Browse files
committed
Configuration properties layout changed
1 parent 53e9adc commit a00e902

File tree

9 files changed

+79
-58
lines changed

9 files changed

+79
-58
lines changed

README.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,10 @@ Configure Couchbase connection in _application.yml_ file:
5555
```yaml
5656
session-couchbase.persistent:
5757
namespace: <application_namespace>
58-
hosts: <list_of_couchbase_cluster_hosts>
59-
bucket-name: <couchbase_bucket_name>
60-
password: <couchbase_bucket_password>
58+
couchbase:
59+
hosts: <list_of_couchbase_cluster_hosts>
60+
bucket-name: <couchbase_bucket_name>
61+
password: <couchbase_bucket_password>
6162
```
6263
6364
Optionally you can override default Couchbase client settings by creating `CouchbaseEnvironment` bean:
@@ -128,9 +129,12 @@ session-couchbase:
128129
timeout-in-seconds: 1800 # HTTP session timeout.
129130
persistent:
130131
namespace: # HTTP session application namespace under which session data must be stored.
131-
hosts: localhost # Couchbase cluster hosts.
132-
bucket-name: default # Couchbase bucket name where session data must be stored.
133-
password: # Couchbase bucket password.
132+
couchbase:
133+
hosts: localhost # Couchbase cluster hosts.
134+
bucket-name: default # Couchbase bucket name where session data must be stored.
135+
password: # Couchbase bucket password.
136+
principal-sessions:
137+
enabled: false # Flag for enabling and disabling finding HTTP sessions by principal. Can significantly decrease application performance when enabled.
134138
in-memory:
135139
enabled: false # Flag for enabling and disabling in-memory mode.
136140
```

src/main/java/com/github/mkopylec/sessioncouchbase/SessionCouchbaseProperties.java

Lines changed: 52 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ public class SessionCouchbaseProperties {
2525
* Properties responsible for in-memory mode behaviour.
2626
*/
2727
private InMemory inMemory = new InMemory();
28-
/**
29-
* Properties responsible for managing principal HTTP sessions.
30-
*/
31-
private PrincipalSessions principalSessions = new PrincipalSessions();
3228

3329
public int getTimeoutInSeconds() {
3430
return timeoutInSeconds;
@@ -54,32 +50,20 @@ public void setInMemory(InMemory inMemory) {
5450
this.inMemory = inMemory;
5551
}
5652

57-
public PrincipalSessions getPrincipalSessions() {
58-
return principalSessions;
59-
}
60-
61-
public void setPrincipalSessions(PrincipalSessions principalSessions) {
62-
this.principalSessions = principalSessions;
63-
}
64-
6553
public static class Persistent {
6654

6755
/**
6856
* HTTP session application namespace under which session data must be stored.
6957
*/
7058
private String namespace;
7159
/**
72-
* Couchbase cluster hosts.
73-
*/
74-
private List<String> hosts = singletonList("localhost");
75-
/**
76-
* Couchbase bucket name where session data must be stored.
60+
* Properties responsible Couchbase connection.
7761
*/
78-
private String bucketName = "default";
62+
private Couchbase couchbase;
7963
/**
80-
* Couchbase bucket password.
64+
* Properties responsible for managing principal HTTP sessions.
8165
*/
82-
private String password = EMPTY;
66+
private PrincipalSessions principalSessions = new PrincipalSessions();
8367

8468
public String getNamespace() {
8569
return namespace;
@@ -89,28 +73,20 @@ public void setNamespace(String namespace) {
8973
this.namespace = namespace;
9074
}
9175

92-
public List<String> getHosts() {
93-
return hosts;
76+
public Couchbase getCouchbase() {
77+
return couchbase;
9478
}
9579

96-
public void setHosts(List<String> hosts) {
97-
this.hosts = hosts;
80+
public void setCouchbase(Couchbase couchbase) {
81+
this.couchbase = couchbase;
9882
}
9983

100-
public String getBucketName() {
101-
return bucketName;
84+
public PrincipalSessions getPrincipalSessions() {
85+
return principalSessions;
10286
}
10387

104-
public void setBucketName(String bucketName) {
105-
this.bucketName = bucketName;
106-
}
107-
108-
public String getPassword() {
109-
return password;
110-
}
111-
112-
public void setPassword(String password) {
113-
this.password = password;
88+
public void setPrincipalSessions(PrincipalSessions principalSessions) {
89+
this.principalSessions = principalSessions;
11490
}
11591
}
11692

@@ -130,6 +106,46 @@ public void setEnabled(boolean enabled) {
130106
}
131107
}
132108

109+
public static class Couchbase {
110+
111+
/**
112+
* Couchbase cluster hosts.
113+
*/
114+
private List<String> hosts = singletonList("localhost");
115+
/**
116+
* Couchbase bucket name where session data must be stored.
117+
*/
118+
private String bucketName = "default";
119+
/**
120+
* Couchbase bucket password.
121+
*/
122+
private String password = EMPTY;
123+
124+
public List<String> getHosts() {
125+
return hosts;
126+
}
127+
128+
public void setHosts(List<String> hosts) {
129+
this.hosts = hosts;
130+
}
131+
132+
public String getBucketName() {
133+
return bucketName;
134+
}
135+
136+
public void setBucketName(String bucketName) {
137+
this.bucketName = bucketName;
138+
}
139+
140+
public String getPassword() {
141+
return password;
142+
}
143+
144+
public void setPassword(String password) {
145+
this.password = password;
146+
}
147+
}
148+
133149
public static class PrincipalSessions {
134150

135151
/**

src/main/java/com/github/mkopylec/sessioncouchbase/persistent/PersistentConfiguration.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public Serializer serializer() {
4848
@ConditionalOnMissingBean
4949
public SessionRepository sessionRepository(CouchbaseDao dao, ObjectMapper mapper, Serializer serializer) {
5050
return new CouchbaseSessionRepository(
51-
dao, sessionCouchbase.getPersistent().getNamespace(), mapper, sessionCouchbase.getTimeoutInSeconds(), serializer, sessionCouchbase.getPrincipalSessions().isEnabled()
51+
dao, sessionCouchbase.getPersistent().getNamespace(), mapper, sessionCouchbase.getTimeoutInSeconds(), serializer, sessionCouchbase.getPersistent().getPrincipalSessions().isEnabled()
5252
);
5353
}
5454

@@ -60,16 +60,16 @@ public ObjectMapper objectMapper() {
6060

6161
@Override
6262
protected List<String> getBootstrapHosts() {
63-
return sessionCouchbase.getPersistent().getHosts();
63+
return sessionCouchbase.getPersistent().getCouchbase().getHosts();
6464
}
6565

6666
@Override
6767
protected String getBucketName() {
68-
return sessionCouchbase.getPersistent().getBucketName();
68+
return sessionCouchbase.getPersistent().getCouchbase().getBucketName();
6969
}
7070

7171
@Override
7272
protected String getBucketPassword() {
73-
return sessionCouchbase.getPersistent().getPassword();
73+
return sessionCouchbase.getPersistent().getCouchbase().getPassword();
7474
}
7575
}

src/test/groovy/com/github/mkopylec/sessioncouchbase/BasicSpec.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ abstract class BasicSpec extends Specification {
5959
def runnerInstance = runnerClass.newInstance()
6060
instance = new ApplicationInstance(runnerClass, runnerInstance)
6161
runnerClass.getMethod('setNamespace', String).invoke(runnerInstance, namespace)
62-
runnerClass.getMethod('setPrincipalSessionsEnabled', boolean).invoke(runnerInstance, sessionCouchbase.principalSessions.enabled)
62+
runnerClass.getMethod('setPrincipalSessionsEnabled', boolean).invoke(runnerInstance, sessionCouchbase.persistent.principalSessions.enabled)
6363
runnerClass.getMethod('run').invoke(runnerInstance)
6464
extraInstancePort = runnerClass.getMethod('getPort').invoke(runnerInstance) as int
6565
}
@@ -145,7 +145,7 @@ abstract class BasicSpec extends Specification {
145145

146146
protected void clearBucket() {
147147
if (couchbase) {
148-
def result = couchbase.queryN1QL(simple("DELETE FROM $sessionCouchbase.persistent.bucketName"))
148+
def result = couchbase.queryN1QL(simple("DELETE FROM $sessionCouchbase.persistent.couchbase.bucketName"))
149149
failOnErrors(result)
150150
}
151151
}
@@ -155,7 +155,7 @@ abstract class BasicSpec extends Specification {
155155
def result = couchbase.queryN1QL(simple('SELECT * FROM system:indexes'))
156156
failOnErrors(result)
157157
if (result.allRows().empty) {
158-
result = couchbase.queryN1QL(simple("CREATE PRIMARY INDEX ON $sessionCouchbase.persistent.bucketName USING GSI"))
158+
result = couchbase.queryN1QL(simple("CREATE PRIMARY INDEX ON $sessionCouchbase.persistent.couchbase.bucketName USING GSI"))
159159
failOnErrors(result)
160160
}
161161
bucketIndexCreated = true

src/test/groovy/com/github/mkopylec/sessioncouchbase/specification/PrincipalSessionsExpirationSpec.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import org.springframework.test.context.TestPropertySource
55

66
import static com.github.mkopylec.sessioncouchbase.assertions.Assertions.assertThat
77

8-
@TestPropertySource(properties = ['session-couchbase.principal-sessions.enabled: true', 'session-couchbase.timeout-in-seconds: 1'])
8+
@TestPropertySource(properties = ['session-couchbase.persistent.principal-sessions.enabled: true', 'session-couchbase.timeout-in-seconds: 1'])
99
class PrincipalSessionsExpirationSpec extends BasicSpec {
1010

1111
def "Should not get principal HTTP session when HTTP session have expired"() {

src/test/groovy/com/github/mkopylec/sessioncouchbase/specification/PrincipalSessionsSpec.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import org.springframework.test.context.TestPropertySource
55

66
import static com.github.mkopylec.sessioncouchbase.assertions.Assertions.assertThat
77

8-
@TestPropertySource(properties = ['session-couchbase.principal-sessions.enabled: true'])
8+
@TestPropertySource(properties = ['session-couchbase.persistent.principal-sessions.enabled: true'])
99
class PrincipalSessionsSpec extends BasicSpec {
1010

1111
def "Should get principal HTTP sessions when they exist"() {

src/test/groovy/com/github/mkopylec/sessioncouchbase/utils/ApplicationInstanceRunner.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class ApplicationInstanceRunner {
5959

6060
@Override
6161
public void run() {
62-
context = SpringApplication.run(TestApplication, '--server.port=0', "--session-couchbase.persistent.namespace=$namespace", "--session-couchbase.principal-sessions.enabled=$principalSessionsEnabled") as EmbeddedWebApplicationContext
62+
context = SpringApplication.run(TestApplication, '--server.port=0', "--session-couchbase.persistent.namespace=$namespace", "--session-couchbase.persistent.principal-sessions.enabled=$principalSessionsEnabled") as EmbeddedWebApplicationContext
6363
port = context.embeddedServletContainer.port
6464
synchronized (monitor) {
6565
shouldWait = false

src/test/java/com/github/mkopylec/sessioncouchbase/ImmediateSessionExpirationRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class ImmediateSessionExpirationRepository extends CouchbaseSessionReposi
1414

1515
@Autowired
1616
public ImmediateSessionExpirationRepository(CouchbaseDao dao, ObjectMapper mapper, Serializer serializer, SessionCouchbaseProperties sessionCouchbase) {
17-
super(dao, sessionCouchbase.getPersistent().getNamespace(), mapper, sessionCouchbase.getTimeoutInSeconds(), serializer, sessionCouchbase.getPrincipalSessions().isEnabled());
17+
super(dao, sessionCouchbase.getPersistent().getNamespace(), mapper, sessionCouchbase.getTimeoutInSeconds(), serializer, sessionCouchbase.getPersistent().getPrincipalSessions().isEnabled());
1818
}
1919

2020
@Override

src/test/resources/application.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ session-couchbase:
22
timeout-in-seconds: 1800
33
persistent:
44
namespace: test-application
5-
hosts: localhost
6-
bucket-name: default
7-
password:
5+
couchbase:
6+
hosts: localhost
7+
bucket-name: default
8+
password:
9+
principal-sessions:
10+
enabled: false
811
in-memory:
912
enabled: false
10-
principal-sessions:
11-
enabled: false
1213

1314
logging.level.com.github.mkopylec.sessioncouchbase: trace

0 commit comments

Comments
 (0)