1 /* 2 * Hibernate, Relational Persistence for Idiomatic Java 3 * 4 * Copyright (c) 2008, Red Hat Middleware LLC or third-party contributors as 5 * indicated by the @author tags or express copyright attribution 6 * statements applied by the authors. All third-party contributions are 7 * distributed under license by Red Hat Middleware LLC. 8 * 9 * This copyrighted material is made available to anyone wishing to use, modify, 10 * copy, or redistribute it subject to the terms and conditions of the GNU 11 * Lesser General Public License, as published by the Free Software Foundation. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 16 * for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License 19 * along with this distribution; if not, write to: 20 * Free Software Foundation, Inc. 21 * 51 Franklin Street, Fifth Floor 22 * Boston, MA 02110-1301 USA 23 * 24 */ 25 package org.hibernate.bytecode.cglib; 26 27 import org.hibernate.bytecode.ReflectionOptimizer; 28 import net.sf.cglib.reflect.FastClass; 29 import org.hibernate.InstantiationException; 30 31 import java.io.Serializable; 32 import java.io.ObjectOutputStream; 33 import java.io.IOException; 34 import java.io.ObjectInputStream; 35 36 /** 37 * The {@link ReflectionOptimizer.InstantiationOptimizer} implementation for CGLIB 38 * which simply acts as an adpater to the {@link FastClass} class. 39 * 40 * @author Steve Ebersole 41 */ 42 public class InstantiationOptimizerAdapter implements ReflectionOptimizer.InstantiationOptimizer, Serializable { 43 private FastClass fastClass; 44 45 public InstantiationOptimizerAdapter(FastClass fastClass) { 46 this.fastClass = fastClass; 47 } 48 49 public Object newInstance() { 50 try { 51 return fastClass.newInstance(); 52 } 53 catch ( Throwable t ) { 54 throw new InstantiationException( 55 "Could not instantiate entity with CGLIB optimizer: ", 56 fastClass.getJavaClass(), 57 t 58 ); 59 } 60 } 61 62 private void writeObject(ObjectOutputStream out) throws IOException { 63 out.writeObject( fastClass.getJavaClass() ); 64 } 65 66 private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { 67 Class beanClass = ( Class ) in.readObject(); 68 fastClass = FastClass.create( beanClass ); 69 } 70 }