/* * Copyright (c) 2013 Eike Stepper (Berlin, Germany) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Steve Monnier - initial API and implementation * Eike Stepper - adapted for more correct test model definition * Christian W. Damus (CEA) - adapted for new test model with unsettable attribute */ package org.eclipse.emf.cdo.tests.bugzilla; import org.eclipse.emf.cdo.eresource.CDOResource; import org.eclipse.emf.cdo.session.CDOSession; import org.eclipse.emf.cdo.tests.AbstractCDOTest; import org.eclipse.emf.cdo.tests.model6.EmptyStringDefaultUnsettable; import org.eclipse.emf.cdo.tests.model6.UnsettableAttributes; import org.eclipse.emf.cdo.tests.model6.legacy.Model6Factory; import org.eclipse.emf.cdo.transaction.CDOTransaction; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Arrays; import java.util.Date; /** * Bug 405191. * * @author Steve Monnier */ public class Bugzilla_405191_Test extends AbstractCDOTest { /** * This scenario validates that null can be set on a String feature with an empty string has default value has. */ public void testSetNonDefaultNullString() throws Exception { CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); CDOResource resource = transaction.createResource(getResourcePath("/res")); // Create an object and set is a string attribute to the empty string EmptyStringDefaultUnsettable localObject = getModel6Factory().createEmptyStringDefaultUnsettable(); localObject.setAttribute(""); resource.getContents().add(localObject); transaction.commit(); CDOTransaction remoteTransaction = openSession().openTransaction(); EmptyStringDefaultUnsettable remoteObject = remoteTransaction.getObject(localObject); // Validate that for another user (another transaction) the value is an empty string assertNotNull("Attribute should not be null", remoteObject.getAttribute()); // Change attribute value from empty string to null assertNotNull("Attribute should not be be null", localObject.getAttribute()); localObject.setAttribute(null); assertNull("Attribute should be null", localObject.getAttribute()); // Validate that for another user (another transaction) the value is null commitAndSync(transaction, remoteTransaction); assertNull(remoteObject.getAttribute()); } public void testAllTypesSetAndUnset() throws Exception { CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); CDOResource resource = transaction.createResource(getResourcePath("/res")); // Create an object and set all attributes to non-default values UnsettableAttributes localObject = getModel6Factory().createUnsettableAttributes(); localObject.setAttrBigDecimal(new BigDecimal("4711.1234")); localObject.setAttrBigInteger(new BigInteger("4711")); localObject.setAttrBoolean(true); localObject.setAttrBooleanObject(true); localObject.setAttrByte((byte)47); localObject.setAttrByteObject((byte)47); localObject.setAttrByteArray(new byte[] { 4, 7, 1, 1 }); localObject.setAttrChar('4'); localObject.setAttrCharacterObject('4'); localObject.setAttrDate(new Date(4711)); localObject.setAttrDouble(4711.1234); localObject.setAttrDoubleObject(4711.1234); localObject.setAttrFloat(4711.1234f); localObject.setAttrFloatObject(4711.1234f); localObject.setAttrInt(4711); localObject.setAttrIntegerObject(4711); localObject.setAttrJavaClass(getClass()); localObject.setAttrJavaObject(new int[] { 4, 7, 1, 1 }); localObject.setAttrLong(4711L); localObject.setAttrLongObject(4711L); localObject.setAttrShort((short)4711); localObject.setAttrShortObject((short)4711); localObject.setAttrString("4711"); resource.getContents().add(localObject); transaction.commit(); CDOTransaction remoteTransaction = openSession().openTransaction(); UnsettableAttributes remoteObject = remoteTransaction.getObject(localObject); assertEquals(localObject.getAttrBigDecimal(), remoteObject.getAttrBigDecimal()); assertEquals(localObject.getAttrBigInteger(), remoteObject.getAttrBigInteger()); assertEquals(localObject.isAttrBoolean(), remoteObject.isAttrBoolean()); assertEquals(localObject.getAttrBooleanObject(), remoteObject.getAttrBooleanObject()); assertEquals(localObject.getAttrByte(), remoteObject.getAttrByte()); assertEquals(localObject.getAttrByteObject(), remoteObject.getAttrByteObject()); assertEquals(true, Arrays.equals(localObject.getAttrByteArray(), remoteObject.getAttrByteArray())); assertEquals(localObject.getAttrChar(), remoteObject.getAttrChar()); assertEquals(localObject.getAttrCharacterObject(), remoteObject.getAttrCharacterObject()); assertEquals(localObject.getAttrDate(), remoteObject.getAttrDate()); assertEquals(localObject.getAttrDouble(), remoteObject.getAttrDouble()); assertEquals(localObject.getAttrDoubleObject(), remoteObject.getAttrDoubleObject()); assertEquals(localObject.getAttrFloat(), remoteObject.getAttrFloat()); assertEquals(localObject.getAttrFloatObject(), remoteObject.getAttrFloatObject()); assertEquals(localObject.getAttrInt(), remoteObject.getAttrInt()); assertEquals(localObject.getAttrIntegerObject(), remoteObject.getAttrIntegerObject()); assertEquals(localObject.getAttrJavaClass(), remoteObject.getAttrJavaClass()); assertEquals(true, Arrays.equals((int[])localObject.getAttrJavaObject(), (int[])remoteObject.getAttrJavaObject())); assertEquals(localObject.getAttrLong(), remoteObject.getAttrLong()); assertEquals(localObject.getAttrLongObject(), remoteObject.getAttrLongObject()); assertEquals(localObject.getAttrShort(), remoteObject.getAttrShort()); assertEquals(localObject.getAttrShortObject(), remoteObject.getAttrShortObject()); assertEquals(localObject.getAttrString(), remoteObject.getAttrString()); assertEquals(localObject.isSetAttrBigDecimal(), remoteObject.isSetAttrBigDecimal()); assertEquals(localObject.isSetAttrBigInteger(), remoteObject.isSetAttrBigInteger()); assertEquals(localObject.isSetAttrBoolean(), remoteObject.isSetAttrBoolean()); assertEquals(localObject.isSetAttrBooleanObject(), remoteObject.isSetAttrBooleanObject()); assertEquals(localObject.isSetAttrByte(), remoteObject.isSetAttrByte()); assertEquals(localObject.isSetAttrByteObject(), remoteObject.isSetAttrByteObject()); assertEquals(localObject.isSetAttrByteArray(), remoteObject.isSetAttrByteArray()); assertEquals(localObject.isSetAttrChar(), remoteObject.isSetAttrChar()); assertEquals(localObject.isSetAttrCharacterObject(), remoteObject.isSetAttrCharacterObject()); assertEquals(localObject.isSetAttrDate(), remoteObject.isSetAttrDate()); assertEquals(localObject.isSetAttrDouble(), remoteObject.isSetAttrDouble()); assertEquals(localObject.isSetAttrDoubleObject(), remoteObject.isSetAttrDoubleObject()); assertEquals(localObject.isSetAttrFloat(), remoteObject.isSetAttrFloat()); assertEquals(localObject.isSetAttrFloatObject(), remoteObject.isSetAttrFloatObject()); assertEquals(localObject.isSetAttrInt(), remoteObject.isSetAttrInt()); assertEquals(localObject.isSetAttrIntegerObject(), remoteObject.isSetAttrIntegerObject()); assertEquals(localObject.isSetAttrJavaClass(), remoteObject.isSetAttrJavaClass()); assertEquals(localObject.isSetAttrJavaObject(), remoteObject.isSetAttrJavaObject()); assertEquals(localObject.isSetAttrLong(), remoteObject.isSetAttrLong()); assertEquals(localObject.isSetAttrLongObject(), remoteObject.isSetAttrLongObject()); assertEquals(localObject.isSetAttrShort(), remoteObject.isSetAttrShort()); assertEquals(localObject.isSetAttrShortObject(), remoteObject.isSetAttrShortObject()); assertEquals(localObject.isSetAttrString(), remoteObject.isSetAttrString()); assertEquals(true, remoteObject.isSetAttrBigDecimal()); assertEquals(true, remoteObject.isSetAttrBigInteger()); assertEquals(true, remoteObject.isSetAttrBoolean()); assertEquals(true, remoteObject.isSetAttrBooleanObject()); assertEquals(true, remoteObject.isSetAttrByte()); assertEquals(true, remoteObject.isSetAttrByteObject()); assertEquals(true, remoteObject.isSetAttrByteArray()); assertEquals(true, remoteObject.isSetAttrChar()); assertEquals(true, remoteObject.isSetAttrCharacterObject()); assertEquals(true, remoteObject.isSetAttrDate()); assertEquals(true, remoteObject.isSetAttrDouble()); assertEquals(true, remoteObject.isSetAttrDoubleObject()); assertEquals(true, remoteObject.isSetAttrFloat()); assertEquals(true, remoteObject.isSetAttrFloatObject()); assertEquals(true, remoteObject.isSetAttrInt()); assertEquals(true, remoteObject.isSetAttrIntegerObject()); assertEquals(true, remoteObject.isSetAttrJavaClass()); assertEquals(true, remoteObject.isSetAttrJavaObject()); assertEquals(true, remoteObject.isSetAttrLong()); assertEquals(true, remoteObject.isSetAttrLongObject()); assertEquals(true, remoteObject.isSetAttrShort()); assertEquals(true, remoteObject.isSetAttrShortObject()); assertEquals(true, remoteObject.isSetAttrString()); // Unset all attributes localObject.unsetAttrBigDecimal(); localObject.unsetAttrBigInteger(); localObject.unsetAttrBoolean(); localObject.unsetAttrBooleanObject(); localObject.unsetAttrByte(); localObject.unsetAttrByteObject(); localObject.unsetAttrByteArray(); localObject.unsetAttrChar(); localObject.unsetAttrCharacterObject(); localObject.unsetAttrDate(); localObject.unsetAttrDouble(); localObject.unsetAttrDoubleObject(); localObject.unsetAttrFloat(); localObject.unsetAttrFloatObject(); localObject.unsetAttrInt(); localObject.unsetAttrIntegerObject(); localObject.unsetAttrJavaClass(); localObject.unsetAttrJavaObject(); localObject.unsetAttrLong(); localObject.unsetAttrLongObject(); localObject.unsetAttrShort(); localObject.unsetAttrShortObject(); localObject.unsetAttrString(); commitAndSync(transaction, remoteTransaction); assertEquals(localObject.getAttrBigDecimal(), remoteObject.getAttrBigDecimal()); assertEquals(localObject.getAttrBigInteger(), remoteObject.getAttrBigInteger()); assertEquals(localObject.isAttrBoolean(), remoteObject.isAttrBoolean()); assertEquals(localObject.getAttrBooleanObject(), remoteObject.getAttrBooleanObject()); assertEquals(localObject.getAttrByte(), remoteObject.getAttrByte()); assertEquals(localObject.getAttrByteObject(), remoteObject.getAttrByteObject()); assertEquals(true, Arrays.equals(localObject.getAttrByteArray(), remoteObject.getAttrByteArray())); assertEquals(localObject.getAttrChar(), remoteObject.getAttrChar()); assertEquals(localObject.getAttrCharacterObject(), remoteObject.getAttrCharacterObject()); assertEquals(localObject.getAttrDate(), remoteObject.getAttrDate()); assertEquals(localObject.getAttrDouble(), remoteObject.getAttrDouble()); assertEquals(localObject.getAttrDoubleObject(), remoteObject.getAttrDoubleObject()); assertEquals(localObject.getAttrFloat(), remoteObject.getAttrFloat()); assertEquals(localObject.getAttrFloatObject(), remoteObject.getAttrFloatObject()); assertEquals(localObject.getAttrInt(), remoteObject.getAttrInt()); assertEquals(localObject.getAttrIntegerObject(), remoteObject.getAttrIntegerObject()); assertEquals(localObject.getAttrJavaClass(), remoteObject.getAttrJavaClass()); assertEquals(true, Arrays.equals((int[])localObject.getAttrJavaObject(), (int[])remoteObject.getAttrJavaObject())); assertEquals(localObject.getAttrLong(), remoteObject.getAttrLong()); assertEquals(localObject.getAttrLongObject(), remoteObject.getAttrLongObject()); assertEquals(localObject.getAttrShort(), remoteObject.getAttrShort()); assertEquals(localObject.getAttrShortObject(), remoteObject.getAttrShortObject()); assertEquals(localObject.getAttrString(), remoteObject.getAttrString()); assertEquals(localObject.isSetAttrBigDecimal(), remoteObject.isSetAttrBigDecimal()); assertEquals(localObject.isSetAttrBigInteger(), remoteObject.isSetAttrBigInteger()); assertEquals(localObject.isSetAttrBoolean(), remoteObject.isSetAttrBoolean()); assertEquals(localObject.isSetAttrBooleanObject(), remoteObject.isSetAttrBooleanObject()); assertEquals(localObject.isSetAttrByte(), remoteObject.isSetAttrByte()); assertEquals(localObject.isSetAttrByteObject(), remoteObject.isSetAttrByteObject()); assertEquals(localObject.isSetAttrByteArray(), remoteObject.isSetAttrByteArray()); assertEquals(localObject.isSetAttrChar(), remoteObject.isSetAttrChar()); assertEquals(localObject.isSetAttrCharacterObject(), remoteObject.isSetAttrCharacterObject()); assertEquals(localObject.isSetAttrDate(), remoteObject.isSetAttrDate()); assertEquals(localObject.isSetAttrDouble(), remoteObject.isSetAttrDouble()); assertEquals(localObject.isSetAttrDoubleObject(), remoteObject.isSetAttrDoubleObject()); assertEquals(localObject.isSetAttrFloat(), remoteObject.isSetAttrFloat()); assertEquals(localObject.isSetAttrFloatObject(), remoteObject.isSetAttrFloatObject()); assertEquals(localObject.isSetAttrInt(), remoteObject.isSetAttrInt()); assertEquals(localObject.isSetAttrIntegerObject(), remoteObject.isSetAttrIntegerObject()); assertEquals(localObject.isSetAttrJavaClass(), remoteObject.isSetAttrJavaClass()); assertEquals(localObject.isSetAttrJavaObject(), remoteObject.isSetAttrJavaObject()); assertEquals(localObject.isSetAttrLong(), remoteObject.isSetAttrLong()); assertEquals(localObject.isSetAttrLongObject(), remoteObject.isSetAttrLongObject()); assertEquals(localObject.isSetAttrShort(), remoteObject.isSetAttrShort()); assertEquals(localObject.isSetAttrShortObject(), remoteObject.isSetAttrShortObject()); assertEquals(localObject.isSetAttrString(), remoteObject.isSetAttrString()); } public void testAllTypesSetAndDefault() throws Exception { CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); CDOResource resource = transaction.createResource(getResourcePath("/res")); // Create an object and set all attributes to non-default values UnsettableAttributes localObject = getModel6Factory().createUnsettableAttributes(); localObject.setAttrBigDecimal(new BigDecimal("4711.1234")); localObject.setAttrBigInteger(new BigInteger("4711")); localObject.setAttrBoolean(true); localObject.setAttrBooleanObject(true); localObject.setAttrByte((byte)47); localObject.setAttrByteObject((byte)47); localObject.setAttrByteArray(new byte[] { 4, 7, 1, 1 }); localObject.setAttrChar('4'); localObject.setAttrCharacterObject('4'); localObject.setAttrDate(new Date(4711)); localObject.setAttrDouble(4711.1234); localObject.setAttrDoubleObject(4711.1234); localObject.setAttrFloat(4711.1234f); localObject.setAttrFloatObject(4711.1234f); localObject.setAttrInt(4711); localObject.setAttrIntegerObject(4711); localObject.setAttrJavaClass(getClass()); localObject.setAttrJavaObject(new int[] { 4, 7, 1, 1 }); localObject.setAttrLong(4711L); localObject.setAttrLongObject(4711L); localObject.setAttrShort((short)4711); localObject.setAttrShortObject((short)4711); localObject.setAttrString("4711"); resource.getContents().add(localObject); transaction.commit(); CDOTransaction remoteTransaction = openSession().openTransaction(); UnsettableAttributes remoteObject = remoteTransaction.getObject(localObject); assertEquals(localObject.getAttrBigDecimal(), remoteObject.getAttrBigDecimal()); assertEquals(localObject.getAttrBigInteger(), remoteObject.getAttrBigInteger()); assertEquals(localObject.isAttrBoolean(), remoteObject.isAttrBoolean()); assertEquals(localObject.getAttrBooleanObject(), remoteObject.getAttrBooleanObject()); assertEquals(localObject.getAttrByte(), remoteObject.getAttrByte()); assertEquals(localObject.getAttrByteObject(), remoteObject.getAttrByteObject()); assertEquals(true, Arrays.equals(localObject.getAttrByteArray(), remoteObject.getAttrByteArray())); assertEquals(localObject.getAttrChar(), remoteObject.getAttrChar()); assertEquals(localObject.getAttrCharacterObject(), remoteObject.getAttrCharacterObject()); assertEquals(localObject.getAttrDate(), remoteObject.getAttrDate()); assertEquals(localObject.getAttrDouble(), remoteObject.getAttrDouble()); assertEquals(localObject.getAttrDoubleObject(), remoteObject.getAttrDoubleObject()); assertEquals(localObject.getAttrFloat(), remoteObject.getAttrFloat()); assertEquals(localObject.getAttrFloatObject(), remoteObject.getAttrFloatObject()); assertEquals(localObject.getAttrInt(), remoteObject.getAttrInt()); assertEquals(localObject.getAttrIntegerObject(), remoteObject.getAttrIntegerObject()); assertEquals(localObject.getAttrJavaClass(), remoteObject.getAttrJavaClass()); assertEquals(true, Arrays.equals((int[])localObject.getAttrJavaObject(), (int[])remoteObject.getAttrJavaObject())); assertEquals(localObject.getAttrLong(), remoteObject.getAttrLong()); assertEquals(localObject.getAttrLongObject(), remoteObject.getAttrLongObject()); assertEquals(localObject.getAttrShort(), remoteObject.getAttrShort()); assertEquals(localObject.getAttrShortObject(), remoteObject.getAttrShortObject()); assertEquals(localObject.getAttrString(), remoteObject.getAttrString()); assertEquals(localObject.isSetAttrBigDecimal(), remoteObject.isSetAttrBigDecimal()); assertEquals(localObject.isSetAttrBigInteger(), remoteObject.isSetAttrBigInteger()); assertEquals(localObject.isSetAttrBoolean(), remoteObject.isSetAttrBoolean()); assertEquals(localObject.isSetAttrBooleanObject(), remoteObject.isSetAttrBooleanObject()); assertEquals(localObject.isSetAttrByte(), remoteObject.isSetAttrByte()); assertEquals(localObject.isSetAttrByteObject(), remoteObject.isSetAttrByteObject()); assertEquals(localObject.isSetAttrByteArray(), remoteObject.isSetAttrByteArray()); assertEquals(localObject.isSetAttrChar(), remoteObject.isSetAttrChar()); assertEquals(localObject.isSetAttrCharacterObject(), remoteObject.isSetAttrCharacterObject()); assertEquals(localObject.isSetAttrDate(), remoteObject.isSetAttrDate()); assertEquals(localObject.isSetAttrDouble(), remoteObject.isSetAttrDouble()); assertEquals(localObject.isSetAttrDoubleObject(), remoteObject.isSetAttrDoubleObject()); assertEquals(localObject.isSetAttrFloat(), remoteObject.isSetAttrFloat()); assertEquals(localObject.isSetAttrFloatObject(), remoteObject.isSetAttrFloatObject()); assertEquals(localObject.isSetAttrInt(), remoteObject.isSetAttrInt()); assertEquals(localObject.isSetAttrIntegerObject(), remoteObject.isSetAttrIntegerObject()); assertEquals(localObject.isSetAttrJavaClass(), remoteObject.isSetAttrJavaClass()); assertEquals(localObject.isSetAttrJavaObject(), remoteObject.isSetAttrJavaObject()); assertEquals(localObject.isSetAttrLong(), remoteObject.isSetAttrLong()); assertEquals(localObject.isSetAttrLongObject(), remoteObject.isSetAttrLongObject()); assertEquals(localObject.isSetAttrShort(), remoteObject.isSetAttrShort()); assertEquals(localObject.isSetAttrShortObject(), remoteObject.isSetAttrShortObject()); assertEquals(localObject.isSetAttrString(), remoteObject.isSetAttrString()); // Set all attributes to default values localObject.setAttrBigDecimal(null); localObject.setAttrBigInteger(null); localObject.setAttrBoolean(false); localObject.setAttrBooleanObject(false); localObject.setAttrByte((byte)0); localObject.setAttrByteObject(null); localObject.setAttrByteArray(null); localObject.setAttrChar('0'); localObject.setAttrCharacterObject(null); localObject.setAttrDate(null); localObject.setAttrDouble(0.0); localObject.setAttrDoubleObject(null); localObject.setAttrFloat(0.0f); localObject.setAttrFloatObject(null); localObject.setAttrInt(0); localObject.setAttrIntegerObject(null); localObject.setAttrJavaClass(null); localObject.setAttrJavaObject(null); localObject.setAttrLong(0L); localObject.setAttrLongObject(null); localObject.setAttrShort((short)0); localObject.setAttrShortObject(null); localObject.setAttrString(null); commitAndSync(transaction, remoteTransaction); assertEquals(localObject.getAttrBigDecimal(), remoteObject.getAttrBigDecimal()); assertEquals(localObject.getAttrBigInteger(), remoteObject.getAttrBigInteger()); assertEquals(localObject.isAttrBoolean(), remoteObject.isAttrBoolean()); assertEquals(localObject.getAttrBooleanObject(), remoteObject.getAttrBooleanObject()); assertEquals(localObject.getAttrByte(), remoteObject.getAttrByte()); assertEquals(localObject.getAttrByteObject(), remoteObject.getAttrByteObject()); assertEquals(true, Arrays.equals(localObject.getAttrByteArray(), remoteObject.getAttrByteArray())); assertEquals(localObject.getAttrChar(), remoteObject.getAttrChar()); assertEquals(localObject.getAttrCharacterObject(), remoteObject.getAttrCharacterObject()); assertEquals(localObject.getAttrDate(), remoteObject.getAttrDate()); assertEquals(localObject.getAttrDouble(), remoteObject.getAttrDouble()); assertEquals(localObject.getAttrDoubleObject(), remoteObject.getAttrDoubleObject()); assertEquals(localObject.getAttrFloat(), remoteObject.getAttrFloat()); assertEquals(localObject.getAttrFloatObject(), remoteObject.getAttrFloatObject()); assertEquals(localObject.getAttrInt(), remoteObject.getAttrInt()); assertEquals(localObject.getAttrIntegerObject(), remoteObject.getAttrIntegerObject()); assertEquals(localObject.getAttrJavaClass(), remoteObject.getAttrJavaClass()); assertEquals(true, Arrays.equals((int[])localObject.getAttrJavaObject(), (int[])remoteObject.getAttrJavaObject())); assertEquals(localObject.getAttrLong(), remoteObject.getAttrLong()); assertEquals(localObject.getAttrLongObject(), remoteObject.getAttrLongObject()); assertEquals(localObject.getAttrShort(), remoteObject.getAttrShort()); assertEquals(localObject.getAttrShortObject(), remoteObject.getAttrShortObject()); assertEquals(localObject.getAttrString(), remoteObject.getAttrString()); assertEquals(localObject.isSetAttrBigDecimal(), remoteObject.isSetAttrBigDecimal()); assertEquals(localObject.isSetAttrBigInteger(), remoteObject.isSetAttrBigInteger()); assertEquals(localObject.isSetAttrBoolean(), remoteObject.isSetAttrBoolean()); assertEquals(localObject.isSetAttrBooleanObject(), remoteObject.isSetAttrBooleanObject()); assertEquals(localObject.isSetAttrByte(), remoteObject.isSetAttrByte()); assertEquals(localObject.isSetAttrByteObject(), remoteObject.isSetAttrByteObject()); assertEquals(localObject.isSetAttrByteArray(), remoteObject.isSetAttrByteArray()); assertEquals(localObject.isSetAttrChar(), remoteObject.isSetAttrChar()); assertEquals(localObject.isSetAttrCharacterObject(), remoteObject.isSetAttrCharacterObject()); assertEquals(localObject.isSetAttrDate(), remoteObject.isSetAttrDate()); assertEquals(localObject.isSetAttrDouble(), remoteObject.isSetAttrDouble()); assertEquals(localObject.isSetAttrDoubleObject(), remoteObject.isSetAttrDoubleObject()); assertEquals(localObject.isSetAttrFloat(), remoteObject.isSetAttrFloat()); assertEquals(localObject.isSetAttrFloatObject(), remoteObject.isSetAttrFloatObject()); assertEquals(localObject.isSetAttrInt(), remoteObject.isSetAttrInt()); assertEquals(localObject.isSetAttrIntegerObject(), remoteObject.isSetAttrIntegerObject()); assertEquals(localObject.isSetAttrJavaClass(), remoteObject.isSetAttrJavaClass()); assertEquals(localObject.isSetAttrJavaObject(), remoteObject.isSetAttrJavaObject()); assertEquals(localObject.isSetAttrLong(), remoteObject.isSetAttrLong()); assertEquals(localObject.isSetAttrLongObject(), remoteObject.isSetAttrLongObject()); assertEquals(localObject.isSetAttrShort(), remoteObject.isSetAttrShort()); assertEquals(localObject.isSetAttrShortObject(), remoteObject.isSetAttrShortObject()); assertEquals(localObject.isSetAttrString(), remoteObject.isSetAttrString()); assertEquals(true, remoteObject.isSetAttrBigDecimal()); assertEquals(true, remoteObject.isSetAttrBigInteger()); assertEquals(true, remoteObject.isSetAttrBoolean()); assertEquals(true, remoteObject.isSetAttrBooleanObject()); assertEquals(true, remoteObject.isSetAttrByte()); assertEquals(true, remoteObject.isSetAttrByteObject()); assertEquals(true, remoteObject.isSetAttrByteArray()); assertEquals(true, remoteObject.isSetAttrChar()); assertEquals(true, remoteObject.isSetAttrCharacterObject()); assertEquals(true, remoteObject.isSetAttrDate()); assertEquals(true, remoteObject.isSetAttrDouble()); assertEquals(true, remoteObject.isSetAttrDoubleObject()); assertEquals(true, remoteObject.isSetAttrFloat()); assertEquals(true, remoteObject.isSetAttrFloatObject()); assertEquals(true, remoteObject.isSetAttrInt()); assertEquals(true, remoteObject.isSetAttrIntegerObject()); assertEquals(true, remoteObject.isSetAttrJavaClass()); assertEquals(true, remoteObject.isSetAttrJavaObject()); assertEquals(true, remoteObject.isSetAttrLong()); assertEquals(true, remoteObject.isSetAttrLongObject()); assertEquals(true, remoteObject.isSetAttrShort()); assertEquals(true, remoteObject.isSetAttrShortObject()); assertEquals(true, remoteObject.isSetAttrString()); } public void testAllTypesSetAndNull() throws Exception { CDOSession session = openSession(); CDOTransaction transaction = session.openTransaction(); CDOResource resource = transaction.createResource(getResourcePath("/res")); // Create an object and set all attributes to non-default values UnsettableAttributes localObject = getModel6Factory().createUnsettableAttributes(); localObject.setAttrBigDecimal(new BigDecimal("4711.1234")); localObject.setAttrBigInteger(new BigInteger("4711")); localObject.setAttrBooleanObject(true); localObject.setAttrByteObject((byte)47); localObject.setAttrByteArray(new byte[] { 4, 7, 1, 1 }); localObject.setAttrCharacterObject('4'); localObject.setAttrDate(new Date(4711)); localObject.setAttrDoubleObject(4711.1234); localObject.setAttrFloatObject(4711.1234f); localObject.setAttrIntegerObject(4711); localObject.setAttrJavaClass(getClass()); localObject.setAttrJavaObject(new int[] { 4, 7, 1, 1 }); localObject.setAttrLongObject(4711L); localObject.setAttrShortObject((short)4711); localObject.setAttrString("4711"); resource.getContents().add(localObject); transaction.commit(); CDOTransaction remoteTransaction = openSession().openTransaction(); UnsettableAttributes remoteObject = remoteTransaction.getObject(localObject); // Set all attributes to default values localObject.setAttrBigDecimal(null); localObject.setAttrBigInteger(null); localObject.setAttrBooleanObject(null); localObject.setAttrByteObject(null); localObject.setAttrByteArray(null); localObject.setAttrCharacterObject(null); localObject.setAttrDate(null); localObject.setAttrDoubleObject(null); localObject.setAttrFloatObject(null); localObject.setAttrIntegerObject(null); localObject.setAttrJavaClass(null); localObject.setAttrJavaObject(null); localObject.setAttrLongObject(null); localObject.setAttrShortObject(null); localObject.setAttrString(null); commitAndSync(transaction, remoteTransaction); assertEquals(localObject.getAttrBigDecimal(), remoteObject.getAttrBigDecimal()); assertEquals(localObject.getAttrBigInteger(), remoteObject.getAttrBigInteger()); assertEquals(localObject.getAttrBooleanObject(), remoteObject.getAttrBooleanObject()); assertEquals(localObject.getAttrByteObject(), remoteObject.getAttrByteObject()); assertEquals(true, Arrays.equals(localObject.getAttrByteArray(), remoteObject.getAttrByteArray())); assertEquals(localObject.getAttrCharacterObject(), remoteObject.getAttrCharacterObject()); assertEquals(localObject.getAttrDate(), remoteObject.getAttrDate()); assertEquals(localObject.getAttrDoubleObject(), remoteObject.getAttrDoubleObject()); assertEquals(localObject.getAttrFloatObject(), remoteObject.getAttrFloatObject()); assertEquals(localObject.getAttrIntegerObject(), remoteObject.getAttrIntegerObject()); assertEquals(localObject.getAttrJavaClass(), remoteObject.getAttrJavaClass()); assertEquals(true, Arrays.equals((int[])localObject.getAttrJavaObject(), (int[])remoteObject.getAttrJavaObject())); assertEquals(localObject.getAttrLongObject(), remoteObject.getAttrLongObject()); assertEquals(localObject.getAttrShortObject(), remoteObject.getAttrShortObject()); assertEquals(localObject.getAttrString(), remoteObject.getAttrString()); assertEquals(localObject.isSetAttrBigDecimal(), remoteObject.isSetAttrBigDecimal()); assertEquals(localObject.isSetAttrBigInteger(), remoteObject.isSetAttrBigInteger()); assertEquals(localObject.isSetAttrBooleanObject(), remoteObject.isSetAttrBooleanObject()); assertEquals(localObject.isSetAttrByteObject(), remoteObject.isSetAttrByteObject()); assertEquals(localObject.isSetAttrByteArray(), remoteObject.isSetAttrByteArray()); assertEquals(localObject.isSetAttrCharacterObject(), remoteObject.isSetAttrCharacterObject()); assertEquals(localObject.isSetAttrDate(), remoteObject.isSetAttrDate()); assertEquals(localObject.isSetAttrDoubleObject(), remoteObject.isSetAttrDoubleObject()); assertEquals(localObject.isSetAttrFloatObject(), remoteObject.isSetAttrFloatObject()); assertEquals(localObject.isSetAttrIntegerObject(), remoteObject.isSetAttrIntegerObject()); assertEquals(localObject.isSetAttrJavaClass(), remoteObject.isSetAttrJavaClass()); assertEquals(localObject.isSetAttrJavaObject(), remoteObject.isSetAttrJavaObject()); assertEquals(localObject.isSetAttrLongObject(), remoteObject.isSetAttrLongObject()); assertEquals(localObject.isSetAttrShortObject(), remoteObject.isSetAttrShortObject()); assertEquals(localObject.isSetAttrString(), remoteObject.isSetAttrString()); assertEquals(true, remoteObject.isSetAttrBigDecimal()); assertEquals(true, remoteObject.isSetAttrBigInteger()); assertEquals(true, remoteObject.isSetAttrBooleanObject()); assertEquals(true, remoteObject.isSetAttrByteObject()); assertEquals(true, remoteObject.isSetAttrByteArray()); assertEquals(true, remoteObject.isSetAttrCharacterObject()); assertEquals(true, remoteObject.isSetAttrDate()); assertEquals(true, remoteObject.isSetAttrDoubleObject()); assertEquals(true, remoteObject.isSetAttrFloatObject()); assertEquals(true, remoteObject.isSetAttrIntegerObject()); assertEquals(true, remoteObject.isSetAttrJavaClass()); assertEquals(true, remoteObject.isSetAttrJavaObject()); assertEquals(true, remoteObject.isSetAttrLongObject()); assertEquals(true, remoteObject.isSetAttrShortObject()); assertEquals(true, remoteObject.isSetAttrString()); } public void testAllTypesSetAndDefaultEMF() throws Exception { // Create an object and set all attributes to non-default values UnsettableAttributes localObject = Model6Factory.eINSTANCE.createUnsettableAttributes(); localObject.setAttrBigDecimal(new BigDecimal("4711.1234")); localObject.setAttrBigInteger(new BigInteger("4711")); localObject.setAttrBoolean(true); localObject.setAttrBooleanObject(true); localObject.setAttrByte((byte)47); localObject.setAttrByteObject((byte)47); localObject.setAttrByteArray(new byte[] { 4, 7, 1, 1 }); localObject.setAttrChar('4'); localObject.setAttrCharacterObject('4'); localObject.setAttrDate(new Date(4711)); localObject.setAttrDouble(4711.1234); localObject.setAttrDoubleObject(4711.1234); localObject.setAttrFloat(4711.1234f); localObject.setAttrFloatObject(4711.1234f); localObject.setAttrInt(4711); localObject.setAttrIntegerObject(4711); localObject.setAttrJavaClass(getClass()); localObject.setAttrJavaObject(new int[] { 4, 7, 1, 1 }); localObject.setAttrLong(4711L); localObject.setAttrLongObject(4711L); localObject.setAttrShort((short)4711); localObject.setAttrShortObject((short)4711); localObject.setAttrString("4711"); assertEquals(true, localObject.isSetAttrBigDecimal()); assertEquals(true, localObject.isSetAttrBigInteger()); assertEquals(true, localObject.isSetAttrBoolean()); assertEquals(true, localObject.isSetAttrBooleanObject()); assertEquals(true, localObject.isSetAttrByte()); assertEquals(true, localObject.isSetAttrByteObject()); assertEquals(true, localObject.isSetAttrByteArray()); assertEquals(true, localObject.isSetAttrChar()); assertEquals(true, localObject.isSetAttrCharacterObject()); assertEquals(true, localObject.isSetAttrDate()); assertEquals(true, localObject.isSetAttrDouble()); assertEquals(true, localObject.isSetAttrDoubleObject()); assertEquals(true, localObject.isSetAttrFloat()); assertEquals(true, localObject.isSetAttrFloatObject()); assertEquals(true, localObject.isSetAttrInt()); assertEquals(true, localObject.isSetAttrIntegerObject()); assertEquals(true, localObject.isSetAttrJavaClass()); assertEquals(true, localObject.isSetAttrJavaObject()); assertEquals(true, localObject.isSetAttrLong()); assertEquals(true, localObject.isSetAttrLongObject()); assertEquals(true, localObject.isSetAttrShort()); assertEquals(true, localObject.isSetAttrShortObject()); assertEquals(true, localObject.isSetAttrString()); // Set all attributes to default values localObject.setAttrBigDecimal(null); localObject.setAttrBigInteger(null); localObject.setAttrBoolean(false); localObject.setAttrBooleanObject(false); localObject.setAttrByte((byte)0); localObject.setAttrByteObject(null); localObject.setAttrByteArray(null); localObject.setAttrChar('0'); localObject.setAttrCharacterObject(null); localObject.setAttrDate(null); localObject.setAttrDouble(0.0); localObject.setAttrDoubleObject(null); localObject.setAttrFloat(0.0f); localObject.setAttrFloatObject(null); localObject.setAttrInt(0); localObject.setAttrIntegerObject(null); localObject.setAttrJavaClass(null); localObject.setAttrJavaObject(null); localObject.setAttrLong(0L); localObject.setAttrLongObject(null); localObject.setAttrShort((short)0); localObject.setAttrShortObject(null); localObject.setAttrString(null); assertEquals(true, localObject.isSetAttrBigDecimal()); assertEquals(true, localObject.isSetAttrBigInteger()); assertEquals(true, localObject.isSetAttrBoolean()); assertEquals(true, localObject.isSetAttrBooleanObject()); assertEquals(true, localObject.isSetAttrByte()); assertEquals(true, localObject.isSetAttrByteObject()); assertEquals(true, localObject.isSetAttrByteArray()); assertEquals(true, localObject.isSetAttrChar()); assertEquals(true, localObject.isSetAttrCharacterObject()); assertEquals(true, localObject.isSetAttrDate()); assertEquals(true, localObject.isSetAttrDouble()); assertEquals(true, localObject.isSetAttrDoubleObject()); assertEquals(true, localObject.isSetAttrFloat()); assertEquals(true, localObject.isSetAttrFloatObject()); assertEquals(true, localObject.isSetAttrInt()); assertEquals(true, localObject.isSetAttrIntegerObject()); assertEquals(true, localObject.isSetAttrJavaClass()); assertEquals(true, localObject.isSetAttrJavaObject()); assertEquals(true, localObject.isSetAttrLong()); assertEquals(true, localObject.isSetAttrLongObject()); assertEquals(true, localObject.isSetAttrShort()); assertEquals(true, localObject.isSetAttrShortObject()); assertEquals(true, localObject.isSetAttrString()); } }