Example usage for org.apache.commons.lang3 SerializationUtils clone

List of usage examples for org.apache.commons.lang3 SerializationUtils clone

Introduction

In this page you can find the example usage for org.apache.commons.lang3 SerializationUtils clone.

Prototype

public static <T extends Serializable> T clone(final T object) 

Source Link

Document

Deep clone an Object using serialization.

This is many times slower than writing clone methods by hand on all objects in your object graph.

Usage

From source file:org.apache.syncope.fit.core.reference.VirAttrITCase.java

@Test
public void issueSYNCOPE397() {
    ResourceTO csv = resourceService.read(RESOURCE_NAME_CSV);
    MappingTO origMapping = SerializationUtils.clone(csv.getProvisions().get(0).getMapping());
    try {//from  ww  w . java2s .c o  m
        // change mapping of resource-csv
        assertNotNull(origMapping);
        for (MappingItemTO item : csv.getProvisions().get(0).getMapping().getItems()) {
            if ("email".equals(item.getIntAttrName())) {
                // unset internal attribute mail and set virtual attribute virtualdata as mapped to external email
                item.setIntMappingType(IntMappingType.UserVirtualSchema);
                item.setIntAttrName("virtualdata");
                item.setPurpose(MappingPurpose.BOTH);
                item.setExtAttrName("email");
            }
        }

        resourceService.update(csv);
        csv = resourceService.read(RESOURCE_NAME_CSV);
        assertNotNull(csv.getProvisions().get(0).getMapping());

        boolean found = false;
        for (MappingItemTO item : csv.getProvisions().get(0).getMapping().getItems()) {
            if ("email".equals(item.getExtAttrName()) && "virtualdata".equals(item.getIntAttrName())) {
                found = true;
            }
        }

        assertTrue(found);

        // create a new user
        UserTO userTO = UserITCase.getUniqueSampleTO("syncope397@syncope.apache.org");
        userTO.getAuxClasses().add("csv");
        userTO.getResources().clear();
        userTO.getMemberships().clear();
        userTO.getDerAttrs().clear();
        userTO.getVirAttrs().clear();

        userTO.getDerAttrs().add(attrTO("csvuserid", null));
        userTO.getDerAttrs().add(attrTO("cn", null));
        userTO.getVirAttrs().add(attrTO("virtualdata", "test@testone.org"));
        // assign resource-csv to user
        userTO.getResources().add(RESOURCE_NAME_CSV);
        // save user
        UserTO created = createUser(userTO);
        // make std controls about user
        assertNotNull(created);
        assertTrue(RESOURCE_NAME_CSV.equals(created.getResources().iterator().next()));
        // update user
        UserTO toBeUpdated = userService.read(created.getKey());
        UserMod userMod = new UserMod();
        userMod.setKey(toBeUpdated.getKey());
        userMod.setPassword("password234");
        // assign new resource to user
        userMod.getResourcesToAdd().add(RESOURCE_NAME_WS2);
        //modify virtual attribute
        userMod.getVirAttrsToRemove().add("virtualdata");
        userMod.getVirAttrsToUpdate().add(attrMod("virtualdata", "test@testoneone.com"));

        // check Syncope change password
        StatusMod pwdPropRequest = new StatusMod();
        pwdPropRequest.setOnSyncope(true);
        pwdPropRequest.getResourceNames().add(RESOURCE_NAME_WS2);
        userMod.setPwdPropRequest(pwdPropRequest);

        toBeUpdated = updateUser(userMod);
        assertNotNull(toBeUpdated);
        assertEquals("test@testoneone.com", toBeUpdated.getVirAttrs().iterator().next().getValues().get(0));
        // check if propagates correctly with assertEquals on size of tasks list
        assertEquals(2, toBeUpdated.getPropagationStatusTOs().size());
    } finally {
        // restore mapping of resource-csv
        csv.getProvisions().get(0).setMapping(origMapping);
        resourceService.update(csv);
    }
}

From source file:org.apache.syncope.fit.core.ResourceITCase.java

@Test
public void history() {
    List<ResourceHistoryConfTO> history = resourceHistoryService.list(RESOURCE_NAME_LDAP);
    assertNotNull(history);/*from ww  w  .  j  a v a  2s  .c o  m*/
    int pre = history.size();

    ResourceTO ldap = resourceService.read(RESOURCE_NAME_LDAP);
    TraceLevel originalTraceLevel = SerializationUtils.clone(ldap.getUpdateTraceLevel());
    assertEquals(TraceLevel.ALL, originalTraceLevel);
    ProvisionTO originalProvision = SerializationUtils.clone(ldap.getProvision(AnyTypeKind.USER.name()).get());
    assertEquals(ObjectClass.ACCOUNT_NAME, originalProvision.getObjectClass());
    boolean originalFlag = ldap.isRandomPwdIfNotProvided();
    assertTrue(originalFlag);

    ldap.setUpdateTraceLevel(TraceLevel.FAILURES);
    ldap.getProvision(AnyTypeKind.USER.name()).get().setObjectClass("ANOTHER");
    ldap.setRandomPwdIfNotProvided(false);
    resourceService.update(ldap);

    ldap = resourceService.read(RESOURCE_NAME_LDAP);
    assertNotEquals(originalTraceLevel, ldap.getUpdateTraceLevel());
    assertNotEquals(originalProvision.getObjectClass(),
            ldap.getProvision(AnyTypeKind.USER.name()).get().getObjectClass());
    assertNotEquals(originalFlag, ldap.isRandomPwdIfNotProvided());

    history = resourceHistoryService.list(RESOURCE_NAME_LDAP);
    assertEquals(pre + 1, history.size());

    resourceHistoryService.restore(history.get(0).getKey());

    ldap = resourceService.read(RESOURCE_NAME_LDAP);
    assertEquals(originalTraceLevel, ldap.getUpdateTraceLevel());
    assertEquals(originalProvision.getObjectClass(),
            ldap.getProvision(AnyTypeKind.USER.name()).get().getObjectClass());
    assertEquals(originalFlag, ldap.isRandomPwdIfNotProvided());
}

From source file:org.apache.syncope.fit.core.SyncTaskITCase.java

@Test
public void reconcileFromScriptedSQL() {
    // 0. reset sync token and set MappingItemTransformer
    ResourceTO resource = resourceService.read(RESOURCE_NAME_DBSCRIPTED);
    ResourceTO originalResource = SerializationUtils.clone(resource);
    ProvisionTO provision = resource.getProvision("PRINTER");
    assertNotNull(provision);//from w  ww. j  a  va  2  s. c  o  m

    try {
        provision.setSyncToken(null);

        MappingItemTO mappingItem = IterableUtils.find(provision.getMapping().getItems(),
                new Predicate<MappingItemTO>() {

                    @Override
                    public boolean evaluate(final MappingItemTO object) {
                        return "location".equals(object.getIntAttrName());
                    }
                });
        assertNotNull(mappingItem);
        mappingItem.getMappingItemTransformerClassNames().clear();
        mappingItem.getMappingItemTransformerClassNames().add(PrefixMappingItemTransformer.class.getName());

        resourceService.update(resource);

        // 1. create printer on external resource
        AnyObjectTO anyObjectTO = AnyObjectITCase.getSampleTO("sync");
        String originalLocation = anyObjectTO.getPlainAttrMap().get("location").getValues().get(0);
        assertFalse(originalLocation.startsWith(PrefixMappingItemTransformer.PREFIX));

        anyObjectTO = createAnyObject(anyObjectTO).getAny();
        assertNotNull(anyObjectTO);

        // 2. verify that PrefixMappingItemTransformer was applied during propagation
        // (location starts with given prefix on external resource)
        ConnObjectTO connObjectTO = resourceService.readConnObject(RESOURCE_NAME_DBSCRIPTED,
                anyObjectTO.getType(), anyObjectTO.getKey());
        assertFalse(anyObjectTO.getPlainAttrMap().get("location").getValues().get(0)
                .startsWith(PrefixMappingItemTransformer.PREFIX));
        assertTrue(connObjectTO.getPlainAttrMap().get("location").getValues().get(0)
                .startsWith(PrefixMappingItemTransformer.PREFIX));

        // 3. unlink any existing printer and delete from Syncope (printer is now only on external resource)
        PagedResult<AnyObjectTO> matchingPrinters = anyObjectService.search(new AnySearchQuery.Builder()
                .realm(SyncopeConstants.ROOT_REALM).fiql(SyncopeClient
                        .getAnyObjectSearchConditionBuilder("PRINTER").is("location").equalTo("sync*").query())
                .build());
        assertTrue(matchingPrinters.getSize() > 0);
        for (AnyObjectTO printer : matchingPrinters.getResult()) {
            DeassociationPatch deassociationPatch = new DeassociationPatch();
            deassociationPatch.setKey(printer.getKey());
            deassociationPatch.setAction(ResourceDeassociationAction.UNLINK);
            deassociationPatch.getResources().add(RESOURCE_NAME_DBSCRIPTED);
            anyObjectService.deassociate(deassociationPatch);
            anyObjectService.delete(printer.getKey());
        }

        // 4. synchronize
        execProvisioningTask(taskService, 28L, 50, false);

        // 5. verify that printer was re-created in Syncope (implies that location does not start with given prefix,
        // hence PrefixMappingItemTransformer was applied during sync)
        matchingPrinters = anyObjectService.search(new AnySearchQuery.Builder()
                .realm(SyncopeConstants.ROOT_REALM).fiql(SyncopeClient
                        .getAnyObjectSearchConditionBuilder("PRINTER").is("location").equalTo("sync*").query())
                .build());
        assertTrue(matchingPrinters.getSize() > 0);

        // 6. verify that synctoken was updated
        assertNotNull(resourceService.read(RESOURCE_NAME_DBSCRIPTED).getProvision(anyObjectTO.getType())
                .getSyncToken());
    } finally {
        resourceService.update(originalResource);
    }
}

From source file:org.apache.syncope.fit.core.VirAttrITCase.java

