@Override public void customize(Session session) throws Exception { session.getEventManager().addListener(new SessionEventAdapter() { @Override public void preBeginTransaction(SessionEvent event) { try { UnitOfWork work = event.getSession().acquireUnitOfWork(); try { work.executeNonSelectingSQL("set names utf8mb4"); work.commit(); work = null; } finally { if (work != null) work.release(); } } catch (Exception ex) { log.error("UTF8MB4", ex); } } }); } }
/** * INTERNAL: */ protected void processSessionEventManagerConfig(SessionEventManagerConfig sessionEventManagerConfig, AbstractSession session) { if (sessionEventManagerConfig != null) { Enumeration e = sessionEventManagerConfig.getSessionEventListeners().elements(); while (e.hasMoreElements()) { String listenerClassName = (String)e.nextElement(); try { Class listenerClass = m_classLoader.loadClass(listenerClassName); if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){ session.getEventManager().addListener((SessionEventListener)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(listenerClass))); }else{ } session.getEventManager().addListener((SessionEventListener)PrivilegedAccessHelper.newInstanceFromClass(listenerClass)); } catch (Exception exception) { throw SessionLoaderException.failedToLoadTag("event-listener-class", listenerClassName, exception); } } } }
/** * INTERNAL: */ protected void processSessionEventManagerConfig(SessionEventManagerConfig sessionEventManagerConfig, AbstractSession session) { if (sessionEventManagerConfig != null) { Enumeration e = sessionEventManagerConfig.getSessionEventListeners().elements(); while (e.hasMoreElements()) { String listenerClassName = (String)e.nextElement(); try { Class listenerClass = m_classLoader.loadClass(listenerClassName); if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){ session.getEventManager().addListener((SessionEventListener)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(listenerClass))); }else{ } session.getEventManager().addListener((SessionEventListener)PrivilegedAccessHelper.newInstanceFromClass(listenerClass)); } catch (Exception exception) { throw SessionLoaderException.failedToLoadTag("event-listener-class", listenerClassName, exception); } } } }
/** * INTERNAL: */ protected void processSessionEventManagerConfig(SessionEventManagerConfig sessionEventManagerConfig, AbstractSession session) { if (sessionEventManagerConfig != null) { Enumeration e = sessionEventManagerConfig.getSessionEventListeners().elements(); while (e.hasMoreElements()) { String listenerClassName = (String)e.nextElement(); try { Class listenerClass = m_classLoader.loadClass(listenerClassName); if (PrivilegedAccessHelper.shouldUsePrivilegedAccess()){ session.getEventManager().addListener((SessionEventListener)AccessController.doPrivileged(new PrivilegedNewInstanceFromClass(listenerClass))); }else{ } session.getEventManager().addListener((SessionEventListener)PrivilegedAccessHelper.newInstanceFromClass(listenerClass)); } catch (Exception exception) { throw SessionLoaderException.failedToLoadTag("event-listener-class", listenerClassName, exception); } } } }
while (memberSessions.hasNext()) { AbstractSession memberSession = memberSessions.next(); memberSession.getEventManager().addListener(listener);
while (memberSessions.hasNext()) { AbstractSession memberSession = memberSessions.next(); memberSession.getEventManager().addListener(listener);
/** * PUBLIC: * Given the writer, and a project, * this writes out the deployment XML file storing the project's descriptor and mapping information. * * @param writer writer to writer to * @param project the project instance to write */ public static void write(Project project, Writer writer) { XMLContext context = new XMLContext(new ObjectPersistenceWorkbenchXMLProject()); context.getSession(project).getEventManager().addListener(new MissingDescriptorListener()); XMLMarshaller marshaller = context.createMarshaller(); marshaller.marshal(project, writer); try { writer.flush(); } catch (IOException exception) { throw ValidationException.fileError(exception); } }
/** * PUBLIC: * Given the writer, and a project, * this writes out the deployment XML file storing the project's descriptor and mapping information. * * @param writer writer to writer to * @param project the project instance to write */ public static void write(Project project, Writer writer) { XMLContext context = new XMLContext(new ObjectPersistenceWorkbenchXMLProject()); context.getSession(project).getEventManager().addListener(new MissingDescriptorListener()); XMLMarshaller marshaller = context.createMarshaller(); marshaller.marshal(project, writer); try { writer.flush(); } catch (IOException exception) { throw ValidationException.fileError(exception); } }
/** * PUBLIC: * Given the writer, and a project, * this writes out the deployment XML file storing the project's descriptor and mapping information. * * @param writer writer to writer to * @param project the project instance to write */ public static void write(Project project, Writer writer) { XMLContext context = new XMLContext(new ObjectPersistenceWorkbenchXMLProject()); context.getSession(project).getEventManager().addListener(new MissingDescriptorListener()); XMLMarshaller marshaller = context.createMarshaller(); marshaller.marshal(project, writer); try { writer.flush(); } catch (IOException exception) { throw ValidationException.fileError(exception); } }
/** * INTERNAL: Add and initialize a new session to the list of sessions * associated with this XMLContext. */ private void addSession(DatabaseSession sessionToAdd) { if ((sessionToAdd.getDatasourceLogin() == null) || !(sessionToAdd.getDatasourceLogin().getDatasourcePlatform() instanceof XMLPlatform)) { XMLPlatform platform = new SAXPlatform(); sessionToAdd.setLogin(new XMLLogin(platform)); } DatabaseSession session = sessionToAdd.getProject().createDatabaseSession(); if (sessionToAdd.getEventManager().hasListeners()) { List<SessionEventListener> listeners = sessionToAdd.getEventManager().getListeners(); int listenersSize = listeners.size(); for (int x = 0; x < listenersSize; x++) { session.getEventManager().addListener(listeners.get(x)); } } session.setExceptionHandler(sessionToAdd.getExceptionHandler()); session.setLogLevel(SessionLog.OFF); setupSession(session); if(null == sessions) { sessions = new ArrayList<DatabaseSession>(); } if(null != this.session) { sessions.add(this.session); } sessions.add(session); storeDescriptorsByQName(session); }
session.getEventManager().addListener(sessionEventListener);
/** * INTERNAL: Add and initialize a new session to the list of sessions * associated with this XMLContext. */ private void addSession(DatabaseSession sessionToAdd) { if ((sessionToAdd.getDatasourceLogin() == null) || !(sessionToAdd.getDatasourceLogin().getDatasourcePlatform() instanceof XMLPlatform)) { XMLPlatform platform = new SAXPlatform(); sessionToAdd.setLogin(new XMLLogin(platform)); } DatabaseSession session = sessionToAdd.getProject().createDatabaseSession(); if (sessionToAdd.getEventManager().hasListeners()) { List<SessionEventListener> listeners = sessionToAdd.getEventManager().getListeners(); int listenersSize = listeners.size(); for (int x = 0; x < listenersSize; x++) { session.getEventManager().addListener(listeners.get(x)); } } session.setExceptionHandler(sessionToAdd.getExceptionHandler()); session.setLogLevel(SessionLog.OFF); setupSession(session); if(null == sessions) { sessions = new ArrayList<DatabaseSession>(); } if(null != this.session) { sessions.add(this.session); } sessions.add(session); storeDescriptorsByQName(session); }
/** * INTERNAL: Add and initialize a new session to the list of sessions * associated with this XMLContext. */ public void addSession(DatabaseSession sessionToAdd) { if ((sessionToAdd.getDatasourceLogin() == null) || !(sessionToAdd.getDatasourceLogin().getDatasourcePlatform() instanceof XMLPlatform)) { XMLPlatform platform = new SAXPlatform(); sessionToAdd.setLogin(new XMLLogin(platform)); } DatabaseSession session = sessionToAdd.getProject().createDatabaseSession(); if (sessionToAdd.getEventManager().hasListeners()) { List listeners = sessionToAdd.getEventManager().getListeners(); int listenersSize = listeners.size(); for (int x = 0; x < listenersSize; x++) { session.getEventManager().addListener((SessionEventListener) listeners.get(x)); } } session.setExceptionHandler(sessionToAdd.getExceptionHandler()); session.setLogLevel(SessionLog.OFF); this.setupDocumentPreservationPolicy(session); session.login(); sessions.add(session); storeXMLDescriptorsByQName(session); }
private DatabaseSession buildSession(String sessionName, ClassLoader classLoader, XMLSessionConfigLoader sessionLoader) throws XMLMarshalException { DatabaseSession dbSession; if (classLoader != null) { dbSession = (DatabaseSession) SessionManager.getManager().getSession(sessionLoader, sessionName, classLoader, false, true); } else { dbSession = (DatabaseSession) SessionManager.getManager().getSession(sessionLoader, sessionName, PrivilegedAccessHelper.privilegedGetClassLoaderForClass(this.getClass()), false, false, false); } if ((dbSession.getDatasourceLogin() == null) || !(dbSession.getDatasourceLogin().getDatasourcePlatform() instanceof XMLPlatform)) { XMLPlatform platform = new SAXPlatform(); dbSession.setLogin(new XMLLogin(platform)); } DatabaseSession session = dbSession.getProject().createDatabaseSession(); if (dbSession.getEventManager().hasListeners()) { List<SessionEventListener> listeners = dbSession.getEventManager().getListeners(); int listenersSize = listeners.size(); for (int x = 0; x < listenersSize; x++) { session.getEventManager().addListener(listeners.get(x)); } } session.setExceptionHandler(dbSession.getExceptionHandler()); session.setLogLevel(SessionLog.OFF); setupDocumentPreservationPolicy(session); session.login(); return session; }
private DatabaseSession buildSession(String sessionName, ClassLoader classLoader, XMLSessionConfigLoader sessionLoader) throws XMLMarshalException { DatabaseSession dbSession; if (classLoader != null) { dbSession = (DatabaseSession) SessionManager.getManager().getSession(sessionLoader, sessionName, classLoader, false, true); } else { dbSession = (DatabaseSession) SessionManager.getManager().getSession(sessionLoader, sessionName, PrivilegedAccessHelper.privilegedGetClassLoaderForClass(this.getClass()), false, false, false); } if ((dbSession.getDatasourceLogin() == null) || !(dbSession.getDatasourceLogin().getDatasourcePlatform() instanceof XMLPlatform)) { XMLPlatform platform = new SAXPlatform(); dbSession.setLogin(new XMLLogin(platform)); } DatabaseSession session = dbSession.getProject().createDatabaseSession(); if (dbSession.getEventManager().hasListeners()) { List<SessionEventListener> listeners = dbSession.getEventManager().getListeners(); int listenersSize = listeners.size(); for (int x = 0; x < listenersSize; x++) { session.getEventManager().addListener(listeners.get(x)); } } session.setExceptionHandler(dbSession.getExceptionHandler()); session.setLogLevel(SessionLog.OFF); setupDocumentPreservationPolicy(session); session.login(); return session; }
private DatabaseSession buildSession(String sessionName, ClassLoader classLoader, XMLSessionConfigLoader sessionLoader) throws XMLMarshalException { DatabaseSession dbSession; if (classLoader != null) { dbSession = (DatabaseSession) SessionManager.getManager().getSession(sessionLoader, sessionName, classLoader, false, true); } else { dbSession = (DatabaseSession) SessionManager.getManager().getSession(sessionLoader, sessionName, PrivilegedAccessHelper.privilegedGetClassLoaderForClass(this.getClass()), false, false, false); } if ((dbSession.getDatasourceLogin() == null) || !(dbSession.getDatasourceLogin().getDatasourcePlatform() instanceof XMLPlatform)) { XMLPlatform platform = new SAXPlatform(); dbSession.setLogin(new XMLLogin(platform)); } DatabaseSession session = dbSession.getProject().createDatabaseSession(); if (dbSession.getEventManager().hasListeners()) { List listeners = dbSession.getEventManager().getListeners(); int listenersSize = listeners.size(); for (int x = 0; x < listenersSize; x++) { session.getEventManager().addListener((SessionEventListener) listeners.get(x)); } } session.setExceptionHandler(dbSession.getExceptionHandler()); session.setLogLevel(SessionLog.OFF); setupDocumentPreservationPolicy(session); session.login(); return session; }
/** * Allow customized session event listener to be added into session. * The method needs to be called in deploy stage. */ protected void setSessionEventListener(Map m, ClassLoader loader){ //Set event listener if it has been specified. String sessionEventListenerClassName = EntityManagerFactoryProvider.getConfigPropertyAsStringLogDebug(PersistenceUnitProperties.SESSION_EVENT_LISTENER_CLASS, m, session); if(sessionEventListenerClassName!=null){ Class sessionEventListenerClass = findClassForProperty(sessionEventListenerClassName,PersistenceUnitProperties.SESSION_EVENT_LISTENER_CLASS, loader); try { SessionEventListener sessionEventListener = (SessionEventListener)buildObjectForClass(sessionEventListenerClass, SessionEventListener.class); if(sessionEventListener!=null){ session.getEventManager().addListener(sessionEventListener); } else { session.handleException(ValidationException.invalidSessionEventListenerClass(sessionEventListenerClassName)); } } catch (IllegalAccessException e) { session.handleException(ValidationException.cannotInstantiateSessionEventListenerClass(sessionEventListenerClassName,e)); } catch (PrivilegedActionException e) { session.handleException(ValidationException.cannotInstantiateSessionEventListenerClass(sessionEventListenerClassName,e)); } catch (InstantiationException e) { session.handleException(ValidationException.cannotInstantiateSessionEventListenerClass(sessionEventListenerClassName,e)); } } }
/** * Read a project in the format of an ObjectPersistenceRuntimeXMLProject. * This could include a TopLink 11.1.1 project or a TopLink 10.1.3 project * @param document * @param classLoader * @param opmProject * @return */ public static Project readObjectPersistenceRuntimeFormat(Document document, ClassLoader classLoader, Project opmProject){ XMLLogin xmlLogin = new XMLLogin(); xmlLogin.setDatasourcePlatform(new org.eclipse.persistence.oxm.platform.DOMPlatform()); opmProject.setDatasourceLogin(xmlLogin); // Create the OPM project. if (classLoader != null) { xmlLogin.getDatasourcePlatform().getConversionManager().setLoader(classLoader); } // Marshal OPM format. XMLContext context = new XMLContext(opmProject); context.getSession(Project.class).getEventManager().addListener(new MissingDescriptorListener()); XMLUnmarshaller unmarshaller = context.createUnmarshaller(); Project project = (Project)unmarshaller.unmarshal(document); // Set the project's class loader. if ((classLoader != null) && (project.getDatasourceLogin() != null)) { project.getDatasourceLogin().getDatasourcePlatform().getConversionManager().setLoader(classLoader); } return project; }
/** * Read a project in the format of an ObjectPersistenceRuntimeXMLProject. * This could include a TopLink 11.1.1 project or a TopLink 10.1.3 project * @param document * @param classLoader * @param opmProject * @return */ public static Project readObjectPersistenceRuntimeFormat(Document document, ClassLoader classLoader, Project opmProject){ XMLLogin xmlLogin = new XMLLogin(); xmlLogin.setDatasourcePlatform(new org.eclipse.persistence.oxm.platform.DOMPlatform()); opmProject.setDatasourceLogin(xmlLogin); // Create the OPM project. if (classLoader != null) { xmlLogin.getDatasourcePlatform().getConversionManager().setLoader(classLoader); } // Marshal OPM format. XMLContext context = new XMLContext(opmProject); context.getSession(Project.class).getEventManager().addListener(new MissingDescriptorListener()); XMLUnmarshaller unmarshaller = context.createUnmarshaller(); Project project = (Project)unmarshaller.unmarshal(document); // Set the project's class loader. if ((classLoader != null) && (project.getDatasourceLogin() != null)) { project.getDatasourceLogin().getDatasourcePlatform().getConversionManager().setLoader(classLoader); } return project; }
/** * Read a project in the format of an ObjectPersistenceRuntimeXMLProject. * This could include a TopLink 11.1.1 project or a TopLink 10.1.3 project * @param document * @param classLoader * @param opmProject * @return */ public static Project readObjectPersistenceRuntimeFormat(Document document, ClassLoader classLoader, Project opmProject){ XMLLogin xmlLogin = new XMLLogin(); xmlLogin.setDatasourcePlatform(new org.eclipse.persistence.oxm.platform.DOMPlatform()); opmProject.setDatasourceLogin(xmlLogin); // Create the OPM project. if (classLoader != null) { xmlLogin.getDatasourcePlatform().getConversionManager().setLoader(classLoader); } // Marshal OPM format. XMLContext context = new XMLContext(opmProject); context.getSession(Project.class).getEventManager().addListener(new MissingDescriptorListener()); XMLUnmarshaller unmarshaller = context.createUnmarshaller(); Project project = (Project)unmarshaller.unmarshal(document); // Set the project's class loader. if ((classLoader != null) && (project.getDatasourceLogin() != null)) { project.getDatasourceLogin().getDatasourcePlatform().getConversionManager().setLoader(classLoader); } return project; }