/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * 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.drools.persistence.jpa; import org.kie.api.runtime.ExecutableRunner; import org.drools.core.time.InternalSchedulerService; import org.drools.core.time.Job; import org.drools.core.time.JobContext; import org.drools.core.time.JobHandle; import org.drools.core.time.TimerService; import org.drools.core.time.Trigger; import org.drools.core.time.impl.CommandServiceTimerJobFactoryManager; import org.drools.core.time.impl.DefaultTimerJobInstance; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class JpaTimerJobInstance extends DefaultTimerJobInstance { private static Logger logger = LoggerFactory.getLogger( JpaTimerJobInstance.class ); public JpaTimerJobInstance(Job job, JobContext ctx, Trigger trigger, JobHandle handle, InternalSchedulerService scheduler) { super( job, ctx, trigger, handle, scheduler ); } public Void call() throws Exception { try { JDKCallableJobCommand command = new JDKCallableJobCommand( this ); ExecutableRunner runner = ( (CommandServiceTimerJobFactoryManager) ( (TimerService) scheduler ).getTimerJobFactoryManager() ).getRunner(); runner.execute( command ); return null; } catch( Exception e ) { logger.error("Unable to execute timer job!", e); throw e; } } Void internalCall() throws Exception { return super.call(); } }