blob: 93a098a5fa101479f99a0e521974af4d1f99933f [file] [log] [blame]
/**
*
* Copyright 2005 the original author or authors.
*
* Licensed 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.gbean.kernel;
import java.util.Set;
/**
* This class holds information about a service event.
*
* @author Dain Sundstrom
* @version $Id$
* @since 1.0
*/
public class ServiceEvent {
private final long eventId;
private final Kernel kernel;
private final ServiceName serviceName;
private final ServiceFactory serviceFactory;
private final ClassLoader classLoader;
private final Object service;
private final Throwable cause;
private final Set unsatisfiedConditions;
/**
* Creates a service event.
*
* @param eventId the sequence number for this event
* @param kernel the kernel in which the service is registered
* @param serviceName the name of the service
* @param serviceFactory the factory for the service
* @param classLoader the class loader for the service
* @param service the service instance if it exists
* @param cause the exception that caused the event if this is an exception event
* @param unsatisfiedConditions the unsatified conditions that caused the event if this is a waiting event
*/
public ServiceEvent(long eventId, Kernel kernel, ServiceName serviceName, ServiceFactory serviceFactory, ClassLoader classLoader, Object service, Throwable cause, Set unsatisfiedConditions) {
if (kernel == null) throw new NullPointerException("kernel is null");
if (serviceName == null) throw new NullPointerException("name is null");
if (serviceFactory == null) throw new NullPointerException("serviceFactory is null");
if (classLoader == null) throw new NullPointerException("classLoader is null");
if (unsatisfiedConditions != null && cause != null) throw new IllegalArgumentException("Either unsatisfiedConditions or cause must be null");
if (cause != null && service != null) throw new IllegalArgumentException("A ServiceEvent can not carry both a cause and a service");
this.eventId = eventId;
this.kernel = kernel;
this.serviceName = serviceName;
this.serviceFactory = serviceFactory;
this.classLoader = classLoader;
this.service = service;
this.cause = cause;
this.unsatisfiedConditions = unsatisfiedConditions;
}
/**
* Gets the sequence number for this event. A service gaurentees that events will occur in increasing order with out
* skipping any numbers.
*
* @return the sequence number for this event
*/
public long getEventId() {
return eventId;
}
/**
* Gets the kernel in which the service is registered.
*
* @return the kernel in which the servce is registerd
*/
public Kernel getKernel() {
return kernel;
}
/**
* Gets the name of the service.
*
* @return the name of the service
*/
public ServiceName getServiceName() {
return serviceName;
}
/**
* Gets the service factory for the service.
*
* @return the service factory for the service
*/
public ServiceFactory getServiceFactory() {
return serviceFactory;
}
/**
* Gets the class loader for the service.
*
* @return the class loader for the service
*/
public ClassLoader getClassLoader() {
return classLoader;
}
/**
* Gets the service instance or null if the service doesn't exist.
*
* @return the service instance
*/
public Object getService() {
return service;
}
/**
* Gets the error that was thrown during startup or shutdown. This is available only in error events.
*
* @return the error
*/
public Throwable getCause() {
return cause;
}
/**
* Gets the unsatified dependencies that cause the service to wait. This is available only in waiting events.
*
* @return the unsatified dependencies that cause the service to wait
*/
public Set getUnsatisfiedConditions() {
return unsatisfiedConditions;
}
}