001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one
003: * or more contributor license agreements. See the NOTICE file
004: * distributed with this work for additional information
005: * regarding copyright ownership. The ASF licenses this file
006: * to you under the Apache License, Version 2.0 (the
007: * "License"); you may not use this file except in compliance
008: * with the License. You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing,
013: * software distributed under the License is distributed on an
014: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015: * KIND, either express or implied. See the License for the
016: * specific language governing permissions and limitations
017: * under the License.
018: */
019: package org.apache.openjpa.persistence.jdbc.annotations;
020:
021: import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
022: import org.apache.openjpa.jdbc.meta.ClassMapping;
023: import org.apache.openjpa.jdbc.meta.FieldMapping;
024: import org.apache.openjpa.meta.FetchGroup;
025: import org.apache.openjpa.meta.JavaTypes;
026: import org.apache.openjpa.meta.UpdateStrategies;
027: import org.apache.openjpa.meta.ValueMetaData;
028: import org.apache.openjpa.meta.ValueStrategies;
029: import org.apache.openjpa.persistence.test.SingleEMFTestCase;
030:
031: /**
032: * <p>Test the parsing of Kodo metadata extension annotations.</p>
033: *
034: * @author Abe White
035: */
036: public class TestExtensionAnnotations extends SingleEMFTestCase {
037:
038: private ClassMapping _mapping;
039:
040: public void setUp() {
041: setUp(ExtensionsEntity.class);
042: _mapping = ((JDBCConfiguration) emf.getConfiguration())
043: .getMappingRepositoryInstance().getMapping(
044: ExtensionsEntity.class, null, true);
045: }
046:
047: public void testDataStoreId() {
048: assertEquals(ClassMapping.ID_DATASTORE, _mapping
049: .getIdentityType());
050: assertEquals(ValueStrategies.SEQUENCE, _mapping
051: .getIdentityStrategy());
052: assertEquals("system", _mapping.getIdentitySequenceName());
053: }
054:
055: public void testDataCache() {
056: assertNull(_mapping.getDataCacheName());
057: }
058:
059: public void testFetchGroups() {
060: FetchGroup fg = _mapping.getFetchGroup("detail");
061: assertNotNull(fg);
062: assertFalse(fg.isPostLoad());
063: FieldMapping fm = _mapping.getFieldMapping("rel");
064: assertEquals(1, fm.getCustomFetchGroups().length);
065: assertEquals("detail", fm.getCustomFetchGroups()[0]);
066: assertEquals(-1, fg.getRecursionDepth(fm));
067: fm = _mapping.getFieldMapping("seq");
068: assertEquals(1, fm.getCustomFetchGroups().length);
069: assertEquals("detail", fm.getCustomFetchGroups()[0]);
070: assertEquals(1, fg.getRecursionDepth(fm));
071: }
072:
073: public void testValueStrategy() {
074: assertEquals(ValueStrategies.UUID_HEX, _mapping
075: .getField("uuid").getValueStrategy());
076: FieldMapping seq = _mapping.getFieldMapping("seq");
077: assertEquals(ValueStrategies.SEQUENCE, seq.getValueStrategy());
078: assertEquals("system", seq.getValueSequenceName());
079: }
080:
081: public void testReadOnly() {
082: assertEquals(UpdateStrategies.RESTRICT, _mapping
083: .getField("seq").getUpdateStrategy());
084: }
085:
086: public void testInverseLogical() {
087: assertEquals("owner", _mapping.getField("rel").getInverse());
088: assertNull(_mapping.getField("owner").getInverse());
089: }
090:
091: public void testDependent() {
092: assertEquals(ValueMetaData.CASCADE_AUTO, _mapping.getField(
093: "rel").getCascadeDelete());
094: assertEquals(ValueMetaData.CASCADE_NONE, _mapping.getField(
095: "eager").getCascadeDelete());
096: assertEquals(ValueMetaData.CASCADE_AUTO, _mapping.getField(
097: "eager").getElement().getCascadeDelete());
098: }
099:
100: public void testLRS() {
101: assertTrue(_mapping.getField("lrs").isLRS());
102: assertFalse(_mapping.getField("eager").isLRS());
103: }
104:
105: public void testClassCriteria() {
106: assertTrue(_mapping.getFieldMapping("eager")
107: .getElementMapping().getUseClassCriteria());
108: assertFalse(_mapping.getFieldMapping("eager")
109: .getUseClassCriteria());
110: assertFalse(_mapping.getFieldMapping("lrs").getElementMapping()
111: .getUseClassCriteria());
112: }
113:
114: public void testExternalValues() {
115: FieldMapping externalValues = _mapping
116: .getFieldMapping("externalValues");
117: assertEquals(JavaTypes.CHAR, externalValues
118: .getDeclaredTypeCode());
119: assertEquals(JavaTypes.INT, externalValues.getTypeCode());
120: assertEquals(new Integer(1), externalValues
121: .getExternalValueMap().get(new Character('M')));
122: assertEquals(new Integer(2), externalValues
123: .getExternalValueMap().get(new Character('F')));
124: }
125:
126: public void testExternalizer() {
127: FieldMapping externalizer = _mapping
128: .getFieldMapping("externalizer");
129: assertEquals(JavaTypes.OBJECT, externalizer
130: .getDeclaredTypeCode());
131: assertEquals(JavaTypes.STRING, externalizer.getTypeCode());
132: assertEquals("java.lang.String", externalizer.getExternalValue(
133: String.class, null));
134: assertEquals(String.class, externalizer.getFieldValue(
135: String.class.getName(), null));
136: }
137: }
|