aboutsummaryrefslogtreecommitdiff
path: root/juick-ws/src/main/java/com/juick/ws/components/XMPPComponent.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-ws/src/main/java/com/juick/ws/components/XMPPComponent.java')
-rw-r--r--juick-ws/src/main/java/com/juick/ws/components/XMPPComponent.java46
1 files changed, 25 insertions, 21 deletions
diff --git a/juick-ws/src/main/java/com/juick/ws/components/XMPPComponent.java b/juick-ws/src/main/java/com/juick/ws/components/XMPPComponent.java
index 544d9179..327b8e71 100644
--- a/juick-ws/src/main/java/com/juick/ws/components/XMPPComponent.java
+++ b/juick-ws/src/main/java/com/juick/ws/components/XMPPComponent.java
@@ -4,18 +4,21 @@ import com.juick.User;
import com.juick.server.MessagesQueries;
import com.juick.server.SubscriptionsQueries;
import com.juick.server.UserQueries;
+import com.juick.ws.s2s.*;
import com.juick.xmpp.*;
import com.juick.xmpp.extensions.JuickMessage;
import com.juick.xmpp.extensions.Nickname;
import com.juick.xmpp.extensions.XOOB;
-import com.juick.ws.s2s.*;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.lang3.math.NumberUtils;
+import org.springframework.beans.factory.DisposableBean;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.core.env.Environment;
import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Component;
import org.xmlpull.v1.XmlPullParserException;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
+import javax.inject.Inject;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
@@ -34,7 +37,8 @@ import java.util.logging.Logger;
*
* @author ugnich
*/
-public class XMPPComponent implements ServletContextListener, Stream.StreamListener,
+@Component
+public class XMPPComponent implements InitializingBean, DisposableBean, Stream.StreamListener,
Message.MessageListener, Iq.IqListener, Presence.PresenceListener {
private static final Logger logger = Logger.getLogger(XMPPComponent.class.getName());
@@ -54,6 +58,8 @@ public class XMPPComponent implements ServletContextListener, Stream.StreamListe
private final List<CacheEntry> outCache = Collections.synchronizedList(new ArrayList<>());
private JdbcTemplate sql;
final public HashMap<String, StanzaChild> childParsers = new HashMap<>();
+ @Inject
+ Environment env;
public void addConnectionIn(ConnectionIn c) {
synchronized (getInConnections()) {
@@ -172,25 +178,23 @@ public class XMPPComponent implements ServletContextListener, Stream.StreamListe
}
@Override
- public void contextInitialized(ServletContextEvent sce) {
+ public void afterPropertiesSet() {
logger.info("component initialized");
- Properties conf = new Properties();
try {
- conf.load(sce.getServletContext().getResourceAsStream("/WEB-INF/juick.conf"));
- HOSTNAME = conf.getProperty("hostname");
- componentName = conf.getProperty("componentname");
- int componentPort = NumberUtils.toInt(conf.getProperty("component_port"), 5347);
- int s2sPort = NumberUtils.toInt(conf.getProperty("s2s_port"), 5269);
- JID Jid = new JID(conf.getProperty("xmppbot_jid"));
- STATSFILE = conf.getProperty("statsfile");
- keystore = conf.getProperty("keystore");
- keystorePassword = conf.getProperty("keystore_password");
- brokenSSLhosts = Arrays.asList(conf.getProperty("broken_ssl_hosts", "").split(","));
- bannedHosts = Arrays.asList(conf.getProperty("banned_hosts", "").split(","));
+ HOSTNAME = env.getProperty("hostname");
+ componentName = env.getProperty("componentname");
+ int componentPort = NumberUtils.toInt(env.getProperty("component_port"), 5347);
+ int s2sPort = NumberUtils.toInt(env.getProperty("s2s_port"), 5269);
+ JID Jid = new JID(env.getProperty("xmppbot_jid"));
+ STATSFILE = env.getProperty("statsfile");
+ keystore = env.getProperty("keystore");
+ keystorePassword = env.getProperty("keystore_password");
+ brokenSSLhosts = Arrays.asList(env.getProperty("broken_ssl_hosts", "").split(","));
+ bannedHosts = Arrays.asList(env.getProperty("banned_hosts", "").split(","));
BasicDataSource dataSource = new BasicDataSource();
- dataSource.setDriverClassName(conf.getProperty("datasource_driver", "com.mysql.jdbc.Driver"));
- dataSource.setUrl(conf.getProperty("datasource_url"));
+ dataSource.setDriverClassName(env.getProperty("datasource_driver", "com.mysql.jdbc.Driver"));
+ dataSource.setUrl(env.getProperty("datasource_url"));
setSql(new JdbcTemplate(dataSource));
bot = new JuickBot(this, Jid);
@@ -200,7 +204,7 @@ public class XMPPComponent implements ServletContextListener, Stream.StreamListe
Socket routerSocket = null;
try {
routerSocket = new Socket("localhost", componentPort);
- setRouter(new StreamComponent(new JID("s2s"), routerSocket.getInputStream(), routerSocket.getOutputStream(), conf.getProperty("xmpp_password")));
+ setRouter(new StreamComponent(new JID("s2s"), routerSocket.getInputStream(), routerSocket.getOutputStream(), env.getProperty("xmpp_password")));
getRouter().addChildParser(new JuickMessage());
getRouter().addListener((Stream.StreamListener) this);
getRouter().addListener((Message.MessageListener) this);
@@ -234,7 +238,7 @@ public class XMPPComponent implements ServletContextListener, Stream.StreamListe
@Override
- public void contextDestroyed(ServletContextEvent sce) {
+ public void destroy() {
synchronized (getOutConnections()) {
for (Iterator<ConnectionOut> i = getOutConnections().iterator(); i.hasNext();) {
ConnectionOut c = i.next();