@Test
public void issueSYNCOPE397() {
    ResourceTO csv = resourceService.read(RESOURCE_NAME_CSV);

    // change mapping of resource-csv
    MappingTO origMapping = SerializationUtils.clone(csv.getProvisions().get(0).getMapping());
    try {//  w  ww.  ja v  a  2s .  c  o m
        // remove this mapping
        Optional<ItemTO> email = csv.getProvisions().get(0).getMapping().getItems().stream()
                .filter(item -> "email".equals(item.getIntAttrName())).findFirst();
        if (email.isPresent()) {
            csv.getProvisions().get(0).getMapping().getItems().remove(email.get());
        }

        resourceService.update(csv);
        csv = resourceService.read(RESOURCE_NAME_CSV);
        assertNotNull(csv.getProvisions().get(0).getMapping());

        // create new virtual schema for the resource below
        ProvisionTO provision = csv.getProvision(AnyTypeKind.USER.name()).get();
        assertNotNull(provision);

        VirSchemaTO virSchema = new VirSchemaTO();
        virSchema.setKey("syncope397" + getUUIDString());
        virSchema.setExtAttrName("email");
        virSchema.setResource(RESOURCE_NAME_CSV);
        virSchema.setAnyType(provision.getAnyType());
        virSchema = createSchema(SchemaType.VIRTUAL, virSchema);
        assertNotNull(virSchema);

        AnyTypeClassTO newClass = new AnyTypeClassTO();
        newClass.setKey("syncope397" + getUUIDString());
        newClass.getVirSchemas().add(virSchema.getKey());
        Response response = anyTypeClassService.create(newClass);
        assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatusInfo().getStatusCode());
        newClass = getObject(response.getLocation(), AnyTypeClassService.class, AnyTypeClassTO.class);

        // create a new user
        UserTO userTO = UserITCase.getUniqueSampleTO("397@syncope.apache.org");
        userTO.getAuxClasses().add("csv");
        userTO.getAuxClasses().add(newClass.getKey());
        userTO.getResources().clear();
        userTO.getMemberships().clear();

        userTO.getVirAttrs().clear();
        userTO.getVirAttrs().add(attrTO(virSchema.getKey(), "test@testone.org"));
        // assign resource-csv to user
        userTO.getResources().add(RESOURCE_NAME_CSV);
        // save user
        userTO = createUser(userTO).getEntity();
        // make std controls about user
        assertNotNull(userTO);
        assertTrue(RESOURCE_NAME_CSV.equals(userTO.getResources().iterator().next()));
        assertEquals("test@testone.org", userTO.getVirAttrs().iterator().next().getValues().get(0));

        // update user
        UserTO toBeUpdated = userService.read(userTO.getKey());
        UserPatch userPatch = new UserPatch();
        userPatch.setKey(toBeUpdated.getKey());
        userPatch.setPassword(new PasswordPatch.Builder().value("password234").build());
        // assign new resource to user
        userPatch.getResources().add(new StringPatchItem.Builder().operation(PatchOperation.ADD_REPLACE)
                .value(RESOURCE_NAME_WS2).build());
        // modify virtual attribute
        userPatch.getVirAttrs().add(attrTO(virSchema.getKey(), "test@testoneone.com"));

        // check Syncope change password
        userPatch.setPassword(new PasswordPatch.Builder().value("password234").onSyncope(true)
                .resource(RESOURCE_NAME_WS2).build());

        ProvisioningResult<UserTO> result = updateUser(userPatch);
        assertNotNull(result);
        toBeUpdated = result.getEntity();
        assertTrue(toBeUpdated.getVirAttrs().iterator().next().getValues().contains("test@testoneone.com"));
        // check if propagates correctly with assertEquals on size of tasks list
        assertEquals(2, result.getPropagationStatuses().size());
    } finally {
        // restore mapping of resource-csv
        csv.getProvisions().get(0).setMapping(origMapping);
        resourceService.update(csv);
    }
}

From source file:org.broadleafcommerce.cms.admin.server.handler.StaticAssetCustomPersistenceHandler.java

