org.apache.synapse.task.TaskDescriptionRepository Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.synapse.task;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* Local repository for holds Task descriptions
*/
@SuppressWarnings({"UnusedDeclaration"})
public class TaskDescriptionRepository {
private static final Log log = LogFactory.getLog(TaskDescriptionRepository.class);
private final Map taskDescriptionMap
= new HashMap();
/**
* Stores a given TaskDescription
*
* @param taskDescription TaskDescription instance
*/
public void addTaskDescription(TaskDescription taskDescription) {
validateTaskDescription(taskDescription);
String name = taskDescription.getName();
validateName(name);
validateUniqueness(name);
if (log.isDebugEnabled()) {
log.debug("Storing a TaskDescription : " + taskDescription);
}
taskDescriptionMap.put(name, taskDescription);
}
/**
* Gets a TaskDescription
*
* @param name Name of the TaskDescription to be looked up
* @return TaskDescription instance
*/
public TaskDescription getTaskDescription(String name) {
validateName(name);
TaskDescription taskDescription = taskDescriptionMap.get(name);
if (taskDescription == null) {
if (log.isDebugEnabled()) {
log.debug("TaskDescription cannot be found for name :" + name +
" , returning null");
}
} else {
if (log.isDebugEnabled()) {
log.debug("Returning TaskDescription : " + taskDescription);
}
}
return taskDescription;
}
/**
* Removing a TaskDescription
*
* @param name Name of the TaskDescription to be removed
* @return Removed TaskDescription instance
*/
public TaskDescription removeTaskDescription(String name) {
validateName(name);
if (log.isDebugEnabled()) {
log.debug("Removing a TaskDescription with name : " + name);
}
TaskDescription taskDescription = taskDescriptionMap.remove(name);
if (taskDescription == null) {
if (log.isDebugEnabled()) {
log.debug("There is no TaskDescription to be removed with name : " + name);
}
} else {
if (log.isDebugEnabled()) {
log.debug("Removed TaskDescription : " + taskDescription);
}
}
return taskDescription;
}
/**
* Return all TaskDescritions
*
* @return Iterator for access taskDescritions
*/
public Iterator getAllTaskDescriptions() {
return taskDescriptionMap.values().iterator();
}
/**
* Explicit check for determine whether there is a task description with a name in interest
*
* @param name Name of the TaskDescription
* @return Returns true , if there is no TaskDescription associated with given name ,
* otherwise , false
*/
public boolean isUnique(String name) {
validateName(name);
return taskDescriptionMap.isEmpty() || !taskDescriptionMap.containsKey(name);
}
public void clear() {
this.taskDescriptionMap.clear();
}
private void validateName(String name) {
if (name == null || "".equals(name)) {
throw new SynapseTaskException("Task name is null or empty", log);
}
}
private void validateUniqueness(String name) {
if (taskDescriptionMap.containsKey(name)) {
throw new SynapseTaskException("Name with ' " + name + " ' is already there", log);
}
}
private void validateTaskDescription(TaskDescription taskDescription) {
if (taskDescription == null) {
throw new SynapseTaskException("TaskDescription is null", log);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy