blob: ea2a7fe8fc035cf341a4f6a3a0b8c5be38bb2563 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.openjpa.persistence;
import java.util.EnumSet;
import junit.framework.TestCase;
import org.apache.openjpa.kernel.ConnectionRetainModes;
import org.apache.openjpa.kernel.DetachState;
import org.apache.openjpa.kernel.RestoreState;
import org.apache.openjpa.kernel.AutoClear;
import org.apache.openjpa.kernel.AutoDetach;
import org.apache.openjpa.kernel.QueryOperations;
import org.apache.openjpa.event.CallbackModes;
public class TestEnumToKernelConstantMappings
extends TestCase {
public void testConnectionRetainModes() {
assertEquals(ConnectionRetainModes.CONN_RETAIN_ALWAYS,
ConnectionRetainMode.ALWAYS.toKernelConstant());
assertEquals(ConnectionRetainMode.ALWAYS,
ConnectionRetainMode.fromKernelConstant(
ConnectionRetainModes.CONN_RETAIN_ALWAYS));
assertEquals(ConnectionRetainMode.ALWAYS.toKernelConstant(),
ConnectionRetainMode.ALWAYS.ordinal());
assertEquals(ConnectionRetainModes.CONN_RETAIN_DEMAND,
ConnectionRetainMode.ON_DEMAND.toKernelConstant());
assertEquals(ConnectionRetainMode.ON_DEMAND,
ConnectionRetainMode.fromKernelConstant(
ConnectionRetainModes.CONN_RETAIN_DEMAND));
assertEquals(ConnectionRetainMode.ON_DEMAND.toKernelConstant(),
ConnectionRetainMode.ON_DEMAND.ordinal());
assertEquals(ConnectionRetainModes.CONN_RETAIN_TRANS,
ConnectionRetainMode.TRANSACTION.toKernelConstant());
assertEquals(ConnectionRetainMode.TRANSACTION,
ConnectionRetainMode.fromKernelConstant(
ConnectionRetainModes.CONN_RETAIN_TRANS));
assertEquals(ConnectionRetainMode.TRANSACTION.toKernelConstant(),
ConnectionRetainMode.TRANSACTION.ordinal());
assertEquals(getConstantCount(ConnectionRetainModes.class),
ConnectionRetainMode.values().length);
}
public void testDetachState() {
assertEquals(DetachState.DETACH_ALL,
DetachStateType.ALL.toKernelConstant());
assertEquals(DetachStateType.ALL,
DetachStateType.fromKernelConstant(DetachState.DETACH_ALL));
assertEquals(DetachStateType.ALL.toKernelConstant(),
DetachStateType.ALL.ordinal());
assertEquals(DetachState.DETACH_FETCH_GROUPS,
DetachStateType.FETCH_GROUPS.toKernelConstant());
assertEquals(DetachStateType.FETCH_GROUPS,
DetachStateType.fromKernelConstant(
DetachState.DETACH_FETCH_GROUPS));
assertEquals(DetachStateType.FETCH_GROUPS.toKernelConstant(),
DetachStateType.FETCH_GROUPS.ordinal());
assertEquals(DetachState.DETACH_LOADED,
DetachStateType.LOADED.toKernelConstant());
assertEquals(DetachStateType.LOADED,
DetachStateType.fromKernelConstant(DetachState.DETACH_LOADED));
assertEquals(DetachStateType.LOADED.toKernelConstant(),
DetachStateType.LOADED.ordinal());
// subtract 1 for DetachState.DETACH_FGS, which is deprecated
assertEquals(getConstantCount(DetachState.class) - 1,
DetachStateType.values().length);
}
public void testRestoreState() {
assertEquals(RestoreState.RESTORE_ALL,
RestoreStateType.ALL.toKernelConstant());
assertEquals(RestoreStateType.ALL,
RestoreStateType.fromKernelConstant(RestoreState.RESTORE_ALL));
assertEquals(RestoreStateType.ALL.toKernelConstant(),
RestoreStateType.ALL.ordinal());
assertEquals(RestoreState.RESTORE_IMMUTABLE,
RestoreStateType.IMMUTABLE.toKernelConstant());
assertEquals(RestoreStateType.IMMUTABLE,
RestoreStateType.fromKernelConstant(
RestoreState.RESTORE_IMMUTABLE));
assertEquals(RestoreStateType.IMMUTABLE.toKernelConstant(),
RestoreStateType.IMMUTABLE.ordinal());
assertEquals(RestoreState.RESTORE_NONE,
RestoreStateType.NONE.toKernelConstant());
assertEquals(RestoreStateType.NONE,
RestoreStateType.fromKernelConstant(RestoreState.RESTORE_NONE));
assertEquals(RestoreStateType.NONE.toKernelConstant(),
RestoreStateType.NONE.ordinal());
assertEquals(getConstantCount(RestoreState.class),
RestoreStateType.values().length);
}
public void testAutoClear() {
assertEquals(AutoClear.CLEAR_ALL, AutoClearType.ALL.toKernelConstant());
assertEquals(AutoClearType.ALL,
AutoClearType.fromKernelConstant(AutoClear.CLEAR_ALL));
assertEquals(AutoClearType.ALL.toKernelConstant(),
AutoClearType.ALL.ordinal());
assertEquals(AutoClear.CLEAR_DATASTORE,
AutoClearType.DATASTORE.toKernelConstant());
assertEquals(AutoClearType.DATASTORE,
AutoClearType.fromKernelConstant(AutoClear.CLEAR_DATASTORE));
assertEquals(AutoClearType.DATASTORE.toKernelConstant(),
AutoClearType.DATASTORE.ordinal());
assertEquals(getConstantCount(AutoClear.class),
AutoClearType.values().length);
}
public void testAutoDetach() {
// Commenting out constant count test for now. Subtracting 2 is brittle.
// assertEquals(getConstantCount(AutoDetach.class) - 2,
// AutoDetachType.values().length);
assertEquals(EnumSet.of(AutoDetachType.CLOSE),
AutoDetachType.toEnumSet(AutoDetach.DETACH_CLOSE));
assertEquals(AutoDetach.DETACH_CLOSE,
AutoDetachType.fromEnumSet(EnumSet.of(AutoDetachType.CLOSE)));
assertEquals(EnumSet.of(AutoDetachType.COMMIT),
AutoDetachType.toEnumSet(AutoDetach.DETACH_COMMIT));
assertEquals(AutoDetach.DETACH_COMMIT,
AutoDetachType.fromEnumSet(EnumSet.of(AutoDetachType.COMMIT)));
assertEquals(EnumSet.of(AutoDetachType.NON_TRANSACTIONAL_READ),
AutoDetachType.toEnumSet(AutoDetach.DETACH_NONTXREAD));
assertEquals(AutoDetach.DETACH_NONTXREAD,
AutoDetachType.fromEnumSet(
EnumSet.of(AutoDetachType.NON_TRANSACTIONAL_READ)));
assertEquals(EnumSet.of(AutoDetachType.ROLLBACK),
AutoDetachType.toEnumSet(AutoDetach.DETACH_ROLLBACK));
assertEquals(AutoDetach.DETACH_ROLLBACK,
AutoDetachType.fromEnumSet(EnumSet.of(AutoDetachType.ROLLBACK)));
assertEquals(EnumSet.of(AutoDetachType.CLOSE, AutoDetachType.COMMIT),
AutoDetachType.toEnumSet(
AutoDetach.DETACH_CLOSE | AutoDetach.DETACH_COMMIT));
assertEquals(AutoDetach.DETACH_ROLLBACK | AutoDetach.DETACH_CLOSE,
AutoDetachType.fromEnumSet(
EnumSet.of(AutoDetachType.ROLLBACK, AutoDetachType.CLOSE)));
assertEquals(EnumSet.allOf(AutoDetachType.class),
AutoDetachType.toEnumSet(
AutoDetach.DETACH_NONE
| AutoDetach.DETACH_CLOSE
| AutoDetach.DETACH_COMMIT
| AutoDetach.DETACH_NONTXREAD
| AutoDetach.DETACH_ROLLBACK));
assertEquals( AutoDetach.DETACH_NONE
| AutoDetach.DETACH_CLOSE
| AutoDetach.DETACH_COMMIT
| AutoDetach.DETACH_NONTXREAD
| AutoDetach.DETACH_ROLLBACK,
AutoDetachType.fromEnumSet(EnumSet.allOf(AutoDetachType.class)));
}
public void testCallbackMode() {
assertEquals(getConstantCount(CallbackModes.class),
CallbackMode.values().length);
assertEquals(EnumSet.of(CallbackMode.FAIL_FAST),
CallbackMode.toEnumSet(CallbackModes.CALLBACK_FAIL_FAST));
assertEquals(CallbackModes.CALLBACK_FAIL_FAST,
CallbackMode.fromEnumSet(EnumSet.of(CallbackMode.FAIL_FAST)));
assertEquals(EnumSet.of(CallbackMode.IGNORE),
CallbackMode.toEnumSet(CallbackModes.CALLBACK_IGNORE));
assertEquals(CallbackModes.CALLBACK_IGNORE,
CallbackMode.fromEnumSet(EnumSet.of(CallbackMode.IGNORE)));
assertEquals(EnumSet.of(CallbackMode.LOG),
CallbackMode.toEnumSet(CallbackModes.CALLBACK_LOG));
assertEquals(CallbackModes.CALLBACK_LOG,
CallbackMode.fromEnumSet(EnumSet.of(CallbackMode.LOG)));
assertEquals(EnumSet.of(CallbackMode.RETHROW),
CallbackMode.toEnumSet(CallbackModes.CALLBACK_RETHROW));
assertEquals(CallbackModes.CALLBACK_RETHROW,
CallbackMode.fromEnumSet(EnumSet.of(CallbackMode.RETHROW)));
assertEquals(EnumSet.of(CallbackMode.ROLLBACK),
CallbackMode.toEnumSet(CallbackModes.CALLBACK_ROLLBACK));
assertEquals(CallbackModes.CALLBACK_ROLLBACK,
CallbackMode.fromEnumSet(EnumSet.of(CallbackMode.ROLLBACK)));
assertEquals(EnumSet.of(CallbackMode.ROLLBACK, CallbackMode.IGNORE),
CallbackMode.toEnumSet(CallbackModes.CALLBACK_ROLLBACK
| CallbackModes.CALLBACK_IGNORE));
assertEquals(
CallbackModes.CALLBACK_ROLLBACK | CallbackModes.CALLBACK_IGNORE,
CallbackMode.fromEnumSet(
EnumSet.of(CallbackMode.ROLLBACK, CallbackMode.IGNORE)));
assertEquals(EnumSet.allOf(CallbackMode.class),
CallbackMode.toEnumSet(
CallbackModes.CALLBACK_FAIL_FAST
| CallbackModes.CALLBACK_IGNORE
| CallbackModes.CALLBACK_LOG
| CallbackModes.CALLBACK_RETHROW
| CallbackModes.CALLBACK_ROLLBACK));
assertEquals(CallbackModes.CALLBACK_FAIL_FAST
| CallbackModes.CALLBACK_IGNORE
| CallbackModes.CALLBACK_LOG
| CallbackModes.CALLBACK_RETHROW
| CallbackModes.CALLBACK_ROLLBACK,
CallbackMode.fromEnumSet(EnumSet.allOf(CallbackMode.class)));
}
public void testQueryOperationTypes() {
assertEquals(QueryOperations.OP_SELECT,
QueryOperationType.SELECT.toKernelConstant());
assertEquals(QueryOperationType.SELECT,
QueryOperationType.fromKernelConstant(
QueryOperations.OP_SELECT));
assertEquals(QueryOperationType.SELECT.toKernelConstant(),
QueryOperationType.SELECT.ordinal() + 1);
assertEquals(QueryOperations.OP_UPDATE,
QueryOperationType.UPDATE.toKernelConstant());
assertEquals(QueryOperationType.UPDATE,
QueryOperationType.fromKernelConstant(
QueryOperations.OP_UPDATE));
assertEquals(QueryOperationType.UPDATE.toKernelConstant(),
QueryOperationType.UPDATE.ordinal() + 1);
assertEquals(QueryOperations.OP_DELETE,
QueryOperationType.DELETE.toKernelConstant());
assertEquals(QueryOperationType.DELETE,
QueryOperationType.fromKernelConstant(
QueryOperations.OP_DELETE));
assertEquals(QueryOperationType.DELETE.toKernelConstant(),
QueryOperationType.DELETE.ordinal() + 1);
assertEquals(getConstantCount(QueryOperations.class),
QueryOperationType.values().length);
}
private int getConstantCount(Class cls) {
return cls.getDeclaredFields().length;
}
}