Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/hibernate/test/dynamicentity/tuplizer/MyEntityInstantiator.java


1   package org.hibernate.test.dynamicentity.tuplizer;
2   
3   import org.hibernate.tuple.Instantiator;
4   import org.hibernate.test.dynamicentity.Customer;
5   import org.hibernate.test.dynamicentity.ProxyHelper;
6   import org.hibernate.test.dynamicentity.Company;
7   import org.hibernate.test.dynamicentity.DataProxyHandler;
8   import org.hibernate.test.dynamicentity.Address;
9   import org.hibernate.test.dynamicentity.Person;
10  import org.hibernate.util.ReflectHelper;
11  import org.hibernate.HibernateException;
12  
13  import java.io.Serializable;
14  import java.lang.reflect.Proxy;
15  import java.lang.reflect.InvocationHandler;
16  
17  /**
18   * @author <a href="mailto:steve@hibernate.org">Steve Ebersole </a>
19   */
20  public class MyEntityInstantiator implements Instantiator {
21    private final String entityName;
22  
23    public MyEntityInstantiator(String entityName) {
24      this.entityName = entityName;
25    }
26  
27    public Object instantiate(Serializable id) {
28      if ( Person.class.getName().equals( entityName ) ) {
29        return ProxyHelper.newPersonProxy( id );
30      }
31      if ( Customer.class.getName().equals( entityName ) ) {
32        return ProxyHelper.newCustomerProxy( id );
33      }
34      else if ( Company.class.getName().equals( entityName ) ) {
35        return ProxyHelper.newCompanyProxy( id );
36      }
37      else if ( Address.class.getName().equals( entityName ) ) {
38        return ProxyHelper.newAddressProxy( id );
39      }
40      else {
41        throw new IllegalArgumentException( "unknown entity for instantiation [" + entityName + "]" );
42      }
43    }
44  
45    public Object instantiate() {
46      return instantiate( null );
47    }
48  
49    public boolean isInstance(Object object) {
50      String resolvedEntityName = null;
51      if ( Proxy.isProxyClass( object.getClass() ) ) {
52        InvocationHandler handler = Proxy.getInvocationHandler( object );
53        if ( DataProxyHandler.class.isAssignableFrom( handler.getClass() ) ) {
54          DataProxyHandler myHandler = ( DataProxyHandler ) handler;
55          resolvedEntityName = myHandler.getEntityName();
56        }
57      }
58      try {
59        return ReflectHelper.classForName( entityName ).isInstance( object );
60      }
61      catch( Throwable t ) {
62        throw new HibernateException( "could not get handle to entity-name as interface : " + t );
63      }
64  
65  //    return entityName.equals( resolvedEntityName );
66    }
67  }