Package org.dozer.functional_tests

Source Code of org.dozer.functional_tests.RecursiveInterfaceMappingTest

/*
* Copyright 2005-2010 the original author or authors.
*
* 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 org.dozer.functional_tests;

import org.dozer.DozerBeanMapper;
import org.dozer.Mapper;
import org.dozer.vo.interfacerecursion.User;
import org.dozer.vo.interfacerecursion.UserGroup;
import org.dozer.vo.interfacerecursion.UserGroupImpl;
import org.dozer.vo.interfacerecursion.UserGroupPrime;
import org.dozer.vo.interfacerecursion.UserImpl;
import org.dozer.vo.interfacerecursion.UserPrime;
import static org.junit.Assert.*;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
* @author Christoph Goldner
*/
public class RecursiveInterfaceMappingTest extends AbstractFunctionalTest {

  @Test
  public void testRecursiveInterfaceMapping() throws Exception {

    // prepare 2 Users in 1 UserGroup
    User user1 = newInstance(UserImpl.class);
    user1.setFirstName("first name 1");
    user1.setLastName("last name 1");

    User user2 = newInstance(UserImpl.class);
    user2.setFirstName("first name 2");
    user2.setLastName("last name 2");

    UserGroup userGroup = newInstance(UserGroupImpl.class);
    userGroup.setName("usergroup name");
    userGroup.addUser(user1);
    userGroup.addUser(user2);

    // assert recursion
    assertEquals("Two users in usergroup expected.", 2, userGroup.getUsers().size());
    Iterator<?> iterator = userGroup.getUsers().iterator();
    while (iterator.hasNext()) {
      User user = (User) iterator.next();
      assertNotNull(user);
      assertNotNull(user.getUserGroup());
      assertTrue(user.getUserGroup() == userGroup); // same reference
    }

    // get mapper
    List<String> mappingFiles = new ArrayList<String>();
    mappingFiles.add("interface-recursion-mappings.xml");
    Mapper mapper = new DozerBeanMapper(mappingFiles);

    // do mapping
    UserGroupPrime userGroupPrime = null;
    try {
      userGroupPrime = mapper.map(userGroup, UserGroupPrime.class);
    } catch (StackOverflowError e) {
      fail("Recursive mapping caused a stack overflow.");
    }

    // check mapped group
    assertNotNull(userGroupPrime);
    assertEquals(userGroup.getName(), userGroupPrime.getName());

    // check mapped users and recursion
    assertEquals("Two users in mapped usergroup expected.", 2, userGroupPrime.getUsers().size());
    iterator = userGroupPrime.getUsers().iterator();
    while (iterator.hasNext()) {
      UserPrime userPrime = (UserPrime) iterator.next();
      assertNotNull(userPrime);
      assertNotNull(userPrime.getUserGroup());
      assertTrue(userPrime.getUserGroup() == userGroupPrime); // same reference
    }
  }

}
TOP

Related Classes of org.dozer.functional_tests.RecursiveInterfaceMappingTest

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.