/src/test/com/mongodb/ReflectionTest.java
http://github.com/mongodb/mongo-java-driver · Java · 139 lines · 91 code · 33 blank · 15 comment · 0 complexity · c105302a98280910c2188ccc59b2dea2 MD5 · raw file
- /*
- * Copyright (c) 2008-2014 MongoDB, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.mongodb;
- import com.mongodb.util.TestCase;
- import org.junit.Test;
- import static org.junit.Assert.assertEquals;
- public class ReflectionTest extends TestCase {
-
- public static class Person extends ReflectionDBObject {
-
- public Person(){
- }
- public String getName(){
- return _name;
- }
- public void setName(String name){
- _name = name;
- }
- String _name;
- }
- @Test
- public void test1()
- throws MongoException {
- DBCollection c = collection;
- c.setObjectClass( Person.class );
-
- Person p = new Person();
- p.setName( "eliot" );
- c.save( p );
- DBObject out = c.findOne();
- assertEquals( "eliot" , out.get( "Name" ) );
- assertEquals(Person.class, out.getClass());
- }
-
- public static class Outer extends ReflectionDBObject {
- private Inner mInclude;
- private String mName;
- public void setName(final String pName) { mName = pName; }
- public String getName() { return mName; }
-
- public Inner getInner() { return mInclude; }
- public void setInner(final Inner pV) { mInclude = pV; }
- }
- public static class Inner extends ReflectionDBObject {
-
- public int mNumber;
-
- public Inner(){}
- public Inner( int n ){ mNumber = n; }
- public int getNumber() { return mNumber; }
- public void setNumber(final int pV) { mNumber = pV; }
- }
-
- @Test
- public void test2()
- throws MongoException {
- DBCollection c = collection;
- c.setObjectClass( Outer.class );
- Outer o = new Outer();
- o.setName( "eliot" );
- o.setInner( new Inner( 17 ) );
- c.save( o );
-
- DBObject out = c.findOne();
- assertEquals( "eliot" , out.get( "Name" ) );
- assertEquals(Outer.class, out.getClass());
- o = (Outer)out;
- assertEquals( "eliot" , o.getName() );
- assertEquals( 17 , o.getInner().getNumber() );
- }
- static class Process extends ReflectionDBObject {
- public Process() {}
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getStatus() {
- return status;
- }
- public void setStatus(int status) {
- this.status = status;
- }
- String name;
- int status;
- }
- @Test
- public void testFindAndModify() {
- DBCollection c = collection;
- c.setObjectClass( Process.class );
- Process p = new Process();
- p.setName("test");
- p.setStatus(0);
- c.save(p, WriteConcern.SAFE);
- DBObject obj = c.findAndModify(new BasicDBObject(), new BasicDBObject("$set", new BasicDBObject("status", 1)));
- assertEquals(Process.class, obj.getClass());
- Process pModified = (Process) obj;
- assertEquals(0, pModified.getStatus());
- assertEquals("test", pModified.getName());
- }
- }