protected synchronized void createMergedProperties(PersistencePackage persistencePackage,
        DynamicEntityDao dynamicEntityDao, Class<?>[] entityClasses) throws InvocationTargetException,
        ClassNotFoundException, NoSuchMethodException, IllegalAccessException, NoSuchFieldException {
    PersistencePerspective persistencePerspective = persistencePackage.getPersistencePerspective();

    HashMap<String, FieldMetadata> originalProps = (HashMap<String, FieldMetadata>) dynamicEntityDao
            .getMergedProperties(StaticAsset.class.getName(), entityClasses,
                    (ForeignKey) persistencePerspective.getPersistencePerspectiveItems()
                            .get(PersistencePerspectiveItemType.FOREIGNKEY),
                    persistencePerspective.getAdditionalNonPersistentProperties(),
                    persistencePerspective.getAdditionalForeignKeys(), MergedPropertyType.PRIMARY,
                    persistencePerspective.getPopulateToOneFields(), persistencePerspective.getIncludeFields(),
                    persistencePerspective.getExcludeFields(), persistencePerspective.getConfigurationKey(),
                    "");

    //Use SerializationUtils from org.apache.commons.lang3 to fix a ClassLoader problem when run in WebLogic
    mergedProperties = SerializationUtils.clone(originalProps);
    BasicFieldMetadata fieldMetadata = new BasicFieldMetadata();
    fieldMetadata.setFieldType(SupportedFieldType.UPLOAD);
    fieldMetadata.setMutable(true);/*from  www . j  a v  a 2s .  c om*/
    fieldMetadata.setInheritedFromType(StaticAssetImpl.class.getName());
    fieldMetadata.setAvailableToTypes(
            new String[] { StaticAssetImpl.class.getName(), ImageStaticAssetImpl.class.getName() });
    fieldMetadata.setForeignKeyCollection(false);
    fieldMetadata.setMergedPropertyType(MergedPropertyType.PRIMARY);
    fieldMetadata.setName("file");
    fieldMetadata.setFriendlyName("StaticAssetCustomPersistenceHandler_File");
    fieldMetadata.setGroup("StaticAssetCustomPersistenceHandler_Upload");
    fieldMetadata.setExplicitFieldType(SupportedFieldType.UNKNOWN);
    fieldMetadata.setProminent(false);
    fieldMetadata.setBroadleafEnumeration("");
    fieldMetadata.setReadOnly(false);
    fieldMetadata.setVisibility(VisibilityEnum.HIDDEN_ALL);
    fieldMetadata.setRequiredOverride(true);

    mergedProperties.put("file", fieldMetadata);

    BasicFieldMetadata iconMetadata = new BasicFieldMetadata();
    iconMetadata.setFieldType(SupportedFieldType.ASSET);
    iconMetadata.setMutable(true);
    iconMetadata.setInheritedFromType(StaticAssetImpl.class.getName());
    iconMetadata.setAvailableToTypes(
            new String[] { StaticAssetImpl.class.getName(), ImageStaticAssetImpl.class.getName() });
    iconMetadata.setForeignKeyCollection(false);
    iconMetadata.setMergedPropertyType(MergedPropertyType.PRIMARY);
    iconMetadata.setName("picture");
    iconMetadata.setFriendlyName(" ");
    iconMetadata.setGroup("StaticAssetCustomPersistenceHandler_Asset_Details");
    iconMetadata.setExplicitFieldType(SupportedFieldType.UNKNOWN);
    iconMetadata.setProminent(true);
    iconMetadata.setBroadleafEnumeration("");
    iconMetadata.setReadOnly(false);
    iconMetadata.setVisibility(VisibilityEnum.FORM_HIDDEN);
    iconMetadata.setColumnWidth("25");
    iconMetadata.setOrder(0);
    iconMetadata.setRequiredOverride(false);

    mergedProperties.put("picture", iconMetadata);

    BasicFieldMetadata iconLargeMetadata = new BasicFieldMetadata();
    iconLargeMetadata.setFieldType(SupportedFieldType.ASSET);
    iconLargeMetadata.setMutable(true);
    iconLargeMetadata.setInheritedFromType(StaticAssetImpl.class.getName());
    iconLargeMetadata.setAvailableToTypes(
            new String[] { StaticAssetImpl.class.getName(), ImageStaticAssetImpl.class.getName() });
    iconLargeMetadata.setForeignKeyCollection(false);
    iconLargeMetadata.setMergedPropertyType(MergedPropertyType.PRIMARY);
    iconLargeMetadata.setName("pictureLarge");
    iconLargeMetadata.setFriendlyName("StaticAssetCustomPersistenceHandler_Preview");
    iconLargeMetadata.setGroup("StaticAssetCustomPersistenceHandler_Preview");
    iconLargeMetadata.setExplicitFieldType(SupportedFieldType.UNKNOWN);
    iconLargeMetadata.setProminent(false);
    iconLargeMetadata.setBroadleafEnumeration("");
    iconLargeMetadata.setReadOnly(true);
    iconLargeMetadata.setVisibility(VisibilityEnum.VISIBLE_ALL);
    iconLargeMetadata.setRequiredOverride(false);
    iconLargeMetadata.setOrder(0);
    iconLargeMetadata.setGroupOrder(0);

    mergedProperties.put("pictureLarge", iconLargeMetadata);

    mergedProperties.put("callbackName", createHiddenField("callbackName"));
    mergedProperties.put("operation", createHiddenField("operation"));
    mergedProperties.put("sandbox", createHiddenField("sandbox"));
    mergedProperties.put("ceilingEntityFullyQualifiedClassname",
            createHiddenField("ceilingEntityFullyQualifiedClassname"));
    mergedProperties.put("parentFolder", createHiddenField("parentFolder"));
    mergedProperties.put("idHolder", createHiddenField("idHolder"));
    mergedProperties.put("customCriteria", createHiddenField("customCriteria"));
    mergedProperties.put("csrfToken", createHiddenField("csrfToken"));
}

