Skip to content

Commit d3cef1f

Browse files
authored
Merge pull request #67 from greenled/master
Update module to work with Play! 2.6.x
2 parents 8562838 + 9e0f428 commit d3cef1f

11 files changed

+52
-53
lines changed

README.md

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
PlayJongo Play 2.5.x Module
1+
PlayJongo Play 2.6.x Module
22
=====================================
33

4-
This is a Play 2.5.x Module for [Jongo](http://jongo.org/)
4+
This is a Play 2.6.x Module for [Jongo](http://jongo.org/)
55
(a MongoDB Java driver wrapper).
66

7-
*If you're using Play! 2.4.x, 2.3.x, 2.2.x or 2.1.x you can use an older version of play-jongo:*
7+
*If you're using Play! 2.5.x, 2.4.x, 2.3.x, 2.2.x or 2.1.x you can use an older version of play-jongo:*
8+
* for 2.5.x use `2.0.0-jongo1.3`
89
* for 2.4.x use `1.0.1-jongo1.2`
910
* for 2.3.x use `0.7.1-jongo1.0`
1011
* for 2.2.x use `0.6.0-jongo1.0`
@@ -106,7 +107,7 @@ You can configure your mapper factory like this:
106107

107108
For scala users this project already provides a factory that uses the [jackson scala module](https://github.com/FasterXML/jackson-module-scala)
108109
and configures the jongo/jackson mapper with the `DefaultScalaModule`. To use this factory you need add the jackson scala module to your appDependencies
109-
(e.g. add `"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.4.1"`) in `project/Build.scala` and configure the factory in
110+
(e.g. add `"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.7.9"`) in `project/Build.scala` and configure the factory in
110111
`conf/application.conf` like this:
111112

112113
playjongo.mapperfactory="uk.co.panaxiom.playjongo.JongoScalaMapperFactory"

app/uk/co/panaxiom/playjongo/JongoModule.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import scala.collection.Seq;
88

99
/**
10-
* Play2.4 Module implementation.
10+
* Play 2.6 Module implementation.
1111
*/
1212
public class JongoModule extends Module {
1313

app/uk/co/panaxiom/playjongo/MongoClientFactory.java

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package uk.co.panaxiom.playjongo;
22

3-
import play.Configuration;
4-
53
import com.mongodb.DB;
64
import com.mongodb.MongoClient;
75
import com.mongodb.MongoClientURI;
86
import com.mongodb.WriteConcern;
7+
import com.typesafe.config.Config;
98

109
/**
1110
* The default MongoClient factory class for PlayJongo.
@@ -14,14 +13,14 @@
1413
*/
1514
public class MongoClientFactory {
1615

17-
protected Configuration config;
16+
protected Config config;
1817
protected boolean isTest;
1918

20-
public MongoClientFactory(Configuration config) {
19+
public MongoClientFactory(Config config) {
2120
this.config = config;
2221
}
2322

24-
protected MongoClientFactory(Configuration config, boolean isTest) {
23+
protected MongoClientFactory(Config config, boolean isTest) {
2524
this.config = config;
2625
this.isTest = isTest;
2726
}
@@ -39,8 +38,8 @@ public MongoClient createClient() throws Exception {
3938
DB db = new DB(mongo, uri.getDatabase());
4039

4140
// Set write concern if configured
42-
String defaultWriteConcern = config.getString("playjongo.defaultWriteConcern");
43-
if(defaultWriteConcern != null) {
41+
if (config.hasPath("playjongo.defaultWriteConcern")) {
42+
String defaultWriteConcern = config.getString("playjongo.defaultWriteConcern");
4443
db.setWriteConcern(WriteConcern.valueOf(defaultWriteConcern));
4544
}
4645

@@ -59,8 +58,8 @@ public String getDBName() {
5958
protected MongoClientURI getClientURI() {
6059
MongoClientURI uri = new MongoClientURI(
6160
isTest
62-
? config.getString("playjongo.test-uri", "mongodb://127.0.0.1:27017/test")
63-
: config.getString("playjongo.uri", "mongodb://127.0.0.1:27017/play"));
61+
? config.getString("playjongo.test-uri")
62+
: config.getString("playjongo.uri"));
6463
return uri;
6564
}
6665
}

app/uk/co/panaxiom/playjongo/PlayJongo.java

+11-12
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
import com.mongodb.Mongo;
55
import com.mongodb.MongoClient;
66
import com.mongodb.gridfs.GridFS;
7+
import com.typesafe.config.Config;
78
import org.jongo.Jongo;
89
import org.jongo.Mapper;
910
import org.jongo.MongoCollection;
10-
import play.*;
11+
import play.Environment;
1112
import play.inject.ApplicationLifecycle;
1213

13-
1414
import javax.inject.Inject;
1515
import javax.inject.Singleton;
1616
import java.lang.reflect.Constructor;
@@ -25,7 +25,7 @@ public class PlayJongo {
2525

2626

2727
@Inject
28-
public PlayJongo(ApplicationLifecycle lifecycle, Environment env, Configuration config) {
28+
public PlayJongo(ApplicationLifecycle lifecycle, Environment env, Config config) {
2929

3030
try {
3131
configure(config, env.classLoader(), env.isTest());
@@ -40,11 +40,11 @@ public PlayJongo(ApplicationLifecycle lifecycle, Environment env, Configuration
4040
});
4141
}
4242

43-
PlayJongo(Configuration config, ClassLoader classLoader, boolean isTestMode) throws Exception {
43+
PlayJongo(Config config, ClassLoader classLoader, boolean isTestMode) throws Exception {
4444
configure(config,classLoader,isTestMode);
4545
}
4646

47-
private void configure(Configuration config, ClassLoader classLoader, boolean isTestMode) throws Exception {
47+
private void configure(Config config, ClassLoader classLoader, boolean isTestMode) throws Exception {
4848

4949
String clientFactoryName = config.getString("playjongo.mongoClientFactory");
5050
MongoClientFactory factory = getMongoClientFactory(clientFactoryName, config, isTestMode);
@@ -58,15 +58,15 @@ private void configure(Configuration config, ClassLoader classLoader, boolean is
5858

5959
jongo = new Jongo(db, createMapper(config, classLoader));
6060

61-
if (config.getBoolean("playjongo.gridfs.enabled", false)) {
61+
if (config.getBoolean("playjongo.gridfs.enabled")) {
6262
gridfs = new GridFS(jongo.getDatabase());
6363
}
6464
}
6565

6666
@SuppressWarnings({ "rawtypes", "unchecked" })
67-
protected MongoClientFactory getMongoClientFactory(String className, Configuration config, boolean isTestMode) throws Exception {
67+
protected MongoClientFactory getMongoClientFactory(String className, Config config, boolean isTestMode) throws Exception {
6868

69-
if (className != null) {
69+
if (!className.equals("uk.co.panaxiom.playjongo.MongoClientFactory")) {
7070
try {
7171
Class factoryClass = Class.forName(className, true, Thread.currentThread().getContextClassLoader());
7272
if (!MongoClientFactory.class.isAssignableFrom(factoryClass)) {
@@ -76,7 +76,7 @@ protected MongoClientFactory getMongoClientFactory(String className, Configurati
7676

7777
Constructor constructor = null;
7878
try {
79-
constructor = factoryClass.getConstructor(Configuration.class);
79+
constructor = factoryClass.getConstructor(Config.class);
8080
} catch (Exception e) {
8181
// can't use that one
8282
}
@@ -91,9 +91,8 @@ protected MongoClientFactory getMongoClientFactory(String className, Configurati
9191
return new MongoClientFactory(config, isTestMode);
9292
}
9393

94-
private Mapper createMapper(Configuration config, ClassLoader classLoader) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
95-
final String factoryClassName = config.getString("playjongo.mapperfactory",
96-
JongoMapperFactory.DefaultFactory.class.getName());
94+
private Mapper createMapper(Config config, ClassLoader classLoader) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
95+
final String factoryClassName = config.getString("playjongo.mapperfactory");
9796
JongoMapperFactory factory = (JongoMapperFactory) Class.forName(
9897
factoryClassName,
9998
true,

build.sbt

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@ name := "play-jongo"
44

55
organization := "uk.co.panaxiom"
66

7-
description := "Play 2.5.x Module for Jongo http://jongo.org/"
7+
description := "Play 2.6.x Module for Jongo http://jongo.org/"
88

99
version := "2.0.0-jongo1.3"
1010

11-
scalaVersion := "2.11.7"
11+
scalaVersion := "2.12.2"
1212

1313
libraryDependencies ++= Seq(
14-
"org.mongodb" % "mongo-java-driver" % "3.2.2",
14+
"org.mongodb" % "mongo-java-driver" % "3.4.2",
1515
"org.jongo" % "jongo" % "1.3.0",
16-
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.7.4" % "optional",
16+
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.8.9" % "optional",
1717
"org.easytesting" % "fest-assert" % "1.4" % "test"
1818
)
1919

conf/reference.conf

+10-1
Original file line numberDiff line numberDiff line change
@@ -1 +1,10 @@
1-
play.modules.enabled += "uk.co.panaxiom.playjongo.JongoModule"
1+
play.modules.enabled += "uk.co.panaxiom.playjongo.JongoModule"
2+
3+
playjongo {
4+
uri = "mongodb://127.0.0.1:27017/play"
5+
test-uri = "mongodb://127.0.0.1:27017/test"
6+
mapperfactory = "uk.co.panaxiom.playjongo.JongoMapperFactory$DefaultFactory"
7+
mongoClientFactory = "uk.co.panaxiom.playjongo.MongoClientFactory"
8+
defaultWriteConcern = null
9+
gridfs.enabled = false
10+
}

project/build.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=0.13.11
1+
sbt.version=0.13.15

project/plugins.sbt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
logLevel := Level.Warn
33

44
// Use the Play sbt plugin for Play projects
5-
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.3")
5+
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.0")
66

77
addSbtPlugin("de.johoop" % "findbugs4sbt" % "1.4.0")

test/uk/co/panaxiom/playjongo/PlayJongoFunctionalTest.java

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,9 @@
11
package uk.co.panaxiom.playjongo;
22

3-
import static org.fest.assertions.Assertions.assertThat;
4-
53
import org.junit.*;
6-
7-
import play.api.Play;
8-
import play.test.FakeApplication;
94
import play.test.WithApplication;
105

11-
import static play.test.Helpers.*;
6+
import static org.fest.assertions.Assertions.assertThat;
127

138
/**
149
* Functional tests, with a running fake app.

test/uk/co/panaxiom/playjongo/PlayJongoTest.java

+7-11
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
package uk.co.panaxiom.playjongo;
22

3-
import static org.fest.assertions.Assertions.assertThat;
3+
import com.mongodb.ServerAddress;
4+
import com.mongodb.WriteConcern;
5+
import com.typesafe.config.ConfigFactory;
6+
import org.junit.Test;
47

58
import java.util.HashMap;
69
import java.util.Map;
710

8-
import org.junit.Test;
9-
10-
import play.Configuration;
11-
12-
import static uk.co.panaxiom.playjongo.PlayJongoTest.MapBuilder.*;
13-
14-
import com.mongodb.ServerAddress;
15-
import com.mongodb.WriteConcern;
16-
import com.typesafe.config.ConfigFactory;
11+
import static org.fest.assertions.Assertions.assertThat;
12+
import static uk.co.panaxiom.playjongo.PlayJongoTest.MapBuilder.mapBuilder;
1713

1814
public class PlayJongoTest {
1915

@@ -61,7 +57,7 @@ private void assertMongoProperties(final PlayJongo cut, String host, int port, S
6157
}
6258

6359
private static PlayJongo playJongo(Map<String, ? extends Object> config, boolean isTest) throws Exception {
64-
return new PlayJongo(new Configuration(ConfigFactory.parseMap(config)), classLoader(), isTest);
60+
return new PlayJongo (ConfigFactory.load(ConfigFactory.parseMap(config)), classLoader(), isTest);
6561
}
6662

6763
private static ClassLoader classLoader() {

test/uk/co/panaxiom/playjongo/TestMongoClientFactory.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package uk.co.panaxiom.playjongo;
22

3-
import play.Configuration;
3+
import com.typesafe.config.Config;
44

55
public class TestMongoClientFactory extends MongoClientFactory {
66

7-
public TestMongoClientFactory(Configuration config) {
7+
public TestMongoClientFactory(Config config) {
88
super(config);
99
}
1010

11-
public TestMongoClientFactory(Configuration config, boolean isTest) {
11+
public TestMongoClientFactory(Config config, boolean isTest) {
1212
super(config, isTest);
1313
}
1414

0 commit comments

Comments
 (0)