Skip to content

Commit

Permalink
morphia=0.111, mongo-java-driver=2.13.1 migration
Browse files Browse the repository at this point in the history
  • Loading branch information
Omer Sezgin Ugurlu committed May 23, 2015
1 parent 1274212 commit c2fed2c
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 64 deletions.
15 changes: 14 additions & 1 deletion conf/dependencies.yml
Expand Up @@ -47,6 +47,19 @@
# - trim value when processing where statement in Factory.fetch
# 1.2.5 - mavenize project
# 1.2.4d - Add BlobGsonAdapter and ModelFactoryGsonAdapter utilities
self: play -> morphia 1.5.0a
self: play -> morphia 1.5.0b
require:
- play 1.2
- org.mongodb -> mongo-java-driver 2.13.1
- org.mongodb.morphia -> morphia 0.111
- org.osgl -> osgl-tool 0.3-SNAPSHOT
- org.osgl -> osgl-logging 0.3-SNAPSHOT
- org.osgl -> osgl-storage 0.3-SNAPSHOT

repositories:
- sonatype:
type: iBiblio
root: "https://oss.sonatype.org/content/repositories/snapshots/"
contains:
- org.osgl -> *

6 changes: 3 additions & 3 deletions pom.xml
Expand Up @@ -31,7 +31,7 @@ under the License.
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.greenlaw110.play-morphia</groupId>
<artifactId>play-morphia</artifactId>
<version>1.5.0a</version>
<version>1.5.0b</version>
<packaging>jar</packaging>

<name>Play! Morphia Module</name>
Expand Down Expand Up @@ -77,13 +77,13 @@ under the License.
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.12.2</version>
<version>2.13.1</version>
</dependency>

<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>0.107</version>
<version>0.111</version>
</dependency>

<dependency>
Expand Down
1 change: 0 additions & 1 deletion samples-and-tests/unit-tests/app/models/LifeCycle.java
Expand Up @@ -140,7 +140,6 @@ protected void common() {
Event.newEvent(null == foo ? "foo" : foo, Object.class);
}

