Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/ServletJob.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/ServletJob.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/ServletJob.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/ServletJob.java Wed Jan 30 23:44:03 2008
@@ -14,112 +14,110 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.scheduler;
-
import javax.servlet.http.HttpServletRequest;
-
import org.apache.lenya.util.NamespaceMap;
import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.SchedulerException;
import org.w3c.dom.Element;
-
/**
* Scheduling job that uses an HttpServletRequest to obtain its Job data.
*/
public abstract class ServletJob implements Job {
-
- private static Category log = Category.getInstance(ServletJob.class);
-
- /**
- * Creates the job data from an HTTP request.
- * @param request The request.
- * @return A job data map.
- * @throws SchedulerException when something went wrong.
- */
- public JobDataMap createJobData(HttpServletRequest request)
- throws SchedulerException {
- JobDataMap map = new JobDataMap();
- String key = NamespaceMap.getFullName(LoadQuartzServlet.PREFIX, PARAMETER_DOCUMENT_URL);
- String documentUrl = request.getParameter(key);
- if (documentUrl == null) {
- throw new SchedulerException("Document URL must not be null!");
- }
- map.put(key, documentUrl);
- return map;
- }
-
- /**
- * Loads the job data from an XML element.
- * @param element An XML element.
- * @param jobGroup The job group the job belongs to.
- * @param servletContextPath The servlet context path.
- * @return A job detail object.
- * @throws SchedulerException when something went wrong.
- */
- public JobDetail load(Element element, String jobGroup, String servletContextPath)
- throws SchedulerException {
- String jobId = element.getAttribute(ATTRIBUTE_ID);
- JobDetail jobDetail = new JobDetail(jobId, jobGroup, getClass());
- return jobDetail;
-
- }
-
- public static final String ELEMENT_JOB = "job";
- public static final String ATTRIBUTE_ID = "id";
- public static final String ATTRIBUTE_CLASS = "class";
- public static final String ATTRIBUTE_DOCUMENT_URL = "url";
- public static final String ATTRIBUTE_SERVLET_CONTEXT = "servletcontext";
- public static final String PARAMETER_DOCUMENT_URL = "document-url";
-
- /**
- * Saves the job data to an XML element.
- * @param helper The namespace helper of the document the element shall belong to.
- * @param jobDetail The job detail to save.
- * @return An XML element.
- * @throws SchedulerException when something went wrong.
- */
- public Element save(NamespaceHelper helper, JobDetail jobDetail) throws SchedulerException {
- log.debug("Saving job");
-
- Element jobElement = helper.createElement(ELEMENT_JOB);
- jobElement.setAttribute(ATTRIBUTE_ID, jobDetail.getName());
- jobElement.setAttribute(ATTRIBUTE_CLASS, getClass().getName());
-
- String documentUrl = getDocumentUrl(jobDetail);
- jobElement.setAttribute(ATTRIBUTE_DOCUMENT_URL, documentUrl);
-
- return jobElement;
- }
-
- /**
- * Returns the document URL of a certain job.
- * @param jobDetail The job detail.
- * @return A string.
- */
- public String getDocumentUrl(JobDetail jobDetail) {
- JobDataMap map = jobDetail.getJobDataMap();
- NamespaceMap wrapper = new NamespaceMap(map, LoadQuartzServlet.PREFIX);
- String documentUrl = (String) wrapper.get(PARAMETER_DOCUMENT_URL);
- return documentUrl;
- }
-
- /**
- * Sets the document URL of a job.
- * @param jobDetail The job detail.
- * @param url The URL.
- */
- public void setDocumentUrl(JobDetail jobDetail, String url) {
- JobDataMap map = jobDetail.getJobDataMap();
- NamespaceMap wrapper = new NamespaceMap(map, LoadQuartzServlet.PREFIX);
- wrapper.put(PARAMETER_DOCUMENT_URL, url);
- jobDetail.setJobDataMap(map);
- }
-
+ private static Logger log = Logger.getLogger(ServletJob.class);
+ /**
+ * Creates the job data from an HTTP request.
+ *
+ * @param request
+ * The request.
+ * @return A job data map.
+ * @throws SchedulerException
+ * when something went wrong.
+ */
+ public JobDataMap createJobData(HttpServletRequest request) throws SchedulerException {
+ JobDataMap map = new JobDataMap();
+ String key = NamespaceMap.getFullName(LoadQuartzServlet.PREFIX, PARAMETER_DOCUMENT_URL);
+ String documentUrl = request.getParameter(key);
+ if(documentUrl == null){
+ throw new SchedulerException("Document URL must not be null!");
+ }
+ map.put(key, documentUrl);
+ return map;
+ }
+ /**
+ * Loads the job data from an XML element.
+ *
+ * @param element
+ * An XML element.
+ * @param jobGroup
+ * The job group the job belongs to.
+ * @param servletContextPath
+ * The servlet context path.
+ * @return A job detail object.
+ * @throws SchedulerException
+ * when something went wrong.
+ */
+ public JobDetail load(Element element, String jobGroup, String servletContextPath) throws SchedulerException {
+ String jobId = element.getAttribute(ATTRIBUTE_ID);
+ JobDetail jobDetail = new JobDetail(jobId, jobGroup, getClass());
+ return jobDetail;
+ }
+ public static final String ELEMENT_JOB = "job";
+ public static final String ATTRIBUTE_ID = "id";
+ public static final String ATTRIBUTE_CLASS = "class";
+ public static final String ATTRIBUTE_DOCUMENT_URL = "url";
+ public static final String ATTRIBUTE_SERVLET_CONTEXT = "servletcontext";
+ public static final String PARAMETER_DOCUMENT_URL = "document-url";
+ /**
+ * Saves the job data to an XML element.
+ *
+ * @param helper
+ * The namespace helper of the document the element shall belong to.
+ * @param jobDetail
+ * The job detail to save.
+ * @return An XML element.
+ * @throws SchedulerException
+ * when something went wrong.
+ */
+ public Element save(NamespaceHelper helper, JobDetail jobDetail) throws SchedulerException {
+ log.debug("Saving job");
+ Element jobElement = helper.createElement(ELEMENT_JOB);
+ jobElement.setAttribute(ATTRIBUTE_ID, jobDetail.getName());
+ jobElement.setAttribute(ATTRIBUTE_CLASS, getClass().getName());
+ String documentUrl = getDocumentUrl(jobDetail);
+ jobElement.setAttribute(ATTRIBUTE_DOCUMENT_URL, documentUrl);
+ return jobElement;
+ }
+ /**
+ * Returns the document URL of a certain job.
+ *
+ * @param jobDetail
+ * The job detail.
+ * @return A string.
+ */
+ public String getDocumentUrl(JobDetail jobDetail) {
+ JobDataMap map = jobDetail.getJobDataMap();
+ NamespaceMap wrapper = new NamespaceMap(map, LoadQuartzServlet.PREFIX);
+ String documentUrl = (String) wrapper.get(PARAMETER_DOCUMENT_URL);
+ return documentUrl;
+ }
+ /**
+ * Sets the document URL of a job.
+ *
+ * @param jobDetail
+ * The job detail.
+ * @param url
+ * The URL.
+ */
+ public void setDocumentUrl(JobDetail jobDetail, String url) {
+ JobDataMap map = jobDetail.getJobDataMap();
+ NamespaceMap wrapper = new NamespaceMap(map, LoadQuartzServlet.PREFIX);
+ wrapper.put(PARAMETER_DOCUMENT_URL, url);
+ jobDetail.setJobDataMap(map);
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/ServletJobFactory.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/ServletJobFactory.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/ServletJobFactory.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/ServletJobFactory.java Wed Jan 30 23:44:03 2008
@@ -14,61 +14,50 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.scheduler;
-
-import org.apache.log4j.Category;
-
-
+import org.apache.log4j.Logger;
/**
* Factory for building serlvet jobs.
*/
public final class ServletJobFactory {
-
- /**
- * Ctor.
- */
- private ServletJobFactory() {
- }
-
- private static Category log = Category.getInstance(ServletJobFactory.class);
-
- /**
- * Creates a job.
- * @param jobClassName The name of the Java class used to instanciate the job object.
- * @return A servlet job.
- */
- public static ServletJob createJob(String jobClassName) {
- try {
- Class cl = Class.forName(jobClassName);
-
- return createJob(cl);
- } catch (Exception e) {
- log.error("Cannot create Job instance: " + e);
-
- return null;
- }
- }
-
- /**
- * Creates a job.
- *
- * @param cl The Java class used to instanciate the job object.
- *
- * @return A servlet job.
- */
- public static ServletJob createJob(Class cl) {
- try {
- ServletJob job = (ServletJob) cl.newInstance();
-
- return job;
- } catch (Exception e) {
- log.error("Cannot create Job instance: " + e);
-
- return null;
- }
- }
-
+ /**
+ * Ctor.
+ */
+ private ServletJobFactory() {
+ }
+ private static Logger log = Logger.getLogger(ServletJobFactory.class);
+ /**
+ * Creates a job.
+ *
+ * @param jobClassName
+ * The name of the Java class used to instanciate the job object.
+ * @return A servlet job.
+ */
+ public static ServletJob createJob(String jobClassName) {
+ try{
+ Class cl = Class.forName(jobClassName);
+ return createJob(cl);
+ }catch(Exception e){
+ log.error("Cannot create Job instance: " + e);
+ return null;
+ }
+ }
+ /**
+ * Creates a job.
+ *
+ * @param cl
+ * The Java class used to instanciate the job object.
+ *
+ * @return A servlet job.
+ */
+ public static ServletJob createJob(Class cl) {
+ try{
+ ServletJob job = (ServletJob) cl.newInstance();
+ return job;
+ }catch(Exception e){
+ log.error("Cannot create Job instance: " + e);
+ return null;
+ }
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/TaskJob.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/TaskJob.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/TaskJob.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/TaskJob.java Wed Jan 30 23:44:03 2008
@@ -14,150 +14,139 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.scheduler;
-
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
-
import javax.servlet.http.HttpServletRequest;
-
import org.apache.lenya.cms.task.DefaultTaskWrapper;
import org.apache.lenya.cms.task.ExecutionException;
import org.apache.lenya.cms.task.TaskParameters;
import org.apache.lenya.cms.task.TaskWrapper;
import org.apache.lenya.util.NamespaceMap;
import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.SchedulerException;
import org.w3c.dom.Element;
-
/**
- * A TaskJob is a Job that executes a Task. The task ID is obtained from the <code>task-id</code>
- * request parameter.
+ * A TaskJob is a Job that executes a Task. The task ID is obtained from the <code>task-id</code> request parameter.
*/
public class TaskJob extends ServletJob {
- private static Category log = Category.getInstance(TaskJob.class);
-
- /**
- * Un-prefix the parameters.
- *
- * @param wrapperMap the prefixed parameters.
- *
- * @return the parameters
- * @throws SchedulerException when something went wrong.
- */
- protected Map stripPrefixes(Map wrapperMap)
- throws SchedulerException {
-
- NamespaceMap taskParameters = new NamespaceMap(TaskParameters.PREFIX);
- taskParameters.putAll(wrapperMap);
- wrapperMap.putAll(taskParameters.getPrefixedMap());
-
- DefaultTaskWrapper wrapper = new DefaultTaskWrapper(wrapperMap);
- return wrapper.getParameters();
- }
-
- /**
- * Creates the job data for a job.
- *
- * @param servletContextPath The servlet context path.
- * @param request The request.
- *
- * @return A job data map.
- * @throws SchedulerException when something went wrong.
- */
- public JobDataMap createJobData(HttpServletRequest request)
- throws SchedulerException {
- log.debug("Creating job data map:");
- JobDataMap map = super.createJobData(request);
-
- Enumeration parameters = request.getParameterNames();
- Map wrapperMap = new HashMap();
- while (parameters.hasMoreElements()) {
- String key = (String) parameters.nextElement();
- Object value;
- String[] values = request.getParameterValues(key);
- if (values.length == 1) {
- value = values[0];
- }
- else {
- value = values;
- }
- wrapperMap.put(key, value);
- }
-
- map.putAll(stripPrefixes(wrapperMap));
- return map;
- }
-
- /**
- * <p>
- * Called by the <code>{@link org.quartz.Scheduler}</code> when a <code>{@link
- * org.quartz.Trigger}</code> fires that is associated with the <code>Job</code>.
- * </p>
- *
- * @param context DOCUMENT ME!
- *
- * @throws JobExecutionException if there is an exception while executing the job.
- */
- public void execute(JobExecutionContext context) throws JobExecutionException {
- log.info("Executing job");
- JobDetail jobDetail = context.getJobDetail();
-
- DefaultTaskWrapper wrapper = new DefaultTaskWrapper(jobDetail.getJobDataMap());
- try {
- wrapper.execute();
- } catch (ExecutionException e) {
- log.error("Task execution failed: ", e);
- }
- }
-
- /**
- * Loads a job details object from an XML element.
- *
- * @param jobElement The XML element.
- * @param jobGroup The job group the job belongs to.
- * @param servletContextPath The servlet context path.
- * @throws SchedulerException when something went wrong.
- *
- * @return A job details object.
- */
- public JobDetail load(Element jobElement, String jobGroup, String servletContextPath) throws SchedulerException {
- JobDetail jobDetail = super.load(jobElement, jobGroup, servletContextPath);
-
- NamespaceHelper helper = SchedulerStore.getNamespaceHelper();
- DefaultTaskWrapper wrapper = new DefaultTaskWrapper(helper, jobElement);
- wrapper.getTaskParameters().setServletContextPath(servletContextPath);
-
- JobDataMap map = new JobDataMap(wrapper.getParameters());
- jobDetail.setJobDataMap(map);
-
- return jobDetail;
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param jobDetail DOCUMENT ME!
- * @param helper namespace helper
- * @throws SchedulerException when something went wrong.
- *
- * @return DOCUMENT ME!
- */
- public Element save(NamespaceHelper helper, JobDetail jobDetail) throws SchedulerException {
-
- Element jobElement = super.save(helper, jobDetail);
- TaskWrapper wrapper = new DefaultTaskWrapper(jobDetail.getJobDataMap());
- jobElement.appendChild(wrapper.save(helper));
-
- return jobElement;
- }
+ private static Logger log = Logger.getLogger(TaskJob.class);
+ /**
+ * Un-prefix the parameters.
+ *
+ * @param wrapperMap
+ * the prefixed parameters.
+ *
+ * @return the parameters
+ * @throws SchedulerException
+ * when something went wrong.
+ */
+ protected Map stripPrefixes(Map wrapperMap) throws SchedulerException {
+ NamespaceMap taskParameters = new NamespaceMap(TaskParameters.PREFIX);
+ taskParameters.putAll(wrapperMap);
+ wrapperMap.putAll(taskParameters.getPrefixedMap());
+ DefaultTaskWrapper wrapper = new DefaultTaskWrapper(wrapperMap);
+ return wrapper.getParameters();
+ }
+ /**
+ * Creates the job data for a job.
+ *
+ * @param servletContextPath
+ * The servlet context path.
+ * @param request
+ * The request.
+ *
+ * @return A job data map.
+ * @throws SchedulerException
+ * when something went wrong.
+ */
+ public JobDataMap createJobData(HttpServletRequest request) throws SchedulerException {
+ log.debug("Creating job data map:");
+ JobDataMap map = super.createJobData(request);
+ Enumeration parameters = request.getParameterNames();
+ Map wrapperMap = new HashMap();
+ while(parameters.hasMoreElements()){
+ String key = (String) parameters.nextElement();
+ Object value;
+ String[] values = request.getParameterValues(key);
+ if(values.length == 1){
+ value = values[0];
+ }else{
+ value = values;
+ }
+ wrapperMap.put(key, value);
+ }
+ map.putAll(stripPrefixes(wrapperMap));
+ return map;
+ }
+ /**
+ * <p>
+ * Called by the <code>{@link org.quartz.Scheduler}</code> when a <code>{@link
+ * org.quartz.Trigger}</code> fires that is associated with the <code>Job</code>.
+ * </p>
+ *
+ * @param context
+ * DOCUMENT ME!
+ *
+ * @throws JobExecutionException
+ * if there is an exception while executing the job.
+ */
+ public void execute(JobExecutionContext context) throws JobExecutionException {
+ log.info("Executing job");
+ JobDetail jobDetail = context.getJobDetail();
+ DefaultTaskWrapper wrapper = new DefaultTaskWrapper(jobDetail.getJobDataMap());
+ try{
+ wrapper.execute();
+ }catch(ExecutionException e){
+ log.error("Task execution failed: ", e);
+ }
+ }
+ /**
+ * Loads a job details object from an XML element.
+ *
+ * @param jobElement
+ * The XML element.
+ * @param jobGroup
+ * The job group the job belongs to.
+ * @param servletContextPath
+ * The servlet context path.
+ * @throws SchedulerException
+ * when something went wrong.
+ *
+ * @return A job details object.
+ */
+ public JobDetail load(Element jobElement, String jobGroup, String servletContextPath) throws SchedulerException {
+ JobDetail jobDetail = super.load(jobElement, jobGroup, servletContextPath);
+ NamespaceHelper helper = SchedulerStore.getNamespaceHelper();
+ DefaultTaskWrapper wrapper = new DefaultTaskWrapper(helper, jobElement);
+ wrapper.getTaskParameters().setServletContextPath(servletContextPath);
+ JobDataMap map = new JobDataMap(wrapper.getParameters());
+ jobDetail.setJobDataMap(map);
+ return jobDetail;
+ }
+ /**
+ * DOCUMENT ME!
+ *
+ * @param jobDetail
+ * DOCUMENT ME!
+ * @param helper
+ * namespace helper
+ * @throws SchedulerException
+ * when something went wrong.
+ *
+ * @return DOCUMENT ME!
+ */
+ public Element save(NamespaceHelper helper, JobDetail jobDetail) throws SchedulerException {
+ Element jobElement = super.save(helper, jobDetail);
+ TaskWrapper wrapper = new DefaultTaskWrapper(jobDetail.getJobDataMap());
+ jobElement.appendChild(wrapper.save(helper));
+ return jobElement;
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/xml/TriggerHelper.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/xml/TriggerHelper.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/xml/TriggerHelper.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/scheduler/xml/TriggerHelper.java Wed Jan 30 23:44:03 2008
@@ -14,257 +14,209 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.scheduler.xml;
-
import java.io.IOException;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
-
import org.apache.lenya.cms.scheduler.SchedulerStore;
import org.apache.lenya.util.NamespaceMap;
import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
import org.quartz.CronTrigger;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.w3c.dom.Element;
-
-
/**
* Utility class to work with trigger XML.
*/
public final class TriggerHelper {
-
- /**
- * Ctor.
- */
- private TriggerHelper() {
- }
-
- private static Category log = Category.getInstance(TriggerHelper.class);
- public static final String YEAR = "year";
- public static final String MONTH = "month";
- public static final String DAY = "day";
- public static final String HOUR = "hour";
- public static final String MINUTE = "minute";
- public static final String TRIGGER_TYPE = "type";
- public static final String ONCE = "once";
- public static final String REPEATED = "repeated";
- public static final String CRON_EXPRESSION = "expression";
- private static int id = 0;
- public static final String PREFIX = "trigger";
-
- /**
- * Creates a trigger from an XML element.
- *
- * @param element The XML element.
- * @param jobName The job name.
- * @param jobGroup The job group.
- *
- * @return A trigger.
- */
- public static Trigger createTrigger(Element element, String jobName, String jobGroup) {
- if (!element.getLocalName().equals("trigger")) {
- throw new IllegalArgumentException();
- }
-
- String triggerType = element.getAttribute(TRIGGER_TYPE);
-
- NamespaceHelper helper = SchedulerStore.getNamespaceHelper();
-
- // SimpleTrigger
- if (triggerType.equals(ONCE)) {
- Element[] parameterElements = helper.getChildren(element, "parameter");
- GregorianCalendar date = new GregorianCalendar();
-
- for (int i = 0; i < parameterElements.length; i++) {
- String name = parameterElements[i].getAttribute("name");
- String value = parameterElements[i].getAttribute("value");
-
- if (name.equals(YEAR)) {
- date.set(Calendar.YEAR, Integer.parseInt(value));
- }
-
- if (name.equals(MONTH)) {
- date.set(Calendar.MONTH, Integer.parseInt(value) - 1);
- }
-
- if (name.equals(DAY)) {
- date.set(Calendar.DAY_OF_MONTH, Integer.parseInt(value));
- }
-
- if (name.equals(HOUR)) {
- date.set(Calendar.HOUR_OF_DAY, Integer.parseInt(value));
- }
-
- if (name.equals(MINUTE)) {
- date.set(Calendar.MINUTE, Integer.parseInt(value));
- }
-
- if (name.equals(HOUR)) {
- date.set(Calendar.HOUR_OF_DAY, Integer.parseInt(value));
- }
- }
-
- return createSimpleTrigger(jobName, jobGroup, date.getTime());
- }
-
- // CronTrigger
- if (triggerType.equals(REPEATED)) {
- Element[] parameterElements = helper.getChildren(element, "parameter");
- String name = parameterElements[0].getAttribute("name");
- String value = parameterElements[0].getAttribute("value");
- String cron_expression;
-
- if (name.equals(CRON_EXPRESSION)) {
- cron_expression = value;
- } else {
- cron_expression = "45 * * * * ?";
- }
-
- return createCronTrigger(jobName, jobGroup, cron_expression);
- }
-
- throw new IllegalStateException("Trigger type '" + triggerType + "' not defined!");
- }
-
- /**
- * Creates a unique trigger ID.
- * @return A string.
- */
- protected static String createUniqueTriggerId() {
- return "trigger_" + id++;
- }
-
- /**
- * Creates a simple trigger.
- *
- * @param jobName The job name.
- * @param jobGroup The job group.
- * @param date The trigger date.
- *
- * @return DOCUMENT ME!
- */
- public static Trigger createSimpleTrigger(String jobName, String jobGroup, Date date) {
- return new SimpleTrigger(createUniqueTriggerId(), "triggerGroup1", jobName, jobGroup, date,
- null, 0, 0);
- }
-
- /**
- * Creates a cron trigger.
- *
- * @param jobName The job name.
- * @param jobGroup The job group.
- * @param cron_expression Seconds, Minutes, Hours, Day of Month, Months, Day of Week (e.g. 34
- * ?)
- *
- * @return A trigger.
- */
- public static Trigger createCronTrigger(String jobName, String jobGroup, String cron_expression) {
- try {
- return new CronTrigger(createUniqueTriggerId(), "triggerGroup1", jobName, jobGroup,
- cron_expression);
- } catch (ParseException e) {
- log.error(".createCronTrigger(): " + e);
- }
-
- return null;
- }
-
- /**
- * Creates an XML element containing trigger information.
- * @param helper The namespace helper to use.
- * @param trigger The trigger.
- * @return An XML element.
- */
- public static Element createElement(NamespaceHelper helper, Trigger trigger) {
- Element triggerElement = helper.createElement("trigger");
- triggerElement.setAttribute("type", ONCE);
-
- if (trigger == null) {
- return triggerElement;
- }
-
- GregorianCalendar startTime = new GregorianCalendar();
- startTime.setTime(trigger.getStartTime());
-
- Element yearElement = helper.createElement("parameter");
- yearElement.setAttribute("name", YEAR);
- yearElement.setAttribute("value", Integer.toString(startTime.get(Calendar.YEAR)));
- triggerElement.appendChild(yearElement);
-
- Element monthElement = helper.createElement("parameter");
- monthElement.setAttribute("name", MONTH);
- monthElement.setAttribute("value", Integer.toString(startTime.get(Calendar.MONTH) + 1));
- triggerElement.appendChild(monthElement);
-
- Element dayElement = helper.createElement("parameter");
- dayElement.setAttribute("name", DAY);
- dayElement.setAttribute("value", Integer.toString(startTime.get(Calendar.DAY_OF_MONTH)));
- triggerElement.appendChild(dayElement);
-
- Element hourElement = helper.createElement("parameter");
- hourElement.setAttribute("name", HOUR);
- hourElement.setAttribute("value", Integer.toString(startTime.get(Calendar.HOUR_OF_DAY)));
- triggerElement.appendChild(hourElement);
-
- Element minuteElement = helper.createElement("parameter");
- minuteElement.setAttribute("name", MINUTE);
- minuteElement.setAttribute("value", Integer.toString(startTime.get(Calendar.MINUTE)));
- triggerElement.appendChild(minuteElement);
-
- return triggerElement;
- }
-
- /**
- * Extracts the date from the scheduler parameters.
- * @param schedulerParameters The scheduler parameters.
- * @return A date.
- * @throws IOException when something went wrong.
- */
- public static Date getDate(NamespaceMap schedulerParameters) throws IOException {
- NamespaceMap triggerParameters =
- new NamespaceMap(schedulerParameters.getMap(), PREFIX);
- String startDay = (String) triggerParameters.get(DAY);
- String startMonth = (String) triggerParameters.get(MONTH);
- String startYear = (String) triggerParameters.get(YEAR);
- String startHour = (String) triggerParameters.get(HOUR);
- String startMin = (String) triggerParameters.get(MINUTE);
-
- Date startTime = null;
-
- try {
- // Month value is 0-based
- startTime =
- new GregorianCalendar(
- Integer.parseInt(startYear),
- Integer.parseInt(startMonth) - 1,
- Integer.parseInt(startDay),
- Integer.parseInt(startHour),
- Integer.parseInt(startMin))
- .getTime();
- } catch (NumberFormatException e) {
- log.error(
- "NumberFormatException with parameters "
- + "startYear, startMonth, startDay, startHour, startMin: "
- + startDay
- + ", "
- + startMonth
- + ", "
- + startDay
- + ", "
- + startHour
- + ", "
- + startMin,
- e);
- throw new IOException("Parsing scheduling date/time failed!");
- }
- return startTime;
- }
-
+ /**
+ * Ctor.
+ */
+ private TriggerHelper() {
+ }
+ private static Logger log = Logger.getLogger(TriggerHelper.class);
+ public static final String YEAR = "year";
+ public static final String MONTH = "month";
+ public static final String DAY = "day";
+ public static final String HOUR = "hour";
+ public static final String MINUTE = "minute";
+ public static final String TRIGGER_TYPE = "type";
+ public static final String ONCE = "once";
+ public static final String REPEATED = "repeated";
+ public static final String CRON_EXPRESSION = "expression";
+ private static int id = 0;
+ public static final String PREFIX = "trigger";
+ /**
+ * Creates a trigger from an XML element.
+ *
+ * @param element
+ * The XML element.
+ * @param jobName
+ * The job name.
+ * @param jobGroup
+ * The job group.
+ *
+ * @return A trigger.
+ */
+ public static Trigger createTrigger(Element element, String jobName, String jobGroup) {
+ if(!element.getLocalName().equals("trigger")){
+ throw new IllegalArgumentException();
+ }
+ String triggerType = element.getAttribute(TRIGGER_TYPE);
+ NamespaceHelper helper = SchedulerStore.getNamespaceHelper();
+ // SimpleTrigger
+ if(triggerType.equals(ONCE)){
+ Element[] parameterElements = helper.getChildren(element, "parameter");
+ GregorianCalendar date = new GregorianCalendar();
+ for(int i = 0; i < parameterElements.length; i++){
+ String name = parameterElements[i].getAttribute("name");
+ String value = parameterElements[i].getAttribute("value");
+ if(name.equals(YEAR)){
+ date.set(Calendar.YEAR, Integer.parseInt(value));
+ }
+ if(name.equals(MONTH)){
+ date.set(Calendar.MONTH, Integer.parseInt(value) - 1);
+ }
+ if(name.equals(DAY)){
+ date.set(Calendar.DAY_OF_MONTH, Integer.parseInt(value));
+ }
+ if(name.equals(HOUR)){
+ date.set(Calendar.HOUR_OF_DAY, Integer.parseInt(value));
+ }
+ if(name.equals(MINUTE)){
+ date.set(Calendar.MINUTE, Integer.parseInt(value));
+ }
+ if(name.equals(HOUR)){
+ date.set(Calendar.HOUR_OF_DAY, Integer.parseInt(value));
+ }
+ }
+ return createSimpleTrigger(jobName, jobGroup, date.getTime());
+ }
+ // CronTrigger
+ if(triggerType.equals(REPEATED)){
+ Element[] parameterElements = helper.getChildren(element, "parameter");
+ String name = parameterElements[0].getAttribute("name");
+ String value = parameterElements[0].getAttribute("value");
+ String cron_expression;
+ if(name.equals(CRON_EXPRESSION)){
+ cron_expression = value;
+ }else{
+ cron_expression = "45 * * * * ?";
+ }
+ return createCronTrigger(jobName, jobGroup, cron_expression);
+ }
+ throw new IllegalStateException("Trigger type '" + triggerType + "' not defined!");
+ }
+ /**
+ * Creates a unique trigger ID.
+ *
+ * @return A string.
+ */
+ protected static String createUniqueTriggerId() {
+ return "trigger_" + id++;
+ }
+ /**
+ * Creates a simple trigger.
+ *
+ * @param jobName
+ * The job name.
+ * @param jobGroup
+ * The job group.
+ * @param date
+ * The trigger date.
+ *
+ * @return DOCUMENT ME!
+ */
+ public static Trigger createSimpleTrigger(String jobName, String jobGroup, Date date) {
+ return new SimpleTrigger(createUniqueTriggerId(), "triggerGroup1", jobName, jobGroup, date, null, 0, 0);
+ }
+ /**
+ * Creates a cron trigger.
+ *
+ * @param jobName
+ * The job name.
+ * @param jobGroup
+ * The job group.
+ * @param cron_expression
+ * Seconds, Minutes, Hours, Day of Month, Months, Day of Week (e.g. 34 ?)
+ *
+ * @return A trigger.
+ */
+ public static Trigger createCronTrigger(String jobName, String jobGroup, String cron_expression) {
+ try{
+ return new CronTrigger(createUniqueTriggerId(), "triggerGroup1", jobName, jobGroup, cron_expression);
+ }catch(ParseException e){
+ log.error(".createCronTrigger(): " + e);
+ }
+ return null;
+ }
+ /**
+ * Creates an XML element containing trigger information.
+ *
+ * @param helper
+ * The namespace helper to use.
+ * @param trigger
+ * The trigger.
+ * @return An XML element.
+ */
+ public static Element createElement(NamespaceHelper helper, Trigger trigger) {
+ Element triggerElement = helper.createElement("trigger");
+ triggerElement.setAttribute("type", ONCE);
+ if(trigger == null){
+ return triggerElement;
+ }
+ GregorianCalendar startTime = new GregorianCalendar();
+ startTime.setTime(trigger.getStartTime());
+ Element yearElement = helper.createElement("parameter");
+ yearElement.setAttribute("name", YEAR);
+ yearElement.setAttribute("value", Integer.toString(startTime.get(Calendar.YEAR)));
+ triggerElement.appendChild(yearElement);
+ Element monthElement = helper.createElement("parameter");
+ monthElement.setAttribute("name", MONTH);
+ monthElement.setAttribute("value", Integer.toString(startTime.get(Calendar.MONTH) + 1));
+ triggerElement.appendChild(monthElement);
+ Element dayElement = helper.createElement("parameter");
+ dayElement.setAttribute("name", DAY);
+ dayElement.setAttribute("value", Integer.toString(startTime.get(Calendar.DAY_OF_MONTH)));
+ triggerElement.appendChild(dayElement);
+ Element hourElement = helper.createElement("parameter");
+ hourElement.setAttribute("name", HOUR);
+ hourElement.setAttribute("value", Integer.toString(startTime.get(Calendar.HOUR_OF_DAY)));
+ triggerElement.appendChild(hourElement);
+ Element minuteElement = helper.createElement("parameter");
+ minuteElement.setAttribute("name", MINUTE);
+ minuteElement.setAttribute("value", Integer.toString(startTime.get(Calendar.MINUTE)));
+ triggerElement.appendChild(minuteElement);
+ return triggerElement;
+ }
+ /**
+ * Extracts the date from the scheduler parameters.
+ *
+ * @param schedulerParameters
+ * The scheduler parameters.
+ * @return A date.
+ * @throws IOException
+ * when something went wrong.
+ */
+ public static Date getDate(NamespaceMap schedulerParameters) throws IOException {
+ NamespaceMap triggerParameters = new NamespaceMap(schedulerParameters.getMap(), PREFIX);
+ String startDay = (String) triggerParameters.get(DAY);
+ String startMonth = (String) triggerParameters.get(MONTH);
+ String startYear = (String) triggerParameters.get(YEAR);
+ String startHour = (String) triggerParameters.get(HOUR);
+ String startMin = (String) triggerParameters.get(MINUTE);
+ Date startTime = null;
+ try{
+ // Month value is 0-based
+ startTime = new GregorianCalendar(Integer.parseInt(startYear), Integer.parseInt(startMonth) - 1, Integer.parseInt(startDay), Integer.parseInt(startHour), Integer.parseInt(startMin)).getTime();
+ }catch(NumberFormatException e){
+ log.error("NumberFormatException with parameters " + "startYear, startMonth, startDay, startHour, startMin: " + startDay + ", " + startMonth + ", " + startDay + ", " + startHour + ", " + startMin, e);
+ throw new IOException("Parsing scheduling date/time failed!");
+ }
+ return startTime;
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/DefaultTaskWrapper.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/DefaultTaskWrapper.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/DefaultTaskWrapper.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/DefaultTaskWrapper.java Wed Jan 30 23:44:03 2008
@@ -14,11 +14,8 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.task;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
@@ -27,7 +24,6 @@
import java.util.List;
import java.util.Map;
import java.util.Properties;
-
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.environment.Request;
import org.apache.lenya.ac.Identity;
@@ -35,316 +31,282 @@
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.util.NamespaceMap;
import org.apache.lenya.xml.NamespaceHelper;
-import org.apache.log4j.Category;
+import org.apache.log4j.Logger;
import org.w3c.dom.Element;
-
public class DefaultTaskWrapper implements TaskWrapper {
-
- private static Category log = Category.getInstance(DefaultTaskWrapper.class);
-
- private Map parameters = new HashMap();
- private TaskWrapperParameters wrapperParameters =
- new TaskWrapperParameters(getParameterObject());
- private TaskParameters taskParameters = new TaskParameters(getParameterObject());
-
- /**
- * Default ctor for subclasses.
- */
- protected DefaultTaskWrapper() {
- }
-
- /**
- * Ctor to be called when all task wrapper parameters are known.
- * All keys and values must be strings or string arrays.
- * @param parameters The prefixed parameters.
- */
- public DefaultTaskWrapper(Map parameters) {
- log.debug("Creating");
-
- List keys = new ArrayList();
- for (Iterator i = parameters.keySet().iterator(); i.hasNext();) {
- String key = (String) i.next();
- keys.add(key);
- }
-
- Collections.sort(keys);
-
- for (Iterator i = keys.iterator(); i.hasNext();) {
- String key = (String) i.next();
- String value = null;
- Object valueObject = parameters.get(key);
- if (valueObject instanceof String) {
- value = ((String) valueObject).trim();
- } else if (valueObject instanceof String[]) {
- String[] values = (String[]) valueObject;
- value = "";
- for (int j = 0; j < values.length; j++) {
- if (j > 0 && !"".equals(value)) {
- value += ",";
- }
- value += values[j].trim();
- }
- } else {
- log.debug("Not a string value: [" + key + "] = [" + valueObject + "]");
+ private static Logger log = Logger.getLogger(DefaultTaskWrapper.class);
+ private Map parameters = new HashMap();
+ private TaskWrapperParameters wrapperParameters = new TaskWrapperParameters(getParameterObject());
+ private TaskParameters taskParameters = new TaskParameters(getParameterObject());
+ /**
+ * Default ctor for subclasses.
+ */
+ protected DefaultTaskWrapper() {
+ }
+ /**
+ * Ctor to be called when all task wrapper parameters are known. All keys and values must be strings or string arrays.
+ *
+ * @param parameters
+ * The prefixed parameters.
+ */
+ public DefaultTaskWrapper(Map parameters) {
+ log.debug("Creating");
+ List keys = new ArrayList();
+ for(Iterator i = parameters.keySet().iterator(); i.hasNext();){
+ String key = (String) i.next();
+ keys.add(key);
+ }
+ Collections.sort(keys);
+ for(Iterator i = keys.iterator(); i.hasNext();){
+ String key = (String) i.next();
+ String value = null;
+ Object valueObject = parameters.get(key);
+ if(valueObject instanceof String){
+ value = ((String) valueObject).trim();
+ }else if(valueObject instanceof String[]){
+ String[] values = (String[]) valueObject;
+ value = "";
+ for(int j = 0; j < values.length; j++){
+ if(j > 0 && !"".equals(value)){
+ value += ",";
+ }
+ value += values[j].trim();
}
-
- if (value != null) {
- log.debug("Setting parameter: [" + key + "] = [" + value + "]");
- this.parameters.put(key, value);
+ }else{
+ log.debug("Not a string value: [" + key + "] = [" + valueObject + "]");
+ }
+ if(value != null){
+ log.debug("Setting parameter: [" + key + "] = [" + value + "]");
+ this.parameters.put(key, value);
+ }
+ }
+ }
+ /**
+ * Ctor. Restores the wrapper parameters from an XML element.
+ *
+ * @param parent
+ * The parent of the task wrapper element.
+ * @param helper
+ * The namespace helper of the document.
+ */
+ public DefaultTaskWrapper(NamespaceHelper helper, Element parent) {
+ log.debug("Creating");
+ restore(helper, parent);
+ }
+ /**
+ * Initializes the task wrapper.
+ *
+ * @param taskId
+ * The task ID.
+ * @param publication
+ * The publication.
+ * @param webappUrl
+ * The webapp URL.
+ * @param parameters
+ * The task parameters.
+ * @throws ExecutionException
+ * when the task ID is null.
+ */
+ protected void initialize(String taskId, Publication publication, String webappUrl, Parameters parameters) throws ExecutionException {
+ log.debug("Initializing");
+ getTaskParameters().setPublication(publication);
+ getWrapperParameters().setWebappUrl(webappUrl);
+ getWrapperParameters().setTaskId(taskId);
+ getTaskParameters().parameterize(parameters);
+ }
+ /**
+ * Extracts the task parameters from the given objects.
+ *
+ * @param parameters
+ * A parameters object.
+ * @param publication
+ * A publication.
+ * @param request
+ * A request.
+ * @return A parameters object.
+ */
+ protected Parameters extractTaskParameters(Parameters parameters, Publication publication, Request request) {
+ Parameters taskParameters = new Parameters();
+ taskParameters.setParameter(Task.PARAMETER_SERVLET_CONTEXT, publication.getServletContext().getAbsolutePath());
+ taskParameters.setParameter(Task.PARAMETER_CONTEXT_PREFIX, request.getContextPath());
+ taskParameters.setParameter(Task.PARAMETER_SERVER_PORT, Integer.toString(request.getServerPort()));
+ taskParameters.setParameter(Task.PARAMETER_SERVER_URI, "http://" + request.getServerName());
+ taskParameters.setParameter(Task.PARAMETER_PUBLICATION_ID, publication.getId());
+ for(Enumeration e = request.getParameterNames(); e.hasMoreElements();){
+ String key = (String) e.nextElement();
+ String value = request.getParameter(key);
+ if(value != null){
+ taskParameters.setParameter(key, value);
+ }
+ }
+ String[] names = parameters.getNames();
+ for(int i = 0; i < names.length; i++){
+ String name = names[i];
+ String value = parameters.getParameter(name, "");
+ if(value != null){
+ taskParameters.setParameter(name, value);
+ }
+ }
+ return taskParameters;
+ }
+ /**
+ * Enables workflow transition invocation.
+ *
+ * @param eventName
+ * The event name.
+ * @param identity
+ * The identity that executes the task.
+ * @param roles
+ * The roles of the identity.
+ */
+ public void setWorkflowAware(String eventName, Identity identity, Role[] roles) {
+ NamespaceMap workflowParameters = WorkflowInvoker.extractParameters(eventName, identity, roles);
+ getParameterObject().putAll(workflowParameters.getPrefixedMap());
+ }
+ /**
+ * Executes the task.
+ *
+ * @throws ExecutionException
+ * when something went wrong.
+ */
+ public void execute() throws ExecutionException {
+ String taskId = getWrapperParameters().getTaskId();
+ if(taskId == null){
+ throw new ExecutionException("No task id provided!");
+ }
+ log.info("===================================");
+ log.info(" Executing task [" + taskId + "]");
+ log.info("-----------------------------------");
+ if(!wrapperParameters.isComplete()){
+ String[] missingKeys = getWrapperParameters().getMissingKeys();
+ String keyString = "";
+ for(int i = 0; i < missingKeys.length; i++){
+ if(i > 0){
+ keyString += ", ";
}
- }
-
- }
-
- /**
- * Ctor.
- * Restores the wrapper parameters from an XML element.
- * @param parent The parent of the task wrapper element.
- * @param helper The namespace helper of the document.
- */
- public DefaultTaskWrapper(NamespaceHelper helper, Element parent) {
- log.debug("Creating");
- restore(helper, parent);
- }
-
- /**
- * Initializes the task wrapper.
- * @param taskId The task ID.
- * @param publication The publication.
- * @param webappUrl The webapp URL.
- * @param parameters The task parameters.
- * @throws ExecutionException when the task ID is null.
- */
- protected void initialize(
- String taskId,
- Publication publication,
- String webappUrl,
- Parameters parameters)
- throws ExecutionException {
- log.debug("Initializing");
-
- getTaskParameters().setPublication(publication);
- getWrapperParameters().setWebappUrl(webappUrl);
-
- getWrapperParameters().setTaskId(taskId);
- getTaskParameters().parameterize(parameters);
- }
-
- /**
- * Extracts the task parameters from the given objects.
- * @param parameters A parameters object.
- * @param publication A publication.
- * @param request A request.
- * @return A parameters object.
- */
- protected Parameters extractTaskParameters(
- Parameters parameters,
- Publication publication,
- Request request) {
- Parameters taskParameters = new Parameters();
- taskParameters.setParameter(
- Task.PARAMETER_SERVLET_CONTEXT,
- publication.getServletContext().getAbsolutePath());
- taskParameters.setParameter(Task.PARAMETER_CONTEXT_PREFIX, request.getContextPath());
- taskParameters.setParameter(
- Task.PARAMETER_SERVER_PORT,
- Integer.toString(request.getServerPort()));
- taskParameters.setParameter(Task.PARAMETER_SERVER_URI, "http://" + request.getServerName());
- taskParameters.setParameter(Task.PARAMETER_PUBLICATION_ID, publication.getId());
-
- for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) {
- String key = (String) e.nextElement();
- String value = request.getParameter(key);
- if (value != null) {
- taskParameters.setParameter(key, value);
- }
- }
-
- String[] names = parameters.getNames();
- for (int i = 0; i < names.length; i++) {
- String name = names[i];
- String value = parameters.getParameter(name, "");
- if (value != null) {
- taskParameters.setParameter(name, value);
- }
- }
- return taskParameters;
- }
-
- /**
- * Enables workflow transition invocation.
- * @param eventName The event name.
- * @param identity The identity that executes the task.
- * @param roles The roles of the identity.
- */
- public void setWorkflowAware(String eventName, Identity identity, Role[] roles) {
- NamespaceMap workflowParameters =
- WorkflowInvoker.extractParameters(eventName, identity, roles);
- getParameterObject().putAll(workflowParameters.getPrefixedMap());
- }
-
- /**
- * Executes the task.
- * @throws ExecutionException when something went wrong.
- */
- public void execute() throws ExecutionException {
-
- String taskId = getWrapperParameters().getTaskId();
-
- if (taskId == null) {
- throw new ExecutionException("No task id provided!");
- }
-
- log.info("===================================");
- log.info(" Executing task [" + taskId + "]");
- log.info("-----------------------------------");
-
- if (!wrapperParameters.isComplete()) {
-
- String[] missingKeys = getWrapperParameters().getMissingKeys();
- String keyString = "";
- for (int i = 0; i < missingKeys.length; i++) {
- if (i > 0) {
- keyString += ", ";
- }
- keyString += missingKeys[i];
- }
- throw new ExecutionException("Parameters missing: [" + keyString + "]");
- }
-
- TaskManager manager;
-
- Publication publication = getTaskParameters().getPublication();
-
- WorkflowInvoker workflowInvoker = new WorkflowInvoker(getParameters());
- workflowInvoker.setup(publication, getWrapperParameters().getWebappUrl());
-
- Task task;
- try {
- manager = new TaskManager(publication.getDirectory().getAbsolutePath());
- task = manager.getTask(taskId);
-
- Properties properties = new Properties();
- properties.putAll(getTaskParameters().getMap());
- Parameters parameters = Parameters.fromProperties(properties);
-
- task.parameterize(parameters);
- } catch (Exception e) {
- throw new ExecutionException(e);
- }
-
- log.debug("-----------------------------------");
- log.debug(" Triggering workflow");
- log.debug("-----------------------------------");
-
- //FIXME The new workflow is set before the end of the transition because the document id
- // and so the document are sometimes changing during the transition (ex archiving , ...)
- workflowInvoker.invokeTransition();
-
- log.debug("-----------------------------------");
- log.debug(" Triggering task");
- log.debug("-----------------------------------");
-
- task.execute(publication.getServletContext().getAbsolutePath());
-
- log.debug("-----------------------------------");
- log.debug(" Triggering notification");
- log.debug("-----------------------------------");
- Notifier notifier = new Notifier(manager, getParameters());
- notifier.sendNotification(getTaskParameters());
-
- log.debug("-----------------------------------");
- log.debug(" Executing task finished.");
- log.debug("===================================\n\n");
- }
-
- /**
- * Returns the task wrapper parameters.
- * @return A task wrapper parameters object.
- */
- public TaskWrapperParameters getWrapperParameters() {
- return wrapperParameters;
- }
-
- /**
- * Returns the task parameters.
- * @return A task parameters object.
- */
- public TaskParameters getTaskParameters() {
- return taskParameters;
- }
-
- protected static final String ELEMENT_TASK = "task";
- protected static final String ELEMENT_PARAMETER = "parameter";
- protected static final String ATTRIBUTE_NAME = "name";
- protected static final String ATTRIBUTE_VALUE = "value";
-
- /**
- * Saves the wrapper parameters to an XML element.
- * @param helper The namespace helper of the document.
- * @return An XML element.
- */
- public Element save(NamespaceHelper helper) {
- org.w3c.dom.Document document = helper.getDocument();
- NamespaceHelper taskHelper =
- new NamespaceHelper(Task.NAMESPACE, Task.DEFAULT_PREFIX, document);
- Element element = taskHelper.createElement(ELEMENT_TASK);
-
- List keys = new ArrayList(getParameters().keySet());
- Collections.sort(keys);
-
- for (Iterator i = keys.iterator(); i.hasNext();) {
- String key = (String) i.next();
- Element parameterElement = taskHelper.createElement(ELEMENT_PARAMETER);
- parameterElement.setAttribute(ATTRIBUTE_NAME, key);
- parameterElement.setAttribute(ATTRIBUTE_VALUE, (String) getParameters().get(key));
- element.appendChild(parameterElement);
- }
-
- return element;
- }
-
- /**
- * Restores the wrapper parameters from an XML element.
- * @param parent The parent of the task wrapper element.
- * @param helper The namespace helper of the document.
- */
- public void restore(NamespaceHelper helper, Element parent) {
- org.w3c.dom.Document document = helper.getDocument();
- NamespaceHelper taskHelper =
- new NamespaceHelper(Task.NAMESPACE, Task.DEFAULT_PREFIX, document);
- Element taskElement = taskHelper.getFirstChild(parent, ELEMENT_TASK);
- Element[] parameterElements = taskHelper.getChildren(taskElement, ELEMENT_PARAMETER);
- for (int i = 0; i < parameterElements.length; i++) {
- String key = parameterElements[i].getAttribute(ATTRIBUTE_NAME);
- String value = parameterElements[i].getAttribute(ATTRIBUTE_VALUE);
- getParameterObject().put(key, value);
- }
- }
-
- /**
- * Returns all prefixed parameters.
- * @return A map.
- */
- public Map getParameters() {
- return Collections.unmodifiableMap(parameters);
- }
-
- /**
- * Returns all prefixed parameters.
- * @return A map.
- */
- protected Map getParameterObject() {
- return parameters;
- }
-
- /**
- * Sets the notification parameters.
- * @param notificationParameters The notification parameters.
- */
- protected void setNotifying(NamespaceMap notificationParameters) {
- log.info("Enabling notification");
- getParameterObject().putAll(notificationParameters.getPrefixedMap());
- }
-
+ keyString += missingKeys[i];
+ }
+ throw new ExecutionException("Parameters missing: [" + keyString + "]");
+ }
+ TaskManager manager;
+ Publication publication = getTaskParameters().getPublication();
+ WorkflowInvoker workflowInvoker = new WorkflowInvoker(getParameters());
+ workflowInvoker.setup(publication, getWrapperParameters().getWebappUrl());
+ Task task;
+ try{
+ manager = new TaskManager(publication.getDirectory().getAbsolutePath());
+ task = manager.getTask(taskId);
+ Properties properties = new Properties();
+ properties.putAll(getTaskParameters().getMap());
+ Parameters parameters = Parameters.fromProperties(properties);
+ task.parameterize(parameters);
+ }catch(Exception e){
+ throw new ExecutionException(e);
+ }
+ log.debug("-----------------------------------");
+ log.debug(" Triggering workflow");
+ log.debug("-----------------------------------");
+ // FIXME The new workflow is set before the end of the transition because the document id
+ // and so the document are sometimes changing during the transition (ex archiving , ...)
+ workflowInvoker.invokeTransition();
+ log.debug("-----------------------------------");
+ log.debug(" Triggering task");
+ log.debug("-----------------------------------");
+ task.execute(publication.getServletContext().getAbsolutePath());
+ log.debug("-----------------------------------");
+ log.debug(" Triggering notification");
+ log.debug("-----------------------------------");
+ Notifier notifier = new Notifier(manager, getParameters());
+ notifier.sendNotification(getTaskParameters());
+ log.debug("-----------------------------------");
+ log.debug(" Executing task finished.");
+ log.debug("===================================\n\n");
+ }
+ /**
+ * Returns the task wrapper parameters.
+ *
+ * @return A task wrapper parameters object.
+ */
+ public TaskWrapperParameters getWrapperParameters() {
+ return wrapperParameters;
+ }
+ /**
+ * Returns the task parameters.
+ *
+ * @return A task parameters object.
+ */
+ public TaskParameters getTaskParameters() {
+ return taskParameters;
+ }
+ protected static final String ELEMENT_TASK = "task";
+ protected static final String ELEMENT_PARAMETER = "parameter";
+ protected static final String ATTRIBUTE_NAME = "name";
+ protected static final String ATTRIBUTE_VALUE = "value";
+ /**
+ * Saves the wrapper parameters to an XML element.
+ *
+ * @param helper
+ * The namespace helper of the document.
+ * @return An XML element.
+ */
+ public Element save(NamespaceHelper helper) {
+ org.w3c.dom.Document document = helper.getDocument();
+ NamespaceHelper taskHelper = new NamespaceHelper(Task.NAMESPACE, Task.DEFAULT_PREFIX, document);
+ Element element = taskHelper.createElement(ELEMENT_TASK);
+ List keys = new ArrayList(getParameters().keySet());
+ Collections.sort(keys);
+ for(Iterator i = keys.iterator(); i.hasNext();){
+ String key = (String) i.next();
+ Element parameterElement = taskHelper.createElement(ELEMENT_PARAMETER);
+ parameterElement.setAttribute(ATTRIBUTE_NAME, key);
+ parameterElement.setAttribute(ATTRIBUTE_VALUE, (String) getParameters().get(key));
+ element.appendChild(parameterElement);
+ }
+ return element;
+ }
+ /**
+ * Restores the wrapper parameters from an XML element.
+ *
+ * @param parent
+ * The parent of the task wrapper element.
+ * @param helper
+ * The namespace helper of the document.
+ */
+ public void restore(NamespaceHelper helper, Element parent) {
+ org.w3c.dom.Document document = helper.getDocument();
+ NamespaceHelper taskHelper = new NamespaceHelper(Task.NAMESPACE, Task.DEFAULT_PREFIX, document);
+ Element taskElement = taskHelper.getFirstChild(parent, ELEMENT_TASK);
+ Element[] parameterElements = taskHelper.getChildren(taskElement, ELEMENT_PARAMETER);
+ for(int i = 0; i < parameterElements.length; i++){
+ String key = parameterElements[i].getAttribute(ATTRIBUTE_NAME);
+ String value = parameterElements[i].getAttribute(ATTRIBUTE_VALUE);
+ getParameterObject().put(key, value);
+ }
+ }
+ /**
+ * Returns all prefixed parameters.
+ *
+ * @return A map.
+ */
+ public Map getParameters() {
+ return Collections.unmodifiableMap(parameters);
+ }
+ /**
+ * Returns all prefixed parameters.
+ *
+ * @return A map.
+ */
+ protected Map getParameterObject() {
+ return parameters;
+ }
+ /**
+ * Sets the notification parameters.
+ *
+ * @param notificationParameters
+ * The notification parameters.
+ */
+ protected void setNotifying(NamespaceMap notificationParameters) {
+ log.info("Enabling notification");
+ getParameterObject().putAll(notificationParameters.getPrefixedMap());
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/ExecutionException.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/ExecutionException.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/ExecutionException.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/ExecutionException.java Wed Jan 30 23:44:03 2008
@@ -14,42 +14,43 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.task;
-
-
/**
* An Exception that is thrown when an error occurs during a task execution.
*/
public class ExecutionException extends Exception {
- /** Creates a new instance of ExecutionException */
- public ExecutionException() {
- }
-
- /** Creates a new instance of ExecutionException
- *
- * @param message the exception message
- */
- public ExecutionException(String message) {
- super(message);
- }
-
- /** Creates a new instance of ExecutionException
- *
- * @param message the exception message
- * @param cause the exception cause
- */
- public ExecutionException(String message, Throwable cause) {
- super(message, cause);
- }
-
- /** Creates a new instance of ExecutionException
- *
- * @param cause the exception cause
- */
- public ExecutionException(Throwable cause) {
- super(cause);
- }
+ private static final long serialVersionUID = 3535919691584859281L;
+ /** Creates a new instance of ExecutionException */
+ public ExecutionException() {
+ }
+ /**
+ * Creates a new instance of ExecutionException
+ *
+ * @param message
+ * the exception message
+ */
+ public ExecutionException(String message) {
+ super(message);
+ }
+ /**
+ * Creates a new instance of ExecutionException
+ *
+ * @param message
+ * the exception message
+ * @param cause
+ * the exception cause
+ */
+ public ExecutionException(String message, Throwable cause) {
+ super(message, cause);
+ }
+ /**
+ * Creates a new instance of ExecutionException
+ *
+ * @param cause
+ * the exception cause
+ */
+ public ExecutionException(Throwable cause) {
+ super(cause);
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/LuceneTask.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/LuceneTask.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/LuceneTask.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/LuceneTask.java Wed Jan 30 23:44:03 2008
@@ -1,53 +1,40 @@
/* $Id$ */
-
package org.apache.lenya.cms.task;
-
-import org.apache.log4j.Category;
-
import java.io.File;
-
import org.apache.lenya.lucene.index.Index;
import org.apache.lenya.lucene.index.Indexer;
-
+import org.apache.log4j.Logger;
public class LuceneTask extends AbstractTask {
- Category log = Category.getInstance(LuceneTask.class);
-
- /**
- * @see org.apache.lenya.cms.task.Task#execute(java.lang.String)
- */
- public void execute(String servletContextPath) throws ExecutionException {
- try {
- //outputParameters();
-
- log.debug("Servlet context path: " + servletContextPath);
-
- String publicationId = getParameters().getParameter("publication-id");
- log.debug("Publication ID: " + publicationId);
-
- String files = getParameters().getParameter("properties.files2index");
- log.debug("Files 2 index: " + files);
-
- String luceneConfig = getParameters().getParameter("config");
- log.debug("Lucene configuration: " + luceneConfig);
-
- String luceneConfigAbsolutePath = servletContextPath + File.separator + "lenya" + File.separator + "pubs" + File.separator + publicationId + File.separator + luceneConfig;
- log.debug("Lucene configuration: " + luceneConfigAbsolutePath);
-
- Indexer indexer = Index.getIndexer(luceneConfigAbsolutePath);
- indexer.indexDocument(new File(files));
- } catch (Exception e) {
- log.error("" + e);
- }
- }
-
- /**
- * Output parameters for debugging
- */
- public void outputParameters() throws Exception {
- String[] names = getParameters().getNames();
- for (int i = 0; i < names.length; i++) {
- log.error("Name: " + names[i]);
- log.error("Value: " + getParameters().getParameter(names[i]));
- }
- }
+ private static Logger log = Logger.getLogger(LuceneTask.class);
+ /**
+ * @see org.apache.lenya.cms.task.Task#execute(java.lang.String)
+ */
+ public void execute(String servletContextPath) throws ExecutionException {
+ try{
+ // outputParameters();
+ log.debug("Servlet context path: " + servletContextPath);
+ String publicationId = getParameters().getParameter("publication-id");
+ log.debug("Publication ID: " + publicationId);
+ String files = getParameters().getParameter("properties.files2index");
+ log.debug("Files 2 index: " + files);
+ String luceneConfig = getParameters().getParameter("config");
+ log.debug("Lucene configuration: " + luceneConfig);
+ String luceneConfigAbsolutePath = servletContextPath + File.separator + "lenya" + File.separator + "pubs" + File.separator + publicationId + File.separator + luceneConfig;
+ log.debug("Lucene configuration: " + luceneConfigAbsolutePath);
+ Indexer indexer = Index.getIndexer(luceneConfigAbsolutePath);
+ indexer.indexDocument(new File(files));
+ }catch(Exception e){
+ log.error("" + e);
+ }
+ }
+ /**
+ * Output parameters for debugging
+ */
+ public void outputParameters() throws Exception {
+ String[] names = getParameters().getNames();
+ for(int i = 0; i < names.length; i++){
+ log.error("Name: " + names[i]);
+ log.error("Value: " + getParameters().getParameter(names[i]));
+ }
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/Notifier.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/Notifier.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/Notifier.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/Notifier.java Wed Jan 30 23:44:03 2008
@@ -14,128 +14,104 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.task;
-
import java.util.Iterator;
import java.util.Map;
-
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.lenya.util.NamespaceMap;
-import org.apache.log4j.Category;
-
+import org.apache.log4j.Logger;
public class Notifier extends ParameterWrapper {
-
- private static Category log = Category.getInstance(Notifier.class);
-
- public static final String PREFIX = "notification";
- public static final String TARGET = "notification";
- public static final String PARAMETER_TO = "tolist";
- public static final String PARAMETER_FROM = "from";
-
- private TaskManager taskManager;
-
- /**
- * Ctor.
- * @param taskManager The task manager.
- * @param parameters The task wrapper parameters.
- */
- public Notifier(TaskManager taskManager, Map parameters) {
- super(parameters);
- this.taskManager = taskManager;
- }
-
- /**
- * Sends the notification message.
- * @param taskParameters The task parameters.
- * @throws ExecutionException when something went wrong.
- */
- public void sendNotification(TaskParameters taskParameters) throws ExecutionException {
-
- if (getMap().isEmpty()) {
- log.info("Not sending notification: no parameters provided.");
- } else if ("".equals(get(PARAMETER_TO).trim())) {
- log.info("Not sending notification: empty notification.tolist parameter.");
- }
- else {
- log.info("Sending notification");
-
- Task task = taskManager.getTask(TaskManager.ANT_TASK);
-
- Parameters params = new Parameters();
-
- params.setParameter(AntTask.TARGET, TARGET);
-
- String[] keys =
- {
- Task.PARAMETER_PUBLICATION_ID,
- Task.PARAMETER_CONTEXT_PREFIX,
- Task.PARAMETER_SERVER_PORT,
- Task.PARAMETER_SERVER_URI,
- Task.PARAMETER_SERVLET_CONTEXT };
-
- for (int i = 0; i < keys.length; i++) {
- params.setParameter(keys[i], taskParameters.get(keys[i]));
+ private static Logger log = Logger.getLogger(Notifier.class);
+ public static final String PREFIX = "notification";
+ public static final String TARGET = "notification";
+ public static final String PARAMETER_TO = "tolist";
+ public static final String PARAMETER_FROM = "from";
+ private TaskManager taskManager;
+ /**
+ * Ctor.
+ *
+ * @param taskManager
+ * The task manager.
+ * @param parameters
+ * The task wrapper parameters.
+ */
+ public Notifier(TaskManager taskManager, Map parameters) {
+ super(parameters);
+ this.taskManager = taskManager;
+ }
+ /**
+ * Sends the notification message.
+ *
+ * @param taskParameters
+ * The task parameters.
+ * @throws ExecutionException
+ * when something went wrong.
+ */
+ public void sendNotification(TaskParameters taskParameters) throws ExecutionException {
+ if(getMap().isEmpty()){
+ log.info("Not sending notification: no parameters provided.");
+ }else if("".equals(get(PARAMETER_TO).trim())){
+ log.info("Not sending notification: empty notification.tolist parameter.");
+ }else{
+ log.info("Sending notification");
+ Task task = taskManager.getTask(TaskManager.ANT_TASK);
+ Parameters params = new Parameters();
+ params.setParameter(AntTask.TARGET, TARGET);
+ String[] keys = {Task.PARAMETER_PUBLICATION_ID, Task.PARAMETER_CONTEXT_PREFIX, Task.PARAMETER_SERVER_PORT, Task.PARAMETER_SERVER_URI, Task.PARAMETER_SERVLET_CONTEXT};
+ for(int i = 0; i < keys.length; i++){
+ params.setParameter(keys[i], taskParameters.get(keys[i]));
+ }
+ NamespaceMap mailMap = new NamespaceMap(PREFIX);
+ mailMap.putAll(getMap());
+ NamespaceMap propertiesMap = new NamespaceMap(AntTask.PROPERTIES_PREFIX);
+ propertiesMap.putAll(mailMap.getPrefixedMap());
+ Map prefixMap = propertiesMap.getPrefixedMap();
+ for(Iterator i = prefixMap.keySet().iterator(); i.hasNext();){
+ String key = (String) i.next();
+ String value = (String) prefixMap.get(key);
+ String trimmedValue = value.replace((char) 160, ' ');
+ trimmedValue = trimmedValue.trim();
+ if(log.isDebugEnabled()){
+ log.debug("Trimming value [" + value + "] to [" + trimmedValue + "]");
+ log.debug("First character: [" + value.charAt(0) + "] = [" + (int) value.charAt(0) + "]");
}
-
- NamespaceMap mailMap = new NamespaceMap(PREFIX);
- mailMap.putAll(getMap());
- NamespaceMap propertiesMap = new NamespaceMap(AntTask.PROPERTIES_PREFIX);
- propertiesMap.putAll(mailMap.getPrefixedMap());
-
- Map prefixMap = propertiesMap.getPrefixedMap();
- for (Iterator i = prefixMap.keySet().iterator(); i.hasNext();) {
- String key = (String) i.next();
- String value = (String) prefixMap.get(key);
- String trimmedValue = value.replace((char) 160, ' ');
- trimmedValue = trimmedValue.trim();
- if (log.isDebugEnabled()) {
- log.debug("Trimming value [" + value + "] to [" + trimmedValue + "]");
- log.debug("First character: [" + value.charAt(0) + "] = [" + (int) value.charAt(0) + "]");
- }
- params.setParameter(key, trimmedValue);
- }
-
- try {
- task.parameterize(params);
- } catch (ParameterException e) {
- throw new ExecutionException(e);
- }
- log.info(" Executing notification target ...");
- try {
- task.execute(taskParameters.get(Task.PARAMETER_SERVLET_CONTEXT));
- }
- catch (Exception e) {
- log.error("Error during notification: ", e);
- }
- log.info(" Notification target executed.");
- }
- }
-
- /**
- * Returns the task manager.
- * @return A task manager.
- */
- protected TaskManager getTaskManager() {
- return taskManager;
- }
-
- /**
- * @see org.apache.lenya.cms.task.ParameterWrapper#getPrefix()
- */
- public String getPrefix() {
- return PREFIX;
- }
-
- /**
- * @see org.apache.lenya.cms.task.ParameterWrapper#getRequiredKeys()
- */
- protected String[] getRequiredKeys() {
- String[] requiredKeys = { };
- return requiredKeys;
- }
-
+ params.setParameter(key, trimmedValue);
+ }
+ try{
+ task.parameterize(params);
+ }catch(ParameterException e){
+ throw new ExecutionException(e);
+ }
+ log.info(" Executing notification target ...");
+ try{
+ task.execute(taskParameters.get(Task.PARAMETER_SERVLET_CONTEXT));
+ }catch(Exception e){
+ log.error("Error during notification: ", e);
+ }
+ log.info(" Notification target executed.");
+ }
+ }
+ /**
+ * Returns the task manager.
+ *
+ * @return A task manager.
+ */
+ protected TaskManager getTaskManager() {
+ return taskManager;
+ }
+ /**
+ * @see org.apache.lenya.cms.task.ParameterWrapper#getPrefix()
+ */
+ public String getPrefix() {
+ return PREFIX;
+ }
+ /**
+ * @see org.apache.lenya.cms.task.ParameterWrapper#getRequiredKeys()
+ */
+ protected String[] getRequiredKeys() {
+ String[] requiredKeys = {};
+ return requiredKeys;
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/ParameterWrapper.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/ParameterWrapper.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/ParameterWrapper.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/ParameterWrapper.java Wed Jan 30 23:44:03 2008
@@ -14,119 +14,116 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.task;
-
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.lenya.util.NamespaceMap;
-import org.apache.log4j.Category;
-
+import org.apache.log4j.Logger;
public abstract class ParameterWrapper {
-
- private static Category log = Category.getInstance(ParameterWrapper.class);
- private NamespaceMap parameters;
-
- /**
- * Returns the un-prefixed parameters.
- * @return A map.
- */
- public Map getMap() {
- return parameters.getMap();
- }
-
- /**
- * Ctor.
- * @param prefixedParameters The prefixed parameters to wrap.
- */
- public ParameterWrapper(Map prefixedParameters) {
- parameters = new NamespaceMap(prefixedParameters, getPrefix());
- }
-
- /**
- * Returns the namespace prefix.
- * @return A string.
- */
- public abstract String getPrefix();
-
- /**
- * Adds a key-value pair. If the value is null, no pair is added.
- * @param key The key.
- * @param value The value.
- */
- public void put(String key, String value) {
- if (value != null) {
- log.debug("Setting parameter: [" + key + "] = [" + value + "]");
- parameters.put(key, value);
- }
- else {
- log.debug("Not setting parameter: [" + key + "] = [" + value + "]");
- }
- }
-
- /**
- * Returns the value for a key.
- * @param key The key.
- * @return The value.
- */
- public String get(String key) {
- return (String) parameters.get(key);
- }
-
- /**
- * Returns the required keys.
- * @return A string array.
- */
- protected abstract String[] getRequiredKeys();
-
- /**
- * Checks if this parameters object contains all necessary parameters.
- * @return A boolean value.
- */
- public boolean isComplete() {
- boolean complete = true;
- Map parameterMap = getMap();
- String[] requiredKeys = getRequiredKeys();
- int i = 0;
- while (complete && i < requiredKeys.length) {
- log.debug("Checking parameter: [" + requiredKeys[i] + "]");
- complete = complete && parameterMap.containsKey(requiredKeys[i]);
- log.debug("OK: [" + complete + "]");
- i++;
- }
- return complete;
- }
-
- /**
- * Returns the missing parameters parameters.
- * @return A string array.
- */
- public String[] getMissingKeys() {
- String[] requiredKeys = getRequiredKeys();
- Map parameterMap = getMap();
- List keyList = new ArrayList();
- for (int i = 0; i < requiredKeys.length; i++) {
- if (!parameterMap.containsKey(requiredKeys[i])) {
- keyList.add(requiredKeys[i]);
- }
- }
- return (String[]) keyList.toArray(new String[keyList.size()]);
- }
-
- /**
- * Parameterizes this wrapper with un-prefixed parameters.
- * @param parameters A parameters object.
- */
- public void parameterize(Parameters parameters) {
- String[] keys = parameters.getNames();
- for (int i = 0; i < keys.length; i++) {
- put(keys[i], parameters.getParameter(keys[i], null));
- }
- }
-
+ private static Logger log = Logger.getLogger(ParameterWrapper.class);
+ private NamespaceMap parameters;
+ /**
+ * Returns the un-prefixed parameters.
+ *
+ * @return A map.
+ */
+ public Map getMap() {
+ return parameters.getMap();
+ }
+ /**
+ * Ctor.
+ *
+ * @param prefixedParameters
+ * The prefixed parameters to wrap.
+ */
+ public ParameterWrapper(Map prefixedParameters) {
+ parameters = new NamespaceMap(prefixedParameters, getPrefix());
+ }
+ /**
+ * Returns the namespace prefix.
+ *
+ * @return A string.
+ */
+ public abstract String getPrefix();
+ /**
+ * Adds a key-value pair. If the value is null, no pair is added.
+ *
+ * @param key
+ * The key.
+ * @param value
+ * The value.
+ */
+ public void put(String key, String value) {
+ if(value != null){
+ log.debug("Setting parameter: [" + key + "] = [" + value + "]");
+ parameters.put(key, value);
+ }else{
+ log.debug("Not setting parameter: [" + key + "] = [" + value + "]");
+ }
+ }
+ /**
+ * Returns the value for a key.
+ *
+ * @param key
+ * The key.
+ * @return The value.
+ */
+ public String get(String key) {
+ return (String) parameters.get(key);
+ }
+ /**
+ * Returns the required keys.
+ *
+ * @return A string array.
+ */
+ protected abstract String[] getRequiredKeys();
+ /**
+ * Checks if this parameters object contains all necessary parameters.
+ *
+ * @return A boolean value.
+ */
+ public boolean isComplete() {
+ boolean complete = true;
+ Map parameterMap = getMap();
+ String[] requiredKeys = getRequiredKeys();
+ int i = 0;
+ while(complete && i < requiredKeys.length){
+ log.debug("Checking parameter: [" + requiredKeys[i] + "]");
+ complete = complete && parameterMap.containsKey(requiredKeys[i]);
+ log.debug("OK: [" + complete + "]");
+ i++;
+ }
+ return complete;
+ }
+ /**
+ * Returns the missing parameters parameters.
+ *
+ * @return A string array.
+ */
+ public String[] getMissingKeys() {
+ String[] requiredKeys = getRequiredKeys();
+ Map parameterMap = getMap();
+ List keyList = new ArrayList();
+ for(int i = 0; i < requiredKeys.length; i++){
+ if(!parameterMap.containsKey(requiredKeys[i])){
+ keyList.add(requiredKeys[i]);
+ }
+ }
+ return (String[]) keyList.toArray(new String[keyList.size()]);
+ }
+ /**
+ * Parameterizes this wrapper with un-prefixed parameters.
+ *
+ * @param parameters
+ * A parameters object.
+ */
+ public void parameterize(Parameters parameters) {
+ String[] keys = parameters.getNames();
+ for(int i = 0; i < keys.length; i++){
+ put(keys[i], parameters.getParameter(keys[i], null));
+ }
+ }
}
Modified: lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/TaskFactory.java
URL: http://svn.apache.org/viewvc/lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/TaskFactory.java?rev=617035&r1=617034&r2=617035&view=diff
==============================================================================
--- lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/TaskFactory.java (original)
+++ lenya/branches/revolution/1.3.x/src/java/org/apache/lenya/cms/task/TaskFactory.java Wed Jan 30 23:44:03 2008
@@ -14,67 +14,53 @@
* limitations under the License.
*
*/
-
/* $Id$ */
-
package org.apache.lenya.cms.task;
-
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.log4j.Category;
-
+import org.apache.log4j.Logger;
public class TaskFactory {
-
- /**
- * Create a new instance of <code>TaskFactory</code>
- *
- */
- protected TaskFactory() {
- }
-
- private static TaskFactory factory;
- private static Category log = Category.getInstance(TaskFactory.class);
-
- /**
- * DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- public static TaskFactory getInstance() {
- if (factory == null) {
- factory = new TaskFactory();
- }
-
- return factory;
- }
-
- /**
- * DOCUMENT ME!
- *
- * @param configuration DOCUMENT ME!
- *
- * @return DOCUMENT ME!
- */
- public Task createTask(Configuration configuration) {
- try {
- String className = configuration.getAttribute("class",
- "org.apache.lenya.cms.task.TaskSequence");
- Class cl = Class.forName(className);
- Task task = (Task) cl.newInstance();
-
- task.setLabel(configuration.getChild("label").getValue("default task"));
-
- task.parameterize(Parameters.fromConfiguration(configuration));
-
- if (task instanceof TaskSequence) {
- ((TaskSequence) task).init(configuration);
- }
-
- return task;
- } catch (Exception e) {
- log.error("Cannot create Task: ", e);
-
- return null;
- }
- }
+ private static Logger log = Logger.getLogger(TaskFactory.class);
+ /**
+ * Create a new instance of <code>TaskFactory</code>
+ *
+ */
+ protected TaskFactory() {
+ }
+ private static TaskFactory factory;
+ /**
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public static TaskFactory getInstance() {
+ if(factory == null){
+ factory = new TaskFactory();
+ }
+ return factory;
+ }
+ /**
+ * DOCUMENT ME!
+ *
+ * @param configuration
+ * DOCUMENT ME!
+ *
+ * @return DOCUMENT ME!
+ */
+ public Task createTask(Configuration configuration) {
+ try{
+ String className = configuration.getAttribute("class", "org.apache.lenya.cms.task.TaskSequence");
+ Class cl = Class.forName(className);
+ Task task = (Task) cl.newInstance();
+ task.setLabel(configuration.getChild("label").getValue("default task"));
+ task.parameterize(Parameters.fromConfiguration(configuration));
+ if(task instanceof TaskSequence){
+ ((TaskSequence) task).init(configuration);
+ }
+ return task;
+ }catch(Exception e){
+ log.error("Cannot create Task: ", e);
+ return null;
+ }
+ }
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.