@Override @SuppressWarnings({ "unchecked" }) public S deepCopyNotNull(S value) { return (S) SerializationHelper.clone( value ); }
private void doResultTransformerTest(ResultTransformer transformer, boolean isSingleton) { Map transformerMap = new HashMap(); transformerMap.put( transformer, "" ); assert transformerMap.size() == 1 : "really messed up"; Object old = transformerMap.put( transformer, "value" ); assert old != null && transformerMap.size() == 1 : "apparent QueryKey equals/hashCode issue"; // finally, lets serialize it and see what happens ResultTransformer transformer2 = ( ResultTransformer ) SerializationHelper.clone( transformer ); old = transformerMap.put( transformer2, "new value" ); assert old != null && transformerMap.size() == 1 : "deserialization did not set hashCode or equals properly"; if ( isSingleton ) { assert transformer == transformer2: "deserialization issue for singleton transformer"; } else { assert transformer != transformer2: "deserialization issue for non-singleton transformer"; } assert transformer.equals( transformer2 ): "deep copy issue"; }
@Test public void testClassType() { final Class original = TypeTest.class; final Class copy = (Class) SerializationHelper.clone( original ); final Class different = String.class; runBasicTests( ClassType.INSTANCE, original, copy, different ); }
QueryKey key2 = ( QueryKey ) SerializationHelper.clone( key ); assert key != key2 : "deep copy issue"; old = keyMap.put( key2, "new value" );
@Test public void testProxySerializationAfterSessionClosed() { Session s = openSession(); Transaction t = s.beginTransaction(); DataPoint dp = new DataPoint(); dp.setDescription("a data point"); dp.setX( new BigDecimal(1.0) ); dp.setY( new BigDecimal(2.0) ); s.persist(dp); s.flush(); s.clear(); dp = (DataPoint) s.load( DataPoint.class, new Long( dp.getId() ) ); assertFalse( Hibernate.isInitialized(dp) ); s.close(); SerializationHelper.clone( dp ); s = openSession(); t = s.beginTransaction(); s.delete( dp ); t.commit(); s.close(); }
@Test public void testOrphanDeleteOnSaveOrUpdateAfterSerialization() { Session session = openSession(); Transaction t = session.beginTransaction(); Product prod = new Product( "Widget" ); Part part = new Part( "Widge", "part if a Widget" ); MapKey mapKey = new MapKey( "Top" ); prod.getParts().put( mapKey, part ); Part part2 = new Part( "Get", "another part if a Widget" ); prod.getParts().put( new MapKey( "Bottom" ), part2 ); session.persist( prod ); t.commit(); session.close(); prod.getParts().remove( mapKey ); prod = (Product) SerializationHelper.clone( prod ); session = openSession(); t = session.beginTransaction(); session.saveOrUpdate(prod); t.commit(); session.close(); session = openSession(); t = session.beginTransaction(); assertNull( session.get(Part.class, "Widge") ); assertNotNull( session.get(Part.class, "Get") ); session.delete( session.get(Product.class, "Widget") ); t.commit(); session.close(); }
@Test public void testInitializedProxySerializationAfterSessionClosed() { Session s = openSession(); Transaction t = s.beginTransaction(); DataPoint dp = new DataPoint(); dp.setDescription("a data point"); dp.setX( new BigDecimal(1.0) ); dp.setY( new BigDecimal(2.0) ); s.persist(dp); s.flush(); s.clear(); dp = (DataPoint) s.load( DataPoint.class, new Long( dp.getId() ) ); assertFalse( Hibernate.isInitialized(dp) ); Hibernate.initialize( dp ); assertTrue( Hibernate.isInitialized(dp) ); s.close(); SerializationHelper.clone( dp ); s = openSession(); t = s.beginTransaction(); s.delete( dp ); t.commit(); s.close(); }
prod = (Product) SerializationHelper.clone( prod );
(Map<String, Object>) SerializationHelper.clone( (Serializable) parent );
(Map<String, Object>) SerializationHelper.clone( (Serializable) parent );
holder = (Object[]) SerializationHelper.clone(holder); Session sclone = (Session) holder[0]; dp = (DataPoint) holder[1];
final SimpleEntity deserializedParent = (SimpleEntity) SerializationHelper.clone( parent );
(Map<String, Object>) SerializationHelper.clone( (Serializable) parent );
/** * Tests that serializing an initialized proxy will serialize the target instead. */ @SuppressWarnings("unchecked") @Test public void testInitializedProxySerializationIfTargetInPersistenceContext() { final Session s = openSession(); final Transaction t = s.beginTransaction(); try { final ChildEntity child = s.find( ChildEntity.class, 1L ); final SimpleEntity parent = child.getParent(); // assert we have an uninitialized proxy assertTrue( parent instanceof HibernateProxy ); assertFalse( Hibernate.isInitialized( parent ) ); // Initialize the proxy parent.getName(); assertTrue( Hibernate.isInitialized( parent ) ); // serialize/deserialize the proxy final SimpleEntity deserializedParent = (SimpleEntity) SerializationHelper.clone( parent ); // assert the deserialized object is no longer a proxy, but the target of the proxy assertFalse( deserializedParent instanceof HibernateProxy ); assertEquals( "TheParent", deserializedParent.getName() ); } finally { if ( t.isActive() ) { t.rollback(); } s.close(); } }
final SimpleEntity deserializedParent = (SimpleEntity) SerializationHelper.clone( parent );
@Override @SuppressWarnings({ "unchecked" }) public S deepCopyNotNull(S value) { return (S) SerializationHelper.clone( value ); }
@Override @SuppressWarnings({ "unchecked" }) public S deepCopyNotNull(S value) { return (S) SerializationHelper.clone( value ); }
@Override @SuppressWarnings({ "unchecked" }) public S deepCopyNotNull(S value) { return (S) SerializationHelper.clone( value ); }
/** Performs deep copy of an object using serialization and de-serialization*/ @Override public Object deepCopy(Object value) throws HibernateException { return SerializationHelper.clone((Serializable) value); }