@Entity
@NoId
public static class Child extends LifeCycle {
public String fee;
Expand Down
Expand Up @@ -4,14 +4,14 @@

import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Morphia;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;

public class PureMorphiaApp {

private static Datastore getDatastore() throws Exception {
Morphia morphia = new Morphia();
PureMorphiaUser.ensureMapped(morphia);
Mongo mongo = new Mongo();
MongoClient mongo = new MongoClient();
return morphia.createDatastore(mongo, "mydatabase");
}

Expand Down
12 changes: 6 additions & 6 deletions samples-and-tests/unit-tests/test/MongoOptionsTest.java
@@ -1,6 +1,7 @@
import java.io.File;
import java.util.List;

import com.mongodb.MongoClientOptions;
import models.User;

import org.junit.Before;
Expand All @@ -17,19 +18,18 @@

public class MongoOptionsTest extends UnitTest {

private MongoOptions options;
private MongoClientOptions options;

@Before
public void before()
{
options = MorphiaPlugin.ds().getMongo().getMongoOptions();
options = MorphiaPlugin.ds().getMongo().getMongoClientOptions();
}

@Test
public void testMongoOptionsCanBeSetInApplicationConf() {

assertEquals(11, options.threadsAllowedToBlockForConnectionMultiplier);
assertEquals(12, options.connectionsPerHost);
assertEquals(true, options.slaveOk);
assertEquals(11, options.getThreadsAllowedToBlockForConnectionMultiplier());
assertEquals(12, options.getConnectionsPerHost());
}
}
}
18 changes: 6 additions & 12 deletions src/play/modules/morphia/Model.java
Expand Up @@ -1364,24 +1364,24 @@ public <T> T findAndModify(MorphiaQuery q, boolean oldVersion, boolean createIfM
return (T)ds().findAndModify((Query)q.getMorphiaQuery(), (UpdateOperations)u_, oldVersion, createIfMissing);
}

public <T> UpdateResults<T> update(MorphiaQuery q) {
public <T> UpdateResults update(MorphiaQuery q) {
return ds().update((Query<T>)q.getMorphiaQuery(), (UpdateOperations<T>)u_);
}

public <T> UpdateResults<T> update(String query, Object... params) {
public <T> UpdateResults update(String query, Object... params) {
MorphiaQuery q = new MorphiaQuery(c_).findBy(query, params);
return ds().update((Query<T>)q.getMorphiaQuery(), (UpdateOperations<T>)u_);
}

public <T> UpdateResults<T> update(Model entity) {
public <T> UpdateResults update(Model entity) {
return update("_id", entity.getId());
}

private <T> UpdateResults<T> update(Query<T> q) {
private <T> UpdateResults update(Query<T> q) {
return ds().update(q, (UpdateOperations<T>)u_);
}

public <T> UpdateResults<T> updateAll() {
public <T> UpdateResults updateAll() {
return ds().update((QueryImpl) ds().createQuery(c_), (UpdateOperations<T>)u_);
}

Expand Down Expand Up @@ -1775,13 +1775,7 @@ public <T extends Model> MorphiaQuery offset(int value) {
q_.offset(value);
return this;
}

@Deprecated
public <T extends Model> MorphiaQuery skip(int value) {
q_.skip(value);
return this;
}


public <T extends Model> MorphiaQuery enableValidation() {
q_.enableValidation();
return this;
Expand Down
79 changes: 40 additions & 39 deletions src/play/modules/morphia/MorphiaPlugin.java
Expand Up @@ -2,6 +2,17 @@

import com.mongodb.*;
import com.mongodb.gridfs.GridFS;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.net.UnknownHostException;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.regex.Pattern;
import org.apache.commons.lang.StringUtils;
import org.bson.types.ObjectId;
import org.mongodb.morphia.AbstractEntityInterceptor;
Expand Down Expand Up @@ -33,17 +44,6 @@
import play.modules.morphia.utils.PlayLoggerFactory;
import play.modules.morphia.utils.SilentLoggerFactory;

import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.net.UnknownHostException;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.regex.Pattern;

/**
* The plugin for the Morphia module.
*
Expand Down Expand Up @@ -299,13 +299,13 @@ static void onBatchLifeCycleEvent(MorphiaEvent event, MorphiaQuery query) {
}
}

private static Mongo mongo_;
private static MongoClient mongo_;

/*
* Connect using conf - morphia.db.host=host1,host2... -
* morphia.db.port=port1,port2...
*/
private final Mongo connect_(String host, String port, MongoOptions options) {
private final MongoClient connect_(String host, String port, MongoClientOptions options) {
String[] ha = host.split("[,\\s;]+");
String[] pa = port.split("[,\\s;]+");
int len = ha.length;
Expand All @@ -314,7 +314,7 @@ private final Mongo connect_(String host, String port, MongoOptions options) {
"host and ports number does not match");
if (1 == len) {
try {
return new Mongo(new ServerAddress(ha[0], Integer.parseInt(pa[0])), options);
return new MongoClient(new ServerAddress(ha[0], Integer.parseInt(pa[0])), options);
} catch (Exception e) {
throw new ConfigurationException(String.format("Cannot connect to mongodb at %s:%s", host, port));
}
Expand All @@ -330,13 +330,13 @@ private final Mongo connect_(String host, String port, MongoOptions options) {
if (addrs.isEmpty()) {
throw new ConfigurationException("Cannot connect to mongodb: no replica can be connected");
}
return new Mongo(addrs, options);
return new MongoClient(addrs, options);
}

/*
* Connect using conf morphia.db.seeds=host1[:port1];host2[:port2]...
*/
private final Mongo connect_(String seeds, MongoOptions options) {
private final MongoClient connect_(String seeds, MongoClientOptions options) {
String[] sa = seeds.split("[;,\\s]+");
List<ServerAddress> addrs = new ArrayList<ServerAddress>(sa.length);
for (String s : sa) {
Expand All @@ -357,15 +357,15 @@ private final Mongo connect_(String seeds, MongoOptions options) {
if (addrs.isEmpty()) {
throw new ConfigurationException("Cannot connect to mongodb: no replica can be connected");
}
return new Mongo(addrs, options);
return new MongoClient(addrs, options);
}

/*
* Connect using conf morphia.db.url=mongodb://fred:foobar@host:port/db
*/
private final Mongo connect_(MongoURI mongoURI) {
private final MongoClient connect_(MongoClientURI mongoURI) {
try {
return new Mongo(mongoURI);
return new MongoClient(mongoURI);
} catch (UnknownHostException e) {
throw new ConfigurationException("Error creating mongo connection to " + mongoURI);
}
Expand Down Expand Up @@ -467,12 +467,12 @@ public void onConfigurationRead() {

private void configureConnection_() {
Properties c = Play.configuration;
MongoOptions options = readMongoOptions(c);
MongoClientOptions options = readMongoOptions(c);

String url = c.getProperty(PREFIX + "url");
String seeds = c.getProperty(PREFIX + "seeds");
if (!S.empty(url)) {
MongoURI mongoURI = new MongoURI(url);
MongoClientURI mongoURI = new MongoClientURI(url);
mongo_ = connect_(mongoURI);
} else if (!S.empty(seeds)) {
mongo_ = connect_(seeds, options);
Expand All @@ -483,32 +483,33 @@ private void configureConnection_() {
}
}

private static MongoOptions readMongoOptions(Properties c) {
MongoOptions options = new MongoOptions();
for (Field field : options.getClass().getFields()) {
String property = c.getProperty("morphia.driver." + field.getName());
private static MongoClientOptions readMongoOptions(Properties c) {
MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
for (Method method : MongoClientOptions.Builder.class.getMethods()) {
String property = c.getProperty("morphia.driver." + method.getName());
if (StringUtils.isEmpty(property))
continue;

Class<?> fieldType = field.getType();
Class fieldType = method.getParameterTypes()[0];

Object value = null;
try {
if (fieldType == int.class)
value = Integer.parseInt(property);
else if (fieldType == long.class)
value = Long.parseLong(property);
else if (fieldType == String.class)
value = property;
else if (fieldType == Double.class)
value = Double.parseDouble(property);
else if (fieldType == boolean.class)
value = Boolean.parseBoolean(property);
field.set(options, value);
if (fieldType == int.class) {
method.invoke(builder, Integer.parseInt(property));
} else if (fieldType == long.class){
method.invoke(builder,Long.parseLong(property));
} else if (fieldType == String.class){
method.invoke(builder,property);
} else if (fieldType == Double.class){
method.invoke(builder,Double.parseDouble(property));
} else if (fieldType == boolean.class){
method.invoke(builder,Boolean.parseBoolean(property));
}
} catch (Exception e) {
error(e, "error setting mongo option " + field.getName());
error(e, "error setting mongo option " + method.getName());
}
}
return options;
return builder.build();
}

@SuppressWarnings("unchecked")
Expand Down

0 comments on commit c2fed2c

Please sign in to comment.