Package org.mongodb.morphia.issue377

Source Code of org.mongodb.morphia.issue377.TestMapping$SerializableObject

package org.mongodb.morphia.issue377;

import com.mongodb.DBObject;
import org.bson.types.ObjectId;
import org.junit.Assert;
import org.junit.Test;
import org.mongodb.morphia.TestBase;
import org.mongodb.morphia.annotations.Entity;
import org.mongodb.morphia.annotations.Id;
import org.mongodb.morphia.annotations.Serialized;
import org.mongodb.morphia.dao.BasicDAO;
import org.mongodb.morphia.mapping.MappedClass;
import org.mongodb.morphia.mapping.MappedField;
import org.mongodb.morphia.mapping.Mapper;
import org.mongodb.morphia.mapping.cache.DefaultEntityCache;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;

/**
* Unit test for testing morphia mappings with Serialized
*/
public class TestMapping extends TestBase {

    @Test
    public void testMapping() {
        final BasicDAO<User, ObjectId> messageDAO = new BasicDAO<User, ObjectId>(User.class, getDs());
        Assert.assertNotNull(messageDAO);
       
        Mapper mapper = new Mapper();

        User user = new User();
        user.id = 1;

        user.userObject = "just a String";
        DBObject dbObject = mapper.toDBObject(user);
        Object object = mapper.fromDBObject(User.class, dbObject, new DefaultEntityCache());
        Assert.assertEquals(user.userObject, ((User) object).userObject);
       
        user.userObject = 33;
        dbObject = mapper.toDBObject(user);
        object = mapper.fromDBObject(User.class, dbObject, new DefaultEntityCache());
        Assert.assertEquals(user.userObject, ((User) object).userObject);

        user.userObject = 33.3;
        dbObject = mapper.toDBObject(user);
        object = mapper.fromDBObject(User.class, dbObject, new DefaultEntityCache());
        Assert.assertEquals(user.userObject, ((User) object).userObject);
    }

    @Test
    public void testToMongoObjectCorrectlyMapsSerializableFieldForIssue591() {
        // given
        Mapper mapper = new Mapper();

        User user = new User();
        user.id = 1;
        user.userObject = new SerializableObject();

        MappedClass mc = new MappedClass(User.class, mapper);
        MappedField mf = mc.getMappedField("userObject");

        // when
        Object dbValue = mapper.toMongoObject(mf, null, user.userObject);
        Class<byte[]> byteArrayClass = byte[].class;

        // then
        assertThat(dbValue, is(instanceOf(byteArrayClass)));
    }

    @Test
    public void testToMongoObjectCorrectlyMapsSerializableListOfObjectsForIssue591() {
        // given
        Mapper mapper = new Mapper();

        ListEntity user = new ListEntity();
        user.id = 1;
        List<Object> list = new ArrayList<Object>();
        list.add("value");
        user.list = list;

        MappedClass mc = new MappedClass(ListEntity.class, mapper);
        MappedField mf = mc.getMappedField("list");

        // when
        Object dbValue = mapper.toMongoObject(mf, null, user.list);
        Class<byte[]> byteArrayClass = byte[].class;

        // then
        assertThat(dbValue, is(instanceOf(byteArrayClass)));
    }

    @Test
    public void testCanMapSerializableObject() {
        // given
        Mapper mapper = new Mapper();
        User user = new User();
        user.id = 1;
        user.userObject = new SerializableObject();

        // when
        DBObject dbObject = mapper.toDBObject(user);
        User object = mapper.fromDBObject(User.class, dbObject, new DefaultEntityCache());

        // then
        assertThat(object.userObject, is(user.userObject));
    }

    @Entity
    @SuppressWarnings("unused")
    private static class User {
        @Id
        private Integer id;
       
        @Serialized
        private Object userObject;
    }
   
    @Entity
    @SuppressWarnings("unused")
    private static class ListEntity {
        @Id
        private Integer id;
       
        @Serialized
        private List<Object> list;
    }
   
    private static class SerializableObject implements Serializable {
        private final int someValue = 7;

        @Override
        public boolean equals(final Object o) {
            if (this == o) {
                return true;
            }
            if (o == null || getClass() != o.getClass()) {
                return false;
            }

            SerializableObject that = (SerializableObject) o;

            if (someValue != that.someValue) {
                return false;
            }

            return true;
        }

        @Override
        public int hashCode() {
            return someValue;
        }
    }
}
TOP

Related Classes of org.mongodb.morphia.issue377.TestMapping$SerializableObject

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.