List of usage examples for org.apache.commons.lang SerializationUtils clone
public static Object clone(Serializable 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.ojb.broker.metadata.MetadataManager.java
/** * Merge the given {@link org.apache.ojb.broker.metadata.DescriptorRepository} * files, the source objects will be pushed to the target repository. If parameter * <tt>deep</tt> is set <code>true</code> deep copies of source objects were made. * <br/>//w ww.j a v a2 s . c o m * Note: Using <tt>deep copy mode</tt> all descriptors will be serialized * by using the default class loader to resolve classes. This can be problematic * when classes are loaded by a context class loader. * <p> * Note: All classes within the repository structure have to implement * <code>java.io.Serializable</code> to be able to create a cloned copy. * * @see #isEnablePerThreadChanges * @see #setEnablePerThreadChanges */ public void mergeDescriptorRepository(DescriptorRepository targetRepository, DescriptorRepository sourceRepository, boolean deep) { Iterator it = sourceRepository.iterator(); while (it.hasNext()) { ClassDescriptor cld = (ClassDescriptor) it.next(); if (deep) { //TODO: adopt copy/clone methods for metadata classes? cld = (ClassDescriptor) SerializationUtils.clone(cld); } targetRepository.put(cld.getClassOfObject(), cld); cld.setRepository(targetRepository); } }
From source file:org.apache.ojb.broker.metadata.MetadataManager.java
/** * Returns a copy of the current global/*from w ww.j ava2 s. c o m*/ * {@link org.apache.ojb.broker.metadata.DescriptorRepository} * <p> * Note: All classes within the repository structure have to implement * <code>java.io.Serializable</code> to be able to create a cloned copy. * * @see MetadataManager#getGlobalRepository * @see MetadataManager#getRepository */ public DescriptorRepository copyOfGlobalRepository() { return (DescriptorRepository) SerializationUtils.clone(globalRepository); }
From source file:org.apache.ojb.odmg.ObjectImageTest.java
/** * lock object and lock serialized unmodified version again *///from w ww .ja v a 2s. c o m public void testChangeMainFields_3() throws Exception { String name = "testChangeMainFields_3_" + System.currentTimeMillis(); Date date = new Date(); byte[] cover = new byte[] { 2, 3, 4, 5, 6, 7, 8, 9 }; Book book = new Book(name, date, cover); TransactionExt tx = (TransactionExt) odmg.newTransaction(); tx.begin(); database.makePersistent(book); tx.commit(); Integer version = book.getVersion(); tx.begin(); tx.lock(book, Transaction.WRITE); book = (Book) SerializationUtils.clone(book); tx.lock(book, Transaction.WRITE); tx.commit(); assertEquals(version, book.getVersion()); }
From source file:org.apache.ojb.odmg.ObjectImageTest.java
/** * lock object with reference and lock serialized version again *///from w ww. j av a 2s .co m public void testChangeOneToOneReference_2() throws Exception { String name = "testChangeOneToOneReference_2_" + System.currentTimeMillis(); Date date = new Date(); byte[] cover = new byte[] { 2, 3, 4, 5, 6, 7, 8, 9 }; Book book = new Book(name, date, cover); Publisher publisher = new PublisherImpl(name); book.setPublisher(publisher); TransactionExt tx = (TransactionExt) odmg.newTransaction(); tx.begin(); database.makePersistent(book); tx.commit(); // System.err.println("### 1. commit, insert new object"); Integer versionBook = book.getVersion(); Integer versionPublisher = book.getPublisher().getVersion(); tx.begin(); tx.lock(book, Transaction.WRITE); // nothing changed, so no need to update objects book = (Book) SerializationUtils.clone(book); tx.lock(book, Transaction.WRITE); tx.commit(); assertEquals(versionBook, book.getVersion()); assertEquals(versionPublisher, book.getVersion()); }
From source file:org.apache.ojb.odmg.ObjectImageTest.java
/** * lock object with reference, change reference only *//*from w w w . j ava 2s .co m*/ public void testChangeOneToOneReference_3() throws Exception { String name = "testChangeOneToOneReference_2_" + System.currentTimeMillis(); Date date = new Date(); byte[] cover = new byte[] { 2, 3, 4, 5, 6, 7, 8, 9 }; Book book = new Book(name, date, cover); Publisher publisher = new PublisherImpl(name); book.setPublisher(publisher); TransactionExt tx = (TransactionExt) odmg.newTransaction(); tx.begin(); database.makePersistent(book); tx.commit(); // System.err.println("### 1. commit, insert new object"); Integer versionBook = book.getVersion(); Integer versionPublisher = book.getPublisher().getVersion(); tx.begin(); tx.lock(book, Transaction.WRITE); // nothing changed, so no need to update objects book = (Book) SerializationUtils.clone(book); Publisher p = book.getPublisher(); p.setName(name + "_updated"); // not needed to re-lock, because nothing changed, but // if we lock Book no update should be done, because nothing changed tx.lock(book, Transaction.WRITE); // we have to re-lock the changed objects, because it was serialized tx.lock(p, Transaction.WRITE); tx.commit(); // no changes made in Book assertEquals(versionBook, book.getVersion()); // publisher should be updated assertEquals(new Integer(versionPublisher.intValue() + 1), p.getVersion()); }
From source file:org.apache.ojb.odmg.ObjectImageTest.java
/** * lock object with reference, replace reference only *///from w ww . ja v a 2s. c o m public void testReplaceOneToOneReference_2() throws Exception { String name = "testChangeOneToOneReference_2_" + System.currentTimeMillis(); Date date = new Date(); byte[] cover = new byte[] { 2, 3, 4, 5, 6, 7, 8, 9 }; Book book = new Book(name, date, cover); Publisher publisher = new PublisherImpl(name); book.setPublisher(publisher); TransactionExt tx = (TransactionExt) odmg.newTransaction(); tx.begin(); database.makePersistent(book); tx.commit(); // System.err.println("### 1. commit, insert new object"); Integer versionBook = book.getVersion(); Integer versionPublisher = book.getPublisher().getVersion(); tx.begin(); tx.lock(book, Transaction.WRITE); book = (Book) SerializationUtils.clone(book); Publisher p = new PublisherImpl(name + "_new"); // set new Publisher instance book.setPublisher(p); // not needed to re-lock, because nothing changed, but // if we lock Book no update should be done, because nothing changed tx.lock(book, Transaction.WRITE); // we have to re-lock the changed objects, because it was serialized tx.lock(p, Transaction.WRITE); tx.commit(); // changes made in Book assertEquals(new Integer(versionBook.intValue() + 1), book.getVersion()); // publisher should not be updated, because it was replaced assertEquals(versionPublisher, p.getVersion()); }
From source file:org.apache.streams.elasticsearch.test.DatumFromMetadataProcessorIT.java
@Test public void testSerializability() { DatumFromMetadataProcessor processor = new DatumFromMetadataProcessor(testConfiguration); DatumFromMetadataProcessor clone = (DatumFromMetadataProcessor) SerializationUtils.clone(processor); }
From source file:org.apache.streams.elasticsearch.test.TestDocumentToMetadataProcessor.java
@Test public void testSerializability() { DocumentToMetadataProcessor processor = new DocumentToMetadataProcessor(); DocumentToMetadataProcessor clone = (DocumentToMetadataProcessor) SerializationUtils.clone(processor); }
From source file:org.apache.streams.elasticsearch.test.TestMetadataFromDocumentProcessor.java
@Test public void testSerializability() { MetadataFromDocumentProcessor processor = new MetadataFromDocumentProcessor(); MetadataFromDocumentProcessor clone = (MetadataFromDocumentProcessor) SerializationUtils.clone(processor); }
From source file:org.apache.torque.criteria.CriteriaTest.java
/** * Test that serialization works./*from w w w.ja va2 s . co m*/ */ public void testSerialization() { c.setOffset(10); c.setLimit(11); c.setIgnoreCase(true); c.setSingleRecord(true); c.setDbName("myDB"); c.setAll(); c.setDistinct(); c.addSelectColumn(new ColumnImpl("Author", "NAME")); c.addSelectColumn(new ColumnImpl("Author", "AUTHOR_ID")); c.addDescendingOrderByColumn(new ColumnImpl("Author", "NAME")); c.addAscendingOrderByColumn(new ColumnImpl("Author", "AUTHOR_ID")); c.addAlias("Writer", "Author"); c.addAsColumn("AUTHOR_NAME", new ColumnImpl("Author", "NAME")); c.addJoin(new ColumnImpl("Author", "AUTHOR_ID"), new ColumnImpl("Book", "AUTHOR_ID"), Criteria.INNER_JOIN); c.where(new ColumnImpl("Author", "NAME"), "author%", Criteria.LIKE); c.addFrom(new FromElement("Author")); // Some direct Criterion checks Criterion cn = c.getTopLevelCriterion(); cn.setIgnoreCase(true); assertEquals("author%", cn.getRValue()); assertEquals(Criteria.LIKE, cn.getComparison()); Criterion cnDirectClone = (Criterion) SerializationUtils.clone(cn); assertEquals(cn, cnDirectClone); // Clone the object Criteria cClone = (Criteria) SerializationUtils.clone(c); // Check the clone assertEquals(c.getTopLevelCriterion(), cClone.getTopLevelCriterion()); assertEquals(10, cClone.getOffset()); assertEquals(c.getOffset(), cClone.getOffset()); assertEquals(11, cClone.getLimit()); assertEquals(c.getLimit(), cClone.getLimit()); assertEquals(true, cClone.isIgnoreCase()); assertEquals(c.isIgnoreCase(), cClone.isIgnoreCase()); assertEquals(true, cClone.isSingleRecord()); assertEquals(c.isSingleRecord(), cClone.isSingleRecord()); assertEquals("myDB", cClone.getDbName()); assertEquals(c.getDbName(), cClone.getDbName()); List<String> selectModifiersClone = cClone.getSelectModifiers(); assertTrue(selectModifiersClone.contains(Criteria.ALL.toString())); assertTrue(selectModifiersClone.contains(Criteria.DISTINCT.toString())); assertEquals(c.getSelectModifiers(), cClone.getSelectModifiers()); List<Column> selectColumnsClone = cClone.getSelectColumns(); assertTrue(selectColumnsClone.contains(new ColumnImpl("Author", "NAME"))); assertTrue(selectColumnsClone.contains(new ColumnImpl("Author", "AUTHOR_ID"))); assertEquals(c.getSelectColumns(), cClone.getSelectColumns()); List<OrderBy> orderByColumnsClone = cClone.getOrderByColumns(); assertTrue(orderByColumnsClone.contains(new OrderBy(new ColumnImpl("Author.NAME"), SqlEnum.DESC, false))); assertTrue( orderByColumnsClone.contains(new OrderBy(new ColumnImpl("Author.AUTHOR_ID"), SqlEnum.ASC, false))); assertEquals(c.getOrderByColumns(), cClone.getOrderByColumns()); Map<String, Object> aliasesClone = cClone.getAliases(); assertTrue(aliasesClone.containsKey("Writer")); assertEquals("Author", aliasesClone.get("Writer")); assertEquals(c.getAliases(), cClone.getAliases()); Map<String, Column> asColumnsClone = cClone.getAsColumns(); assertTrue(asColumnsClone.containsKey("AUTHOR_NAME")); assertEquals(new ColumnImpl("Author", "NAME"), asColumnsClone.get("AUTHOR_NAME")); assertEquals(c.getAsColumns(), cClone.getAsColumns()); List<FromElement> fromElementsClone = new UniqueList<FromElement>(); fromElementsClone.add(new FromElement("Author")); assertEquals(c.getFromElements(), fromElementsClone); // Check Joins List<Join> joinsClone = cClone.getJoins(); Join joinClone = joinsClone.get(0); assertEquals(new ColumnImpl("Author", "AUTHOR_ID"), joinClone.getJoinCondition().getLValue()); assertEquals(new ColumnImpl("Book", "AUTHOR_ID"), joinClone.getJoinCondition().getRValue()); assertEquals(Criteria.INNER_JOIN, joinClone.getJoinType()); assertEquals(c.getJoins(), cClone.getJoins()); // Some Criterion checks Criterion cnClone = cClone.getTopLevelCriterion(); assertEquals("author%", cnClone.getRValue()); assertEquals(Criteria.LIKE, cnClone.getComparison()); assertEquals(cn.isIgnoreCase(), cnClone.isIgnoreCase()); // Confirm that equals() checks all of the above. assertEquals(c, cClone); // Check hashCode() too. assertEquals(c.hashCode(), cClone.hashCode()); }