Hi,
I followed this ( https://developer.atlassian.com/display/DOCS/Scheduling+Events+via+SAL+Tutorial) tutorial and set up a scheduled task for my plug-in. Even though no error is identified in the logs, no output is printed either. I'm just printing a few lines to make sure the scheduling works fine.
Dependencies added to pom.xml
<dependency> <groupId>com.atlassian.sal</groupId> <artifactId>sal-api</artifactId> <version>2.0.0</version> <scope>provided</scope> </dependency>
Modifications to atlassian-plugin.xml
<component-import key="pluginScheduler"> <description>SAL Scheduler</description> <interface>com.atlassian.sal.api.scheduling.PluginScheduler</interface> </component-import> <component key="SchedulerComponent" class="com.m.mn.RouterPluginPackage.RouterTaskImpl" system="true" public="true"> <description>The plug-in component that schedules the router Task.</description> <interface>com.atlassian.sal.api.lifecycle.LifecycleAware</interface> <interface>com.m.mn.RouterPluginPackage.RouterScheduler</interface> </component>
The Task class..
import java.util.Date;
import java.util.Map; import org.apache.log4j.Logger; import com.atlassian.sal.api.scheduling.PluginJob; public class RouterTask implements PluginJob{ private final Logger log = Logger.getLogger(RouterTask.class); @Override public void execute(Map<String, Object> jobDataMap) { RouterTaskImpl taskImpl = (RouterTaskImpl) jobDataMap.get(RouterTaskImpl.KEY); log.info("Running Task"); assert taskImpl != null; try{ taskImpl.printValue(); log.info("Task Completed"); taskImpl.setLastRun(new Date()); }catch(Exception e ){ log.error("Exception Occured"); e.printStackTrace(); } } }
Task Implementation class..
public class RouterTaskImpl implements RouterScheduler,LifecycleAware{ static final String KEY = RouterTaskImpl.class.getName() + ":instance"; private static final String JOB_NAME = RouterTaskImpl.class.getName() + ":job"; private final PluginScheduler pluginScheduler; private long interval = 5000L; private Date lastrun = null; private final Logger log = Logger.getLogger(RouterTaskImpl.class); public RouterTaskImpl(PluginScheduler pluginScheduler) { this.pluginScheduler = pluginScheduler; } @Override public void onStart() { reschedule(interval); } @Override public void reschedule(long interval){ this.interval = interval; Date start = setStartTime(); pluginScheduler.scheduleJob(JOB_NAME, RouterTask.class, new HashMap<String,Object>(){{put(KEY,RouterTaskImpl.this);}}, start, interval); log.info("job Scheduled"); } public void printValue(){ log.info("Task running at (Newly Installed ).. " + new Date().toString() + "\n"); System.out.println("Task running at " + new Date().toString() + "\n"); } void setLastRun(Date date) { lastrun = date; } public Date setStartTime(){ Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY,16); cal.set(Calendar.MINUTE,20); cal.set(Calendar.SECOND,0); cal.set(Calendar.MILLISECOND,0); Date startDate = cal.getTime(); return startDate; } }
Monitor Class
public interface TicketRouterScheduler { public void reschedule(long interval); }
Nothing seems to be wrong, yet the plug-in does not print anything as expected, not does it display a scheduled task under system-> Scehduler details.Any pointers on what I'm doing wrong here would be much appreciated.
Thanks.
Hi Mizan,
It was a typo with the question, and was accurate in the code. The problem was with the atlassian-plugin.xml as you suggested but it was with the SAL version given in the file. Fixed the error and the task works fine.
Thanks a lot for your support and suggestions, it was really helpful.
@Prameesha Samarakoon
Can you please let me know the fix of this problem?
I am stuck in the same.
Regards
Prakhar
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Prameesha ,
You are right , this should get displayed under Scheduler Details but since it does not I believe there is some error in the atlassian-plugin.xml , you can check if you are reffering to correct classes and interfaces and there is no typo error .
Your monitor class is TicketRouterScheduler but in the xml i see it as RouterScheduler
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Mizan,
Thanks a lot for your response. I tried out your suggestion but nothing related to the plug-in gets printed.Although I uploaded the plug-in and it is displayed under installed plug-ins, the plug-in does not seem to be working or communicating with the JIRA scheduler. According to what I've done here shouldn't this task be displayed/scheduled under System->Scheduler Details? Is there something specifically wrong with what I'm doing?
Thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
try using log.error() instead of log.info() then check your logs OR check the logging level in JIRA logging refer https://confluence.atlassian.com/display/JIRA/Logging+and+Profiling<br< a="">>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.