/* * 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.bus.client; import java.util.Collections; import java.util.Set; import org.jboss.errai.bus.client.api.BusLifecycleListener; import org.jboss.errai.bus.client.api.BusMonitor; import org.jboss.errai.bus.client.api.ClientMessageBus; import org.jboss.errai.bus.client.api.SubscribeListener; import org.jboss.errai.bus.client.api.Subscription; import org.jboss.errai.bus.client.api.TransportErrorHandler; import org.jboss.errai.bus.client.api.UnsubscribeListener; import org.jboss.errai.bus.client.api.messaging.Message; import org.jboss.errai.bus.client.api.messaging.MessageBus; import org.jboss.errai.bus.client.api.messaging.MessageCallback; import org.jboss.errai.bus.client.api.messaging.RequestDispatcher; import org.jboss.errai.common.client.api.extension.InitVotes; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; /** * The main GWT <tt>EntryPoint</tt> class for ErraiBus. This class also contains a static global reference to the * client {@link org.jboss.errai.bus.client.api.messaging.MessageBus} which can be obtained by calling: <tt>ErraiBus.get()</tt> */ public class ErraiBus implements EntryPoint { private static ClientMessageBus bus; static { if (GWT.isClient()) { bus = GWT.create(MessageBus.class); } else { // edge case: in simulated client mode, client code runs in an environment where GWT.isClient() returns false // obviously, this code will not be able to contact the server, but framework code still assumes bus != null bus = new ClientMessageBus() { @Override public void sendGlobal(Message message) { } @Override public void send(Message message) { } @Override public void send(Message message, boolean fireListeners) { } @Override public void sendLocal(Message message) { } @Override public Subscription subscribe(String subject, MessageCallback receiver) { return null; } @Override public Subscription subscribeLocal(String subject, MessageCallback receiver) { return null; } @Override public Subscription subscribeShadow(String subject, MessageCallback callback) { return null; } @Override public void unsubscribeAll(String subject) { } @Override public boolean isSubscribed(String subject) { return false; } @Override public void addSubscribeListener(SubscribeListener listener) { } @Override public void addUnsubscribeListener(UnsubscribeListener listener) { } @Override public void attachMonitor(BusMonitor monitor) { } @Override public void init() { } @Override public void stop(boolean sendDisconnectToServer) { } @Override public Set<String> getAllRegisteredSubjects() { return Collections.emptySet(); } @Override public void addTransportErrorHandler(TransportErrorHandler errorHandler) { } @Override public void removeTransportErrorHandler(TransportErrorHandler errorHandler) { } @Override public void addLifecycleListener(BusLifecycleListener l) { } @Override public void removeLifecycleListener(BusLifecycleListener l) { } @Override public void setProperty(String name, String value) { } @Override public void clearProperties() { } @Override public String getSessionId() { return null; } @Override public String getClientId() { return null; } }; } InitVotes.registerPersistentPreInitCallback(new Runnable() { @Override public void run() { bus.init(); } }); } /** * Obtain an instance of the client MessageBus. * * @return Returns instance of MessageBus */ public static MessageBus get() { return bus; } private static RequestDispatcher DISPATCHER_INST = new RequestDispatcher() { @Override public void dispatchGlobal(Message message) { get().sendGlobal(message); } @Override public void dispatch(Message message) { get().send(message); } }; public static RequestDispatcher getDispatcher() { return DISPATCHER_INST; } @Override public void onModuleLoad() { } String getSessionId() { return null; } String getClientId() { return null; } }