/* * Copyright (C) 2011 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.common.client.api.tasks; public class TaskManagerFactory { private static final Object lock = new Object(); private static volatile TaskManagerProvider provider; public static TaskManager get() { synchronized (lock) { if (provider == null) { _initForClient(); } return provider.get(); } } private static void _initForClient() { provider = new TaskManagerProvider() { private ClientTaskManager taskManager = new ClientTaskManager(); public TaskManager get() { return taskManager; } }; } public static void setTaskManagerProvider(TaskManagerProvider p) { synchronized (lock) { if (provider == null) { // Attempt to initialize the task manager twice. Will be ignored provider = p; } } } }