public class Example {
@Before
public void setUp() throws UnknownHostException, MongoException {
DB db = new Mongo("127.0.0.1").getDB("jongo");
Jongo jongo = new Jongo(db);
collection = jongo.getCollection("friends");
}
@Test
public void test() {
Friend friend = new Friend();
collection.save(friend);
friend.setName("John");
collection.update("{_id: #}", friend.getId()).with("{$set:#}", friend);
Friend john = collection.findOne("{name:'John'}").as(Friend.class);
assertThat(john.getName()).isEqualTo("John");
}
}
public class Friend {
private ObjectId _id;
private String name;
private String address;
}
Hi. No the test does not work. Here is the stacktrace:
SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
java.lang.IllegalArgumentException: Unable to create Update query {_id: #}, please check cause exception. Beware 'update(String query, String modifier)' has been replaced by 'update(String query, Object... parameters)' in v0.2. To specify modifier please use: 'update(String query).with(String modifier)'
at org.jongo.Update.createQuery(Update.java:79)
at org.jongo.Update.<init>(Update.java:39)
at org.jongo.MongoCollection.update(MongoCollection.java:95)
at no.vangenplotz.prodapp.data.Users.get(Users.java:43)
at no.vangenplotz.prodapp.resource.UserResource.get(UserResource.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1480)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1411)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1360)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1350)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.lang.IllegalArgumentException: {_id: { "$oid" : "505b000830043a4bf224c0b9"}} cannot be parsed
at org.jongo.query.Query.convertToDBObject(Query.java:33)
at org.jongo.query.Query.<init>(Query.java:26)
at org.jongo.query.QueryFactory.createQuery(QueryFactory.java:40)
at org.jongo.Update.createQuery(Update.java:73)
... 48 more
Caused by: com.mongodb.util.JSONParseException:
{_id: { "$oid" : "505b000830043a4bf224c0b9"}}
^
at com.mongodb.util.JSONParser.parseString(JSON.java:482)
at com.mongodb.util.JSONParser.parseObject(JSON.java:365)
at com.mongodb.util.JSONParser.parse(JSON.java:331)
at com.mongodb.util.JSONParser.parse(JSON.java:281)
at com.mongodb.util.JSON.parse(JSON.java:240)
at com.mongodb.util.JSON.parse(JSON.java:225)
at org.jongo.query.Query.convertToDBObject(Query.java:31)
... 51 more
Beware 'update(String query, String modifier)' has been replaced by 'update(String query, Object... parameters)' in v0.2. To specify modifier please use: 'update(String query).with(String modifier)'
@Test
public void test() {
Friend friend = new Friend();
collection.save(friend);
friend.setName("John");
ObjectId id = friend.getId();
friend.setId(null);
collection.update("{_id: #}", id).with("{$set:#}", friend);
Friend john = collection.findOne("{name:'John'}").as(Friend.class);
assertThat(john.getName()).isEqualTo("John");
}
public class Example {
@Before
public void setUp() throws UnknownHostException, MongoException {
DB db = new Mongo("127.0.0.1").getDB("jongo");
Jongo jongo = new Jongo(db);
collection = jongo.getCollection("friends");
}
@Test
public void test() {
Friend friend = new Friend();
collection.save(friend);
friend.setName("John");
collection.save(friend);
Friend john = collection.findOne("{name:'John'}").as(Friend.class);
assertThat(john.getName()).isEqualTo("John");
}
}