/*
* Copyright (C) 2008 Jive Software. All rights reserved.
*
* Licensed 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.jivesoftware.openfire.plugin;
import org.jivesoftware.openfire.container.Plugin;
import org.jivesoftware.openfire.container.PluginManager;
import org.jivesoftware.openfire.plugin.spark.SparkManager;
import org.jivesoftware.openfire.plugin.spark.TaskEngine;
import org.jivesoftware.openfire.plugin.spark.manager.SparkVersionManager;
import org.jivesoftware.openfire.plugin.spark.manager.FileTransferFilterManager;
import org.jivesoftware.util.JiveGlobals;
import java.io.File;
import java.io.FileFilter;
/**
* Client control plugin.
*
* @author Matt Tucker
*/
public class ClientControlPlugin implements Plugin {
private SparkManager sparkManager;
private SparkVersionManager sparkVersionManager;
private FileTransferFilterManager fileTransferFilterManager;
private TaskEngine taskEngine;
/**
* Constructs a new client control plugin.
*/
public ClientControlPlugin() {
}
// Plugin Interface
public void initializePlugin(PluginManager manager, File pluginDirectory) {
// Check if we Enterprise is installed and stop loading this plugin if found
File pluginDir = new File(JiveGlobals.getHomeDirectory(), "plugins");
File[] jars = pluginDir.listFiles(new FileFilter() {
public boolean accept(File pathname) {
String fileName = pathname.getName().toLowerCase();
return (fileName.equalsIgnoreCase("enterprise.jar"));
}
});
if (jars.length > 0) {
// Do not load this plugin since Enterprise is still installed
System.out.println("Enterprise plugin found. Stopping Client Control Plugin");
throw new IllegalStateException("This plugin cannot run next to the Enterprise plugin");
}
taskEngine = TaskEngine.getInstance();
sparkManager = new SparkManager(taskEngine);
sparkManager.start();
// Create and start the Spark version manager
sparkVersionManager = new SparkVersionManager();
sparkVersionManager.start();
fileTransferFilterManager = new FileTransferFilterManager();
fileTransferFilterManager.start();
}
public FileTransferFilterManager getFileTransferFilterManager() {
return fileTransferFilterManager;
}
public void destroyPlugin() {
if (sparkManager != null) {
sparkManager.stop();
sparkManager.shutdown();
sparkManager = null;
}
if (sparkVersionManager != null) {
sparkVersionManager.shutdown();
sparkVersionManager = null;
}
if (fileTransferFilterManager != null) {
fileTransferFilterManager.stop();
fileTransferFilterManager = null;
}
taskEngine.shutdown();
}
}