blob: 84687b392f146a5ff5c12338f18696412180711e [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
<<<<<<< Updated upstream
*
* 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
=======
*
* https://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
>>>>>>> Stashed changes
* limitations under the License.
*/
package org.apache.jdo.tck.api.persistencecapable;
import javax.jdo.identity.ByteIdentity;
import javax.jdo.identity.CharIdentity;
import javax.jdo.identity.IntIdentity;
import javax.jdo.identity.LongIdentity;
import javax.jdo.identity.ObjectIdentity;
import javax.jdo.identity.ShortIdentity;
import javax.jdo.identity.SingleFieldIdentity;
import javax.jdo.identity.StringIdentity;
import javax.jdo.spi.PersistenceCapable;
import org.apache.jdo.tck.pc.singlefieldidentity.AbstractPCPointSingleField;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldByte;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldCharacter;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldDate;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldInteger;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldLong;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldPrimitivebyte;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldPrimitivechar;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldPrimitiveint;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldPrimitivelong;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldPrimitiveshort;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldShort;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldString;
import org.apache.jdo.tck.util.BatchTestRunner;
/**
* <B>Title:</B>CopyKeyFieldsFromObjectId of PersistenceCapable <br>
* <B>Keywords:</B> persistencecapable <br>
* <B>Assertion IDs:</B> A7.12-25 <br>
* <B>Assertion Description: </B>
*
* <p>A7.12-25<br>
* public void jdoCopyKeyFieldsFromObjectId(ObjectIdFieldConsumer fc, Object oid); This method
* copies fields to the field manager instance from the second parameter instance.
*
* @author Michael Watzek
*/
public class CopyKeyFieldsFromObjectId extends AbstractPersistenceCapableTest {
/** */
private static final String ASSERTION_FAILED =
"Assertion A7.12-25 (jdoCopyKeyFieldsFromObjectId) failed: ";
/**
* The <code>main</code> is called when the class is directly executed from the command line.
*
* @param args The arguments passed to the program.
*/
public static void main(String[] args) {
BatchTestRunner.run(CopyKeyFieldsFromObjectId.class);
}
public void testSingleFieldIdentitybyte() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldPrimitivebyte(1, 2));
}
}
public void testSingleFieldIdentityByte() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldByte(1, 2));
}
}
public void testSingleFieldIdentitychar() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldPrimitivechar(1, 2));
}
}
public void testSingleFieldIdentityCharacter() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldCharacter(1, 2));
}
}
public void testSingleFieldIdentityint() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldPrimitiveint(1, 2));
}
}
public void testSingleFieldIdentityInteger() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldInteger(1, 2));
}
}
public void testSingleFieldIdentitylong() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldPrimitivelong(1, 2));
}
}
public void testSingleFieldIdentityLong() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldLong(1, 2));
}
}
public void testSingleFieldIdentityshort() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldPrimitiveshort(1, 2));
}
}
public void testSingleFieldIdentityShort() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldShort(1, 2));
}
}
public void testSingleFieldIdentityString() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldString(1, 2));
}
}
public void testSingleFieldIdentityDate() {
if (isTestToBePerformed()) {
singleFieldIdentity(new PCPointSingleFieldDate(1, 2));
}
}
/**
* The common method for test cases checking for assertion A7.12-25:<br>
* public void jdoCopyKeyFieldsFromObjectId(ObjectIdFieldConsumer fc, Object oid); This method
* copies fields to the field manager instance from the second parameter instance.
*
* @param o the object to check
*/
private void singleFieldIdentity(AbstractPCPointSingleField o) {
assertPersistenceCapable(o);
SingleFieldIdentity sfi = (SingleFieldIdentity) makePersistent(o);
PersistenceCapable pc = (PersistenceCapable) o;
ObjectIdFieldConsumer objectIdFieldConsumer = new ObjectIdFieldConsumer();
pc.jdoCopyKeyFieldsFromObjectId(objectIdFieldConsumer, sfi);
if (!objectIdFieldConsumer.equals(sfi)) {
fail(
ASSERTION_FAILED
+ "pc.jdoCopyKeyFieldsFromObjectId copies unexpected "
+ "fields into an object id field consumer using a "
+ "single field indentity object id.");
}
}
private static class ObjectIdFieldConsumer implements PersistenceCapable.ObjectIdFieldConsumer {
private boolean booleanField;
private byte byteField;
private char charField;
private double doubleField;
private float floatField;
private int intField;
private long longField;
private short shortField;
private String stringField;
private Object objectField;
/*
* @see PersistenceCapable.ObjectIdFieldConsumer#storeBooleanField(int, boolean)
*/
public void storeBooleanField(int fieldNumber, boolean value) {
this.booleanField = value;
}
/*
* @see PersistenceCapable.ObjectIdFieldConsumer#storeCharField(int, char)
*/
public void storeCharField(int fieldNumber, char value) {
this.charField = value;
}
/*
* @see PersistenceCapable.ObjectIdFieldConsumer#storeByteField(int, byte)
*/
public void storeByteField(int fieldNumber, byte value) {
this.byteField = value;
}
/*
* @see PersistenceCapable.ObjectIdFieldConsumer#storeShortField(int, short)
*/
public void storeShortField(int fieldNumber, short value) {
this.shortField = value;
}
/*
* @see PersistenceCapable.ObjectIdFieldConsumer#storeIntField(int, int)
*/
public void storeIntField(int fieldNumber, int value) {
this.intField = value;
}
/*
* @see PersistenceCapable.ObjectIdFieldConsumer#storeLongField(int, long)
*/
public void storeLongField(int fieldNumber, long value) {
this.longField = value;
}
/*
* @see PersistenceCapable.ObjectIdFieldConsumer#storeFloatField(int, float)
*/
public void storeFloatField(int fieldNumber, float value) {
this.floatField = value;
}
/*
* @see PersistenceCapable.ObjectIdFieldConsumer#storeDoubleField(int, double)
*/
public void storeDoubleField(int fieldNumber, double value) {
this.doubleField = value;
}
/*
* @see PersistenceCapable.ObjectIdFieldConsumer#storeStringField(int, java.lang.String)
*/
public void storeStringField(int fieldNumber, String value) {
this.stringField = value;
}
/*
* @see PersistenceCapable.ObjectIdFieldConsumer#storeObjectField(int, java.lang.Object)
*/
public void storeObjectField(int fieldNumber, Object value) {
if (value instanceof Boolean) this.booleanField = ((Boolean) value).booleanValue();
else if (value instanceof Boolean) this.booleanField = ((Boolean) value).booleanValue();
else if (value instanceof Byte) this.byteField = ((Byte) value).byteValue();
else if (value instanceof Character) this.charField = ((Character) value).charValue();
else if (value instanceof Double) this.doubleField = ((Double) value).doubleValue();
else if (value instanceof Float) this.floatField = ((Float) value).floatValue();
else if (value instanceof Integer) this.intField = ((Integer) value).intValue();
else if (value instanceof Long) this.longField = ((Long) value).longValue();
else if (value instanceof Short) this.shortField = ((Short) value).shortValue();
else if (value instanceof String) this.stringField = (String) value;
else this.objectField = value;
}
public boolean equals(SingleFieldIdentity sfi) {
if (sfi == null) throw new IllegalArgumentException("Argument sfi must not be null");
boolean result = false;
if (sfi instanceof ByteIdentity) result = ((ByteIdentity) sfi).getKey() == this.byteField;
else if (sfi instanceof CharIdentity)
result = ((CharIdentity) sfi).getKey() == this.charField;
else if (sfi instanceof IntIdentity) result = ((IntIdentity) sfi).getKey() == this.intField;
else if (sfi instanceof LongIdentity)
result = ((LongIdentity) sfi).getKey() == this.longField;
else if (sfi instanceof ShortIdentity)
result = ((ShortIdentity) sfi).getKey() == this.shortField;
else if (sfi instanceof StringIdentity)
result = ((StringIdentity) sfi).getKey().equals(this.stringField);
else result = ((ObjectIdentity) sfi).getKey().equals(this.objectField);
return result;
}
}
}