From source file:org.csstudio.alarm.beast.msghist.gui.ColumnConfigureAction.java

@Override
public void run() {
    ColumnConfigurer configurer = new ColumnConfigurer(view.getViewSite().getShell(),
            SerializationUtils.clone(view.getColumns()));
    if (configurer.open() == IDialogConstants.OK_ID) {
        view.setColumns(configurer.getColumns());
    }//from   w  ww .  j  a  v  a2 s.  c o m
}

From source file:org.csstudio.alarm.beast.msghist.opiwidget.ColumnsPropertyEditor.java

@Override
protected void openDialog(Shell parentShell, String dialogTitle) {
    ColumnConfigurer dialog = new ColumnConfigurer(parentShell,
            SerializationUtils.clone(columnsInput.getColumns()));

    if (dialog.open() == Window.OK) {
        columnsInput = new ColumnsInput(dialog.getColumns());
    }//w w  w .  ja  v a  2s  .c  om
}

From source file:org.dozer.functional_tests.InheritanceMappingTest.java

@Test
public void testComplexSuperClassMapping() throws Exception {
    mapper = getMapper(new String[] { "dozerBeanMapping.xml" });
    SubClass obj = testDataFactory.getSubClass();
    SubClassPrime objPrime = mapper.map(obj, SubClassPrime.class);
    SubClass obj2 = mapper.map(objPrime, SubClass.class);
    SubClassPrime objPrime2 = mapper.map(obj2, SubClassPrime.class);

    assertEquals("" + obj.getCustomConvert().getAttribute().getTheDouble(),
            obj2.getCustomConvert().getAttribute().getTheDouble() + "");

    // one-way mapping
    objPrime.setSuperFieldToExcludePrime(null);
    assertEquals(objPrime, objPrime2);//from w  ww. ja  va 2s.co  m

    // Pass by reference
    obj = testDataFactory.getSubClass();
    SubClass subClassClone = (SubClass) SerializationUtils.clone(obj);
    objPrime = mapper.map(obj, SubClassPrime.class);
    mapper.map(objPrime, obj);
    obj.setCustomConvert(null);
    subClassClone.setCustomConvert(null);
    // more objects should be added to the clone from the ArrayList
    TheFirstSubClass fsc = newInstance(TheFirstSubClass.class);
    fsc.setS("s");
    subClassClone.getTestObject().getHintList().add(fsc);
    subClassClone.getTestObject().getHintList().add(fsc);
    subClassClone.getTestObject().getEqualNamedList().add("1value");
    subClassClone.getTestObject().getEqualNamedList().add("2value");
    int[] pa = { 0, 1, 2, 3, 4, 0, 1, 2, 3, 4 };
    int[] intArray = { 1, 1, 1, 1 };
    Integer[] integerArray = { new Integer(1), new Integer(1), new Integer(1), new Integer(1) };
    subClassClone.getTestObject().setAnArray(intArray);
    subClassClone.getTestObject().setArrayForLists(integerArray);
    subClassClone.getTestObject().setPrimArray(pa);
    subClassClone.getTestObject().setBlankDate(null);
    subClassClone.getTestObject().setBlankStringToLong(null);
    subClassClone.getSuperList().add("one");
    subClassClone.getSuperList().add("two");
    subClassClone.getSuperList().add("three");
    // since we copy by reference the attribute copyByReference we need to null it out. The clone method above creates
    // two versions of it...
    // which is incorrect
    obj.getTestObject().setCopyByReference(null);
    subClassClone.getTestObject().setCopyByReference(null);
    obj.getTestObject().setCopyByReferenceDeep(null);
    subClassClone.getTestObject().setCopyByReferenceDeep(null);
    obj.getTestObject().setGlobalCopyByReference(null);
    subClassClone.getTestObject().setGlobalCopyByReference(null);
    // null out string array because we get NPE since a NULL value in the String []
    obj.getTestObject().setStringArrayWithNullValue(null);
    subClassClone.getTestObject().setStringArrayWithNullValue(null);
    subClassClone.getTestObject().setExcludeMeOneWay("excludeMeOneWay");
    assertEquals(subClassClone, obj);
}

