/*
* Copyright (C) 2012 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.
* 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.jboss.errai.bus.server.service.bootstrap;
import org.jboss.errai.bus.server.api.ServerMessageBus;
import org.jboss.errai.bus.server.service.ErraiService;
import org.jboss.errai.bus.server.service.ErraiServiceConfigurator;
import org.jboss.errai.common.metadata.MetaDataScanner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Stack;
/**
* Provides a shared context to the bootstrap execution.
*
* @author: Heiko Braun <hbraun@redhat.com>
* @date: May 3, 2010
*/
public class BootstrapContext {
private final ServerMessageBus bus;
private final ErraiServiceConfigurator config;
private final ErraiService service;
private Stack<Runnable> deferredTasks = new Stack<Runnable>();
private Logger log = LoggerFactory.getLogger(BootstrapContext.class);
public BootstrapContext(final ErraiService service,
final ServerMessageBus bus,
final ErraiServiceConfigurator config) {
this.service = service;
this.bus = bus;
this.config = config;
}
public ServerMessageBus getBus() {
return bus;
}
public ErraiServiceConfigurator getConfig() {
return config;
}
public MetaDataScanner getScanner() {
return config.getMetaDataScanner();
}
public void defer(final Runnable task) {
this.deferredTasks.push(task);
}
public ErraiService getService() {
return service;
}
void executeDeferred() {
log.debug("running deferred bootstrap tasks ...");
while (!deferredTasks.isEmpty()) {
final Runnable task = deferredTasks.pop();
task.run();
}
}
}