Click here to Skip to main content
Click here to Skip to main content
Add your own
alternative version

A remote dynamic Command pattern with GWT and LinkSet

, 19 Jan 2011
Command pattern is a very useful solution, but it causes some problems when used in a distributed environment.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_17) on Tue Jan 18 09:46:50 CET 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<TITLE>
EventBus (LinkSet Library 1.2-beta API)
</TITLE>

<META NAME="date" CONTENT="2011-01-18">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="EventBus (LinkSet Library 1.2-beta API)";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../org/linkset/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/EventBus.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/linkset/DefaultListenerManager.html" title="class in org.linkset"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/linkset/Executor.html" title="annotation in org.linkset"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../index.html?org/linkset/EventBus.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="EventBus.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.linkset</FONT>
<BR>
Interface EventBus</H2>
<DL>
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../org/linkset/HierarchyAwareEventBus.html" title="class in org.linkset">HierarchyAwareEventBus</A>, <A HREF="../../org/linkset/MultiThreadedEventBus.html" title="class in org.linkset">MultiThreadedEventBus</A>, <A HREF="../../org/linkset/SimpleEventBus.html" title="class in org.linkset">SimpleEventBus</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public interface <B>EventBus</B></DL>
</PRE>

<P>
An event bus interface
<P>

<P>
<DL>
<DT><B>Author:</B></DT>
  <DD>Lukasz Bownik (lukasz.bownik@gmail.com)</DD>
</DL>
<HR>

<P>

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/linkset/EventBus.html#add(java.lang.Class, java.lang.Object, java.lang.String)">add</A></B>(java.lang.Class&lt;?&gt;&nbsp;eventType,
    java.lang.Object&nbsp;target,
    java.lang.String&nbsp;methodId)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds a listener to this set.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/linkset/EventBus.html#fire(java.lang.Object)">fire</A></B>(java.lang.Object&nbsp;event)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fires an event</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/linkset/EventBus.html#remove(java.lang.Class, java.lang.Object, java.lang.String)">remove</A></B>(java.lang.Class&lt;?&gt;&nbsp;eventType,
       java.lang.Object&nbsp;target,
       java.lang.String&nbsp;methodId)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes a listener form this set.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../org/linkset/EventBus.html#removeAll(java.lang.Object)">removeAll</A></B>(java.lang.Object&nbsp;target)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes all Listerners targeting a specified object.</TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="add(java.lang.Class, java.lang.Object, java.lang.String)"><!-- --></A><H3>
add</H3>
<PRE>
void <B>add</B>(java.lang.Class&lt;?&gt;&nbsp;eventType,
         java.lang.Object&nbsp;target,
         java.lang.String&nbsp;methodId)</PRE>
<DL>
<DD>Adds a listener to this set.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>eventType</CODE> - type of events to receive<DD><CODE>target</CODE> - a target object or class<DD><CODE>methodId</CODE> - a method annotation identifier<DD><CODE>methodId</CODE> - an id of a handler method
<DT><B>Throws:</B>
<DD><CODE>java.lang.NullPointerException</CODE> - id methodId == null or target == null
<DD><CODE>java.lang.IllegalArgumentException</CODE> - if methodId is empty or method argument type is ont an
             eventType</DL>
</DD>
</DL>
<HR>

<A NAME="remove(java.lang.Class, java.lang.Object, java.lang.String)"><!-- --></A><H3>
remove</H3>
<PRE>
void <B>remove</B>(java.lang.Class&lt;?&gt;&nbsp;eventType,
            java.lang.Object&nbsp;target,
            java.lang.String&nbsp;methodId)</PRE>
<DL>
<DD>Removes a listener form this set. If a set does not contain a apecified
 listener, then this method does nothing.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>eventType</CODE> - type of events to receive<DD><CODE>target</CODE> - a target object or class<DD><CODE>methodId</CODE> - a method annotation identifier</DL>
</DD>
</DL>
<HR>

<A NAME="removeAll(java.lang.Object)"><!-- --></A><H3>
removeAll</H3>
<PRE>
void <B>removeAll</B>(java.lang.Object&nbsp;target)</PRE>
<DL>
<DD>Removes all Listerners targeting a specified object.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>target</CODE> - a target object or null if a listener is a static method
<DT><B>Throws:</B>
<DD><CODE>java.lang.NullPointerException</CODE> - if target is null</DL>
</DD>
</DL>
<HR>

<A NAME="fire(java.lang.Object)"><!-- --></A><H3>
fire</H3>
<PRE>
void <B>fire</B>(java.lang.Object&nbsp;event)
          throws java.lang.reflect.InvocationTargetException,
                 java.lang.ExceptionInInitializerError</PRE>
<DL>
<DD>Fires an event
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>event</CODE> - event object
<DT><B>Throws:</B>
<DD><CODE>java.lang.NullPointerException</CODE> - if event is null
<DD><CODE>java.lang.ExceptionInInitializerError</CODE> - if the initialization provoked by any method fails.
<DD><CODE>java.lang.reflect.InvocationTargetException</CODE> - if any underlying method throws an exception.</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../org/linkset/package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/EventBus.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../org/linkset/DefaultListenerManager.html" title="class in org.linkset"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../org/linkset/Executor.html" title="annotation in org.linkset"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../index.html?org/linkset/EventBus.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="EventBus.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;NESTED&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright &#169; 2011. All Rights Reserved.
</BODY>
</HTML>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)

About the Author

No Biography provided

| Advertise | Privacy | Mobile
Web04 | 2.8.140721.1 | Last Updated 19 Jan 2011
Article Copyright 2011 by Łukasz Bownik
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid