blob: 26c57ed89917f825bd3e5c652fe7a20d984fef04 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache license, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the license for the specific language governing permissions and
* limitations under the license.
*/
package org.apache.logging.log4j.core.appender.mom.activemq;
import java.util.Properties;
import org.apache.logging.log4j.core.Layout;
import org.apache.logging.log4j.core.appender.mom.JmsAppender;
import org.apache.logging.log4j.core.appender.mom.JmsManager;
import org.apache.logging.log4j.core.net.JndiManager;
/**
* All the JMS information and state needed to configure and get a test going.
*/
class JmsClientTestConfig {
private JmsAppender jmsAppender;
private final String jmsInitialContextFactoryClassName;
private JmsManager jmsManager;
private final char[] jmsPassword;
private final String jmsProviderUrlStr;
private final String jmsUserName;
JmsClientTestConfig(final String jmsInitialContextFactoryClassName, final String jmsProviderUrlStr,
final String jmsUserName, final char[] jmsPassword) {
this.jmsInitialContextFactoryClassName = jmsInitialContextFactoryClassName;
this.jmsProviderUrlStr = jmsProviderUrlStr;
this.jmsUserName = jmsUserName;
this.jmsPassword = jmsPassword;
}
JmsAppender createAppender(final Layout<?> layout) {
// @formatter:off
jmsAppender = JmsAppender.newBuilder()
.setName("JmsAppender")
.setLayout(layout)
.setIgnoreExceptions(true)
.setJmsManager(jmsManager)
.setReconnectIntervalMillis(2000)
.build();
// @formatter:on
jmsAppender.start();
return jmsAppender;
}
JmsAppender getJmsAppender() {
return jmsAppender;
}
String getJmsInitialContextFactoryClassName() {
return jmsInitialContextFactoryClassName;
}
JmsManager getJmsManager() {
return jmsManager;
}
char[] getJmsPassword() {
return jmsPassword;
}
String getJmsProviderUrlStr() {
return jmsProviderUrlStr;
}
String getJmsUserName() {
return jmsUserName;
}
void setJmsAppender(final JmsAppender jmsAppender) {
this.jmsAppender = jmsAppender;
}
void setJmsManager(final JmsManager jmsManager) {
this.jmsManager = jmsManager;
}
void start() {
System.setProperty(AbstractJmsAppenderIT.KEY_SERIALIZABLE_PACKAGES,
"org.apache.logging.log4j.core.impl,org.apache.logging.log4j.util,org.apache.logging.log4j,java.rmi");
final Properties additional = new Properties();
additional.setProperty("queue.TestQueue", "TestQueue");
// jndiManager is closed in stop() through the jmsManager
final Properties jndiProperties = JndiManager.createProperties(jmsInitialContextFactoryClassName,
jmsProviderUrlStr, null, null, null, additional);
final String name = JmsManager.class.getName() + "-" + getClass().getSimpleName() + "@" + hashCode();
jmsManager = JmsManager.getJmsManager(name, jndiProperties, "ConnectionFactory", "TestQueue", jmsUserName,
jmsPassword, false, JmsAppender.Builder.DEFAULT_RECONNECT_INTERVAL_MILLIS);
}
void stop() {
if (jmsManager != null) {
jmsManager.close();
jmsManager = null;
}
System.getProperties().remove(AbstractJmsAppenderIT.KEY_SERIALIZABLE_PACKAGES);
}
}