Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* JBoss, Home of Professional Open Source
* Copyright 2010, Red Hat Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 021101301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.as.ejb3.timerservice;
import org.jboss.as.ee.component.Component;
import org.jboss.as.ejb3.logging.EjbLogger;
import org.jboss.as.ejb3.component.EJBComponentDescription;
import org.jboss.as.ejb3.component.TimerServiceRegistry;
import org.jboss.as.ejb3.component.allowedmethods.AllowedMethodsInformation;
import org.jboss.as.ejb3.component.allowedmethods.MethodType;
import org.jboss.as.ejb3.component.singleton.SingletonComponent;
import org.jboss.as.ejb3.context.CurrentInvocationContext;
import org.jboss.invocation.InterceptorContext;
import org.jboss.msc.service.Service;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.StartContext;
import org.jboss.msc.service.StartException;
import org.jboss.msc.service.StopContext;
import javax.ejb.EJBException;
import javax.ejb.ScheduleExpression;
import javax.ejb.Timer;
import javax.ejb.TimerConfig;
import javax.ejb.TimerService;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
/**
* Non-functional timer service that is bound when the timer service is disabled.
*/
public class NonFunctionalTimerService implements TimerService, Service {
public static final NonFunctionalTimerService DISABLED = new NonFunctionalTimerService(EjbLogger.EJB3_TIMER_LOGGER.timerServiceIsNotActive(), null);
private final String message;
private final TimerServiceRegistry timerServiceRegistry;
public NonFunctionalTimerService(final String message, final TimerServiceRegistry timerServiceRegistry) {
this.message = message;
this.timerServiceRegistry = timerServiceRegistry;
}
public static ServiceName serviceNameFor(final EJBComponentDescription ejbComponentDescription) {
if (ejbComponentDescription == null || ejbComponentDescription.getServiceName() == null) {
return null;
}
return ejbComponentDescription.getServiceName().append("ejb", "non-functional-timerservice");
}
@Override
public Timer createCalendarTimer(ScheduleExpression schedule) throws IllegalArgumentException, IllegalStateException, EJBException {
throw new IllegalStateException(message);
}
@Override
public Timer createCalendarTimer(ScheduleExpression schedule, TimerConfig timerConfig) throws IllegalArgumentException, IllegalStateException, EJBException {
throw new IllegalStateException(message);
}
@Override
public Timer createIntervalTimer(Date initialExpiration, long intervalDuration, TimerConfig timerConfig) throws IllegalArgumentException, IllegalStateException, EJBException {
throw new IllegalStateException(message);
}
@Override
public Timer createIntervalTimer(long initialDuration, long intervalDuration, TimerConfig timerConfig) throws IllegalArgumentException, IllegalStateException, EJBException {
throw new IllegalStateException(message);
}
@Override
public Timer createSingleActionTimer(Date expiration, TimerConfig timerConfig) throws IllegalArgumentException, IllegalStateException, EJBException {
throw new IllegalStateException(message);
}
@Override
public Timer createSingleActionTimer(long duration, TimerConfig timerConfig) throws IllegalArgumentException, IllegalStateException, EJBException {
throw new IllegalStateException(message);
}
@Override
public Timer createTimer(long duration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException {
throw new IllegalStateException(message);
}
@Override
public Timer createTimer(long initialDuration, long intervalDuration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException {
throw new IllegalStateException(message);
}
@Override
public Timer createTimer(Date expiration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException {
throw new IllegalStateException(message);
}
@Override
public Timer createTimer(Date initialExpiration, long intervalDuration, Serializable info) throws IllegalArgumentException, IllegalStateException, EJBException {
throw new IllegalStateException(message);
}
@Override
public Collection getTimers() throws IllegalStateException, EJBException {
assertInvocationAllowed();
return Collections.emptySet();
}
@Override
public Collection getAllTimers() throws IllegalStateException, EJBException {
// query the registry
if (this.timerServiceRegistry != null) {
return this.timerServiceRegistry.getAllActiveTimers();
}
// If we don't have the timer service registry (for whatever reason), we just invoke the getTimers() so that it can
// do the necessary state checks before returning an empty collection (since this is a non-functional timer service)
return this.getTimers();
}
private void assertInvocationAllowed() {
AllowedMethodsInformation.checkAllowed(MethodType.TIMER_SERVICE_METHOD);
final InterceptorContext currentInvocationContext = CurrentInvocationContext.get();
if (currentInvocationContext == null) {
return;
}
// If the method in current invocation context is null,
// then it represents a lifecycle callback invocation
Method invokedMethod = currentInvocationContext.getMethod();
if (invokedMethod == null) {
// it's a lifecycle callback
Component component = currentInvocationContext.getPrivateData(Component.class);
if (!(component instanceof SingletonComponent)) {
throw EjbLogger.EJB3_TIMER_LOGGER.failToInvokeTimerServiceDoLifecycle();
}
}
}
@Override
public void start(StartContext startContext) throws StartException {
if (this.timerServiceRegistry != null) {
this.timerServiceRegistry.registerTimerService(this);
}
}
@Override
public void stop(StopContext stopContext) {
if (this.timerServiceRegistry != null) {
this.timerServiceRegistry.unRegisterTimerService(this);
}
}
@Override
public TimerService getValue() throws IllegalStateException, IllegalArgumentException {
return this;
}
}