项目:aries-jpa
文件:JPAHandler.java
@Override
public void startElement(String uri,String localName,String name,Attributes attributes)
throws SAXException {
// Do this setting first as we use it later.
elementName = (localName == null || "".equals(localName)) ? name : localName;
if ("persistence-unit".equals(elementName)) {
String tranTypest = attributes.getValue("transaction-type");
PersistenceUnitTransactionType tranType = tranTypest == null ? null : PersistenceUnitTransactionType.valueOf(tranTypest);
persistenceUnits.push(new PersistenceUnit(bundle,attributes.getValue("name"),tranType));
} else if ("exclude-unlisted-classes".equals(elementName))
persistenceUnits.peek().setExcludeUnlisted(true);
else if ("property".equals(elementName))
persistenceUnits.peek().addProperty(attributes.getValue("name"),attributes.getValue("value"));
}
项目:jspare-vertx-ms-blueprint
文件:JDBCProvider.java
public EntityManagerFactory build() {
Properties properties = createProperties();
DefaultPersistenceUnitInfoImpl persistenceUnitInfo = new DefaultPersistenceUnitInfoImpl(JSPARE_GATEWAY_DATASOURCE);
persistenceUnitInfo.setProperties(properties);
// Using RESOURCE_LOCAL for manage transactions on DAO side.
persistenceUnitInfo.setTransactionType(PersistenceUnitTransactionType.RESOURCE_LOCAL);
// Add all entities to configuration
ClassAnnotationMatchProcessor processor = (c) -> persistenceUnitInfo.addAnnotatedClassName(c);
ClasspathScannerUtils.scanner(ALL_SCAN_QUOTE).matchClassesWithAnnotation(Entity.class,processor)
.scan(NUMBER_CLAsspATH_SCANNER_THREADS);
Map<String,Object> configuration = new HashMap<>();
properties.forEach((k,v) -> configuration.put((String) k,v));
EntityManagerFactory entityManagerFactory = persistenceProvider.createContainerEntityManagerFactory(persistenceUnitInfo,configuration);
return entityManagerFactory;
}
@Contribute(EntityManagerSource.class)
public static void configurePersistenceUnit(
MappedConfiguration<String,PersistenceUnitConfigurer> cfg,final ObjectLocator objectLocator)
{
PersistenceUnitConfigurer configurer = new PersistenceUnitConfigurer()
{
@Override
public void configure(TapestryPersistenceUnitInfo unitInfo)
{
unitInfo.transactionType(PersistenceUnitTransactionType.RESOURCE_LOCAL)
.persistenceProviderClassName("org.eclipse.persistence.jpa.PersistenceProvider")
.excludeUnlistedClasses(false)
.addProperty("javax.persistence.jdbc.user","sa")
.addProperty("javax.persistence.jdbc.password","sa")
.addProperty("javax.persistence.jdbc.driver","org.h2.Driver")
.addProperty("javax.persistence.jdbc.url","jdbc:h2:mem:jpatest_eclipselink")
.addProperty("eclipselink.ddl-generation","create-or-extend-tables")
.addProperty("eclipselink.logging.level","FINE");
unitInfo.getProperties().put("javax.persistence.bean.manager",objectLocator.autobuild(TapestryCDIBeanManagerForJPAEntityListeners.class));
}
};
cfg.add("jpatest",configurer);
}
@Contribute(EntityManagerSource.class)
public static void configurePersistenceUnit(
MappedConfiguration<String,final ObjectLocator objectLocator)
{
PersistenceUnitConfigurer configurer = new PersistenceUnitConfigurer()
{
@Override
public void configure(TapestryPersistenceUnitInfo unitInfo)
{
unitInfo.transactionType(PersistenceUnitTransactionType.RESOURCE_LOCAL)
.persistenceProviderClassName("org.hibernate.jpa.HibernatePersistenceProvider")
.excludeUnlistedClasses(false)
.addProperty("javax.persistence.jdbc.user","jdbc:h2:mem:jpatest_hibernate")
.addProperty("hibernate.hbm2ddl.auto","update")
.addProperty("hibernate.show_sql","true");
unitInfo.getProperties().put(AvailableSettings.CDI_BEAN_MANAGER,configurer);
}
public HsqlDBProvider() {
scan.limitSearchingPathTo(full());
generator = new RuntimePersistenceGenerator("test",PersistenceUnitTransactionType.RESOURCE_LOCAL,getProvider());
setProperties(generator);
generateAnnotedClasses();
for (Class<?> annotatedClass : entities) {
generator.addAnnotatedClass(annotatedClass);
}
if (haveSchema()) {
try {
executeStatement("CREATE SCHEMA " + schema + " AUTHORIZATION DBA;");
} catch (Exception e) {
}
}
}
/**
* Register an entity manager for a factory. Is called during the dynamics
* (either at start or afterwards) to handle the creation of an entity
* manager.
*
* @param factory The factory used
* @param properties The service properties of the factory
*/
private synchronized void register(EntityManagerFactory factory,Map<String,Object> properties) {
if (context == null || transactionManager == null || entityManagers.containsKey(factory)) {
return;
}
String unitName = unitName(properties);
PersistenceUnitTransactionType type = transactionType(properties);
// Proxy an entity manager.
EntityManager manager = proxy(factory,type);
// Register the proxy as service.
Hashtable<String,Object> props = new Hashtable<>();
props.put(UNITNAME,unitName);
ServiceRegistration<EntityManager> sr = context.registerService(
EntityManager.class,manager,props);
entityManagers.put(factory,sr);
}
private void create(Bundle bundle,Context context) {
Map.Entry<String,PersistenceProvider> pp = provider.get(context.deFinition.provider);
// Do the registration of the service asynchronously. Since it may imply all kinds of
// listening actions performed as a result of it,it may block the bundle handling.
// However,indicate that we are in the process of the actions by
// setting the used provider.
context.usedProvider = pp.getKey();
new Thread(() -> {
synchronized (context) {
if (context.usedProvider != null) {
PersistenceUnitInfo info = PersistenceUnitProcessor.getPersistenceUnitInfo(bundle,context.deFinition,pp.getValue());
context.factory = PersistenceUnitProcessor.createFactory(pp.getValue(),info);
Hashtable<String,Object> props = new Hashtable<>();
props.put(EntityManagerFactoryBuilder.JPA_UNIT_NAME,context.deFinition.name);
props.put(PersistenceUnitTransactionType.class.getName(),info.getTransactionType().name());
context.registration = bundle.getBundleContext().registerService(
EntityManagerFactory.class,context.factory,props);
}
}
}).start();
}
项目:tomee
文件:JpaTest.java
public void testJta() throws Exception {
transactionType = PersistenceUnitTransactionType.JTA;
entityManagerFactory = createEntityManagerFactory();
final Object jpaTestObject = getClass().getClassLoader().loadClass("org.apache.openejb.core.cmp.jpa.JpaTestObject").newInstance();
set(jpaTestObject,"EntityManagerFactory",EntityManagerFactory.class,entityManagerFactory);
set(jpaTestObject,"TransactionManager",TransactionManager.class,transactionManager);
set(jpaTestObject,"NonJtaDs",DataSource.class,nonJtaDs);
Thread.currentThread().setContextClassLoader(getClass().getClassLoader());
invoke(jpaTestObject,"setUp");
try {
invoke(jpaTestObject,"jpaLifecycle");
} finally {
invoke(jpaTestObject,"tearDown");
}
}
项目:tomee
文件:JpaTest.java
public void testResourceLocal() throws Exception {
transactionType = PersistenceUnitTransactionType.RESOURCE_LOCAL;
entityManagerFactory = createEntityManagerFactory();
final Object jpaTestObject = getClass().getClassLoader().loadClass("org.apache.openejb.core.cmp.jpa.JpaTestObject").newInstance();
set(jpaTestObject,"tearDown");
}
}
项目:lightmare
文件:PersistenceXmlParserImpl.java
private void decodeTransactionType(
ParsedPersistenceXmlDescriptor persistenceUnit) {
// if transaction type is set already
// use that value
// else
// if JTA DS
// use JTA
// else if NOT JTA DS
// use RESOURCE_LOCAL
// else
// use defaultTransactionType
if (persistenceUnit.getTransactionType() != null) {
return;
}
if (persistenceUnit.getJtaDataSource() != null) {
persistenceUnit
.setTransactionType(PersistenceUnitTransactionType.JTA);
} else if (persistenceUnit.getNonJtaDataSource() != null) {
persistenceUnit
.setTransactionType(PersistenceUnitTransactionType.RESOURCE_LOCAL);
} else {
persistenceUnit.setTransactionType(defaultTransactionType);
}
}
项目:testee.fi
文件:PersistenceUnitInfoImpl.java
/**
* Constructor.
*
* @param rootUrl the URL for the jar file or directory that is the root of the persistence unit.
* @param provider provider class name.
* @param name the persistence unit name.
* @param transactionType the transaction type.
* @param jtaDataSource the JTA data source.
* @param properties the properties.
* @param jarFileUrls <code>jar-file</code> elements from <code>persistence.xml</code>.
* @param mappingFileNames <code>mapping-file</code> elements from <code>persistence.xml</code>.
* @param managedClassNames <code>class</code> elements from <code>persistence.xml</code>.
* @param excludeUnlistedClasses <code>exclude-unlisted-classes</code> element from <code>persistence.xml</code>.
* @param classLoader the class loader to use.
*/
public PersistenceUnitInfoImpl(
final URL rootUrl,final String provider,final String name,final String actualName,final PersistenceUnitTransactionType transactionType,final DataSource jtaDataSource,final Properties properties,final List<URL> jarFileUrls,final List<String> mappingFileNames,final List<String> managedClassNames,final boolean excludeUnlistedClasses,final ClassLoader classLoader
) {
this.rootUrl = rootUrl;
this.provider = provider;
this.name = name;
this.actualName = actualName;
this.transactionType = transactionType;
this.jtaDataSource = jtaDataSource;
this.properties = properties;
this.jarFileUrls = jarFileUrls;
this.mappingFileNames = mappingFileNames;
this.managedClassNames = managedClassNames;
this.excludeUnlistedClasses = excludeUnlistedClasses;
this.classLoader = classLoader;
}
项目:aries-jpa
文件:PersistenceUnit.java
public PersistenceUnit(Bundle bundle,String persistenceUnitName,PersistenceUnitTransactionType transactionType) {
this.bundle = bundle;
this.persistenceUnitName = persistenceUnitName;
this.transactionType = transactionType;
this.props = new Properties();
this.classLoader = bundle.adapt(BundleWiring.class).getClassLoader();
this.classNames = new HashSet<String>();
this.mappingFileNames = new HashSet<String>();
}
项目:aries-jpa
文件:AriesEntityManagerFactoryBuilder.java
private void dataSourceReady(DataSource ds,Object> props) {
if (persistenceUnit.getTransactionType() == PersistenceUnitTransactionType.JTA) {
props.put(JAVAX_PERSISTENCE_JTA_DATASOURCE,ds);
} else {
props.put(JAVAX_PERSISTENCE_NON_JTA_DATASOURCE,ds);
}
createEntityManagerFactory(props);
}
@SuppressWarnings("unchecked")
@Before
public void setup() throws Exception {
when(punit.getPersistenceUnitName()).thenReturn("test-props");
when(punit.getPersistenceProviderClassName())
.thenReturn(ECLIPSE_PERSISTENCE_PROVIDER);
when(punit.getTransactionType()).thenReturn(PersistenceUnitTransactionType.JTA);
when(punit.getBundle()).thenReturn(punitBundle);
when(punit.getProperties()).thenReturn(punitProperties);
when(punitBundle.getBundleContext()).thenReturn(punitContext);
when(punitBundle.getVersion()).thenReturn(Version.parseVersion("1.2.3"));
when(containerContext.registerService(eq(ManagedService.class),any(ManagedService.class),any(Dictionary.class))).thenReturn(msReg);
when(containerContext.getService(dsfRef)).thenReturn(dsf);
when(containerContext.getService(dsRef)).thenReturn(ds);
when(containerContext.createFilter(Mockito.anyString()))
.thenAnswer(new Answer<Filter>() {
@Override
public Filter answer(InvocationOnMock i) throws Throwable {
return FrameworkUtil.createFilter(i.getArguments()[0].toString());
}
});
when(punitContext.registerService(eq(EntityManagerFactory.class),any(EntityManagerFactory.class),any(Dictionary.class))).thenReturn(emfReg);
when(emf.isopen()).thenReturn(true);
Properties jdbcProps = new Properties();
jdbcProps.setProperty("url",JDBC_URL);
jdbcProps.setProperty("user",JDBC_USER);
jdbcProps.setProperty("password",JDBC_PASSWORD);
when(dsf.createDataSource(jdbcProps)).thenReturn(ds);
}
@Test
public void testIncompleteEmfWithoutProps() throws InvalidSyntaxException,ConfigurationException {
when(provider.createContainerEntityManagerFactory(eq(punit),eq(singletonMap(PersistenceUnitTransactionType.class.getName(),JTA))))
.thenReturn(emf);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
containerContext,provider,providerBundle,punit);
assertEquals(ECLIPSE_PERSISTENCE_PROVIDER,emfb.getPersistenceProviderName());
assertEquals(providerBundle,emfb.getPersistenceProviderBundle());
try {
emfb.createEntityManagerFactory(null);
fail("Should throw an exception as incomplete");
} catch (IllegalArgumentException iae) {
// Expected
}
// No EMF created as incomplete
verifyZeroInteractions(emf,emfReg,provider);
emfb.close();
verifyZeroInteractions(emf,provider);
}
@Test
public void testIncompleteEmfWithDSGetsPassed() throws InvalidSyntaxException,JTA))))
.thenReturn(emf);
Map<String,Object> props = new Hashtable<String,Object>();
props.put("javax.persistence.dataSource",ds);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
containerContext,emfb.getPersistenceProviderBundle());
emfb.createEntityManagerFactory(props);
verify(punit).setNonJtaDataSource(ds);
verify(punitContext).registerService(eq(EntityManagerFactory.class),argThat(servicePropsMatcher(JPA_UNIT_NAME,"test-props")));
emfb.close();
verify(emfReg).unregister();
verify(emf).close();
}
@Test
public void testIncompleteEmfWithPropsGetsPassed() throws InvalidSyntaxException,ConfigurationException {
Map<String,Object> providerProps = new HashMap<String,Object>();
providerProps.put(PersistenceUnitTransactionType.class.getName(),JTA);
providerProps.put("hibernate.hbm2ddl.auto","create-drop");
when(provider.createContainerEntityManagerFactory(eq(punit),eq(providerProps))).thenReturn(emf);
Map<String,Object>();
props.put("hibernate.hbm2ddl.auto","create-drop");
props.put("javax.persistence.dataSource",ds);
AriesEntityManagerFactoryBuilder emfb = new AriesEntityManagerFactoryBuilder(
containerContext,punit);
emfb.createEntityManagerFactory(props);
verify(punitContext).registerService(eq(EntityManagerFactory.class),and(argThat(servicePropsMatcher(JPA_UNIT_NAME,"test-props")),argThat(servicePropsMatcher("hibernate.hbm2ddl.auto","create-drop"))));
emfb.close();
verify(emfReg).unregister();
verify(emf).close();
}
项目:aries-jpa
文件:EMFTracker.java
@SuppressWarnings("unchecked")
@Override
public Object addingService(ServiceReference reference) {
String unitName = (String)reference.getProperty(JPA_UNIT_NAME);
if (unitName == null) {
return null;
}
BundleContext puContext = reference.getBundle().getBundleContext();
TrackedEmf tracked = new TrackedEmf();
tracked.emf = (EntityManagerFactory)puContext.getService(reference);
tracked.emsupplier = new EMsupplierImpl(unitName,tracked.emf,coordinator);
tracked.emsupplierReg = puContext.registerService(Emsupplier.class,tracked.emsupplier,getEmsupplierProps(unitName));
EntityManager emProxy = createProxy(tracked.emsupplier);
tracked.emProxyReg = puContext.registerService(EntityManager.class,emProxy,getEmsupplierProps(unitName));
if (getTransactionType(tracked.emf) == PersistenceUnitTransactionType.RESOURCE_LOCAL) {
JpaTemplate txManager = new ResourceLocalJpaTemplate(tracked.emsupplier,coordinator);
tracked.rlTxManagerReg = puContext.registerService(JpaTemplate.class,txManager,rlTxManProps(unitName));
} else {
tracked.tmTracker = new TMTracker(puContext,unitName,coordinator);
tracked.tmTracker.open();
}
return tracked;
}
项目:aries-jpa
文件:EMFTracker.java
/**
*
* @param emf to get type from
* @return
*/
private PersistenceUnitTransactionType getTransactionType(EntityManagerFactory emf) {
try {
PersistenceUnitTransactionType transactionType = (PersistenceUnitTransactionType) emf.getProperties().get(PersistenceUnitTransactionType.class.getName());
if (transactionType == PersistenceUnitTransactionType.RESOURCE_LOCAL) {
return PersistenceUnitTransactionType.RESOURCE_LOCAL;
}
} catch (Exception e) {
LOG.warn("Error while determining the transaction type. Falling back to JTA.",e);
}
return PersistenceUnitTransactionType.JTA;
}
项目:aries-jpa
文件:EmfTrackerTest.java
@SuppressWarnings("unchecked")
@Test
public void testLifecycle() {
BundleContext context = mock(BundleContext.class);
Coordinator coordinator = mock(Coordinator.class);
EMFTracker tracker = new EMFTracker(context,coordinator);
ServiceReference<EntityManagerFactory> ref = mock(ServiceReference.class);
Mockito.when(ref.getProperty(EntityManagerFactoryBuilder.JPA_UNIT_NAME)).thenReturn("testunit");
Mockito.when(ref.getProperty(PersistenceUnitTransactionType.class.getName())).thenReturn("JTA");
Bundle puBundle = mock(Bundle.class);
BundleContext puContext = mock(BundleContext.class);
when(puBundle.getBundleContext()).thenReturn(puContext);
when(ref.getBundle()).thenReturn(puBundle);
EntityManagerFactory emf = mock(EntityManagerFactory.class);
when(puContext.getService(ref)).thenReturn(emf);
ServiceRegistration<?> emsupplierReg = mock(ServiceRegistration.class,"emsupplierReg");
ServiceRegistration<?> emProxyReg = mock(ServiceRegistration.class,"emProxyReg");
when(puContext.registerService(any(Class.class),any(),any(Dictionary.class)))
.thenReturn(emsupplierReg,emProxyReg);
EMFTracker.TrackedEmf tracked = (TrackedEmf)tracker.addingService(ref);
Assert.assertEquals(emf,tracked.emf);
Assert.assertEquals(emsupplierReg,tracked.emsupplierReg);
Assert.assertEquals(emProxyReg,tracked.emProxyReg);
Assert.assertNotNull(tracked.tmTracker);
Assert.assertNull(tracked.rlTxManagerReg);
tracker.removedService(ref,tracked);
verify(emsupplierReg,times(1)).unregister();
verify(emProxyReg,times(1)).unregister();
verify(puContext,times(1)).ungetService(ref);
}
项目:lams
文件:MutablePersistenceUnitInfo.java
@Override
public PersistenceUnitTransactionType getTransactionType() {
if (this.transactionType != null) {
return this.transactionType;
}
else {
return (this.jtaDataSource != null ?
PersistenceUnitTransactionType.JTA : PersistenceUnitTransactionType.RESOURCE_LOCAL);
}
}
项目:vertx-jpa
文件:HibernateEntityManagerFactoryProvider.java
@Override
public Future<EntityManagerFactory> getEntityManagerFactory(String datasourceName) {
Properties properties = createProperties();
PersistenceProvider provider = new HibernatePersistenceProvider();
SmartPersistanceUnitInfo persistenceUnitInfo = new DefaultPersistenceUnitInfoImpl(datasourceName);
persistenceUnitInfo.setProperties(properties);
// Using RESOURCE_LOCAL for manage transactions on DAO side.
persistenceUnitInfo.setTransactionType(PersistenceUnitTransactionType.RESOURCE_LOCAL);
Map<Object,Object> configuration = new HashMap<>();
properties.entrySet().stream().forEach(e -> configuration.put(e.getKey(),e.getValue()));
synchronized (vertx) {
Future<EntityManagerFactory> future = Future.future();
vertx.executeBlocking(f1 -> {
config.getJsonArray("annotated_classes",new JsonArray()).stream()
.forEach(p -> scanAnnotatedClasses(p.toString(),persistenceUnitInfo));
EntityManagerFactory emf = provider.createContainerEntityManagerFactory(persistenceUnitInfo,configuration);
future.complete(emf);
},future.completer());
return future;
}
}
项目:vertx-jpa
文件:DefaultPersistenceUnitInfoImpl.java
@Override
public PersistenceUnitTransactionType getTransactionType() {
if (transactionType != null) {
return transactionType;
} else {
return jtaDataSource != null ? PersistenceUnitTransactionType.JTA : PersistenceUnitTransactionType.RESOURCE_LOCAL;
}
}
项目:jspare-vertx-ms-blueprint
文件:DefaultPersistenceUnitInfoImpl.java
@Override
public PersistenceUnitTransactionType getTransactionType() {
if (transactionType != null) {
return transactionType;
} else {
return jtaDataSource != null ? PersistenceUnitTransactionType.JTA : PersistenceUnitTransactionType.RESOURCE_LOCAL;
}
}
项目:helium
文件:EntityManagerFactoryImpl.java
@SuppressWarnings( "unchecked" )
public EntityManagerFactoryImpl(
SessionFactory sessionFactory,PersistenceUnitTransactionType transactionType,boolean discardOnClose,Class<?> sessionInterceptorClass,Configuration cfg) {
this.sessionFactory = sessionFactory;
this.transactionType = transactionType;
this.discardOnClose = discardOnClose;
this.sessionInterceptorClass = sessionInterceptorClass;
final Iterator<PersistentClass> classes = cfg.getClassMappings();
List<PersistentClass> persistentClasses = new ArrayList<PersistentClass>();
while (classes.hasNext()) {
PersistentClass persistentClass = classes.next();
// Hardcode jBPM classes for Now,but make tidy with a property like "hibernate.ejb.metamodel.excluded.pkgs"
if (persistentClass.getClassName().startsWith("org.jbpm")) {
continue;
} else {
persistentClasses.add(persistentClass);
}
}
//a safe guard till we are confident that metamodel is wll tested
if ( !"disabled".equalsIgnoreCase( cfg.getProperty( "hibernate.ejb.metamodel.generation" ) ) ) {
this.metamodel = metamodelImpl.buildmetamodel( persistentClasses.iterator(),( SessionFactoryImplementor ) sessionFactory );
}
else {
this.metamodel = null;
}
this.criteriaBuilder = new CriteriaBuilderImpl( this );
this.util = new HibernatePersistenceUnitUtil( this );
HashMap<String,Object> props = new HashMap<String,Object>();
addAll( props,( (SessionFactoryImplementor) sessionFactory ).getProperties() );
addAll( props,cfg.getProperties() );
this.properties = Collections.unmodifiableMap( props );
}
项目:spring4-understanding
文件:MutablePersistenceUnitInfo.java
@Override
public PersistenceUnitTransactionType getTransactionType() {
if (this.transactionType != null) {
return this.transactionType;
}
else {
return (this.jtaDataSource != null ?
PersistenceUnitTransactionType.JTA : PersistenceUnitTransactionType.RESOURCE_LOCAL);
}
}
项目:spring4-understanding
文件:LocalContainerEntityManagerfactorybeanTests.java
@Test
public void testApplicationManagedEntityManagerWithJtaTransaction() throws Exception {
Object testEntity = new Object();
// This one's for the tx (shared)
EntityManager sharedEm = mock(EntityManager.class);
given(sharedEm.getTransaction()).willReturn(new NoOpEntityTransaction());
// This is the application-specific one
EntityManager mockEm = mock(EntityManager.class);
given(mockEmf.createEntityManager()).willReturn(sharedEm,mockEm);
LocalContainerEntityManagerfactorybean cefb = parseValidPersistenceUnit();
MutablePersistenceUnitInfo pui = ((MutablePersistenceUnitInfo) cefb.getPersistenceUnitInfo());
pui.setTransactionType(PersistenceUnitTransactionType.JTA);
JpaTransactionManager jpatm = new JpaTransactionManager();
jpatm.setEntityManagerFactory(cefb.getobject());
TransactionStatus txStatus = jpatm.getTransaction(new DefaultTransactionAttribute());
EntityManagerFactory emf = cefb.getobject();
assertSame("EntityManagerFactory reference must be cached after init",emf,cefb.getobject());
assertNotSame("EMF must be proxied",mockEmf,emf);
EntityManager em = emf.createEntityManager();
em.joinTransaction();
assertFalse(em.contains(testEntity));
jpatm.commit(txStatus);
cefb.destroy();
verify(mockEm).joinTransaction();
verify(mockEm).contains(testEntity);
verify(mockEmf).close();
}
项目:spring4-understanding
文件:PersistenceXmlParsingTests.java
@Test
public void testExample4() throws Exception {
SimpleNamingContextBuilder builder = SimpleNamingContextBuilder.emptyActivatedContextBuilder();
DataSource ds = new DriverManagerDataSource();
builder.bind("java:comp/env/jdbc/MyDB",ds);
PersistenceUnitReader reader = new PersistenceUnitReader(
new PathMatchingResourcePatternResolver(),new JndiDataSourceLookup());
String resource = "/org/springframework/orm/jpa/persistence-example4.xml";
PersistenceUnitInfo[] info = reader.readPersistenceUnitInfos(resource);
assertNotNull(info);
assertEquals(1,info.length);
assertEquals("OrderManagement4",info[0].getPersistenceUnitName());
assertEquals(1,info[0].getMappingFileNames().size());
assertEquals("order-mappings.xml",info[0].getMappingFileNames().get(0));
assertEquals(3,info[0].getManagedClassNames().size());
assertEquals("com.acme.Order",info[0].getManagedClassNames().get(0));
assertEquals("com.acme.Customer",info[0].getManagedClassNames().get(1));
assertEquals("com.acme.Item",info[0].getManagedClassNames().get(2));
assertTrue("Exclude unlisted should be true when no value.",info[0].excludeUnlistedClasses());
assertSame(PersistenceUnitTransactionType.RESOURCE_LOCAL,info[0].getTransactionType());
assertEquals(0,info[0].getProperties().keySet().size());
builder.clear();
}
项目:jspare-container
文件:DefaultPersistenceUnitInfoImpl.java
@Override
public PersistenceUnitTransactionType getTransactionType() {
if (transactionType != null) {
return transactionType;
} else {
return jtaDataSource != null ? PersistenceUnitTransactionType.JTA : PersistenceUnitTransactionType.RESOURCE_LOCAL;
}
}
private PersistenceUnitInfo createPersistenceUnitInfo() {
PersistenceUnitInfo persistenceUnitInfo = mock(PersistenceUnitInfo.class);
when(persistenceUnitInfo.getPersistenceUnitRootUrl()).thenReturn(createPersistenceUnitRootUrl());
when(persistenceUnitInfo.getPersistenceUnitName()).thenReturn("annotation-based-field-access");
when(persistenceUnitInfo.getTransactionType())
.thenReturn(PersistenceUnitTransactionType.RESOURCE_LOCAL);
when(persistenceUnitInfo.getValidationMode()).thenReturn(ValidationMode.AUTO);
when(persistenceUnitInfo.getSharedCacheMode()).thenReturn(SharedCacheMode.UNSPECIFIED);
when(persistenceUnitInfo.getJtaDataSource()).thenReturn(null);
when(persistenceUnitInfo.getNonJtaDataSource()).thenReturn(null);
when(persistenceUnitInfo.getNewTempClassLoader()).thenReturn(null);
when(persistenceUnitInfo.getMappingFileNames()).thenReturn(Collections.<String>emptyList());
when(persistenceUnitInfo.getJarFileUrls()).thenReturn(Collections.<URL>emptyList());
when(persistenceUnitInfo.getPersistenceProviderClassName())
.thenReturn(SecurePersistenceProvider.class.getName());
when(persistenceUnitInfo.getClassLoader())
.thenReturn(Thread.currentThread().getContextClassLoader());
when(persistenceUnitInfo.getManagedClassNames()).thenReturn(Arrays.asList(
FieldAccessAnnotationTestBean.class.getName(),FieldAccessMapKey.class.getName(),FieldAccessMapValue.class.getName()
));
when(persistenceUnitInfo.excludeUnlistedClasses()).thenReturn(true);
Properties properties = new Properties();
properties.put("org.jpasecurity.persistence.provider","org.hibernate.ejb.HibernatePersistence");
properties.put("org.jpasecurity.security.context","org.jpasecurity.security.authentication.TestSecurityContext");
properties.put("org.jpasecurity.security.rules.provider","org.jpasecurity.security.rules.XmlAccessRulesProvider");
properties.put("hibernate.hbm2ddl.auto","create-drop");
properties.put("hibernate.dialect","org.hibernate.dialect.HsqlDialect");
properties.put("hibernate.connection.driver_class","org.hsqldb.jdbcDriver");
properties.put("hibernate.connection.url","jdbc:hsqldb:mem:test");
properties.put("hibernate.connection.username","sa");
properties.put("hibernate.connection.password","");
when(persistenceUnitInfo.getProperties()).thenReturn(properties);
return persistenceUnitInfo;
}
项目:codenvy
文件:JpaIntegrationTckModule.java
@Override
protected void configure() {
final Map<String,String> properties = new HashMap<>();
properties.put(TRANSACTION_TYPE,PersistenceUnitTransactionType.RESOURCE_LOCAL.name());
final String dbUrl = System.getProperty("jdbc.url");
final String dbUser = System.getProperty("jdbc.user");
final String dbPassword = System.getProperty("jdbc.password");
waitConnectionIsEstablished(dbUrl,dbUser,dbPassword);
properties.put(JDBC_URL,dbUrl);
properties.put(JDBC_USER,dbUser);
properties.put(JDBC_PASSWORD,dbPassword);
properties.put(JDBC_DRIVER,System.getProperty("jdbc.driver"));
JpaPersistModule main = new JpaPersistModule("main");
main.properties(properties);
install(main);
final PGSimpleDataSource dataSource = new PGSimpleDataSource();
dataSource.setUser(dbUser);
dataSource.setPassword(dbPassword);
dataSource.setUrl(dbUrl);
bind(SchemaInitializer.class)
.toInstance(new FlywaySchemaInitializer(dataSource,"che-schema","codenvy-schema"));
bind(DBInitializer.class).asEagerSingleton();
bind(TckResourcesCleaner.class).to(JpaCleaner.class);
bind(new TypeLiteral<TckRepository<InviteImpl>>() {})
.toInstance(new JpaTckRepository<>(InviteImpl.class));
bind(new TypeLiteral<TckRepository<OrganizationImpl>>() {})
.toInstance(new JpaTckRepository<>(OrganizationImpl.class));
bind(new TypeLiteral<TckRepository<WorkspaceImpl>>() {})
.toInstance(new JpaTckRepository<>(WorkspaceImpl.class));
bind(InviteDao.class).to(JpaInviteDao.class);
}
项目:testyourquery
文件:RuntimePersistenceGenerator.java
public RuntimePersistenceGenerator(String unitName,String providerName) {
this.unitName = unitName;
this.transactionType = transactionType;
this.providerName = providerName;
try {
ClassLoader originalClassLoader = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(createProxy(originalClassLoader));
} catch (final Exception e) {
throw new RuntimeException(e);
}
}
@Override
public EntityManagerFactory createContainerEntityManagerFactory(
PersistenceUnitInfo info,@SuppressWarnings("rawtypes") Map properties) {
Map<String,Object> props = new HashMap<>();
if (properties != null) {
props.putAll(props);
}
// Check if we are using JTA. If so,overwrite the platform.
if (PersistenceUnitTransactionType.JTA.equals(info.getTransactionType())) {
props.put(PersistenceUnitProperties.TARGET_SERVER,OurPlatForm.class.getName());
}
return super.createContainerEntityManagerFactory(info,props);
}
/**
* Get the persistence unit transaction type from the service properties.
*
* @param props The properties
* @return The transaction type
*/
private static PersistenceUnitTransactionType transactionType(Map<String,Object> props) {
Object value = props.get(PersistenceUnitTransactionType.class.getName());
if (value == null) {
return null;
}
return PersistenceUnitTransactionType.valueOf(value.toString());
}
/**
* This method creates a proxy for an entity manager.
*
* @param factory The entity manager factory to create the proxy for
* @param type The transaction type for this unit
* @return The entity manager proxy
*/
private EntityManager proxy(EntityManagerFactory factory,PersistenceUnitTransactionType type) {
InvocationHandler handler = new EntityProxyInvocationHandler(factory,transactionManager,type);
try {
EntityManager manager = (EntityManager) proxy.getConstructor(
InvocationHandler.class).newInstance(handler);
return manager;
} catch (Exception exc) {
throw new RuntimeException(exc);
}
}
/**
* Create an proxy invocation handler for a factory and a transaction manager.
*
* @param f The entity manager factory
* @param m The transaction manager
* @param type The persistence unit transaction type
*/
EntityProxyInvocationHandler(EntityManagerFactory f,TransactionManager m,PersistenceUnitTransactionType type) {
factory = f;
local = new ThreadLocal<>();
transactionManager = m;
if (PersistenceUnitTransactionType.JTA.equals(type)) {
synchronizer = (a,b,c) -> registerEntityManagerJTA(a,c);
}
else if (PersistenceUnitTransactionType.RESOURCE_LOCAL.equals(type)) {
synchronizer = (a,c) -> registerEntityManagerResourceLocal(a,c);
}
else {
synchronizer = (a,c) -> registerEntityManagerUnkNown(a,c);
}
}
项目:wisdom-jdbc
文件:PersistenceUnitComponent.java
@Override
public PersistenceUnitTransactionType getTransactionType() {
if (persistenceUnitXml.getTransactionType() ==
org.wisdom.framework.jpa.model.PersistenceUnitTransactionType
.RESOURCE_LOCAL) {
return PersistenceUnitTransactionType.RESOURCE_LOCAL;
} else {
return PersistenceUnitTransactionType.JTA;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。