List of usage examples for org.apache.commons.lang3 SerializationUtils clone
public static <T extends Serializable> T clone(final T object)
Deep clone an Object using serialization.
This is many times slower than writing clone methods by hand on all objects in your object graph.
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); }