/** * Bootstrap a PersistenceContext based on an pre-existing EntityManagerFactory. * * @param name persistence context name * @param emf entity manager factory * @param baseURI base URI * @param version JPARS version. See {@link ServiceVersion} for more details. * @param replace Indicates that existing persistence context with given name and version must be replaced * with the newly created one. If false passed the newly created context is not added to cache at all. * @return newly created persistence context */ public PersistenceContext bootstrapPersistenceContext(String name, EntityManagerFactory emf, URI baseURI, String version, boolean replace) { final PersistenceContext persistenceContext = new PersistenceContext(name, (EntityManagerFactoryImpl) emf, baseURI, ServiceVersion.fromCode(version)); if (replace) { addReplacePersistenceContext(persistenceContext); } return persistenceContext; }
protected void addReplacePersistenceContext(PersistenceContext persistenceContext) { synchronized (this) { final PersistenceContext existingContext = getDynamicPersistenceContext(persistenceContext.getName(), persistenceContext.getVersion()); Set<PersistenceContext> persistenceContextSet = dynamicPersistenceContexts.get(persistenceContext.getName()); if (persistenceContextSet == null) { persistenceContextSet = new HashSet<>(); } if (existingContext != null) { persistenceContextSet.remove(existingContext); } persistenceContextSet.add(persistenceContext); dynamicPersistenceContexts.put(persistenceContext.getName(), persistenceContextSet); } } }
PersistenceContext persistenceContext = getDynamicPersistenceContext(persistenceUnitName, version); persistenceContext = bootstrapPersistenceContext(persistenceUnitName, factory, defaultURI, version, true); } catch (Exception e) { JPARSLogger.exception("exception_creating_persistence_context", new Object[] { persistenceUnitName, e.toString() }, e);
PersistenceContext persistenceContext = getDynamicPersistenceContext(persistenceUnitName, version); persistenceContext = bootstrapPersistenceContext(persistenceUnitName, factory, defaultURI, version, true); } catch (Exception e) { JPARSLogger.exception("exception_creating_persistence_context", new Object[] { persistenceUnitName, e.toString() }, e);
protected void addReplacePersistenceContext(PersistenceContext persistenceContext) { synchronized (this) { final PersistenceContext existingContext = getDynamicPersistenceContext(persistenceContext.getName(), persistenceContext.getVersion()); Set<PersistenceContext> persistenceContextSet = dynamicPersistenceContexts.get(persistenceContext.getName()); if (persistenceContextSet == null) { persistenceContextSet = new HashSet<>(); } if (existingContext != null) { persistenceContextSet.remove(existingContext); } persistenceContextSet.add(persistenceContext); dynamicPersistenceContexts.put(persistenceContext.getName(), persistenceContextSet); } } }
/** * Bootstrap a PersistenceContext based on an pre-existing EntityManagerFactory. * * @param name persistence context name * @param emf entity manager factory * @param baseURI base URI * @param version JPARS version. See {@link ServiceVersion} for more details. * @param replace Indicates that existing persistence context with given name and version must be replaced * with the newly created one. If false passed the newly created context is not added to cache at all. * @return newly created persistence context */ public PersistenceContext bootstrapPersistenceContext(String name, EntityManagerFactory emf, URI baseURI, String version, boolean replace) { final PersistenceContext persistenceContext = new PersistenceContext(name, (EntityManagerFactoryImpl) emf, baseURI, ServiceVersion.fromCode(version)); if (replace) { addReplacePersistenceContext(persistenceContext); } return persistenceContext; }