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

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

Introduction

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

Prototype

public static Object clone(Serializable 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.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());
}