Update the javadoc and DeveloperGuide to reflect the latest RPC changes.
Patch by: mmendez
Review by: scottb (desk check)
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1122 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/doc/src/com/google/gwt/doc/DeveloperGuide.java b/doc/src/com/google/gwt/doc/DeveloperGuide.java
index ed70edb..4609919 100644
--- a/doc/src/com/google/gwt/doc/DeveloperGuide.java
+++ b/doc/src/com/google/gwt/doc/DeveloperGuide.java
@@ -21,6 +21,7 @@
import com.google.gwt.junit.client.GWTTestCase;
import com.google.gwt.user.client.ImageBundle;
import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException;
import com.google.gwt.user.client.rpc.IsSerializable;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
@@ -38,6 +39,7 @@
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
+import java.io.Serializable;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -1138,7 +1140,8 @@
*
* <tr class='gallery-link'>
* <td><a href='com.google.gwt.user.client.ui.PushButton.html'>PushButton</a></td>
- * <td><a href='com.google.gwt.user.client.ui.ToggleButton.html'>ToggleButton</a></td>
+ * <td><a
+ * href='com.google.gwt.user.client.ui.ToggleButton.html'>ToggleButton</a></td>
* </tr>
*
* <tr class='gallery'>
@@ -1230,8 +1233,10 @@
* </tr>
*
* <tr class='gallery-link'>
- * <td><a href='com.google.gwt.user.client.ui.VerticalSplitPanel.html'>VerticalSplitPanel</a></td>
- * <td><a href='com.google.gwt.user.client.ui.HorizontalSplitPanel.html'>HorizontalSplitPanel</a></td>
+ * <td><a
+ * href='com.google.gwt.user.client.ui.VerticalSplitPanel.html'>VerticalSplitPanel</a></td>
+ * <td><a
+ * href='com.google.gwt.user.client.ui.HorizontalSplitPanel.html'>HorizontalSplitPanel</a></td>
* </tr>
*
* <tr class='gallery'>
@@ -1250,8 +1255,10 @@
* </tr>
*
* <tr class='gallery-link'>
- * <td><a href='com.google.gwt.user.client.ui.RichTextArea.html'>RichTextArea</a></td>
- * <td><a href='com.google.gwt.user.client.ui.DisclosurePanel.html'>DisclosurePanel</a></td>
+ * <td><a
+ * href='com.google.gwt.user.client.ui.RichTextArea.html'>RichTextArea</a></td>
+ * <td><a
+ * href='com.google.gwt.user.client.ui.DisclosurePanel.html'>DisclosurePanel</a></td>
* </tr>
*
* <tr class='gallery'>
@@ -2184,13 +2191,12 @@
* A user-defined class is serializable if
* <ol>
* <li>it is assignable to
- * {@link com.google.gwt.user.client.rpc.IsSerializable}, either because it
- * directly implements the interface or because it derives from a superclass
- * that does</li>
- * <li>all non-<code>transient</code> fields are themselves
- * serializable, and</li>
- * <li>it explicitly defines a default constructor, which is a constructor
- * that is declared to be public and takes no arguments</li>
+ * {@link com.google.gwt.user.client.rpc.IsSerializable} or
+ * {@link java.io.Serializable}, either because it directly implements one
+ * of these interfaces or because it derives from a superclass that does</li>
+ * <li>all non-<code>final</code>, non-<code>transient</code>
+ * instance fields are themselves serializable, and</li>
+ * <li>it has a <code>public</code> default (zero argument) constructor</li>
* </ol>
*
* The <code>transient</code> keyword is honored, so values in transient
@@ -2247,7 +2253,7 @@
* Java interface
* <code><a href="http://java.sun.com/j2se/1.4.2/docs/api/java/io/Serializable.html">Serializable</a></code>.
* All references to serialization are referring to the GWT concept as
- * defined below.
+ * defined above.
*/
public static class SerializableTypes {
@@ -2311,6 +2317,7 @@
* specified in the service interface.
*
* <h2>Unexpected Exceptions</h2>
+ * <h3>InvocationException</h3>
* An RPC may not reach the
* {@link DeveloperGuide.RemoteProcedureCalls.ImplementingServices service implementation}
* at all. This can happen for many reasons: the network may be
@@ -2333,6 +2340,23 @@
* application code.
* </p>
*
+ * <h3>IncompatibleRemoteServiceException</h3>
+ * <p>
+ * Another type of failure can be caused by an incompatibility between the
+ * client and the server. This most commonly occurs when a change to a
+ * {@link DeveloperGuide.RemoteProcedureCalls.ImplementingServices service implementation}
+ * is deployed to a server but out-of-date clients are still active. For
+ * more details please see
+ * {@link com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException IncompatibleRemoteServiceException}.
+ * </p>
+ *
+ * <p>
+ * When the client code receives an
+ * {@link com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException IncompatibleRemoteServiceException},
+ * it should ultimately attempt to refresh the browser in order to pick up
+ * the latest client.
+ * </p>
+ *
* @title Handling Exceptions
* @synopsis Handle exceptions due to failed calls or thrown from the
* server.
diff --git a/user/src/com/google/gwt/user/client/rpc/IsSerializable.java b/user/src/com/google/gwt/user/client/rpc/IsSerializable.java
index efe3593..d9c9009 100644
--- a/user/src/com/google/gwt/user/client/rpc/IsSerializable.java
+++ b/user/src/com/google/gwt/user/client/rpc/IsSerializable.java
@@ -17,10 +17,7 @@
/**
* Marker interface indicating that a type is intended to be used with a
- * {@link RemoteService}. Do not confuse this interface with
- * {@link Serializable java.io.Serializable}, which is included in the GWT JRE
- * Emulation Library for source compatibility only and which will not by itself
- * make a class usable with a {@link RemoteService}.
+ * {@link RemoteService}.
*/
public interface IsSerializable {
}
diff --git a/user/super/com/google/gwt/emul/java/io/Serializable.java b/user/super/com/google/gwt/emul/java/io/Serializable.java
index 2410cb8..3f8a471 100644
--- a/user/super/com/google/gwt/emul/java/io/Serializable.java
+++ b/user/super/com/google/gwt/emul/java/io/Serializable.java
@@ -15,10 +15,12 @@
*/
package java.io;
+import com.google.gwt.user.client.rpc.IsSerializable;
+
/**
- * Provided for source compatibility only; implementing
- * <code>java.io.Serializable</code> is not a substitute for
- * {@link IsSerializable} for use with a {@link RemoteService}.
+ * Provided for interoperability; RPC treats this interface synonimously with
+ * {@link com.google.gwt.user.client.rpc.IsSerializable IsSerializable}.
+ * The Java serialization protocol is explicitly not supported.
*/
public interface Serializable {
}