/**
* Copyright (c) 2009, WSO2 Inc. (http://www.wso2.org) 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.wso2.carbon.task;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.synapse.task.TaskDescription;
import org.apache.synapse.task.service.TaskManagementService;
import java.util.ArrayList;
import java.util.List;
/**
* ServiceHandler for the TaskManagement service
*/
public class TaskManagementServiceHandler extends ServiceHanlder {
private static final Log log = LogFactory.getLog(TaskManager.class);
public TaskManagementServiceHandler() {
super();
}
/**
* Adding a TaskDescription
* Delegates adding responsibility to underlying each 'TaskManagementService' service
*
* @param taskDescription TaskDescription instance
* @param className Name of the class of TaskManagementService implementer
*/
public void addTaskDescription(TaskDescription taskDescription, String className) {
TaskManagementService managementService = getTaskManagementServiceImplementer(className);
if (managementService != null) {
managementService.addTaskDescription(taskDescription);
}
}
/**
* Deleting a TaskDescription
* Delegates deleting responsibility to each 'TaskManagementService' service
*
* @param name Name of the TaskDescription instance to be deleted
* @param className Name of the class of TaskManagementService implementer
*/
public void deleteTaskDescription(String name, String className) {
TaskManagementService managementService = getTaskManagementServiceImplementer(className);
if (managementService != null) {
managementService.deleteTaskDescription(name);
}
}
/**
* Editing a TaskDescription
* Delegates Editing responsibility to each 'TaskManagementService' service
*
* @param taskDescription TaskDescription instance
* @param className Name of the class of TaskManagementService implementer
*/
public void editTaskDescription(TaskDescription taskDescription, String className) {
TaskManagementService managementService = getTaskManagementServiceImplementer(className);
if (managementService != null) {
managementService.editTaskDescription(taskDescription);
}
}
/**
* Looking up a TaskDescription
* Delegates Looking up responsibility to each 'TaskManagementService' service
*
* @param name Name of the TaskDescription to be returned
* @param className Name of the class of TaskManagementService implementer
* @return taskDescription TaskDescription instance
*/
public TaskDescription getTaskDescription(String name, String className) {
TaskManagementService managementService = getTaskManagementServiceImplementer(className);
if (managementService != null) {
return managementService.getTaskDescription(name);
}
return null;
}
/**
* Explicit check for a TaskDescription with a particular name
* Delegates responsibility to each 'TaskManagementService' service until any one find a TaskDescription
* with the given name
*
* @param name Name of the TaskDescription
* @param className Name of the class of TaskManagementService implementer
* @return Ture if there is a task with given name
*/
public boolean isContains(String name, String className) {
TaskManagementService managementService = getTaskManagementServiceImplementer(className);
return managementService != null && managementService.isContains(name);
}
public List<String> getPropertyNames(String taskClass, String className) {
TaskManagementService managementService = getTaskManagementServiceImplementer(className);
if (managementService != null) {
return managementService.getPropertyNames(taskClass);
}
if (log.isDebugEnabled()) {
log.debug("Cannot find a property name list of class : " + taskClass);
}
return new ArrayList<String>();
}
public TaskManagementService getTaskManagementServiceImplementer(String className) {
final List<Object> services = getServices();
if (!assertEmpty(services)) {
for (Object serviceObject : services) {
if (serviceObject instanceof TaskManagementService) {
String name = serviceObject.getClass().getName();
if (name.equals(className)) {
return (TaskManagementService) serviceObject;
}
}
}
}
return null;
}
}