Skip to content
This repository has been archived by the owner on Apr 23, 2024. It is now read-only.

Commit

Permalink
retab
Browse files Browse the repository at this point in the history
  • Loading branch information
m-szalik committed Apr 7, 2016
1 parent 3b9fbf9 commit f87d74e
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 97 deletions.
154 changes: 80 additions & 74 deletions xmpp/src/main/java/ch/qos/logback/classic/net/XmppAppender.java
Expand Up @@ -15,7 +15,13 @@
import ch.qos.logback.core.AppenderBase;
import ch.qos.logback.core.Layout;
import ch.qos.logback.core.layout.EchoLayout;
import org.jivesoftware.smack.*;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.Roster;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;


Expand All @@ -26,67 +32,67 @@
* @author m-szalik
*/
public class XmppAppender<E> extends AppenderBase<E> {
private ConnectionConfiguration connectionConfiguration;
private XMPPConnection conn;
private String password;
private String username;
private String resourceName = getClass().getSimpleName();
private String sendToJid;
private Chat chat;
private int xmmpPort = 5222;
private String xmmpServer;
private Layout<E> layout = new EchoLayout<E>();


public void setSendToJid(String sendToJid) {
this.sendToJid = sendToJid;
}
private ConnectionConfiguration connectionConfiguration;
private XMPPConnection conn;
private String password;
private String username;
private String resourceName = getClass().getSimpleName();
private String sendToJid;
private Chat chat;
private int xmmpPort = 5222;
private String xmmpServer;
private Layout<E> layout = new EchoLayout<E>();


public void setSendToJid(String sendToJid) {
this.sendToJid = sendToJid;
}

public void setLayout(Layout<E> layout) {
this.layout = layout;
}
public void setLayout(Layout<E> layout) {
this.layout = layout;
}

/**
* @param xmmpAccount jid@server.org[:port]
*/
public void setXmmpAccount(String xmmpAccount) {
String[] parts = xmmpAccount.split(":", 2);
if (parts.length == 2) {
xmmpPort = Integer.parseInt(parts[1].trim());
}
parts = parts[0].split("@", 2);
username = parts[0];
xmmpServer = parts[1];
}
/**
* @param xmmpAccount jid@server.org[:port]
*/
public void setXmmpAccount(String xmmpAccount) {
String[] parts = xmmpAccount.split(":", 2);
if (parts.length == 2) {
xmmpPort = Integer.parseInt(parts[1].trim());
}
parts = parts[0].split("@", 2);
username = parts[0];
xmmpServer = parts[1];
}


public void setUsername(String username) {
this.username = username;
}
public void setUsername(String username) {
this.username = username;
}


public void setPassword(String password) {
this.password = password;
}
public void setPassword(String password) {
this.password = password;
}


public void setResourceName(String resourceName) {
this.resourceName = resourceName;
}
public void setResourceName(String resourceName) {
this.resourceName = resourceName;
}


@Override
public void stop() {
@Override
public void stop() {
super.stop();
boolean doStop = isStarted();
super.stop();
if (doStop) {
if (conn != null && conn.isConnected()) {
conn.disconnect();
chat = null;
}
}
}
boolean doStop = isStarted();
super.stop();
if (doStop) {
if (conn != null && conn.isConnected()) {
conn.disconnect();
chat = null;
}
}
}

@Override
public void start() {
Expand All @@ -108,7 +114,7 @@ protected void append(E event) {
try {
xmmpConnect();
} catch (XMPPException e) {
/* ignore */
/* ignore */
}
}
if (chat != null) {
Expand All @@ -124,28 +130,28 @@ protected void append(E event) {


private synchronized void xmmpConnect() throws XMPPException {
try {
XMPPConnection conn = new XMPPConnection(connectionConfiguration);
conn.connect();
conn.login(username, password, resourceName);
ChatManager chatmanager = conn.getChatManager();
Chat chat = chatmanager.createChat(sendToJid, new MessageListener() {
public void processMessage(Chat chat, Message msg) { /* ignore incoming messages */ }
});
Roster roster = conn.getRoster();
if (!roster.contains(sendToJid)) {
addInfo(formatLogMessage("Adding '" + sendToJid + "' to roster."));
roster.createEntry(sendToJid, sendToJid, new String[] {});
}
this.chat = chat;
this.conn = conn;
} catch (XMPPException e) {
this.chat = null;
this.conn = null;
addError(formatLogMessage("Error connecting to " + xmmpServer + ':' + xmmpPort), e);
throw e;
}
}
try {
XMPPConnection conn = new XMPPConnection(connectionConfiguration);
conn.connect();
conn.login(username, password, resourceName);
ChatManager chatmanager = conn.getChatManager();
Chat chat = chatmanager.createChat(sendToJid, new MessageListener() {
public void processMessage(Chat chat, Message msg) { /* ignore incoming messages */ }
});
Roster roster = conn.getRoster();
if (!roster.contains(sendToJid)) {
addInfo(formatLogMessage("Adding '" + sendToJid + "' to roster."));
roster.createEntry(sendToJid, sendToJid, new String[] {});
}
this.chat = chat;
this.conn = conn;
} catch (XMPPException e) {
this.chat = null;
this.conn = null;
addError(formatLogMessage("Error connecting to " + xmmpServer + ':' + xmmpPort), e);
throw e;
}
}

private String formatLogMessage(String logMessage) {
return "Appender " + getName() + ": " + logMessage;
Expand Down
46 changes: 23 additions & 23 deletions xmpp/src/test/java/ch/qos/logback/classic/net/XmppAppenderTest.java
Expand Up @@ -9,28 +9,28 @@
@Ignore
public class XmppAppenderTest {

@Test
public void testSimpleMessage() {
Logger logger = LoggerFactory.getLogger(getClass());
logger.warn("Test message 22");
}



@Test
public void testMessageWithException() {
Logger logger = LoggerFactory.getLogger(getClass());
try {
throw new Exception("Exception message.");
} catch (Exception e) {
logger.info("Exception text.", e);
}
}
@After
public void waitFor() throws InterruptedException {
@Test
public void testSimpleMessage() {
Logger logger = LoggerFactory.getLogger(getClass());
logger.warn("Test message 22");
}



@Test
public void testMessageWithException() {
Logger logger = LoggerFactory.getLogger(getClass());
try {
throw new Exception("Exception message.");
} catch (Exception e) {
logger.info("Exception text.", e);
}
}


@After
public void waitFor() throws InterruptedException {
Thread.sleep(1800);
}
}
}

0 comments on commit f87d74e

Please sign in to comment.