@SuppressWarnings("resource") // actualJmsManager and jndiManager are managed by the JmsAppender @Override public JmsAppender build() { JmsManager actualJmsManager = jmsManager; JmsManagerConfiguration configuration = null; if (actualJmsManager == null) { final Properties jndiProperties = JndiManager.createProperties(factoryName, providerUrl, urlPkgPrefixes, securityPrincipalName, securityCredentials, null); configuration = new JmsManagerConfiguration(jndiProperties, factoryBindingName, destinationBindingName, userName, password, false, reconnectIntervalMillis); actualJmsManager = AbstractManager.getManager(name, JmsManager.FACTORY, configuration); } if (actualJmsManager == null) { // JmsManagerFactory has already logged an ERROR. return null; } if (layout == null) { LOGGER.error("No layout provided for JmsAppender"); return null; } try { return new JmsAppender(name, filter, layout, ignoreExceptions, actualJmsManager); } catch (final JMSException e) { // Never happens since the ctor no longer actually throws a JMSException. throw new IllegalStateException(e); } }
public static <T> HookableOutputStreamManager getHookableManager(final String name, final T data, final ManagerFactory<? extends HookableOutputStreamManager, T> factory) { return AbstractManager.getManager(name, factory, data); }
/** * Implementations should define their own getManager method and call this method from that to create or get * existing managers. * * @param name The manager name, which should include any configuration details that one might want to be able to * reconfigure at runtime, such as database name, username, (hashed) password, etc. * @param data The concrete instance of {@link AbstractFactoryData} appropriate for the given manager. * @param factory A factory instance for creating the appropriate manager. * @param <M> The concrete manager type. * @param <T> The concrete {@link AbstractFactoryData} type. * @return a new or existing manager of the specified type and name. */ protected static <M extends AbstractDatabaseManager, T extends AbstractFactoryData> M getManager( final String name, final T data, final ManagerFactory<M, T> factory ) { return AbstractManager.getManager(name, factory, data); }