/*
* Copyright 2006-2010 Daniel Henninger. All rights reserved.
*
* This software is published under the terms of the GNU Public License (GPL),
* a copy of which is included in this distribution.
*/
package net.sf.kraken.web;
import redstone.xmlrpc.XmlRpcServlet;
import org.jivesoftware.admin.AuthCheckFilter;
import org.jivesoftware.util.PropertyEventListener;
import org.jivesoftware.util.PropertyEventDispatcher;
import org.apache.log4j.Logger;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
/**
* @author Daniel Henninger
*/
@SuppressWarnings("serial")
public class GatewayXMLRPC extends XmlRpcServlet implements PropertyEventListener {
static Logger Log = Logger.getLogger(GatewayXMLRPC.class);
XMLRPCConduit conduit;
@Override
public void init(ServletConfig servletConfig) {
try {
super.init(servletConfig);
conduit = new XMLRPCConduit();
PropertyEventDispatcher.addListener(this);
this.getXmlRpcServer().addInvocationHandler("Manager", conduit);
AuthCheckFilter.addExclude("kraken/xml-rpc");
}
catch (ServletException e) {
Log.error("Error while loading XMLRPC servlet: ", e);
}
}
@Override
public void destroy() {
AuthCheckFilter.removeExclude("kraken/xml-rpc");
PropertyEventDispatcher.removeListener(this);
conduit = null;
}
public void propertySet(String property, Map<String, Object> params) {
if (property.equals("plugin.gateway.xmlrpc.password") && conduit != null) {
conduit.authPassword = (String)params.get("value");
}
}
public void propertyDeleted(String property, Map<String, Object> params) {
if (property.equals("plugin.gateway.xmlrpc.password") && conduit != null) {
conduit.authPassword = null;
}
}
public void xmlPropertySet(String property, Map<String, Object> params) {
propertySet(property, params);
}
public void xmlPropertyDeleted(String property, Map<String, Object> params) {
propertyDeleted(property, params);
}
}