
org.apache.geronimo.timer.WorkInfo Maven / Gradle / Ivy
The newest version!
/**
* 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.geronimo.timer;
import java.util.Date;
import org.apache.geronimo.timer.ExecutorFeedingTimerTask;
import org.apache.geronimo.timer.ExecutorTask;
/**
*
*
* @version $Rev: 476049 $ $Date: 2006-11-17 12:35:17 +0800 (Fri, 17 Nov 2006) $
*
* */
public class WorkInfo {
//these should be persistent.
private long id = -1;
//typically object name of ejb.
private final String key;
//typically entity pk
private final Object userId;
//typically serializable object ejb timer service supplies to users.
private final Object userInfo;
//next firing
private Date time;
//time between firings
private final Long period;
private final boolean atFixedRate;
//these should not be persistent.
private ExecutorFeedingTimerTask worker;
private ExecutorTask taskWrapper;
//wrappers to this timer service can store the wrapper here.
private Object clientHandle;
public WorkInfo(String key, Object userId, Object userInfo, Date time, Long period, boolean atFixedRate) {
this.key = key;
this.userId = userId;
this.userInfo = userInfo;
this.time = time;
this.period = period;
this.atFixedRate = atFixedRate;
}
public String getKey() {
return key;
}
public long getId() {
return id;
}
public void setId(long id) {
if (this.id != -1) {
throw new IllegalStateException("Id can be set only once!");
}
this.id = id;
}
public Object getUserId() {
return userId;
}
public Object getUserInfo() {
return userInfo;
}
public Date getTime() {
return time;
}
public Long getPeriod() {
return period;
}
public boolean getAtFixedRate() {
return atFixedRate;
}
public void initialize(ExecutorFeedingTimerTask worker, ExecutorTask taskWrapper) {
this.worker = worker;
this.taskWrapper = taskWrapper;
}
public ExecutorFeedingTimerTask getExecutorFeedingTimerTask() {
return worker;
}
public Runnable getExecutorTask() {
return taskWrapper;
}
public Object getClientHandle() {
return clientHandle;
}
public void setClientHandle(Object clientHandle) {
this.clientHandle = clientHandle;
}
public boolean isOneTime() {
return period == null;
}
void nextTime() {
if (period == null) {
throw new IllegalStateException("This is a one-time timerTask");
}
time = new Date(time.getTime() + period.longValue());
}
public void nextInterval() {
if (period == null) {
throw new IllegalStateException("This is a one-time timerTask");
}
time = new Date(System.currentTimeMillis() + period.longValue());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy