1 22 package org.jboss.ejb3.entity; 23 24 import java.io.Serializable ; 25 import javax.persistence.EntityManager; 26 import javax.persistence.EntityTransaction; 27 import javax.persistence.FlushModeType; 28 import javax.persistence.LockModeType; 29 import org.hibernate.Session; 30 import org.hibernate.ejb.HibernateEntityManager; 31 import org.jboss.ejb3.stateful.StatefulBeanContext; 32 33 38 public class ExtendedEntityManager implements EntityManager, HibernateSession, Serializable , ExtendedPersistenceContext 39 { 40 private String identity; 41 42 public ExtendedEntityManager(String name) 43 { 44 this.identity = name; 45 } 46 47 public ExtendedEntityManager() 48 { 49 } 50 51 public ManagedEntityManagerFactory getFactory() 52 { 53 throw new RuntimeException ("NOT IMPLEMENTED"); 54 } 55 56 public EntityManager getPersistenceContext() 57 { 58 StatefulBeanContext beanContext = StatefulBeanContext.currentBean.get(); 59 EntityManager persistenceContext = beanContext.getExtendedPersistenceContext(identity); 60 if (persistenceContext == null) 61 throw new RuntimeException ("Unable to determine persistenceContext: " + identity 62 + " in injected SFSB: " + beanContext.getContainer().getObjectName()); 63 return persistenceContext; 64 } 65 66 68 public Session getHibernateSession() 69 { 70 if (getPersistenceContext() instanceof HibernateEntityManager) 71 { 72 return ((HibernateEntityManager) getPersistenceContext()).getSession(); 73 } 74 throw new RuntimeException ("ILLEGAL ACTION: Not a Hibernate persistence provider"); 75 } 76 77 public void joinTransaction() 78 { 79 getPersistenceContext().joinTransaction(); 80 } 81 82 public void clear() 83 { 84 getPersistenceContext().clear(); 85 } 86 87 public void lock(Object entity, LockModeType lockMode) 88 { 89 getPersistenceContext().lock(entity, lockMode); 90 } 91 92 public FlushModeType getFlushMode() 93 { 94 return getPersistenceContext().getFlushMode(); 95 } 96 97 public <T> T getReference(Class <T> entityClass, Object primaryKey) 98 { 99 return getPersistenceContext().getReference(entityClass, primaryKey); 100 } 101 102 public void persist(Object entity) 103 { 104 getPersistenceContext().persist(entity); 105 } 106 107 public <T> T merge(T entity) 108 { 109 return getPersistenceContext().merge(entity); 110 } 111 112 public void remove(Object entity) 113 { 114 getPersistenceContext().remove(entity); 115 } 116 117 public <T> T find(Class <T> entityClass, Object primaryKey) 118 { 119 return getPersistenceContext().find(entityClass, primaryKey); 120 } 121 122 public void flush() 123 { 124 getPersistenceContext().flush(); 125 } 126 127 public javax.persistence.Query createQuery(String ejbqlString) 128 { 129 return getPersistenceContext().createQuery(ejbqlString); 130 } 131 132 public javax.persistence.Query createNamedQuery(String name) 133 { 134 return getPersistenceContext().createNamedQuery(name); 135 } 136 137 public javax.persistence.Query createNativeQuery(String sqlString) 138 { 139 return getPersistenceContext().createNativeQuery(sqlString); 140 } 141 142 public javax.persistence.Query createNativeQuery(String sqlString, Class resultClass) 143 { 144 return getPersistenceContext().createNativeQuery(sqlString, resultClass); 145 } 146 147 public javax.persistence.Query createNativeQuery(String sqlString, String resultSetMapping) 148 { 149 return getPersistenceContext().createNativeQuery(sqlString, resultSetMapping); 150 } 151 152 public void refresh(Object entity) 153 { 154 getPersistenceContext().refresh(entity); 155 } 156 157 public boolean contains(Object entity) 158 { 159 return getPersistenceContext().contains(entity); 160 } 161 162 public void close() 163 { 164 throw new IllegalStateException ("It is illegal to close an injected EntityManager"); 165 } 166 167 public boolean isOpen() 168 { 169 return getPersistenceContext().isOpen(); 170 } 171 172 public EntityTransaction getTransaction() 173 { 174 return getPersistenceContext().getTransaction(); 175 } 176 177 public void setFlushMode(FlushModeType flushMode) 178 { 179 getPersistenceContext().setFlushMode(flushMode); 180 } 181 182 public Object getDelegate() 183 { 184 return getPersistenceContext(); 185 } 186 187 } 188 189 | Popular Tags |