SessionAccessor beforeInvokeMethod(final Session session, final String apiInterfaceName) throws BonitaHomeNotSetException, InstantiationException, IllegalAccessException, ClassNotFoundException, BonitaHomeConfigurationException, IOException, NoSuchMethodException, InvocationTargetException, SBonitaException { SessionAccessor sessionAccessor = null; final ServiceAccessorFactory serviceAccessorFactory = getServiceAccessorFactoryInstance(); final PlatformServiceAccessor platformServiceAccessor = serviceAccessorFactory.createPlatformServiceAccessor(); ClassLoader serverClassLoader = null; if (session != null) { final SessionType sessionType = getSessionType(session); sessionAccessor = serviceAccessorFactory.createSessionAccessor(); switch (sessionType) { case PLATFORM: serverClassLoader = beforeInvokeMethodForPlatformSession(sessionAccessor, platformServiceAccessor, session); break; case API: serverClassLoader = beforeInvokeMethodForAPISession(sessionAccessor, serviceAccessorFactory, platformServiceAccessor, session); break; default: throw new InvalidSessionException("Unknown session type: " + session.getClass().getName()); } } else if (accessResolver.needSession(apiInterfaceName)) { throw new InvalidSessionException("Session is null!"); } if (serverClassLoader != null) { Thread.currentThread().setContextClassLoader(serverClassLoader); } return sessionAccessor; }
SessionAccessor beforeInvokeMethod(final Session session, final String apiInterfaceName) throws BonitaHomeNotSetException, InstantiationException, IllegalAccessException, ClassNotFoundException, BonitaHomeConfigurationException, IOException, NoSuchMethodException, InvocationTargetException, SBonitaException { SessionAccessor sessionAccessor = null; final ServiceAccessorFactory serviceAccessorFactory = getServiceAccessorFactoryInstance(); final PlatformServiceAccessor platformServiceAccessor = serviceAccessorFactory.createPlatformServiceAccessor(); ClassLoader serverClassLoader = null; if (session != null) { final SessionType sessionType = getSessionType(session); sessionAccessor = serviceAccessorFactory.createSessionAccessor(); switch (sessionType) { case PLATFORM: serverClassLoader = beforeInvokeMethodForPlatformSession(sessionAccessor, platformServiceAccessor, session); break; case API: serverClassLoader = beforeInvokeMethodForAPISession(sessionAccessor, serviceAccessorFactory, platformServiceAccessor, session); break; default: throw new InvalidSessionException("Unknown session type: " + session.getClass().getName()); } } else if (accessResolver.needSession(apiInterfaceName)) { throw new InvalidSessionException("Session is null!"); } if (serverClassLoader != null) { Thread.currentThread().setContextClassLoader(serverClassLoader); } return sessionAccessor; }