/* * Copyright 2008 Lukas Lang * * 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.exolab.castor.jdo.engine; import junit.framework.TestCase; import org.castor.mapping.BindingType; import org.castor.mapping.MappingUnmarshaller; import org.exolab.castor.mapping.ClassDescriptor; import org.exolab.castor.mapping.FieldDescriptor; /** * Runs some tests on the {@link JDOMappingLoader}. * * @author Lukas Lang */ public final class JDOMappingLoaderTest extends TestCase { /** * Test resolve relations for One-To-One with mapping file. */ public void testResolveRelationsOneOneMapping() throws Exception { org.exolab.castor.mapping.Mapping mapping = new org.exolab.castor.mapping.Mapping(); String mappingFile = getClass().getResource("mapping.xml") .toExternalForm(); mapping.loadMapping(mappingFile); MappingUnmarshaller mappingUnmarshaller = new MappingUnmarshaller(); JDOMappingLoader mappingLoader = (JDOMappingLoader) mappingUnmarshaller .getMappingLoader(mapping, BindingType.JDO); assertEquals(2, mapping.getRoot().getClassMappingCount()); ClassDescriptor entityDescriptor = mappingLoader .getDescriptor("org.exolab.castor.jdo.engine.Entity"); assertNotNull(entityDescriptor); FieldDescriptor id = entityDescriptor.getIdentity(); assertEquals("id", id.getFieldName()); FieldDescriptor[] fields = entityDescriptor.getFields(); assertEquals("item", fields[0].getFieldName()); ClassDescriptor itemDescriptor = mappingLoader .getDescriptor("org.exolab.castor.jdo.engine.Item"); assertNotNull(itemDescriptor); id = itemDescriptor.getIdentity(); assertEquals("id", id.getFieldName()); } /** * Test resolve relations for One-To-One with the first entity in the * mapping file. The second entity as descriptor on the filesystem. * * @throws Exception * If initialization fails. */ public void testResolveRelationsOneAsMappingOneAsFile() throws Exception { org.exolab.castor.mapping.Mapping mapping = new org.exolab.castor.mapping.Mapping(); String mappingFile = getClass().getResource("mapping-employee.xml") .toExternalForm(); mapping.loadMapping(mappingFile); MappingUnmarshaller mappingUnmarshaller = new MappingUnmarshaller(); JDOMappingLoader mappingLoader = (JDOMappingLoader) mappingUnmarshaller .getMappingLoader(mapping, BindingType.JDO); assertEquals(1, mapping.getRoot().getClassMappingCount()); ClassDescriptor entityDescriptor = mappingLoader .getDescriptor("org.exolab.castor.jdo.engine.Employee"); assertNotNull(entityDescriptor); FieldDescriptor id = entityDescriptor.getIdentity(); assertEquals("id", id.getFieldName()); FieldDescriptor[] fields = entityDescriptor.getFields(); assertEquals("address", fields[0].getFieldName()); } /** * Test resolve relations for One-To-One with the first entity on the * filesystem. The second entity is specified in the mapping. * * @throws Exception * If initialization fails. */ public void testResolveRelationsOneAsFileSecondAsMapping() throws Exception { org.exolab.castor.mapping.Mapping mapping = new org.exolab.castor.mapping.Mapping(); String mappingFile = getClass().getResource("mapping-address.xml") .toExternalForm(); mapping.loadMapping(mappingFile); MappingUnmarshaller mappingUnmarshaller = new MappingUnmarshaller(); JDOMappingLoader mappingLoader = (JDOMappingLoader) mappingUnmarshaller .getMappingLoader(mapping, BindingType.JDO); assertEquals(1, mapping.getRoot().getClassMappingCount()); ClassDescriptor entityDescriptor = mappingLoader .getDescriptor("org.exolab.castor.jdo.engine.Address"); assertNotNull(entityDescriptor); FieldDescriptor id = entityDescriptor.getIdentity(); assertEquals("id", id.getFieldName()); } }