From source file:org.dozer.functional_tests.MapperTest.java

@Test
public void testMappingNoDestSpecified() throws Exception {
    // Map/*from   w  w w. ja v  a 2  s.  c om*/
    House src = testDataFactory.getHouse();
    HomeDescription dest = mapper.map(src, HomeDescription.class);
    House src2 = mapper.map(dest, House.class);
    HomeDescription dest2 = mapper.map(src2, HomeDescription.class);

    long[] prim = { 1, 2, 3, 1, 2, 3 };
    // cumulative relationship
    dest.setPrim(prim);
    assertEquals(dest, dest2);

    // By reference
    src = testDataFactory.getHouse();
    House houseClone = SerializationUtils.clone(src);
    dest = mapper.map(src, HomeDescription.class);
    mapper.map(dest, House.class);
    assertEquals(houseClone, src);
}

From source file:org.dozer.functional_tests.MapperTest.java

@Test
public void testGeneralMappingPassByReference() throws Exception {
    // Map/* w ww  . j a v  a  2  s .  com*/
    TestObject to = testDataFactory.getInputGeneralMappingTestObject();
    TestObject toClone = SerializationUtils.clone(to);
    TestObjectPrime prime = mapper.map(to, TestObjectPrime.class);
    mapper.map(prime, to);
    // more objects should be added to the clone from the ArrayList
    TheFirstSubClass fsc = new TheFirstSubClass();
    fsc.setS("s");
    toClone.getHintList().add(fsc);
    toClone.getHintList().add(fsc);
    toClone.getEqualNamedList().add("1value");
    toClone.getEqualNamedList().add("2value");
    int[] pa = { 0, 1, 2, 3, 4, 0, 1, 2, 3, 4 };
    int[] intArray = { 1, 1, 1, 1 };
    Integer[] integerArray = { new Integer(1), new Integer(1), new Integer(1), new Integer(1) };
    toClone.setAnArray(intArray);
    toClone.setArrayForLists(integerArray);
    toClone.setPrimArray(pa);
    toClone.setBlankDate(null);
    toClone.setBlankStringToLong(null);
    // since we copy by reference the attribute copyByReference we need to null it out. The clone method above creates
    // two versions of it...
    // which is incorrect
    to.setCopyByReference(null);
    toClone.setCopyByReference(null);
    to.setCopyByReferenceDeep(null);
    toClone.setCopyByReferenceDeep(null);
    to.setGlobalCopyByReference(null);
    toClone.setGlobalCopyByReference(null);
    // null out string array because we get NPE since a NULL value in the String []
    to.setStringArrayWithNullValue(null);
    toClone.setStringArrayWithNullValue(null);
    toClone.setExcludeMeOneWay("excludeMeOneWay");
    assertEquals(toClone, to);
}