public static Subscription subscribeJsType(final String eventType, final JsTypeEventObserver<?> callback) { WindowEventObservers.createOrGet().add(eventType, callback); return new Subscription() { @Override public void remove() { // TODO can't unsubscribe per module atm. } }; }
public static void fireEvent(final boolean local, final Object payload, final Annotation... qualifiers) { if (payload == null) return; final Object beanRef; if (payload instanceof WrappedPortable) { beanRef = ((WrappedPortable) payload).unwrap(); if (beanRef == null) return; } else { beanRef = payload; } final Map<String, Object> messageMap = new HashMap<>(); messageMap.put(MessageParts.CommandType.name(), CDICommands.CDIEvent.name()); messageMap.put(CDIProtocol.BeanType.name(), beanRef.getClass().getName()); messageMap.put(CDIProtocol.BeanReference.name(), beanRef); messageMap.put(CDIProtocol.FromClient.name(), "1"); if (qualifiers != null && qualifiers.length > 0) { messageMap.put(CDIProtocol.Qualifiers.name(), getQualifiersPart(qualifiers)); } consumeEventFromMessage(CommandMessage.createWithParts(messageMap)); if (isRemoteCommunicationEnabled()) { final CommandMessage withParts = CommandMessage.createWithParts(messageMap); messageMap.put(MessageParts.ToSubject.name(), SERVER_DISPATCHER_SUBJECT); fireOnSubscribe(beanRef.getClass().getName(), withParts); } }
@Override public void onModuleLoad() { logger.debug("Starting CDI module..."); if (!EventQualifierSerializer.isSet()) { EventQualifierSerializer.set(GWT.create(EventQualifierSerializer.class)); } InitVotes.registerPersistentPreInitCallback(declareServices); InitVotes.waitFor(CDI.class); if (BusToolsCli.isRemoteCommunicationEnabled()) { syncWithServer(); InitVotes.registerPersistentDependencyCallback(ClientMessageBus.class, busInitRunnable); } else { CDI.activate(); CDI.fireEvent(new BusReadyEvent()); } } }
public static WindowEventObservers createOrGet() { if (!windowEventObserversDefined()) { setWindowEventObservers(new WindowEventObservers()); } return getWindowEventObservers(); }
public void initLookupTable(final CDIEventTypeLookup lookup) { lookupTable = lookup.getTypeLookupMap(); }
public static void instantiateAndSetEventQualifierSerializer(final Class<?> clazz) { try { EventQualifierSerializer.set(clazz.asSubclass(EventQualifierSerializer.class).newInstance()); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException("Could not instantiate " + SERIALIZER_PACKAGE_NAME + "." + SERIALIZER_CLASS_NAME + " with default constructor.", e); } catch (final ClassCastException e) { throw new RuntimeException(SERIALIZER_PACKAGE_NAME + "." + SERIALIZER_CLASS_NAME + " must be a subclass of " + EventQualifierSerializer.class.getName(), e); } } }
@SuppressWarnings("unchecked") @Override public final void callback(final Message message) { Set<String> msgQualifiers = message.get(Set.class, CDIProtocol.Qualifiers); if (msgQualifiers == null) { msgQualifiers = Collections.emptySet(); } if (message.hasPart(CDIProtocol.FromClient)) { if (isDefault() || msgQualifiers.containsAll(qualifierSet)) { fireEvent((T) message.get(Object.class, CDIProtocol.BeanReference)); } } else { // Our server-side CDI integration module knows of all client-side event // observers and sends a separate message specific to each matching // observer. if (msgQualifiers.equals(qualifierSet)) { fireEvent((T) message.get(Object.class, CDIProtocol.BeanReference)); } } }
@SuppressWarnings("unchecked") @Override public Instance provide(final Class[] typeargs, final Annotation[] qualifiers) { /* * If you see a compile error here, ensure that you are using Errai's custom * version of javax.enterprise.event.Event, which comes from the * errai-javax-enterprise project. The errai-cdi-client POM is set up this * way. * * Eclipse users: seeing an error here probably indicates that M2E has * clobbered your errai-javax-enterprise source folder settings. To fix your * setup, see the README in the root of errai-javax-enterprise. */ return new InstanceImpl(typeargs[0], qualifiers.length == 0 ? new Annotation[] { DEFAULT_ANNOTATION } : qualifiers); }
@Override public Instance<T> select(final Annotation... qualifiers) { return select(type, qualifiers); }
@Override public Event provide(final Class<?>[] typeargs, final Annotation[] qualifiers) { /* * If you see a compile error here, ensure that you are using Errai's custom * version of javax.enterprise.event.Event, which comes from the * errai-javax-enterprise project. The errai-cdi-client POM is set up this * way. * * Eclipse users: seeing an error here probably indicates that M2E has * clobbered your errai-javax-enterprise source folder settings. To fix your * setup, see the README in the root of errai-javax-enterprise. */ final Class<?> eventType = (typeargs.length == 1 ? typeargs[0] : Object.class); return new EventImpl(eventType, qualifiers); }
@Override public Iterator<T> iterator() { final Collection<SyncBeanDef<T>> beanDefs = IOC.getBeanManager().lookupBeans( type, qualifiers ); if (beanDefs==null){ return Collections.<T>emptyList().iterator(); } return new InstanceImplIterator(beanDefs); }
public static void fireEvent(final boolean local, final Object payload, final Annotation... qualifiers) { if (payload == null) return; final Object beanRef; if (payload instanceof WrappedPortable) { beanRef = ((WrappedPortable) payload).unwrap(); if (beanRef == null) return; } else { beanRef = payload; } final Map<String, Object> messageMap = new HashMap<>(); messageMap.put(MessageParts.CommandType.name(), CDICommands.CDIEvent.name()); messageMap.put(CDIProtocol.BeanType.name(), beanRef.getClass().getName()); messageMap.put(CDIProtocol.BeanReference.name(), beanRef); messageMap.put(CDIProtocol.FromClient.name(), "1"); if (qualifiers != null && qualifiers.length > 0) { messageMap.put(CDIProtocol.Qualifiers.name(), getQualifiersPart(qualifiers)); } consumeEventFromMessage(CommandMessage.createWithParts(messageMap)); if (isRemoteCommunicationEnabled()) { final CommandMessage withParts = CommandMessage.createWithParts(messageMap); messageMap.put(MessageParts.ToSubject.name(), SERVER_DISPATCHER_SUBJECT); fireOnSubscribe(beanRef.getClass().getName(), withParts); } }
public static Subscription subscribeJsType(final String eventType, final JsTypeEventObserver<?> callback) { WindowEventObservers.createOrGet().add(eventType, callback); return new Subscription() { @Override public void remove() { // TODO can't unsubscribe per module atm. } }; }
public void initLookupTable(final CDIEventTypeLookup lookup) { lookupTable = lookup.getTypeLookupMap(); }
@Override public <U extends T> Instance<U> select(final Class<U> subtype, final Annotation... qualifiers) { return new InstanceImpl<U>(subtype, joinQualifiers(this.qualifiers, qualifiers)); }